Présentation PFE Computer Vision

5,573 views
5,352 views

Published on

Librairie de traitement vidéo visant à prévisualiser le rendu d'une gravure en réalité augmentée

0 Comments
4 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
5,573
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
302
Comments
0
Likes
4
Embeds 0
No embeds

No notes for slide
  • Bonjour Mesdames et Monsieur, les membres du jury, ainsi que toutes les personnes présentes,Nous soutenons aujourd’hui un stage de fin d’études qui a été réalisé à la société Bilog Tunis, pour un client multinational opérant dans le domaine de la gravure, en vue d’obtenir le diplôme national d’ingénieur de l’Ecole Nationale des Sciences de l’Informatique.Le projet objet de ce stage est intitulé « librairie de traitement vidéo visant à prévisualiser le rendu d’une gravure en réalité augmentée », Il a été encadré par Messieurs Mehdi Kharroubi et Mourad Hedfi de la société Bilog, Monsieur Jonathan Mahut de la société cliente et supervisé par Dr SlimMhiri de l’ENSI.
  • L’intelligence artificielle est une discipline étudiant l’intelligence d’une machine et sa capacité à reproduire la réflexion humaine, On se demande alors quel est l’intérêt d’introduire des notions d’IA à des moyens de personnalisation d’objets telles que la gravure.De manière spécifique, à quoi servirait la vision par ordinateur dans un domaine industriel tel que celui de la gravure.La vison par ordinateur permet en effet de simplifier et sécuriser le processus de gravure sur un objet. L’objet peut être précieux soit par sa valeur mercantile, tels que le bijoux (fait avec des matériaux précieux) soit par la valeur affective et intrinsèque du message gravé dessus, notamment lorsqu’il s’agit d’un souvenir d’un être cher par exemple.Afin d’assurer une gravure réussie, on utilise des moyens de reconnaissance de formes pour que le message gravé sur l’objet, soit spécial et exceptionnel.Au final, le but de ce travail est de permettre à l’utilisateur d’avoir une idée de ce à quoi aura l’air le résultat sans même avoir commencé l’opération de gravure. C’est la réalité augmentée.
  • Tout au long de cette présentation, nous suivrons le plan suivant. Après avoir introduit le sujet, nous le mettrons dans son contexte général. Nous présenterons les besoins du projet, puis les cas d’utilisation déduits. Par la suite, nous aborderons la manière dont notre projet a été conçu puis implémenté. Nous résumerons ensuite quelques contraintes rencontrées au cours de ce stage et nous terminerons la présentation par une brève conclusion tout en évoquant les perspectives possibles à court et à long terme.Commençons par définir le contexte général de notre projet.
  • Comme nous avons mentionné lors de l’introduction, la librairie développée repose sur des notions d’intelligence artificielle que nous appliquons au domaine de l’imagerie informatique. Il s’agit donc d’un projet de vision par ordinateur fusionnant les deux branches de l’informatique,
  • La vision par ordinateur ou vision artificielle repose essentiellement sur l’imitation de la vision humaine. En vision par ordinateur, la machine comprend et analyse le contenu d’une vidéo d’une façon similaire à l’analyse de l’être humain. On peut même aller jusqu’à amener une machine à prendre des décisions suivant les analyses faites.Un système de vision par ordinateur se base sur les points suivants : le traitement d’images, l’intégration de l’intelligence artificielle, la reconnaissance de formes, le traitement de signal, et des notions de physiques et de mathématiques tel que le laplacien et le gradient par exemple.Dans notre projet, nous avons appliqué des algorithmes de vision par ordinateur pour développer la librairie demandée, qui sera ensuite intégrer à des logiciels de personnalisation d’objets par la gravure.
  • Aujourd’hui on peut graver des images et des messages personnels sur nos objets. On peut personnaliser des verres, des portes-clés, des briquets, des bagues, etc. L’objet de notre librairie est d’optimiser au mieux ce genre de gravure. Nous voulons améliorer et sécuriser l’opération de gravure, afin d’éviter toute mauvaise manipulation et tout résultat non désiré,
  • Parmi les erreurs de gravure rencontrés, que ce soit suite à une fausse manipulation ou autre, on cite le problème de décalage du texte. Nous avons ici un marque-place en forme de guitare sèche avec le nom de Sébastien gravé dessus. C’est le résultat qu’on souhaite avoir. Et ça c’est le résultat qu’on peut obtenir si on ne positionne pas l’objet correctement.
  • Une autre erreur de gravure est ne pas estimer convenablement la taille de l’image à graver, Dans ce cas, nous avons un verre gravé à l’occasion d’un baptême. On souhaiterait avoir dessus le nom du bébé, sa date de naissance et l’image que vous voyez,Cependant, suite à une fausse estimation, nous obtenons le résultat suivant.
  • Notre librairie, qu’on a appelé GLibCV, pour éviter l’appellation confidentielle du client, sera intégrée dans toute une plateforme de logiciels implémentés dans les machines de gravure de la société cliente, à laquelle on réfère par la lettre G.Le logiciel principal qui utilisera GlibCV est composé de trois modules qui sont l’admin, le composer et le player. L’administrateur ici est un représentant d’un client grand compte de la société G. Il crée ses propres logiciels sur l’interface de l’admin en utilisant les designs et templates proposées. L’interface du composer lui permet de créer des fichiers de composition, qu’il pourra ajouter à son logiciel dans l’interface de l’admin. Toutes ces données là sont hébergées sur un serveur cloud. L’utilisateur final ne voit que l’interface du player, qui contient la version adéquate du logiciel téléchargée depuis le cloud.Nous passons maintenant à l’analyse et à la spécification des besoins de notre projet.
  • Nous commençons tout d’abord par présenter les besoins fonctionnels à assurer par la librairie, qui sont : La détection d’un objet sur la surface de la machine à graver, l’utilisation de différents types de caméra et leurs calibrations, la prévisualisation du résultat de la gravure en réalité augmentée, le traitement vidéo, la vérification de l’intégrité des informations gravées, la génération de scripts et finalement la reconnaissance de formes.
  • Notre librairie doit également respecter certains besoins non-fonctionnels dont la réutilisabilité du code et sa maintenabilité, la documentation en commentant les différentes méthodes implémentées, et finalement son extensibilité et sa fiabilité vu l’importance du logiciel dans lequel elle sera intégrée.
  • Nous avons organisé ces différents besoins dans des cas d’utilisation que nous avons divisé sur 2 acteurs :le développeur et le client.Le client peut sélectionner la caméra, et lancer une capture ou juste charger une image, il peut également calibrer la caméra, reconnaitre un objet, le suivre et ainsi de suite.Le rôle du développeur par contre est de préparer une liste d’objets modèles, et ajouter et supprimer des filtres.Ceci nous mène à la phase de conception du projet.
  • Pour développer GlibCV nous nous sommes proposés une architecture client-serveur. Où le serveur est représenté par le service de connexion à la caméra et le client se charge de tout ce qui est traitement dans la librairie et l’application que nous avons développé pour la tester.
  • Notre architecture repose sur le modèle MVC : modèle, view, controller, Où le modèle représente la couche métier. Et la couche présentation englobe la vue et le contrôleur. C’est suivant ce modèle là que nous avons créé les packages spécifiques à chaque couche.
  • Dans la couche présentation nous retrouvons l’application de test. En d’autres termes, c’est l’aperçu des différentes fonctionnalités proposées par la librairie. La couche métier contient tous les traitements de la librairie, elle se situe au niveau de la couche service. Cette dernière inclue aussi le package service qui assure la connexion à la voire les caméras connectées.Nous allons commencer par explorer la couche métier.
  • Voici les packages qui regroupent les classes de la couche métier. Nous avons le package de calibration par exemple, celui des testcase, le package OpenCVFilter qui comporte tous les filtres disponibles dans la librairie. Nous allons maintenant voir ce package de plus prêt.
  • Ce schéma est un diagramme de classe simplifié du package OpenCVFilter que nous venons de voir. Nous n’y avons pas indiqué tous les filtres disponibles afin d’assurer une meilleure lisibilité. Toutes les classes des filtres héritent de la classe OpenCVFilter, qui est une classe abstraite comportant les méthodes communes à tous les filtres.
  • Nous passons maintenant à la couche service.
  • Nous y retrouvons le package service qui renferme la classe OpenCV. C’est cette classe qui se charge de la connexion au caméras disponibles
  • Voici le diagramme de classe du package service. Nous y retrouvons les relations de la classe OpenCV.
  • Finalement, nous arrivons à la couche présentation qui, comme nous avons dit précédemment est représentée par l’application de test.
  • Nous avons le package CV_Test de l’application qui inclue à la fois les outils à utiliser et les interfaces fxml et leurs contrôleurs respectifs.
  • Nous prenons l’exemple du package controllers sous GUI. Ce package renferme les contrôleurs des interfaces principales de l’application telles que la mainview, l’interface de reconnaissance d’objets, celle de traitement d’images etc.Nous passons à la partie implémentation du projet.
  • Dans cette partie nous allons aborder l’environnement dans lequel nous avons implémenter notre solution. Par la suite, nous montrerons une vidéo du fonctionnement de l’application de test où on a intégrer la librairie développée.
  • 720p : définition 1280 x 720, rapport d’image 16/9720 lignes p : balayage progressif (non entrelacé)Parmi le matériel utilisé, à part l’ordinateur, figure la Microsoft LifeCam HD. Cette webcam dispose d’un capteur 720p. C’est-à-dire qu’on peut prendre des photos et des vidéos de qualité HD, avec une définition de 1280 x 720 pixels, et un rapport de 16/9.On bénéficie de couleurs vraies (TrueColor) soit une image de 16 millions de couleurs, un système de mise au point automatique ou autofocus qui assure la netteté de l’image et un angle de vision très large.La lifecam de Microsoft permet aussi l’ajustement automatique du degré de luminosté dans la pièce.
  • Comme outils et logiciels, nous avons utilisé les bibliothèques OpenCV, JavaCVet J4L, les langages, C, C++, Java et Python. Pour les interfaces graphiques nous avons utiliser JavaFXscenebuilder pour concenvoir des interfaces JavaFX. Pour l’implémentation de notre solution et le tests des algorithmes déjà existants, nous avons utiliser les IDE Netbeans, Eclipse et Microsoft Visual Studio. TortoiseSVN nous a servi pour livrer les incréments de produit, ainsi que le produit final.
  • Afin de permettre au client de suivre l’avancement du travail, nous avons adopté la méthode agile SCRUM pour le développement de ce projet. Vu la nature du projet et ses besoins évolutifs, Scrum était la meilleure méthode présente sur le marché comme c’est une méthode itérative, Scrumnous a permis de récolter les feedbacks du client et du chef d’équipe à chaque sprint du projet, afin de s’améliorer et d’optimiser certaines fonctionnalités. Ceci nous a même permis de faire évoluer les besoins établis au début dans le cahier des charges du client et ainsi obtenir une solution meilleure que celle imaginée au début du projet.<<Dans le processus SCRUM, nous établissons tout d’abord le productbacklog qu’on appelle aussi carnet du produit. Pour chaque carnet de produit, nous avons des carnets de sprint. Chaque sprint dure entre 2 et 4 semaines en moyenne. Une réunion journalière de 5 minutes environ doit être planifiée afin de discuter l’avancement sur le projet depuis la dernière réunion. A la fin du sprint, nous obtenons un incrément de produit que nous pouvons livrer au client pour avoir son compte-rendu, ses remarques et ses propositions.>>
  • Dans cette vidéo, nous allons montrer le fonctionnement des modules de reconnaissance d'objet et de texte, avec des cas réussis et des cas échoués.Nous lançons la captureNotre premier essai sera avec cette tasse de café. Nous la sélectionnons dans le catalogueNous allons tout d'abord sélectionner la tasse manuellement dans la vidéo et lancer la reconnaissance. Comme vous voyez, notre objet a été reconnuLe second bouton est pour une recherche automatique de l'objet dans la vidéo et voilà on arrive à le reconnaitre de mêmeLe second objet est une boite de yaourt à boire, qui comprend nettement plus de couleurs que le premier objet.Cette fois ci nous allons directement effectuer une reconnaissance automatique de l'objet.L'objet reconnu est encadré en bleu.Nous modifions la position de l'objet et réessayons. C'est toujours encore bon. Maintenant nous allons lancer le tracking de cet objet. Le premier bouton, c'est pour tracker un objet, initialement reconnu.Comme vous voyez il y a eu échec du tracking. Nous allons refaire un second essaiAu début ça marche mais ensuite ça perd les mesuresLe second bouton est pour sélectionner un objet à reconnaitre dans la zone de la vidéoVoilà, ça fonctionne parfaitement pour cet objet. Nous revenons à notre première objet, pour essayer de le suivre. Nous allons tout d'abord le reconnaitre puis le trackerLe troisième objet, est une petite voiture rouge, un objet qui nous est complètement inconnu. C'est à dire qu'il ne figure pas dans le catalogue d'objets.Nous sélectionnons donc l'objet en vue de le trackerComme vous pouvez remarquer. Que ce soit en éloignant ou en rapprochant l'objet, ceci n'a aucune influence sur son suivi.Nous passons maintenant à la reconnaissance de texte. Devant notre caméra nous avons placé un livre d'Alphonse Daudet dont nous souhaitons lire le titre.Pour un résultat plus précis, nous avons rapproché le livre. Mais il y a tout de même encore quelques erreurs. Nous avons donc prévu une option de correction manuelle. Nous allons corriger ces fautes et puis télécharger le texte reconnu sous format txt sur notre disque.Nous abordons maintenant les contraintes que nous avons rencontrées au cours de ce stage.
  • Au cours de ce stage, nous avons rencontré des contraintes de nature technique et d’autres d’ordre organisationnel.Techniquement, nous étions face à des technologies nouvelles, telles que JavaFX, OpenCV et JavaCV, que nous devions non seulement comprendre mais aussi bien assimiler pour pouvoir les utiliser.La première difficulté que nous avions rencontrées était au niveau des filtres de traitement vidéo. L’application crashait énormément au début. Mais nous avons su résoudre ce problème en utilisant plusieurs threads.Le module de reconnaissance de formes a aussi posé un problème, vu la multitude d’algorithmes de reconnaissance. Nous devions choisir l’algorithme qui convenait le plus à notre cas. Comme aucun ne satisfaisait entièrement notre besoin. Nous avons réuni les trois algorithmes de SURF, comparaison de contours et comparaison d’histogrammes.Le même problème s’est présenté pour les outils d’OCR et les algorithmes de calibration.
  • De point de vue organisation, nous n’avons pas su exploité au mieux notre code. En effet, nous aurions pu réutiliser certaines méthodes au lieu de les ré-implémenter d’une manière ou d’une autre pour d’autres traitements.Nous avons aussi passé plus de temps que prévu sur le design des interfaces utilisateurs, qui n’était pourtant pas notre objectifs dès le départ. L’application de test était juste un moyen de tester le fonctionnement des classes de la librairie. Finalement, la contrainte majeure que nous avons rencontrée était la recherche de l’information. Comme nous étions face à un domaine entièrement nouveau. Ce n’était pas évident de savoir où chercher l’information, quels algorithmes tester, etc. Nos encadreurs nous ont heureusement beaucoup aidé sur ce point.Finalement, nous arrivons à la conclusion de cette présentation.
  • Pour conclure, il se doit d’énumérer les différents points acquis de ce projet et le bénéfice personnel dont nous avons fait preuve. Travailler sur un projet client d’une telle envergure, n’est pas une opportunité qui s’offre tous les jours en tant qu’étudiant. Nous étions en contact direct avec le client. Et comme nous avons adopté la méthode Scrum, nous avions des réunion régulières avec le client. D’une autre part, vu la nature du projet, nous avons pu assimiler des notions plutôt complexes dans l’imagerie informatique et nous avions eu recours à utiliser des outils mathématiques avancés.
  • Comme vous pouvez remarquer ce projet ouvre la porte à plusieurs perspectives. A part le fait d’optimiser les classes déjà existantes. Il faudrait implémenter le module de réalité augmentée que nous avions du négliger faute de temps. Nous proposons aussi que l’application soit liée à une base de données afin d’assurer la persistance des données. Et finalement, une application mobile sur smartphone ou sur iPad, en vaut bien le coup. Ca nous permettrait de pouvoir choisir le type de gravure souhaité, et voir un peu à quoi le résultat de gravure aurait l’air sur son appareil mobile.
  • Mesdames et monsieur, je vous remercie pour votre attention. Je suis à vous pour répondre à vos questions.
  • Présentation PFE Computer Vision

    1. 1. Librairie de traitement vidéo visant à prévisualiser le rendu d’une gravure en réalité augmentée Présenté par : Rihab Ben Rhouma Encadré par: Mehdi Kharroubi et Mourad Hedfi Supervisé par : Dr Slim Mhiri Ministère de l’Enseignement Supérieur et de la Recherche Scientifique Université de la Manouba Ecole Nationale des Sciences de l’Informatique STAGE DE FIN D’ETUDES intitulé AU: 2012-2013 À BilogTunis, ParcTechnologique d’el Ghazela
    2. 2. • Comment introduire des notions d’intelligence artificielle à des moyens de personnalisation comme la gravure? • Quelle est l’utilité de la vision par ordinateur dans le domaine de la gravure? • Comment intervient la reconnaissance de formes et le traitement vidéo pour assurer une gravure réussie? 2/38
    3. 3. Contexte général Analyse et spécification des besoins Conception du projet Implémentation du projet Contraintes rencontrées Conclusion et perspectives 3/38
    4. 4. Contexte général 4/38
    5. 5. Intelligence artificielle Vision par ordinateur Imagerie informatique Contexte général 5/38
    6. 6. Contexte général Vision par ordinateur Traitement d’image Intelligence artificielle Reconnaissance de formes Traitement de signal Physiques Mathématiques 6/38
    7. 7. Contexte général Personnalisation d’objets par la gravure 7/38
    8. 8. Contexte général Exemple d’erreur de gravure (1) : Texte trop décalé 8/38
    9. 9. Contexte général Exemple d’erreur de gravure (2) : Image trop petite 9/38
    10. 10. Contexte général Les modules du logiciel de gravure de G auquel sera intégré notre librairie 10/38
    11. 11. Analyse et spécification des besoins 11/38
    12. 12. Détecter un objet sur la surface de la machine à graver Utiliser différents types de caméras Calibrer les caméras utilisées Prévisualiser le résultat de la gravure en réalité augmentée Appliquer des filtres de traitement vidéo Vérifier l’intégrité des informations gravées Générer des scripts de traitement Reconnaitre des formes : Analyse et spécification des besoins 12/38 Besoins Fonctionnels
    13. 13. Réutilisabilité Maintenabilité Documentation Extensibilité Fiabilité Analyse et spécification des besoins 13/38 Besoins Non-Fonctionnels
    14. 14. Analyse et spécification des besoins 14/38 Cas d’utilisation Développeur Client
    15. 15. Conception du projet 15/38
    16. 16. Conception du projet Architecture du projet 16/38
    17. 17. Conception du projet Architecture du projet : modèle adopté MVC 17/38
    18. 18. Conception du projet Couche présentation Couche service Couche métier Architecture du projet 18/38
    19. 19. Conception du projet Architecture du projet : La couche métier 19/38
    20. 20. Conception du projet Diagrammedeclassessimplifié dupackageOpenCVFilter 20/38
    21. 21. Conception du projet Couche présentation Couche service Couche métier Architecture du projet 21/38
    22. 22. Conception du projet Architecture du projet : la couche service 22/38
    23. 23. Conception du projet Diagrammedeclassesdupackage service 23/38
    24. 24. Conception du projet Couche présentation Couche service Couche métier Architecture du projet 24/38
    25. 25. Conception du projet Architecture du projet : la couche présentation 25/38
    26. 26. Conception du projet Diagrammedeclassesdupackage CV_Test.GUI.controllers 26/38
    27. 27. Implémentation du projet 27/38
    28. 28. Microsoft LifeCam HD-5000 Implémentation du projet • 720p en vidéo et photo • Autofocus => netteté de l’image • Très large angle de vision • TrueColor • Vidéos HD de qualité • Correction automatique de la luminosité 28/38
    29. 29. Implémentation du projet JavaCV Environnement logiciel 29/38
    30. 30. Contexte général Méthodologie SCRUM 30/38
    31. 31. Implémentation du projet Démo 31/38
    32. 32. Contraintes rencontrées 32/38
    33. 33. Contraintes rencontrées Contraintes techniques • Nouvelles technologies et bibliothèques: JavaFX, OpenCV, JavaCV • Application des filtres de traitement vidéo • Algorithmes de reconnaissances de formes • Reconnaissance de texte : outils d’OCR • Calibration de la caméra 33/38
    34. 34. Contraintes rencontrées Coté organisationnel • Manque de réutilisation du code • Design des interfaces utilisateur • Recherche de l’information: algorithmes à utiliser 34/38
    35. 35. Conclusion et perspectives 35/38
    36. 36. Conclusion et perspectives Apport personnel • Travail sur un projet client de grand calibre destiné à être utilisé à l’échelle internationale. • Assimilation de notions complexes relatives à l’imagerie informatique. • Utilisation d’outils mathématiques dans des algorithmes informatiques. • Acquisition de notions d’architecture logicielle. • Contact direct et réunions régulières avec le client. • Adoption d’une méthode agile de gestion de projet : SCRUM 36/38
    37. 37. Perspectives du projet • Implémentation du module de réalité augmentée • Ajout d’une couche persistance : utilisation d’une base de données. • Intégration à une application mobile. Conclusion et perspectives 37/38

    ×