Vous êtes sur la page 1sur 49

Université Abdelmalek Essaâdi

Ecole Nationale des Sciences


Appliquées
Al Hoceima

PROJET DE FIN D’ANNEE

Filière : Génie informatique

Une application smartphone pour l'identification des objets


en se basant sur le Deep Learning.

Réalisé par

 KAFRAOUI Yassine
 KAMAL Anis
 MANAR Alae eddine

Encadré par

Pr. El Wardani DADI

Soutenu le 03/07/2021 devant le Jury :

 Pr. El Wardani DADI


 Pr. MOUSSAID Ahmed
Avant-propos

Pendant deux ans de formation en Génie Informatique au sein de l’Ecole Nationale


des Sciences Appliquées Al-Hoceima (E.N.S.A.H) qui exige à ses Elèves Ingénieurs
d'effectuer un Projet de Fin d’Année, qui a plusieurs objectifs comme :

Apprendre à travailler en équipe

 Savoir composer avec les méthodes de travail de chacun


 Savoir se coordonner,
 Savoir prendre sa place dans un groupe (participation, écoute, respect)
 Développer sa capacité à communiquer et à gérer les conflits
 Savoir rendre et demander des comptes.

Apprendre à être autonome

 Savoir prendre des décisions et des initiatives collectivement


 Assumer ses responsabilités
 Savoir prendre contact avec des personnes ressources

Le rapport de projet de fin d’année est un projet en soi. Il est important à retenir que le but
est de faire en sorte que tous les éléments qu’il présente permettent de remettre ensemble et dans
le bon enchainement les différentes composantes du projet
Dédicace

Je dédie ce travail :

À mes chers parents

Je n’ose pas imaginer une expression qui puisse résumer ma


gratitude envers votre soutient et encouragement. Aucune dédicace ne
saurait exprimermon amour et mon respect pour vous.

Que ce travail soit pour vous un témoignage de ma vive reconnaissance


et demon amour filial.

À mon cher frère et

Mes chères sœurs

Avec tout mon amour et mon affection, je vous souhaite une vie
pleine de bonheur et de réussite et je vous remercie pour votre soutien
durant toutes les périodes difficiles.

À mes amis, à l’ENSAH,


À tous ceux qui m’aiment
Sachez que vous m’êtes très chères et que je vous suis très
reconnaissantpour tout l’amour et le soutien dont vous faites preuve à
mon égard.

Je vous remercie du fond du cœur


REMERCIEMENT

Nous remercions tout d’abord Dieu tout puissant de nous avoir permis de
mener à terme ce projet qui présente pour nous le point de départ de notre carrière.

Il nous est agréable d’exprimer notre reconnaissance auprès de toutes les


personnes, dont l’intervention au cours de ce projet, a favorisé son aboutissement.

Ainsi, nous tenons à remercier nos encadrants Mr. El Wardani DADI pour
leurs directives précieuses et leurs conseils pertinents qui ont été d’un appui
considérable au cours de ce projet.

Nous adressons aussi nos remerciements à toute l’équipe pédagogique de


l’Ecole Nationale Des Sciences Appliquées Al-Hoceima et les intervenants
professionnels responsables de la Formation Génie Informatique qui a assuré la
partie théorique de celle-ci.

Que tous ceux et celles qui ont contribué de près ou de loin à


l’accomplissement de ce travail trouvent l’expression de nos remerciements les plus
chaleureux.
Résumé
Ce rapport est le résultat d'un travail collectif que nous avons effectué dans le cadre
du projet de fin d'année de la filière Génie Informatique au sein de l'Ecole Nationale Des
Sciences Appliquées d'Al Hoceima (ENSAH).
Il s'agit bien de développement et de l’implémentation d’un système de
reconnaissance d’objets en utilisant le Deep Learning. Dans un premier lieu, nous avons
effectué une étude pertinente et exhaustive de différentes technologies, garantissant la
reconnaissance des objets.
Dans un deuxième lieu, nous avons présenté les principaux modèles de réseaux de
neurones d’une manière homogène et de justifier le choix du modèle auquel nous nous
sommes particulièrement intéressés.
Par la suite, nous avons développé une application mobile qui va permettre à
l'utilisateur d'identifier des objets qui peuvent être de différentes catégories ou des mêmes
catégories grâce au camera du smartphone en déploiement un modèle pré-entrainé sur
Flutter destinée à la reconnaissance des objets.
Cette application est basée sur le Deep Learning, en utilisant des modèles inclus
dans le Framework Keras qui ont montré des résultats intéressants au niveau de la
reconnaissance ainsi qu’un taux d’erreur réduit. Finalement, nous avons conçu un système
capable de reconnaître des objets via l'algorithme de Deep Learning.

Mots Clés:

Reconnaissance des objets, Flutter, Deep Learning, TensorFlow, Keras, et Incept


i

Abstract

This report is the result of a collective work that we carried out within the framework
of the end-of-year project of the Computer Engineering sector within the National School
of Applied Sciences of Al Hoceima (ENSAH).
This is indeed the development and implementation of an object recognition system
using Deep Learning. First, we carried out a relevant and exhaustive study of different
technologies, guaranteeing the recognition of objects.
In a second place, we presented the main models of neural networks in a
homogeneous way and to justify the choice of the model in which we were particularly
interested.
Subsequently, we developed a mobile application that will allow the user to identify
objects that can be of different categories or the same categories thanks to the camera of
the smartphone in deployment a model pre-trained on Flutter intended for recognition
Objects.
This application is based on Deep Learning, using models included in the Keras
Framework, which have shown interesting recognition results as well as a reduced error
rate. Finally, we designed a system capable of recognizing objects via the Deep Learning
algorithm.

Keywords:

Object recognition, Deep Learning, TensorFlow, Keras, and Inception-V3.

Année universitaire 2020/2021


Table of Contents
Liste des figures ..................................................................................................................................... iv
Chapitre 1. Présentation Générale du projet de la reconnaissance d’objets ....................................... 7
I. Introduction ................................................................................................................................... 7
II. L'apprentissage automatique ........................................................................................................ 7
1. Méthode d'apprentissage automatique ........................................................................................ 8
2. L'apprentissage supervisé.............................................................................................................. 8
3. L'apprentissage non supervisé ...................................................................................................... 9
III. Les différentes approches d'apprentissage automatiques ...................................................... 11
1. KNN - k plus proche voisin ........................................................................................................... 11
2. Arbre de décision ......................................................................................................................... 12
3. Les réseaux neuronaux artificiels ................................................................................................ 13
4. L'apprentissage en profondeur "Deep Learning" ........................................................................ 15
5. Conclusion ................................................................................................................................... 19
Chapitre 2: Présentation du projet et des outils de travail ................................................................. 20
I. Présentation du projet................................................................................................................. 20
1. présentation du sujet ...................................................................................................................... 20
1.2 Contexte de du sujet ..................................................................................................................... 20
II. Outils de développement ............................................................................................................ 21
1. Logiciels et librairies Utilisés dans l’implémentation ...................................................................... 21
Chapitre 3. Étude du projet : ................................................................................................................. 4
I. Contexte du projet:........................................................................................................................ 4
1. Les utilisateurs de l’application: ....................................................................................................... 4
II. Vision de la solution:...................................................................................................................... 5
III. Liste des fonctionnalités: ........................................................................................................... 5
IV - Modélisation : ................................................................................................................................. 6
Chapitre 4. Réalisation du projet :......................................................................................................... 7
I. Connexion de camera : ....................................................................................................................... 7
1- Ajoutez les dépendances requises : .................................................................................................. 7
2 – Obtenir la liste des cameras disponible :......................................................................................... 8
3- Créer et initialiser le CameraController : .......................................................................................... 8
4 – Utilisez cameraPreview pour afficher le flux de la caméra : ........................................................... 9

ii
............................................................................................................................................................... 9
5- Prendre la photo avec CameraController : ..................................................................................... 10
6- Afficher l’image avec une Image widget: ........................................................................................ 11
II. Compilation sur l’émulateur d’Android : ..................................................................................... 12
1. Compilation sur le navigateur chrome : .......................................................................................... 12
2) Compilation avec le téléphone :...................................................................................................... 12
3.Compilation de la connexion avec la camera : ................................................................................. 12
II - Connexion du deep learning: ......................................................................................................... 14
1.Entraînement du modèle avec mobileNet: ...................................................................................... 14
2. Obtenir les indices de classe: .......................................................................................................... 14
3)Enregistrer le modèle sous format HDFS: ........................................................................................ 14
4) Convertir le modèle en modèle Tflite: ............................................................................................ 15
5).Convertir le modèle en TFLITE: ....................................................................................................... 15
Partie Flutter :...................................................................................................................................... 16
1) Création du fichier d’enregistrement des noms: ............................................................................ 16
2) Ajout des dépendances: .................................................................................................................. 16
3) Faire les importations nécessaires: ................................................................................................. 16
4) Créer les variables nécessaires : ...................................................................................................... 17
5) Appeler la fonction initState(): ........................................................................................................ 17
6) Créer les fonctions nécessaires pour faire fonctionner notre modèle: .......................................... 17

iii
Liste des figures
Figure 1:Différence entre apprentissage supervisé et apprentissage non supervisé ................................. 10
Figure 2:Apprentissage Semi-Supervisé ...................................................................................................... 11
Figure 3: L’algorithme de k-plus proche voisin ........................................................................................... 12
Figure 4 :Perceptron multicouche ............................................................................................................... 15
Figure 5:apprentissage profound ................................................................................................................ 15
Figure 6:la différence entre Machine learning et Deep learning ................................................................ 16
Figure 7:Extraction des informations d’une image ..................................................................................... 17
Figure 8:DES MODÈLES QUI RECONNAISSENT DE MIEUX EN MIEUX LES PLANTES .................................... 20
Figure 9:Keras .............................................................................................................................................. 21
Figure 10:thrano .......................................................................................................................................... 22
Figure 11:tensorflow ................................................................................................................................... 23
Figure 12:jupyter ........................................................................................................................................... 1
Figure 13:flutter............................................................................................................................................. 1
Figure 14:dart ................................................................................................................................................ 2
Figure 15 : Diagramme de cas d'utilisation ................................................................................................... 6
Figure 17 : l’icône de l’application flutter sur le téléphone ........................................................................ 13
Figure 16: La première interface ................................................................................................................. 13
Figure 18 : Commande pour enregistrer le modèle sous format HDFS ...................................................... 15
Figure 19 : Commande pour convertir le modèle a un modèle Tflite ......................................................... 15
Figure 20 :(Suite) Commande pour convertir le modèle a un modèle Tflite .............................................. 15

iv
Liste des tableaux
Tableau 1 : Comparaison entre les capacités du cerveau humain et l'ordinateur………………………1

v
Introduction général

De nos jours, il existe des ordinateurs capables d’effectuer des tâches faites par l’homme, qui
demandent de l’intelligence. Malgré tout ce progrès, la machine est toujours située à des années
lumières du cerveau humain si comparaison a eu lieu entre les deux.
Ceci est dû principalement à la complexité des tâches que nous cherchons à automatiser ainsi
la méconnaissance de cerveau, cet organe mystérieux, et des mécanismes qui régissent directement
l'activité de celui-ci.
S’investir dans le domaine de la reconnaissance des images est sans doute motivé par la
multiplicité et la variété des champs d’application (outils destiné pour les aveugles, médecine).
En vision par ordinateur on désigne par détection d'objet (ou classification d'objet) une
méthode permettant de détecter la présence d'une instance (reconnaissance d'objet) ou d'une classe
d'objets dans une image numérique. Une attention particulière est portée à la détection de visage et
la détection de personne. Ces méthodes font souvent appel à l'apprentissage supervisé et ont des
applications dans de multiples domaines, tels la recherche d'image par le contenu ou la vidéo
surveillance.
Depuis 2011, le challenge PlantCLEF met en avant les progrès des modèles d’identification
reposant sur l’apprentissage automatique appliqué à la botanique. L’arrivée des réseaux de
neurones convolutionels (CNN) a permis de nettes avancées.
Identifier une plante peut être complexe, même pour un botaniste. L’idée d’utiliser des outils
d’identification automatique à base de machine learning a été proposée dès 2004.
Il existe aujourd’hui plusieurs applications d’identification de la flore à partir d’images prises
avec un smartphone comme Seek, PlantSnap, PictureThis ou Pl@ntNet
.

6
Chapitre 1. Présentation Générale du projet de la reconnaissance
d’objets

I. Introduction
Les chercheurs essaient d'injecter des notions d'intelligence humaine dans des
machines. Étant conçue et fabriquée par l'homme, on qualifie l’injection des notions
d’intelligence humaine dans des machines comme une intelligence artificielle.
Cette dernière est souvent définie comme une science de développement des
systèmes capable d'accomplir des tâches qui nécessitentl'intelligence.
Depuis les débuts de l'IA dans les années 1950, ce domaine de recherche s'est enrichit
avec des nombres incalculables de recherches et d’expériences qui ont était fait dans les
derniers 60 ans.
Aujourd'hui, il existe des ordinateurs capables de résoudre des équations et des
problèmes en quelques millisecondes, dont l'homme était incapable de résoudre il y a 100
ans, il existe des ordinateurs capables de mener une discussion avec un être humain, qui
sont capables de répondre à des questions; il y a même des ordinateurs capables de
reconnaître son "propriétaire" juste par la voix.
Effectivement, grâce à l'IA, il existe aujourd'hui des ordinateurs et des systèmes
capablesde réaliser des tâches incroyables.
Mais cette "intelligence" vient d'une source commune: l'homme, qui a transmis à
ces ordinateurs ses propres capacités; c'est sûrement un des développements le plus
important dans l'histoire moderne de l'humanité et qui continue à nous révolutionner la
façon de vivre.

II. L'apprentissage automatique


L'apprentissage automatique est un sous-domaine de l'intelligence artificielle
(IA).

7
En général, l'objectif de l'apprentissage automatique est de comprendre la structure
des données et de les intégrer dans des modèles qui peuvent être compris et utilisés par
les tout le monde.

Bien que l'apprentissage automatique soit un domaine de l'informatique, il diffère des


approches informatiques traditionnelles. En effet dans cette dernière, les algorithmes sont
des ensembles d'instructions explicitement programmées utilisées par les ordinateurs
pour calculer ourésoudre des problèmes.

Les algorithmes d'apprentissage automatique permettent aux ordinateurs de


s'entraîner sur les entrées de données en utilisant des techniques de statistique pour
produire des solutions convenables.

Pour cette raison, l'apprentissage automatique facilite l'utilisation des ordinateurs


dans la construction de modèles à partir de données afin d'automatiser les processus de
prise de décision en fonction des données saisies.

1. Méthode d'apprentissage automatique


Dans l'apprentissage automatique, les tâches sont généralement classées en grandes
catégories. Ces catégories sont basées sur la façon dont l'apprentissage est conçu et le
contexte d'utilisation.
Trois méthodes d'apprentissage automatique les plus largement adoptées sont
l'apprentissage supervisé, l'apprentissage non supervisé, apprentissage par renforcement.

2. L'apprentissage supervisé
L'apprentissage supervisé (supervised learning en anglais) est une technique
d'apprentissage automatique où l'on cherche à produire automatiquement des règles à
partir d'une base dedonnées d'apprentissage contenant des « exemples ».
Prenons le cas de la reconnaissance d’objets : un problème supervisé correspond au
cas où le label « voiture » est bien associé, en base, à des photos de voitures, le label «
chat » à des photos de chat, etc.

L’algorithme apprend ainsi à partir de milliers ou de millions d’exemples étiquetés. Par


la suite, il cherche la relation qui permet de relier les images aux labels. Après avoir

8
classifié correctement les exemples, il peut ensuite généraliser ce classement à des
nouvelles données : classifiercorrectement des images de voiture ou de chat qu’il n’a
jamais vues durant la phase d’apprentissage.

3. L'apprentissage non supervisé


Dans l'apprentissage non supervisé, les données sont non étiquetées, de sorte que
l'algorithme d'apprentissage trouvé tout seul des points communs parmi ses données
d'entrée.
L'objectif de l'apprentissage non supervisé peut être aussi simple que de découvrir
des modèles cachés dans un ensemble de données, mais il peut aussi avoir un objectif
d'apprentissage des caractéristiques, qui permet à la machine intelligente de découvrir
automatiquement les représentations nécessaires pour classer les données brutes.
L'apprentissage non supervisé est couramment utilisé pour les données
transactionnelles.
Vous pouvez avoir un grand ensemble de données sur les clients et leurs achats, mais
en tant qu'être humain, vous ne serez probablement pas en mesure de comprendre quels
attributs similaires peuvent être tirés des profils de clients et de leurs types d'achats.
Avec ces données introduites dans un algorithme d'apprentissage non supervisé, on
peut déterminer que les femmes d'une certaine tranche d'âge qui achètent des savons non
parfumés sont susceptibles d'être enceintes, et donc une campagne de marketing liée à la
grossesse et aux produits pour bébés pour augmenter leur nombre d'achats.
Dans l'apprentissage non supervisé, les données sont non étiquetées, de sorte que
l'algorithme d'apprentissage trouve tout seul des points communs parmi ses données
d'entrée.
Les données non étiquetées étant plus abondantes que les données étiquetées, les
méthodes d'apprentissage automatique qui facilitent l'apprentissage non supervisé sont
particulièrement utiles.

9
Figure 1:Différence entre apprentissage supervisé et apprentissage non supervisé

Apprentissage semi supervisé


L'apprentissage semi-supervisé est une classe de techniques d'apprentissage
automatique qui utilise un ensemble des données étiquetées et non-étiquetées.
Il se situe ainsi entre l'apprentissagesupervisé qui n'utilise que des données étiquetées
et l'apprentissage non-supervisé qui n'utilise que des données non-étiquetées.
Il a été démontré que l'utilisation de données non-étiquetées, en combinaison avec
des données étiquetées, permet d'améliorer significativement la qualité de l'apprentissage.
Un autre intérêt provient du fait que l'étiquetage de données nécessite l'intervention d'un
utilisateur humain.
Lorsque les jeux de données deviennent très grands, cette opération peut s'avérer
fastidieuse.
Dans ce cas, l'apprentissage semi-supervisé, qui ne nécessite que quelques étiquettes,
revêt un intérêt pratique évident.
C'est dans le but d'améliorer lesperformances en combinant les données avec labels
(peu) et sans labels (beaucoup)
1.1. Classification semi-supervisée (discrimination) : Entraîner sur des données avec
labels et exploiter les données (beaucoup) sans labels pour améliorer les
performances

1.2. Clustering semi-supervisé : Clustering des données sans labels en s'aidant des
données avec labels ou paires de contraintes

10
Figure 2:Apprentissage Semi-Supervisé

Apprentissage par renforcement

L’apprentissage par renforcement fait référence à une classe de problèmes


d’apprentissage automatique, dont le but est d’apprendre, à partir d’expériences
successives, ce qu’il convient de faire de façon à trouver la meilleure solution.
Dans un tel problème, on dit qu’un « agent » interagit avec « l’environnement » pour
trouver la solution optimale.
L’apprentissage par renforcement diffère fondamentalement des problèmes
supervisés et non supervisés par ce côté interactif et itératif : l’agent essaie plusieurs
solutions on parle « d’exploration », observe la réaction de l’environnement et adapte son
comportement pour trouver la meilleure stratégie.
Un des concepts clés de ce type de problèmes est l’équilibre entre ces phases
d’exploration et d’exploitation. Cette méthode est particulièrement adaptée aux
problèmes nécessitant un compromis entre la quête de récompenses à court terme et celle
de récompenses à long terme.

III. Les différentes approches d'apprentissage automatiques


Les approches de l'apprentissage automatique sont continuellement développées.
Pour nos besoins, nous allons passer en revue quelques-unes des approches populaires
utilisées dans l'apprentissage automatique au moment de la rédaction de ce rapport.

1. KNN - k plus proche voisin

L'algorithme de k-plus proche voisin est un modèle de reconnaissance de modèle qui


peut être utilisé pour la classification et la régression. Souvent abrégé en k-NN, le k est
un entier positif, typiquement petit.

11
Dans la classification ou la régression, l'entrée consistera en les k exemples
d'entraînement les plus proches dans un espace.
Lorsque nous choisissons k = 3, l'algorithme trouvera les trois plus proches voisins
de la sphère verte afin de le classer soit dans la classe des ronds, soit dans la classe des
carrés.
Dans notre diagramme, les trois plus proches voisins de la sphère verte sont un carré
et deux ronds. Par conséquent, l'algorithme classera la sphère avec la classe des ronds.

Figure 3: L’algorithme de k-plus proche voisin

2. Arbre de décision
Pour un usage général, les arbres de décision sont utilisés pour représenter
visuellement les décisions et montrer ou éclairer la prise de décision. Lorsque vous
travaillez avec l'apprentissage automatique et l'exploration de données, les arbres de
décision sont utilisés comme modèle prédictif. Ces modèles cartographient les
observations de données et tirent des conclusions sur la valeur cible des données.
L'objectif de l'apprentissage par arbre de décision est de créer un modèle qui prédira
la valeur d'une cible en fonction de variables d'entrée. Dans le modèle prédictif, les
attributs des données qui sont déterminés par l'observation sont représentés par les
branches, tandis que les conclusions sur la valeur ciblée des données sont représentées
dans les feuilles.
Il faut noter qu'il existe d'autres méthodes d'apprentissage automatique pour la
prédiction tel que le réseau de Bayes, SVM, etc. De plus, une grande classe des méthodes

12
d'apprentissage automatique dédiée à la description des données tel que classification
hiérarchiques, k-mean, etc.

3. Les réseaux neuronaux artificiels

Un réseau de neurones artificiels, ou réseau neuronal artificiel, est un système dont la


conception est à l'origine schématiquement inspirée du fonctionnement des neurones
biologiques, et qui par la suite s'est rapproché des méthodes statistiques.
Les réseaux de neurones sont généralement optimisés par des méthodes
d’apprentissage de type probabiliste, en particulier bayésien.
Ils sont placés d’une part dans la famille des applications statistiques, qu’ils
enrichissent avec un ensemble de paradigmes permettant de créer des classifications
rapides et d’autre part dans la famille des méthodes de l’intelligence artificielle
auxquelles ils fournissent un mécanisme perceptif indépendant des idées propres de
l’implémenter, et fournissant des informations d'entrée au raisonnement logique formel.

Le Cerveau L’ordinateur
Nombre des unités de 1011 109

traitement
Type des unités de traitement Neurones Transistors
Type de calcule En parallèle En série
Stockage de données Les adresses basées
Temps de commutation 10-3 par s 10-9 par s

Les opérations 1013 par s 1018 par s


possibles
pendant la commutation
Les opérations réelles 1012 par s 1010 par s
pendent
la commutation

Tableau 1: Comparaison entre les capacités du cerveau humain et l'ordinateur

3.1 Concept

13
Un réseau de neurones artificiels, où réseau neuronal artificiel, est un modèle de
calcul dont la conception est très schématiquement inspirée du fonctionnement des
neurones biologiques.
Ces réseaux ont été développés pour résoudre des problèmes:
 De contrôle.
 De reconnaissance
 De formes.
 De décision.
 De mémorisation.

3.2 Le perceptron multicouche

Dans le modèle du Perceptron Multicouches, les perceptrons sont organisés en


couches. Les perceptrons multicouches sont capables de traiter des données qui ne sont
pas linéairement séparables.
Avec l’arrivée des algorithmes de rétro propagation, ils deviennent le type de réseaux
de neurones le plus utilisé. Les MLP sont généralement organisés en trois couches, la
couche d’entrée, la couche intermédiaire (dite couche cachée) et la couche de sortie.
L’utilité de plusieurs couches cachées n’a pas été démontrée. La figure 2.4 illustre la
structure d’un MLP présentant quatre neurones en entrée, trois neurones sur la couche
cachée et deux en sortie.
Lorsque tous les neurones d’une couche sont connectés aux neurones de la couche
suivante, on parle alors de couches complètement connectées.
Dans la figure on donne l'architecture de perceptron multicouche

14
Figure 4 :Perceptron multicouche

4. L'apprentissage en profondeur "Deep Learning"

4.1 Historique

Le concept de Machine Learning date du milieu du 20ème siècle. Dans les années
1950, le mathématicien britannique Alan Turing imagine une machine capable
d’apprendre, une « Learning Machine ».
Au cours des décennies suivantes, différentes techniques de MachineLearning ont été
développées pour créer des algorithmes capables d’apprendre et de s’améliorer de
manière autonome, et parmi les principales technologies de Machine Learning et
d’intelligence artificielle
On cite. Le Deep Learning, ou apprentissage profond.

Figure 5:apprentissage profound

4.2 Définition

L'apprentissage profond (Le deep learning) est un ensemble de méthodes


d'apprentissage automatique qui s’appuie sur des réseaux de neurones artificiels
tentant de modéliser avec un haut niveau d’abstraction des données grâce à des
architectures articulées de différentes transformations non linéaires.
Ces techniques ont permis des progrès importants et rapides dans les domaines
de l'analyse du signal sonore ou visuel et notamment de la reconnaissance faciale, de
15
la reconnaissance vocale, du traitement automatisé du langage et des images. Elle
est aujourd’hui, grâce à l’avancée de la technologie, la méthode phare de
l’Intelligence Artificielle (IA), utilisée par les grandes entreprises telles que Google,
IBM, Microsoft, Amazon, Adobe, Yandex, Baiduou Facebook.

Figure 6:la différence entre Machine learning et Deep learning

4.3 Fonctionnement

Au sein du cerveau humain, chaque neurone reçoit environ 100 000 signaux
électriques des autres neurones. Chaque neurone en activité peut produire un effet
excitant ou inhibiteur sur ceux auxquels il est connecté. Au sein d’un réseau artificiel, le
principe est similaire. Les signaux voyagent entre les neurones.
Toutefois, au lieu d’un signal électrique, le réseau de neurones assigne un certain
poids à différents neurones. Un neurone qui reçoit plus de charge exercera plus d’effet
sur les neurones adjacents. La couche finale de neurones émet une réponse à ces signaux.
Évidemment, le Deep Learning utilise une approche des petits calculateurs
artificiels reliés entre eux. Ils ont un fonctionnement pratiquement similaire à la fonction
des neurones de notre cerveau. C’est pourquoi, ils forment un « réseau neuronal » qui
reçoit une entrée l’analyse, prend une décision à ce sujet et est informé si sa détermination
est correcte.
Dans l’hypothèse où la réponse est fausse, les connexions entre les neurones sont
ajustées par l’algorithme. Et par conséquent va changer ses prévisions futures.
Initialement, le réseau sera erroné plusieurs fois.
Mais comme nous alimentons en millions d’exemples, les connexions entre les
neurones seront réglées de sorte que le réseau neuronal rend des décisions correctes sur
presque toutes les occasions.
Grâce à ce processus, avec une efficacité croissante nous pouvons maintenant :
16
 Reconnaître les éléments en images,
 Traduire entre les langues en temps réel,
 Utiliser la parole pour commander des appareils (Google Apple et
maintenant, Amazon Alexa et Microsoft Cortana),
 Prédire comment la variation génétique effectuera la transcription
d’ADN,
 Analyser le sentiment dans les évaluations des clients,
 Analyser les mauvais comportements en voiture,
 Détecter des tumeurs dans des images médicales.

Figure 7:Extraction des informations d’une image

4.4Exemple

Pour comprendre comment fonctionne le Deep Learning, prenons


un exemple concret de reconnaissance d’images. Imaginons que le
réseau de neurones soit utilisé pour reconnaître les photos qui
comportent au moins un chat.

Pour pouvoir identifier les chats sur les photos, l’algorithme doit être
en mesure de distinguer les différents types de chats, et de reconnaître
un chat de manière précise quel que soit l’angle sous lequel il est
photographié.
17
Afin d’y parvenir, le réseau de neurones doit être entraîné. Pour ce
faire, il est nécessaire de compiler un ensemble d’images d’entraînement
pour pratiquer le Deep Learning.

Cet ensemble va regrouper des milliers de photos de chats différents,


mélangés avec des images d’objets qui ne sont pas des chats. Ces images
sont ensuite converties en données et transférées sur le réseau.

Les neurones artificiels assignent ensuite un poids aux différents


éléments. La couche finale de neurones va alors rassembler les
différentes informations pour déduire s’il s’agit d’un chat ou non.

4.5Les champs d’application

Des millions de personnes profitent déjà des progrès réalisés grâce


au Deep Learning. Parmi les champs d'action de cette technologie on
trouve:

Le traitement d'image, de la vidéo, de la voix, et plus spécifiquement


de la détection d'objets dans le domaine automobile (piétons, panneaux
de signalisation, voitures, bus, marquage au sol).

De nombreux secteurs d'activité exploitent des programmes de


reconnaissance d'image:

Les sites marchands pour classifier.

Identifier et trouver des similitudes entre des produits ou des


familles de produits.

La robotique pour permettre par exemple à un robot-aspirateur de se


déplacer en toute autonomie.
18
Les réseaux sociaux et autres sites de partage de photos pour la
reconnaissance faciale.

Les moteurs de recherche pour détecter les similitudes entre des


images.

L’industrie automobile pour le développement des voitures


autonomes.

La médecine pour la recherche de cellules cancéreuses.

5. Conclusion

L’intelligence artificielle est un domaine qui a connu des fortes


périodes d’innovations mais aussi de longues périodes peu productives.

A l’heure d’aujourd’hui, l’IA est en plein essor, elle est devenue


indispensable au quotidien notamment avec l’informatique et les moyens
de communication.

19
Chapitre 2: Présentation du projet et des outils de
travail

I. Présentation du projet

1. présentation du sujet
Le travail de thèse présenté ci-après et intitulé « Analyse d’images
des fleurs par méthode de Deep Learning». Celui-ci fait appel à
l’intelligence artificielle ainsi qu’aux systèmes de vision afin d’avoir une
bonne reconnaissance des fleurs.

Dans ce chapitre, nous allons définir l’architecture du modèle qu’on


a utilisé et par la suite nous allons appliquer ce modèle sur la base
d’images IMAGENET.

Figure 8:DES MODÈLES QUI RECONNAISSENT DE MIEUX EN MIEUX LES PLANTES

1.2 Contexte de du sujet


PROBLÉMATIQUE

20
L’ensemble du monde végétaux est estimé à plus 360 000 espèces
dans le monde. Il est difficile pour une personne ordinaire de connaître
les différentes espèces de ces plantes.

Il est aussi important de connaître que la différence d’une espèce à


une autre peut résider à des détails minime tels que des bourgeons, des
épines qui peuvent échapper à l’œil de certains experts.

Notre application va donc permettre grâce à une photo prise sur


son smartphone de détecter le nom de la plante.

SOLUTION APPORTÉE

Pour remédier au problème posé par l’identification on a développé


une intelligence artificielle capable de reconnaître les espèces de fleurs

Cette technologie permet de reconnaître une fleur à partir d’une


photo prise avec un Smartphone

II. Outils de développement

1. Logiciels et librairies Utilisés dans l’implémentation

1.1 Keras

Figure 9:Keras

Keras est une API de réseaux de neurones de haut niveau, écrite en Python et
capable de fonctionner sur TensorFlow ou Theano. Il a été développé en mettant

21
l'accent sur l'expérimentation rapide. Être capable d'aller de l'idée à un résultat
avec le moins de délaipossible est la clé pour faire de bonnes recherches.
Il a été développé dans le cadre de l'effort de recherche du projet ONEIROS
(Open-ended Neuro-Electronic Intelligent Robot Operating System), et son
principal auteur et mainteneur est François Chollet, un ingénieur Google. En 2017,
l'équipe TensorFlow de Google a décidé de soutenir Keras dans la bibliothèque
principale de TensorFlow.
Chollet a expliqué que Keras a été conçue comme une interface plutôt
quecomme un cadre d'apprentissage end to end. Il présente un ensemble
d'abstractions de niveau supérieur et plus intuitif qui facilitent la configuration
des réseaux neuronaux indépendammentde la bibliothèque informatique de
backend. Microsoft travaille également à ajouter un backend CNTK à Keras aussi
Pourquoi Keras?

 Léger et rapide: Keras est conçu pour éliminer le code standard. Quelques
lignes de code Keras atteindront beaucoup plus que le code Tensorflow
natif. Vous pouvez facilement concevoir CNN et RNN et pouvez les
exécuter sur GPU ou CPU.

 Gagnant potentiel émergent: Keras est une API qui fonctionne sur un back-
end. Ce back-end peut être Tensorflow ou Theano. Microsoft travaille
également à fournir CNTK en tant que back-end à Keras.

1.2 Theano

Figure 10:thrano

Theano est une bibliothèque Python qui permet de définir, d'optimiser et


d'évaluer efficacement des expressions mathématiques impliquant des tableaux
multidimensionnels.

22
1.3 TensorFlow

Figure 11:tensorflow
TensorFlow est un Framework de programmation pour le calcul numérique qui
a été rendu Open Source par Google en Novembre 2015.
Depuis son release, TensorFlow n’a cessé de gagner en popularité, pour devenir
très rapidement l’un des Framework les plus utilisés pour le Deep Learning et donc
les réseaux de neurones.
Son nom est notamment inspiré du fait que les opérations courantes sur des
réseaux de neurones sont principalement faites via des tables de données
multidimensionnelles, appelées Tenseurs (Tensor).
Un Tensor à deux dimensions est l’équivalent d’une matrice. Aujourd’hui, les
principaux produits de Google sont basés sur TensorFlow: Gmail, Google Photos,
Reconnaissance de voix.

23
1.4 Jupyter

Figure 12:jupyter

Jupyter est une application web utilisée pour programmer dans plus de 40 langages
de programmation, dont Julia, Python, R, Ruby ou encore Scala1.
Jupyter est une évolution du projet IPython. Jupyter permet de réaliser des
notebooks, c'est-à-dire des programmes contenant àla fois du texte en réduction et du
code en Julia, Python, R... Ces notebooks sont utilisés en science des données pour
explorer et analyser des données.

1.5 FLUTTER

Figure 13:flutter

Flutter est un kit de développement de logiciel (SDK) d'interface utilisateur


open-source créé par Google. Il est utilisé pour développer des applications pour
Android, iOS, Linux, Mac, Windows, Google Fuchsia et le web à partir d'une seule
base de code.

1
La première version de Flutter était connue sous le nom de code "Sky" et fonctionnait
sur le système d'exploitation Android.
Elle a été dévoilée lors du sommet des développeurs Dart de 20153, avec l'intention
déclarée de pouvoir effectuer un rendu cohérent à 120 images par seconde4.
Lors du discours d'ouverture des Google Developer Days à Shanghai, Google a
annoncé la sortie de Flutter Release Preview 2 qui est la dernière grande version avant
Flutter 1.0.
Le 4 décembre 2018, Flutter 1.0 a été publié lors de l'événement Flutter Live, ce qui
représente la première version "stable" du Framework.
Le 11 décembre 2019, Flutter 1.12 a été publié lors de l'événement Flutter
Interactive5.
Le 6 mai 2020, le SDK de Dart en version 2.8 et celui de Flutter en version 1.17.0
sont sortis. La prise en charge de l'API Metal a été ajoutée, améliorant les performances
des appareils iOS (environ 50 %), de nouveaux widgets Material et de nouveaux outils de
suivi de réseau.
Le 3 mars 2021, l'équipe de développement de Flutter a annoncé la release de son
SDK en version 2.0.0. De nombreux bugs et problèmes de jeunesse ont par cette occasion
été résolus (ajout de null safety par exemple). De plus, l'utilisation de Windows, Linux et
la version Web sont ajoutés à la release.

1.6 Language Dart

Figure 14:dart

2
Dart est un langage de programmation optimisé pour les applications sur plusieurs
plateformes. Il est développé par Google et est utilisé pour créer des applications mobiles,
de bureau, de serveur et web.
Dart est un langage orienté objet, basé sur la classe, récupérateur de mémoire avec
une syntaxe de type C1. Dart peut se compiler en code natif ou en JavaScript. Il prend en
charge les interfaces, les mixins,les classes abstraites, les génériques réifiés et l' inférence
de type2.

3
Chapitre 3. Étude du projet :

I. Contexte du projet:
L’ensemble du monde végétaux est estimé à plus 360 000 espèces dans le monde. Il
est difficile pour une personne ordinaire de connaître les différentes espèces de ces
plantes.
Il est aussi important de connaître que la différence d’une espèce à une autre peut
résider à des détails minime tels que des bourgeons, des épines qui peuvent échapper à
l’œil de certain expert.
Notre application va donc permettre grâce à une photo prise sur son smartphone de
détecter le nom de la plante.

1. Les utilisateurs de l’application:


L’application est disponible à tout le monde désirant connaître le nom d’une plante.
A usage professionnels nous avons:
1.1.1. Les agriculteurs:
Un agriculteur étant en permanence sur des champs de plantation aura besoin de
savoir quelle plante se trouve sur sa passerelle.
Par exemple avant de diffuser un herbicide il pourra d’abord savoir les plantes qui
se trouve sur sa passerelle pour bien l’appliquer.
1.1.2. Les douaniers:
Pour détecter les différents types de plante qui traverse sur les différent les territoires
internationaux.
Le douanier confronté à une plante rare peut être protégée par la convention sur le
commerce international des espèces de faune et de flore sauvages menacées d’extension.
1.1.3. Les jardiniers:
Le jardinier peut savoir plus sur l’espèce public ou privé qu’il doit gérer et embellir
1.1.4. Les botanistes:
L’application peut servir aux botanistes en récupérant des informations du terrain leur

4
permettant d’avoir une idée sur la répartition des plantes dans l’espace, leur évolution et
ainsi de suite.

II. Vision de la solution:


Nous comptons mettre en place une application permettant de détecter le nom d’une
plante à l’aide d’une photo prise avec son smartphone.
Notre application sera disponible dans les plateformes de téléchargement App Store
et Play Store. Du coup nous envisagerons d’utiliser la technologie Flutter qui nous
permettra de créer une application multiplateforme.
Donc sur Android et IOS. Et par la suite dans d’autres plateforme.

III. Liste des fonctionnalités:


L’application que nous essayons de développer est une application de détection des
fleurs par un smartphone.
Pour réaliser cette application, nous devons implémenter les fonctionnalités
suivantes:
- Permettre d’identifier une plante à partir d’une photo prise par son smartphone
- Permettre d’identifier une plante à partir d’une photo qui existe déjà dans le
téléphone
- Avoir la possibilité de d’enregistrer une photo avec le nom identifier

5
IV - Modélisation :

Figure 15 : Diagramme de cas d'utilisation

6
Chapitre 4. Réalisation du projet :

I. Connexion de camera :
Pour la réalisation de notre projet, nous avons besoin de connecter la camera du
smartphone pour prendre des photos. Le framework flutter contient des plugins
permettant d’obtenir une liste des appareils photos disponible, afficher un aperçu
provenant d’un appareil photo spécifique et prendre des photos ou des vidéos.
Afin de réaliser cela nous devons suivre les étapes suivantes :

1- Ajoutez les dépendances requises :


Nous avons à ajouter trois dépendances qui sont : camera
Fournit des outils pour travailler avec les cameras sur l’appareil : path_provider
Trouve les chemins corrects pour stocker les images path
Crée des chemins qui fonctionnent sur n’importe quelle plate-forme.

Par la suite nous devons mettre à jour minSdkVersion à 21


Pour Android :
Pour IOS :
Nous devons ajouter à l’intérieur de ios/Runner/info.plist
<key>NSCameraUsageDescription</key>
<string>Explanation on why the camera access is needed.</string>

7
2 – Obtenir la liste des cameras disponible :
Pour obtenir la liste des caméras, nous devons procéder aux étapes suivant :

3- Créer et initialiser le CameraController :


Le CameraControllrer va nous permettre d’établir une connexion à la camera de
l’appareil qui nous permet de contrôler la camera et d’afficher un aperçu du flux de la
caméra.
Pour réaliser cela, nous devons suivre les étapes suivantes :
- Créez un StatefulWidgetavec une Stateclasse compagnon.
- Ajoutez une variable à la Stateclasse pour stocker le fichier CameraController.
- Ajoutez une variable à la Stateclasse pour stocker le Future retour de
CameraController.initialize().
- Créez et initialisez le contrôleur dans la initState() méthode.

8
4 – Utilisez cameraPreview pour afficher le flux de la caméra :

9
5- Prendre la photo avec CameraController :
Nous pouvons utiliser le CameraController pour prendre des photos à l'aide de la
takePicture()méthode , qui renvoie une XFile, une Fileabstraction simplifiée multi
plateforme .
Sur Android et IOS, la nouvelle image est stockée dans leurs répertoires de cache
respectifs, et le path à cet emplacement est renvoyé dans le fichier XFile.
Dans cet exemple, créez un FloatingActionButtonqui prend une photo en utilisant le
CameraController lorsqu'un utilisateur appuie sur le bouton.
Prendre une photo nécessite 2 étapes :
- Assurez-vous que la caméra est initialisée- Utilisez le contrôleur pour prendre une
photo et assurez-vous qu'elle renvoie un fichier Future<Xfile>.

10
6- Afficher l’image avec une Image widget:
Si la photo est prise avec succès, nous pouvons alors l’afficher à l’aide d’un Image
Widget. Dans ce cas l’image est stockée sous forma de ficher sur l’appareil.

 Compilation du code :
Pour la réalisation de notre application, nous avons utilisé Visual Studio Code
comme éditeur. Cette éditrice est le mieux adapté pour réaliser des applications avec

11
flutter.
Nous avons installé les plugins permettant de compiler directement sur l’éditeur.
Ces plugins vont nous permettre d’optimiser notre travail en nous évitant d’ouvrir
Android studio.
Le plugin en question est flutter. Ce dernier installe aussi le plugin dart.

Avec le Framework flutter, nous avons trois mode de compilation qui sont :

II. Compilation sur l’émulateur d’Android :


En effet Android studio propose un émulateur permettant de visualiser notre
application.
Cette émulatrice agit comme un téléphone donc possède tous les fonctionnalités
d’un téléphone. Néanmoins cette méthode de compilation a un inconvénient c’est qu’il
consomme beaucoup de mémoire RAM.

1. Compilation sur le navigateur chrome :


Le Framework flutter permet de compiler directement sur le navigateur chrome. En
ce sens l’application est directement visualisé dur le navigateur. Mais comme on est sur
un navigateur, on ne peut pas avoir tous les fonctionnalités existant sur le téléphone.

2) Compilation avec le téléphone :


En effet nous avons la possibilité de compiler directement sur le téléphone. Pour
faire cela, nous devons activer le mode débogage de notre téléphone et connecter notre
téléphone sur l’ordi avec un câble USB.
Cette méthode de compilation est bien adaptée avec notre projet car elle nous permet
d’utiliser directement la camera du smartphone et d’être en contact direct avec le
téléphone.

3.Compilation de la connexion avec la camera :


Après avoir écrit le code permettant de faire la connexion avec la camera, nous allons
passer à la partie de compilation.
Pour cela il suffit de cliquer sur F5 ou start debuging et choisir le téléphone

12
connecter.
Par la suite attendre que la compilation se fasse. Nous avons remarqué après la
compilation, l’icône de l’application flutter sur le téléphone

Figure 17 : l’icône de l’application flutter sur le téléphone

Figure 16: La première interface

13
II - Connexion du deep learning:
Il est à savoir que le code de deep learning est déjà disponible. Il s’agit d’un code
python permettant de faire la détection des fleurs par une image.
Pour pouvoir faire la connexion du deep leaning avec la photo prise par la caméra
nous devons suivre les étapes suivantes:

1.Entraînement du modèle avec mobileNet:


Avant de déployer notre modèle nous devons tout d’abord l’entraîner avec Mobile
Net. En effet entraîner un algorithme et surtout l’utiliser est très coûteux en ressources,
car il faut utiliser des dizaines de milliers d’images des dizaines de milliers de fois, sauf
si on utilise les Mobile Nets (abrégé de Mobile Networks).
Parmi les avantages on citera:
- Extrêmement légers et petits (en termes de ligne de code et de poids des modèles)
- Infiniment rapides (avec une borne supérieure, quand même !)
- D’une précision redoutable, surtout pour les ressources consommées
- Facilement configurables pour améliorer la précision de la détection
- Dédiés à l’embarqué et aux smartphones, pour déporter les calculs

2. Obtenir les indices de classe:


Lorsque le modèle prédit quelque chose ou une image ou une entrée, il renvoie un
vecteur où toutes les valeurs seront 0 et une valeur sera 1 indiquant que le modèle a prédit
et nous devons savoir quels sont nos indices de modèle
Pour les modèles CNN multi classe nous utiliserons une fonction soft max cela
signifie que votre vecteur de résultat aura des valeurs de probabilité au lieu de 1 et 0.

3)Enregistrer le modèle sous format HDFS:

14
Figure 18 : Commande pour enregistrer le modèle sous format HDFS

4) Convertir le modèle en modèle Tflite:


Pour la suite nous allons utiliser Google Labs pour héberger d’un notre modèle et
l’exécuter. Nous allons créer un cahier dans Google Colab avec python 3.
Google Colab est un service cloud gratuit hébergé par Google pour encourager la
recherche sur l'apprentissage automatique et l'intelligence artificielle, où souvent
l'obstacle à l'apprentissage et au succès est l'exigence d'une énorme puissance de calcul.
Après avoir stocker notre modèle on exécute le code suivant:

Figure 20 :(Suite) Commande pour convertir le modèle a un modèle Tflite

Figure 19 : Commande pour convertir le modèle a un modèle Tflite

5).Convertir le modèle en TFLITE:

Pour convertir le modèle en TFLITE, il nous suffit d’exécuter le code


suivant:

15
Partie Flutter :

1) Création du fichier d’enregistrement des noms:


Pour pouvoir faire la partie de connexion avec le code flutter, nous devons d’abord
créer un dossier d’actifs dans l’application flutter puis copier le modèle Tflite téléchargé
dans le dossier assets.
Par la suite il nous faudra créer un fichier d’actifs avec le nom label.txt Dans ce
ficher nous allons remplir les noms de nos fleures de résultats dans le même ordre qu’à
partir des indices de classe mais sans le numéro d’index.

2) Ajout des dépendances:


Nous devons ajouter les dépendances nécessaires pour permettre au
Framework flutter de prendre en considération notre modèle

3) Faire les importations nécessaires:


Tout d’abord nous devons importer le package pour prendre en considération notre

16
modèle, et le package qui permet de traiter les images.

4) Créer les variables nécessaires :


Nous devons créer les variables permettant de de stocker les sorties de notre
application ainsi que de stocker les images.

5) Appeler la fonction initState():

6) Créer les fonctions nécessaires pour faire fonctionner notre


modèle:
Les classe que nous allons écrire vont nous permettre d’appeler automatiquement
la classification de l’image et le stocker la résultat dans la variable _outputs.

17
_outputs est une liste de probabilité la plus appropriée de la prédiction, le premier
élément aura la probabilité la plus élevée
Ainsi -outputs [0] sera le résultat.

18
Conclusion générale :

Ce rapport présente le résultat d'un travail soutenu et assidu qui s'inscrit dans le cadre
de la réalisation d'un projet de fin d'année.
Dans ce projet nous avons réalisé un système de reconnaissance des fleurs en utilisant
le Deep Learning.
Nous avons développé, une application mobile pour la reconnaissance des objets en
utilisant un modèle python.
Ce projet nous a donnée l’opportunité d’apprendre le Framework Flutter qui est un
Framework d’actualité.
Cette expérience nous a permis d’appliquer les connaissances qui nous ont été
inculquées au cours de notre formation Ingénieur d’État en Génie Informatique à l’École
Nationale des Sciences Appliquée Al-Hoceima.
Aussi, ce travail constituait pour nous l’occasion de découvrir et d’utiliser de
nouveaux outils afin d’exploiter nos connaissances acquises et d’apprendre à produire
des applications informatiques de qualité.

19
Bibliographie :
 https://dataanalyticspost.com/modeles-reconnaissent-mieux-en-mieux-les-plantes/
 https://tel.archives-ouvertes.fr/tel-03022934/document
 https://fr.wikipedia.org/wiki/D%C3%A9tection_d%27objet
 https://www.kaggle.com/rajmehra03/flower-recognition-cnn-keras consulté le 15/05/2021
 https://www.numerama.com/tech/281269-lapplication-plantnet-le-shazam-des-plantes-et-des-
fleurs.html consulté le 20/06/2021
 https://www.inovex.de/blog/tensorflow-mobile-android-app/consulté le 21/06/2021
 https://medium.com/analytics-vidhya/run-cnn-model-in-flutter-10c944cadcba consulté le
21/06/2021
 http://stackoverflow.com consulté le 18/06/2021
 https://www.grss-ieee.org/wp-content/uploads/2009/phdTheses/Erus_These_250608.pdf
 consulté le 01/04/2021
 https://deeplearning4j.org/ consulté le 06/06/2021
 https://tel.archives-ouvertes.fr/tel-00932263/document consulté le 20/05/2021
 https://spring.io/tools/sts consulté le 06/06/2021
 http://ramok.tech/2017/12/13/java-digit-recognizer-with-convolutional- neural-
networks/#Putting_all_together consulté le 01/06/2021
 http://www.fredzone.org/naissance-et-evolution-de-lintelligence-artificielle-002 consulté le
15/04/2021
 http://cache.media.eduscol.education.fr/file/ISN_Tle_S/23/8/lyceeGT_ressource_ISN_27_06
_ Tle_ S_01_introduction_219238.pdf consulté le 15/05/2021
 http://histoire3d.siggraph.org/images/6/69/ImNu-CHTS-Pau-93.pdf consulté le 20/05/2021
 Tinne Tuytelaars & Krystian Mikolajczyk. Local invariant feature detectors : a survey.
Found.
 Trends. Comput. Graph. Vis., vol. 3, no. 3, pages 177–280, July 2008.
 C. Harris & M. Stephens. A Combined Corner and Edge Detector. In Proceedings of the 4th
Alvey Vision Conference, pages 147–151, 1988.
 P. R. Beaudet. Rotationally invariant image operators. In Proceedings of the 4th International
Joint Conference on Pattern Recognition, pages 579–583, Kyoto, Japan, nov 1978.

20
 Jiri Matas, Ondrej Chum, Martin Urban & Tomás Pajdla. Robust wide baseline stereo from
maximally stable extremal regions. In British Machine Vision Conference, volume 1, 2002.
 Laurent Itti, Christof Koch, E Niebur & Others. A model of saliency-based visual attention
for rapid scene analysis. IEEE Transactions on pattern analysis and machine intelligence, vol.
20, no. 11, pages 1254–1259, 1998.
 https://tel.archives-ouvertes.fr/tel-01175465/document consulté le 15/05/2021

21

Vous aimerez peut-être aussi