M2 INFO
Liste des sujets de TER 2021
- Stack overflow: exploitation des failles de sécurité dans les programmes bugués
- Compteurs matériels de performances
- Les langages de programmation orientée objet Rust et C++: analyse et évaluation des performances
- Un nouvel outil pour faciliter la programmation sous Node-Red (par transformation de modèles)
- Développement d’un raisonneur pour l’autoadaptation d’applications en IoT
- Développement d’un assistant multistandards de gestion dynamique de services
- Parcoursup en Rust
- Optimisation d’une application de chirurgie assistée par ordinateur, avec casque de réalité augmentée.
- Artificial Intelligence and Computer Vision Internship
- Algorithmes pour l’extraction de cycles des réseaux d’automates synchrones
- Automates cellulaires et courbes elliptiques
- Layout segmentation and classification of visual style elements in newspapers
- Racines de matrices booléennes
Stack overflow: exploitation des failles de sécurité dans les programmes bugués
-
Encadrant : Sid Touati, site web.
- Mots-clés : Sécurité des programmes, sécurité système, compilation.
- Prérequis : Programmation bas niveau (C, système, assembleur), architecture des processeurs, compilation.
La sécurité informatique est un thème assez large, avec des contours flous: protection des données contre des lectures non désirées, protection des transmissions contre les interceptions, protection des systèmes d’exploitation contre les intrusions, protections des logiciels contre une mauvaise utilisation, protection contre la modification de fichiers ou des données en mémoire, virus, chevaux de Troie, malware, hameçonnage, etc. Le terme “sécurité” est utilisé actuelle- ment dans un tas de domaines informatiques, à des niveaux divers d’abstraction: niveaux haut (protocoles, interfaces homme-machine), niveaux intermédiaires (réseaux, middeware), niveaux bas (code binaire, code assembleur, couches basses des systèmes d’exploitation).
Dans ce stage, nous nous focalisons sur un cas connu et précis en informatique bas niveau: il s’agit du débordement de pile d’une fonction (stack overflow). Lorsqu’un programme contient un bug qui corrompt la pile d’exécution d’une fonction, il est possible à un hacker de dérouter le code du programme pour faire exécuter un code malicieux.
Ce type de bugs de débordement de pile existent dans beaucoup de logiciels, créant des failles de sécurité un peu partout. Toutes ces failles ne sont pas forcément connues ni exploitées, les hackers essayent généralement de s’attaquer à des logiciels répandus ou critiques: les commandes shell d’un système, les services des systèmes d’exploitation, les serveurs (web, bases de données), les logiciels libres, etc. La meilleure façon d’éviter ces failles est de prouver que les codes soient corrects. Bien entendu, cela n’est pas toujours possible, et la majorité des logiciels diffusés ne sont ni prouvés ni analysés contre ce type de failles. Des compilateurs proposent des parades au détriment des performances du code. Certaines de ces parades sont elles aussi contournées par les hackers, ce qui renvoie au dilemme habituel en sécurité: l’éternel combat entre le glaive et le bouclier.
Ce stage a un objectif essentiellement pédagogique. Il offre à l’étudiant une première expérience de spécialisation dans le domaine de la sécurité bas niveau, ou de compilation selon la sensibilité du candidat. Le sujet ici est d’exploiter la faille provoquée par un débordement de pile, et étudier les mécanismes de parades. D’autres types de failles existent, mais ne seront pas étudiées ici. L’étudiant devra réaliser trois grandes tâches:
- Étude bibliographique du domaine (articles scientifiques et documents en ligne): attaques et parades.
- Reproduire des attaques informatiques exploitant la faille de débordement de pile sur des exemples simples s’exécutant sous Linux.
- Tester les parades des compilateurs contre les attaques de type débordement de pile.
- Réfléchir à de nouvelles méthodes de compilation pour prévenir ces attaques.
Une suite est possible en étendant le sujet aux programmes multi-threads (OpenMP, pthread), sous forme de stage de recherche au laboratoire I3S.
- Références :
- [1] Smashing the Stack For Fun and Profit. Aleph One.
- [2] https://travisf.net/smashing-the-stack-today
Compteurs matériels de performances
- Encadrant : Sid Touati, site web.
- Mots-clés : Performances logiciels
- Prérequis : Architecture de processeurs
Afin d’aider un peu plus l’analyse et la compréhension des performances observées, les compteurs matériels de performances (registres spéciaux), si présents dans le CPU, peuvent être exploités. Ces compteurs enregistrent plein d’événements matériels relatifs aux performances qui sont provoqués par l’exécution de processus: nombre de cycles d’horloge, nombre d’accès mémoire, nombre d’accès au cache L1, nombre de défauts de cache, etc. La nature des événe- ments enregistrés par les compteurs matériels de performances dépend d’une architecture de CPU à une autre. La portabilité n’est donc pas assurée, mais les mesures sont extrêmement précises.
Notons deux façons pour utiliser les compteurs matériels de performances:
-
Analyser les événements matériels d’un CPU qui exécute plusieurs programmes en concurrence. Par exemple, l’outil Likwid installé sur vos machines de l’université récupère les valeurs des compteurs matériels par cœur (et non pas par processus). Il peut agréger les compteurs matériels de tous les cœurs. Cette façon d’utiliser les compteurs matériels de performances permet d’avoir une vue globale du fonctionnement et des per- formances d’un cœur ou d’un système entier qui exécute plusieurs processus en même temps.
-
Analyser les événements matériels provoqués par un seul processus qui s’exécute sur une machine. C’est la façon à utiliser pour analyser et éventuellement optimiser les performances d’un programme particulier qui s’exécute sur une architecture matérielle précise.
Là aussi, notons deux façons pour utiliser des compteurs matériels de performances pour un code donné:
- Soit l’utilisateur est intéressé par l’analyse des performances d’un bout son programme (par exemple étudier les performances d’une boucle précise ou d’une fonction particulière). Dans ce cas, il faut détenir le code source pour l’instrumenter (le modifier). Le code modifié contiendrait des instructions utilisant des librairies d’accès aux compteurs matériels de performances. La librairie LibPFM ou PAPI permet par exemple à un programme d’accéder aux valeurs des compteurs matériels de performances.
- Soit l’utilisateur est intéressé par l’analyse des performances d’un processus entier (pas uniquement un bout du programme). Dans ce cas de figure, l’utilisateur n’a pas besoin d’instrumenter le code source. Il peut utiliser des outils en ligne de commande comme perf pour évaluer les performances du code binaire.
Dans ce TER nous allons étudier en détails ces compteurs matériels de performances. L’étudiant devra se familiariser avec les différents aspects comme ceci:
- Étudier les événements matériels pouvant être enregistrés sur votre machine de test.
- Reprendre des codes de micro-benchmarks vus en TP et les analyser finement avec les compteurs matériels de performances.
il est possible de poursuivre ce sujet dans le cadre d’un stage de recherche dans I3S autour d’analye et d’optimisation de performances d’une application de calculs intensifs.
Les langages de programmation orientée objet Rust et C++: analyse et évaluation des performances
- Encadrant : Sid Touati, site web.
- Mots-clés : Programmation orientée objet
- Prérequis : C++
Tout le monde connait le langage de programmation C++, ses atouts, ses différentes versions (le C++ original, suivi de C++ 2011, suivi de C++ 2014), ses différents compilateurs (gnu C++ compiler, intel C++ compiler, etc.). En revanche, connaissez vous le langage de programmation orientée objet Rust ? Vous diriez “encore un autre langage qui ressemble à C++”. C’est ce que je pensais, jusqu’à ce que des programmateurs avertis m’en fassent la démonstration que c’est un langage de qualité.
Comme C++, le langage Rust est un langage compilé; le code généré est un binaire exécutable sur un processeur physique, ce qui n’est pas le cas avec JAVA. En revanche, contrairement à C++, Rust offre des mécanismes de langage qui permettent de garantir que le code généré ne provoque pas d’erreur sur pointeur comme segmentation fault. Le langage de programma- tion garantit que chaque pointeur est valide. Aussi, le langage Rust offre des mécanismes de parallélisme de threads qui évite les race condition, ce qui n’est pas proposé en C++. D’après les testeurs de Rust, il semblerait que ce langage est très agréable à appréhender et à manipuler. Les concepteurs de Rust ont bénéficié d’une longue expérience avec les autres langages de programmation comme C++, leur permettant de prendre le meilleur de ces langages, et enlever ce qui ne convient pas.
Comme tous les langages jeunes, il y a relativement peu d’applications qui sont écrites avec Rust. Mais comme tous les langages de programmation de qualité, il y a un début à tout. La première critique qui viendrait à l’esprit est la question des performances des applications écrites avec Rust, comparées à celles écrites avec C++. Les premiers programmeurs avec Rust affirment que les performances sont comparables, mais cela mériterait une étude plus sérieuse que des affirmations par l’exemple.
Ce stage a pour objectif d’évaluer les performances de quelques applications C++ et Rust, les comparer afin de vérifier si les compilateurs Rust et C++ sont au même niveau d’optimisation. Il offre à l’étudiant une première ex- périence de spécialisation dans ce domaine de performances de codes, et de programmation avec le langage Rust. Le stage est constitué des tâches suivantes:
- Étudier le langage Rust et faire une comparaison de ses concepts avec C++.
- Programmer quelques algorithmes de graphes en C++ et en Rust.
- Programmer quelques fonctions de calculs matriciels en C++ et en Rust.
- Programmer quelques fonctions parallèles (en OpenMP) en C++ et en Rust.
- Faire une étude des performances, en utilisant plusieurs options de compilation.
- Références :
- [1] https://www.Rust-lang.org/fr/learn
Un nouvel outil pour faciliter la programmation sous Node-Red (par transformation de modèles)
-
Encadrant : Gaëtan Rey (Gaetan.REY@univ-cotedazur.fr) / Jean-Yves Tigli (Jean-Yves.TIGLI@univ-cotedazur.fr)
-
Mots-clés : Node-Red, IoT, Projet OCTOPUS
Le développement de l’IoT ainsi que les approches web, cloud et services poussent une nouvelle forme de développement informatique où créer une application ne consiste plus à écrire le code de celle-ci mais plus à connecter entre eux différents services. En ce sens, on retrouve dans ces nouvelles approches d’utilisations des services les mêmes concepts que ceux développés dans les approches à composants que l’on retrouve dans nombre de plateformes logicielles en particulier pour de la programmation graphique. Le projet OCTOPUS en partenariat avec le CEA, EDF R&D, Scalian et d’autres entreprises consiste à mettre en œuvre ce type plateforme pour assurer la continuité des services des travailleurs mobiles en fonction du contexte (c’est-à-dire en fonction de leur environnement physique et social, de leurs activités et des équipements présents).
Le modèle d’assemblage de composants (Bean) aujourd’hui utilisé dans la plateforme OCTOPUS est plus expressif mais pas directement implémentable sur des cibles web, plus populaires basées sur les concepts de nœuds et de flux comme Node-Red.
L’objectif de ce projet est donc de doter des plateformes comme Node-Red basées sur des flux, d’outils de programmation graphique de plus haut niveau basés sur des Beans.
Dans le cadre de ce projet, le travail attendu est le suivant :
· Etudier et comprendre l’intérêt des outils permettant de décrire de transformations de modèles
· Développer l’outil de génération de flux Node-Red à partir d’un modèle d’assemblage de Beans.
· Travailler avec les encadreurs sur un/des scénario(s) mettant en évidence les contributions et l’intérêt des nouveaux outils proposés et déjà disponibles.
· Mettre en œuvre ce scénario à l’aide du nouvel outil over Node-RED
Si les résultats sont prometteur, une poursuite en stage de ce projet pourrait être envisagé dans le cadre du projet OCTOPUS.
-
Références :
- [1] https://nodered.org/
Développement d’un raisonneur pour l’autoadaptation d’applications en IoT
-
Encadrant : Gaëtan Rey (Gaetan.REY@univ-cotedazur.fr) / Jean-Yves Tigli (Jean-Yves.TIGLI@univ-cotedazur.fr)
-
Mots-clés : IoT, autoadaptation, Projet OCTOPUS
Le développement de l’IoT ainsi que les approches web, cloud et services poussent une nouvelle forme de développement informatique où créer une application ne consiste plus à écrire le code de celle-ci mais plus à connecter entre eux différents services. En ce sens, on retrouve dans ces nouvelles approches d’utilisations des services les mêmes concepts que ceux développés dans les approches à composants que l’on retrouve dans nombre de plateformes logicielles.
Dans le cadre de ses travaux sur la continuité des services des travailleurs mobiles malgré l’évolution du contexte, le groupe de recherche en intelligence ambiante de l’équipe SPARKS du laboratoire I3S s’intéresse à cette nouvelle forme de développement et en particulier à des processus automatiques de création d’application en fonction de règles générique d’adaptation.
Nous souhaitons mettre en œuvre un raisonneur générique permettant de prendre en charge d’une part des règles d’adaptation particulières spécifiées lors de nos travaux antérieurs et nommées Aspect d’Assemblage (AA) et d’autres par des descriptions de services utilisables qui se présentent sous la forme de contrat logiciel de type SSDP ou WoT-TD (Web of Thing – Thing Description).
Le raisonneur ainsi développé pourra être intégré dans un des démonstrateurs de projet OCTOPUS. Ce projet OCTOPUS financé par la BPI et en partenariat avec le CEA, EDF R&D, Scalian et d’autres entreprises consiste en la concrétisation du plusieurs années de recherche effectuée au sein du groupe de recherche en intelligence ambiante de l’équipe SPARKS du laboratoire I3S.
Dans le cadre de ce projet, le travail attendu est le suivant :
· Etudier et comprendre l’intérêt des outils proposés dans le projet pour adresser les problématiques de la continuité de service et en particulier architecture de la plateforme.
· Développer le raisonneur pour la mise en place d’un AA.
· Enrichir le raisonneur pour qu’il la superposition des différentes productions dû à l’utilisation de différents AA.
· Travailler avec les encadreurs sur un/des scénario(s) mettant en évidence les contributions et l’intérêt des outils proposés et déjà disponibles.
· Mettre en œuvre ce scénario.
Si les résultats sont prometteur, une poursuite en stage de ce projet pourrait être envisagé dans le cadre du projet OCTOPUS.
Développement d’un assistant multistandards de gestion dynamique de services
-
Encadrant : Gaëtan Rey (Gaetan.REY@univ-cotedazur.fr) / Jean-Yves Tigli (Jean-Yves.TIGLI@univ-cotedazur.fr)
-
Mots-clés : REST, OpenHab, UPnP, IoT, Projet OCTOPUS
Aujourd’hui avec le développement important de l’IoT, de plus en plus de protocoles de communication différents sont utilisés. Pour pallier ce problème de la grande variété des protocoles de communication, une des tendances actuelles est de ne plus concevoir des applications qui pilotent directement les dispositifs mais de passer par des Gateway qui fournissent un protocole de plus haut-niveau d’abstraction. Cependant, malgré cette réduction des protocoles il en existe encore de nombreux à prendre en compte.
Plus important encore que leur nombre, ces protocoles, même ceux de haut niveau, n’offrent pas obligatoirement l’ensemble de fonctionnalités attendues pour gérer convenablement les dispositifs de l’IoT. En effet, si l’adressage et la liaison sont assurés par tous, la présentation d’un véritable contrat de description de services est plus rare et peu de protocoles offrent des fonctionnalités de gestion de la découverte de services, de la gestion de la disparition … La gestion du cycle de vie des services et dispositifs est le parent pauvre des protocoles de l’IoT.
Nous souhaitons mettre en œuvre un assistant générique permettant de prendre en charge différent standards, d’étendre ceux-ci avec les fonctionnalités manquantes mais nécessaires à une gestion correcte des dispositifs de l’IoT.
L’assistant ainsi développé pourra être intégré dans un des démonstrateurs de projet OCTOPUS. Ce projet OCTOPUS financé par la BPI et en partenariat avec le CEA, EDF R&D, Scalian et d’autres entreprises consiste en la mise en œuvre d’une plateforme qui assure la continuité des services des travailleurs mobiles en fonction du contexte. Ce projet est la concrétisation de plusieurs années de recherche effectuée au sein du groupe de recherche en intelligence ambiante de l’équipe SPARKS du laboratoire I3S.
Dans le cadre de ce projet, le travail attendu est le suivant :
· Identifier le format du contrat pivot qui sera fourni par l’assistant en s’appuyant sur les standards actuels (SSDP, WoT, …).
· Développer assistant permettant de fournir un contrat précédemment identifié pour le protocole REST, pour la Gateway OpenHab et le protocole UPnP.
· Enrichir l’assistant pour qu’il assure les fonctionnalités manquantes des protocoles précédemment implémentés.
· Travailler avec les encadreurs sur un/des scénario(s) mettant en évidence les contributions et l’intérêt des outils proposés et déjà disponibles.
· Mettre en œuvre ce scénario.
Si les résultats sont prometteur, une poursuite en stage de ce projet pourrait être envisagé dans le cadre du projet OCTOPUS.
Parcoursup en Rust
- Encadrant : LOZES Etienne, site web
- Mots-clés : Mariages stables, programmation multicoeur
- Prérequis : Des notions de programmation impérative et de parallélisme, envie d’apprendre de nouveaux langages
Le but du TER est de concevoir et implémenter une version parallèle de l’algorithme des mariages stables dans le langage Rust.
Il sera possible de poursuivre sur la thématique de la programmation concurrente dans le cadre d’un stage de recherche au laboratoire I3S, en axant sur la preuve de programme.
- Références :
- l’article de Gale et Shapley : https://doi.org/10.2307/2312726
- des notes de cours en français (traduites en anglais par la suite) et tapées à la machine (un an avant la naissance de TeX d’un cours de Donald Knuth sur les mariages stables : https://www-cs-faculty.stanford.edu/~knuth/mariages-stables.pdf
- billet de blog et vidéo de vulgarisation scientifique sur l’algorithme de Gale-Shapley : https://sciencetonnante.wordpress.com/2020/01/09/parcoursup/, https://youtu.be/dO1pLi2Dedw
- leçon inaugurale de Claire Mathieu au collège de France, où il est question d’APB, et, pour approfondir le sujet, son autre leçon sur la théorie algorithmique des jeux : https://www.college-de-france.fr/site/claire-mathieu/inaugural-lecture-2017-11-16-18h00.htm, https://www.college-de-france.fr/site/claire-mathieu/course-2017-12-12-10h00.htm
Optimisation d’une application de chirurgie assistée par ordinateur, avec casque de réalité augmentée.
Type de projet : () recherche ( X ) développement
Résumé du projet (300 mots max) :
Les casques de réalité augmentée ou mixte tels que l’Hololens de Microsoft permettent d’afficher dans le champ de vision des utilisateurs des objets virtuels complexes, statiques ou animés, totalement intégrés dans l’environnement réel. Ces casques sont de plus en plus utilisés dans de multiples domaines : jeux, médecine, chimie, éducation etc.
Dans le domaine de la médecine, de telles casques sont maintenant utilisés pour faire de la chirurgie assistée. Durant un acte opératoire, des informations sont affichées dans le casque du praticien en temps réel pour lui faciliter les manipulations.
Au sein de notre équipe nous avons commencé à développer un moteur permettant de détecter automatiquement des plaies (à l’aide d’un réseau de neurones). Connecté à un casque de Réalité augmentée, ce système permet d’afficher dans le champ de vision de la personne portant le casque le contour d’une plaie si celle-ci est présente.
L’objectif de ce TER sera de réduire le temps nécessaire entre capture des images via le casque, détection de la plaie par le moteur, et affichage du résultat dans le casque. Ceci nécessitera notamment de faire évoluer le script python qui gère à la fois le moteur d’inférence, et la transmission des images entre le casque et le PC où le moteur tourne.
Mots-clés (5 mots qui caractérisent la thématique et le scope du projet) :
Réalité mixte, réseau de neurones, python, hololens.
Références bibliographiques :
[1] Hololens : https://www.microsoft.com/en-us/search?q=hololens [2] RCNN : https://github.com/matterport/Mask_RCNN
Nom et affiliation de l’encadrant : Fréderic Payan, Laboratoire I3S, Sophia Antipolis, Université Côte d’Azur.
Coordonnées (mail et téléphone) : Frederic.PAYAN@univ-cotedazur.fr
Artificial Intelligence and Computer Vision Internship
- Encadrant : Wafa Belhajali & Anis Meftah & Marc Antonini. site web
- Mots-clés : Artificial Intelligence, Computer Vision, Deep Learning, Point Cloud, Instance Segmentation, Python, Tensorflow …
- Prérequis : Knowledge of ML/DL general concepts, Knowledge of Computer Vision is appreciated, Good Python development skills (Tensorflow is an added value).
Cintoo designs and develops an innovative cloud platform to manage 3D Reality Data for organizations in the AEC (Architecture, Engineering & Construction) and BIM (Building Information Modeling) industries. The Cintoo platform relies on efficient data compression algorithms created in-house, that reduce the storage and transfer times of highly accurate 3D data captured from reality (photogrammetry or laser scanning). Cintoo is a fast-moving, well-funded startup with a very high potential. Cintoo is currently working to grow up again her services with evolving features like assets management using Artificial Intelligence. In this context, we are offering an internship to assist our R&D team in one of the hottest IT area of the moment. In details, we are looking for a motivated student, passionate with Deep Learning and Computer Vision, to work on innovative and state of the art solutions for 2D/3D scene understanding. The successful applicant will be working within a very talented and multi-disciplinary R&D team. He/she will assist our AI expert engineer, participate in the elaboration of our solutions and learn a lot of AI and Computer Vision issues.
Notice that this offer could be renewed into 6 months internship.
- Références :
- [1] Qi, C. R., Chen, X., Litany, O., & Guibas, L. J. (2020). Imvotenet: Boosting 3d object detection in point clouds with image votes. In Proceedings of the IEEE/CVF conference on computer vision and pattern recognition (pp. 4404-4413).
- [2] Birodkar, V., Lu, Z., Li, S., Rathod, V., & Huang, J. (2021). The surprising impact of mask-head architecture on novel class segmentation. arXiv preprint arXiv:2104.00613.
- [3] Najibi, M., Lai, G., Kundu, A., Lu, Z., Rathod, V., Funkhouser, T., … & Fathi, A. (2020). Dops: Learning to detect 3d objects and predict their 3d shapes. In Proceedings of the IEEE/CVF conference on computer vision and pattern recognition (pp. 11913-11922).
- [4] Qi, C. R., Yi, L., Su, H., & Guibas, L. J. (2017). Pointnet++: Deep hierarchical feature learning on point sets in a metric space. arXiv preprint arXiv:1706.02413.
Algorithmes pour l’extraction de cycles des réseaux d’automates synchrones
Un réseaux d’automate consiste en un ensemble (fini) d’automates finis. Dans le mode de mis à jour synchrone, tout automate se met à jour en parallèle en prenant en compte leur propre état et celui des automates de leur voisinage selon une fonction qui est propre à chaque automate. L’ensemble des fonctions locales induit une fonction globale qui décrit l’évolution du réseau dans le temps.
Le problème est que dans la quasi totalité des cas la fonction globale est définie de manière ‘parcimonieuse’ et ceci empêche une lecture explicite de la dynamique du réseau. Si d’un coté nous savons que la dynamique est de type ultimement périodique, nous ne savons ni la longueur des cycles ni leur nombre sinon en passant par des simulations explicite plutôt couteuses du point de vue calculatoire ce qui rend le modèle peu exploitable dans la pratique.
Le but du TER est d’étudier les algorithmes existants, de les comparer pour ensuite les intégrer dans un logiciel de visualisation qui est en cours de développement dans l’équipe MDSC de l’I3S.
Les étapes du travail seront les suivantes : 1) étude de l’état de l’art 2) écriture d’un générateur de réseaux Booléens 3) programmation des algorithmes trouvés en littérature 4) recherche d’améliorations possibles et paramétrisation 5) tests comparatifs (en utilisant le générateur du point 2) 6) intégration de l’algorithme dans le logiciel de visualisation
Le langage de programmation utilisé sera Python ou Java.
Automates cellulaires et courbes elliptiques
Les automates cellulaires sont très utilisés dans les méthodes de cryptographie ‘rapides’ ie. des situations dans lesquelles le niveau de sécurité demandé n’est pas trop élevé et on a la nécessité d’avoir un système de cryptage rapide comme c’est le cas, par exemple, des streaming de données des jeux vidéo en temps réel.
D’autre part, les courbes elliptiques elles ont fait leur épreuves et permettent de concevoir des niveau de cryptage très élevés avec des temps de calcul raisonnables.
L’objectif de ce travail de TER est d’explorer comment marier ces deux notions (automates cellulaires et courbes elliptiques). L’idée est que l’orbite de d’une courbe elliptique forme un groupe abelian fini (sous certaines conditions) et que plusieurs résultats récents étudient le comportement des automates cellulaires sur des groupes abéliens finis.
Voici les étapes prevues pour ce TER : 1) étude des notions importantes sur la dynamique des automates cellulaires (AC) 2) état de l’art sur les AC et crypto 3) étude des notions de base sur les courbes elliptiques 4) étude du comportement des groupes issus des courbes elliptiques dans les AC
Il n’est pas demandé d’avoir ni des prérequis sur les AC ni des prérequis sur les courbes elliptiques. Il est juste demandé d’avoir quelques notions de base sur la théorie des groupes finis.
Layout segmentation and classification of visual style elements in newspapers
- Encadrants : Hui-Yin Wu & Pierre Kornprobst.
Notre projet vise à rendre plus accessible la presse écrite aux malvoyants, tout en conservant la ligne éditoriale. Ceci implique de devoir reorganiser le contenu du journal ce qui impacte l’esthétique visuelle des pages. Le problème est que cette esthétique joue un role fondamental dans le processus de lecture et qu’il est donc crucial de savoir la préserver. En effet, il a été montré qu’une approche visuelle cohérente et attrayante renforce l’impact et la compréhension du contenu et de l’histoire lue. C’est donc cette notion d’esthétique que nous voulons mieux comprendre et savoir quantifier. Autrement dit, étant donné une page de journal, peut-on automatiquement lui associer une (des) mesure(s) qui caractérise(nt) l’esthétique de son organisation ? Disposer de telles mesures nous permettrait de faire des choix sur la production de différents modèles de conception.
Les objectifs de ce TER sont :
- d’explorer les différentes propriétés qui définissent l’esthétique perçue des journaux imprimés [GG2017],
- d’étudier comment ces propriétés peuvent être formalisées pour quantifier l’esthétique [K2012,NTB2003], et
- de les implémenter et de les tester sur un ensemble de pages de journaux préalablement segmentées [WCK2020].
- Références :
- [GG2017] C. Gautier and D. Gautier. Design, typography etc.: A Handbook, Niggli, 2017.
- [K2012] I.-M Kivela. Aesthetic measures for automated magazine layout on tablet devices, Master thesis, Aalto University, Finland, 2012.
- [NTB2003] D.C.L. Ngo, L.S. Teo, and J.G. Byrne. Modeling interface aesthetics, Information Sciences, 152:25-46, 2003.
- [WCK2020] H.-Y. Wu, A. Calabrese, and P. Kornprobst, Towards Accessible News Reading Design in Virtual Reality for Low Vision, Inria Research Report, RR-9298, 2020.
Racines de matrices booléennes
TER
S3