Académique Documents
Professionnel Documents
Culture Documents
*-*-*-*-*
HAUT COMMISSARIAT AU PLAN
*-*-*-*-*-*-*-*
INSTITUT NATIONAL
DE STATISTIQUE ET D’ECONOMIE APPLIQUEE
*****
Bibliothèque et container de vision d’ordinateur
2
Dédicace
Dédicace
A ma très chère mère Najat, à mon frère Ouail, à ma sœur Wissal, qui
représentez pour moi ce qui a de plus important. Pour toute ma famille, qui n’a
jamais arrêté de me soutenir et de m’encourager pour avancer et dépasser mes
limites.
A mes très chers professeurs, qui m’ont beaucoup offert, et sont les vrais
piliers de ce travail, vous nous avez tant donné, et c’est maintenant de notre tour
de contribuer et ajouter de la valeur à notre société.
A tous mes amis, ma seconde famille, qui aviez été un support tout au long
de ce parcours. Que la distance entre nous soit lointaine ou proche, vous resterez
toujours près du cœur.
A Andreea, ma chère encadrante qui m’a permis de travailler sur un sujet qui
explore les limites, à M. Kabbaj, mon cher encadrant qui m’a encouragé à
poursuivre dans ce parcours.
A toute l’INSEA, qui m’a été un second berceuil, et à Zenika, qui m’a offert
l’opportunité de voir un nouvel univers.
3
Remerciements
En tout premier lieu, je devrais adresser mes remerciements à mes encadrant,
M. Kabbaj et Mme. Dumitrascu, pour leur soutien, leurs encouragements et leur
bonne volonté, dont ils ont amplement fait preuve pour la durée de mon stage,
ainsi que leurs conseils et leur judicieux encadrement qu’ils m’ont prodigués en
abondance.
Mes remerciements sont aussi pour tous mes enseignants à l’Institut National
de Statistique et Economie Appliquée, m’ayant offert une formation qui est à
jour avec les demandes internationales du monde professionnel, et qui m’a
permis de travailler sur les sujets de pointe du monde.
4
Résumé
Résumé
Mon projet de fin d’études au sein de Zenika s’inscrit dans le cadre d’un
projet de recherche et développement de l’entreprise, qui consiste à offrir aux
développeurs et entreprises une bibliothèque de modèles d’intelligence
artificielle optimisés pour utilisation production.
5
Table de matières
Table de matières
***** ..................................................................................................................... 1
Dédicace : .............................................................................................................. 3
Remerciements ...................................................................................................... 4
Résumé .................................................................................................................. 5
Table de matières................................................................................................... 6
Liste des figures..................................................................................................... 8
Liste des Abréviations ......................................................................................... 10
Introduction ......................................................................................................... 11
Chapitre 1 : Contexte ........................................................................................... 12
1. Organisme d’accueil : ................................................................................ 13
a. Présentation socio-économique de l’entreprise ...................................... 13
b. Présentation générale de l’entreprise ...................................................... 14
c. Management de l’entreprise ................................................................... 15
d. Clientèle et partenariat ............................................................................ 15
e. Récompenses et prix ............................................................................... 15
a. Présentation du projet : .............................................................................. 16
a. Contexte du projet : ................................................................................ 16
b. Problématique abordée : ......................................................................... 17
c. Solution envisagée : ................................................................................ 20
2. Conduite du projet : ................................................................................... 23
a. Démarche de gestion de projet : ............................................................. 23
b. Planification du projet : .......................................................................... 26
3. Conclusion : ............................................................................................... 27
Chapitre 2 : Analyse ............................................................................................ 28
1. Revue et littérature : ................................................................................... 29
a. La vision par ordinateur : ........................................................................ 29
b. Auto-ML (Machine Learning Automatique) : ........................................ 32
c. Le Quantum Computing ......................................................................... 32
d. Le Quantum Machine Learning .............................................................. 35
2. Etat d’art et étude des solutions existantes : .............................................. 36
a. Open CV : ............................................................................................... 36
b. TF-Insightface : ...................................................................................... 36
c. Dlib : ....................................................................................................... 37
d. Face_recognition : .................................................................................. 37
2. Analyse des besoins : ................................................................................. 37
6
Table de matières
a. Spécification des besoins : ...................................................................... 37
b. Cas d’utilisations : .................................................................................. 39
c. Architecture du système : ....................................................................... 40
3. Conclusion : ............................................................................................... 42
Chapitre 3 : Environnement ................................................................................ 43
1. Outils de bibliothèque : .............................................................................. 44
a. Python 3 : ................................................................................................ 44
b. Tensorflow : ............................................................................................ 45
c. Numpy : .................................................................................................. 47
d. Pandas : ................................................................................................... 48
e. Jupyter Notebook : .................................................................................. 49
f. Qiskit :..................................................................................................... 50
g. AutoKeras : ............................................................................................. 50
h. Dlib : ....................................................................................................... 51
2. Environnement et container : ..................................................................... 52
a. Flask : ...................................................................................................... 52
b. Docker :................................................................................................... 53
2. Conclusion : ............................................................................................... 54
Chapitre 4 : Réalisation ....................................................................................... 55
1. Bibliothèque de Vision d’ordinateur : ....................................................... 56
a. Reconnaissance Faciale : ........................................................................ 56
b. Reconnaissance d’objet : ........................................................................ 58
c. Algorithme quantique : ........................................................................... 60
d. Modularisation de la bibliothèque : ........................................................ 62
2. Mise en production de la solution :............................................................ 63
a. Mise en place du serveur et container : .................................................. 63
b. Spécification des accès APIs : ................................................................... 63
2. Conclusion : ............................................................................................... 65
Conclusion Générale : ......................................................................................... 66
Webographie : ..................................................................................................... 67
7
Liste des figures
9
Liste des Abréviations
IT – Information Technologies
IA – Intelligence Artificielle
10
Introduction
Introduction
Beaucoup d’entreprises et développeurs sont de plus en plus intéressés par
l’intelligence artificielle, vu les avantages qu’elle offre, et l’avancement qu’elle
a atteint dans les dernières décennies. Chatbots, vision d’ordinateur, ou moteurs
de recommandations, ils peuvent reconnaître leur importance dans le monde
futur, et essaient d’en faire partie, que ce soit pour développer de nouveaux
services et applications, optimiser des processus, ou exploration en R&D.
11
Chapitre 1 : Contexte
12
Chapitre 1 : Contexte
1. Organisme d’accueil :
a. Présentation socio-économique de l’entreprise
Zenika [1] est une entreprise de services du numérique, créée en 2006 à Paris
par un groupe de quatre développeurs : Carl Azoury, Laurent Delvaux, Nicolas
André et Pierre Queinnec. Aujourd’hui Zenika est considérée comme une
entreprise internationale, elle est située dans trois continents et 10 villes, qui sont
Paris, Lyon, Rennes, Nantes, Lille, Bordeaux, Singapour, Montréal, Grenoble et
Brest. L’agence de Paris au sein de laquelle j’ai effectué mon stage était fondée
en 2006.
13
Chapitre 1 : Contexte
- Services de formation : la veille technologique et l’adaptation aux futurs
besoins technologiques se considèrent comme une nécessité au sein de Zenika.
Dans cette perspective des formations dans tous les domaines sont programmées
par les consultants.
c. Management de l’entreprise
d. Clientèle et partenariat
Également, Zenika est partenaire des sociétés les plus connues dans le monde
comme : Pivotal (Spring), MongoDB, Elastic, Docker...
e. Récompenses et prix
Zenika a remporté plusieurs prix au cours des années, dont les prix phares :
15
Chapitre 1 : Contexte
• Best Workplace : Chaque année, Great Place To Work étudie les
meilleures entreprises françaises où il fait bon de travailler. Pour sa
cinquième participation, Zenika occupe la 1ère place du Palmarès Great
Place to Work France 2018 dans la catégorie de moins de 500 salariés, et
la 9ème place au classement Européen.
• HappyTrainees : Une enquête européenne sur la satisfaction des stagiaires
et alternants. Les étudiants en mission chez Zenika ont attribué la note de
4.28 / 5 pour la qualité de leur stage, ce qui a propulsé Zenika à la 7ème
place du classement HappyTrainees 2015/2016.
• Deloitte Technology Fast50 : Pour la quatrième année consécutive,
Zenika fait partie des 500 entreprises à plus forte croissance dans la zone
EMEA.
• Systematic Paris Region Digital Ecosystem : Zenika est lauréate des
entreprises innovantes 2013 du pôle de compétitivité.
Zenika continue de recevoir des prix et récompenses chaque année dans ces
catégories.
a. Présentation du projet :
a. Contexte du projet :
b. Problématique abordée :
Un tel jeune domaine, qui n’a aussi gagné en popularité qu’aux dernières
années, a certainement des experts très compétents qui le maîtrisent. Ils restent
néanmoins très rares, et ne pourront jamais couvrir le besoin et la demande
énorme de toutes les entreprises du monde intéressées.
Nombreux sont les écoles et instituts qui lancent des filières et modules qui
initient leurs étudiants en IA, mais il a été apparent que ça ne pourrait résoudre
cette problématique en court terme, et aura besoin de plusieurs années pour
combler le besoin.
17
Chapitre 1 : Contexte
Les entreprises se lancent alors dans des chasses désespérées pour recruter
des personnes expertes, qui seront la clé à l’adoption de l’IA en interne. Ils ont
commencé à recruter, même à l'étranger, après que leurs gouvernements eurent
fait des offres alléchantes de nationalité et d'autres avantages aux talents
étrangers. Sur le plan politique, des pays comme le Canada et la France adoptent
de nombreuses règles en matière de recrutement dans le domaine des TI et de
l'IA, ce qui simplifie la tâche d'avoir de meilleurs talents et de les faire rester au
pays.
Cet intérêt très élevé, conjugué au manque de talent, a fait monter en flèche
les coûts de recrutement et les salaires. Pour les entreprises qui essaient encore
d'expérimenter l'utilisation de l'IA et celles qui n'ont pas atteint une maturité et
une taille suffisantes, ces coûts peuvent être très démotivants et les pousser à
abandonner cette vague de changement.
Cette méthode a perdu une partie de son efficacité en IA, car la barre
technique est extrêmement haute dans ce domaine, avec la nécessité de
connaissances avancées en mathématiques et en statistiques, ce qui est
certainement une rareté, et de l'utiliser efficacement en conjonction avec de
bonnes compétences informatiques pour se lancer en IA.
18
Chapitre 1 : Contexte
Cet obstacle a rendu un peu difficile la mise en œuvre de cette solution, en
particulier pour les petites entreprises, tant pour les coûts que pour
l'investissement de temps important. Les talents ont également choisi d'autres
domaines de l'informatique, qu'ils pourraient maîtriser plus facilement dans un
avenir prévisible, au lieu de se débattre avec les mathématiques avancées et
leurs utilisations en informatique.
Certaines entreprises ont encore fait le saut et ont créé des équipes d'experts
en intelligence artificielle, qui ont analysé les structures internes de l'entreprise
et conçu des modèles qui permettraient de l'optimiser et de fournir de meilleurs
services. Ils ont ensuite été confrontés à l'obstacle suivant : l'exploitation des
modèles d'IA dans un environnement de production est presque aussi difficile
que leur création, et c'est un autre domaine différent. Les approches permettant
de mettre en œuvre cela d'une manière rentable font qu'il est important pour
l'entreprise d'avoir des ingénieurs de données pour l'architecture de base, afin de
rendre les modèles exploitables et de les pousser sur les serveurs de manière
fiable, de créer des API pour traiter les requêtes internes et externes, et de mettre
en œuvre des architectures Big Data pour traiter d'énormes volumes de données.
Pour les entreprises qui n'avaient pas déjà investi dans ces équipes
auparavant, leurs coûts seraient triplés, car elles sont incapables de gérer
l'intégration transparente de l'IA et de ses complexités.
Face à tous ces problèmes, plusieurs solutions ont tenté de les résoudre.
L'une de ces solutions est rapidement devenue la plus populaire, l'IA en tant que
service. Elle est basée sur le concept d'hébergement de modèles d'IA sur les
19
Chapitre 1 : Contexte
nuages des fournisseurs du service, des clients et des entreprises exploitant ces
modèles via des API.
Cela a certainement résolu tous les problèmes mentionnés ci-dessus, car les
entreprises n'ont pas besoin d'avoir des experts dédiés dans le domaine pour
bénéficier de l'IA. Ils pourraient payer directement pour l'IA sur le cloud, qui
serait ensuite utilisé dans leurs propres services.
Deuxièmement, ces services ont été conçus dans le but d'envoyer les données
des entreprises aux fournisseurs de services dans les nuages. En d'autres termes,
on perdait le contrôle absolu de ses propres données, qui est le pétrole du siècle
en cours, au profit d'autres entreprises. Pour de nombreuses entreprises, en
particulier les sociétés financières et de sécurité, il est tabou de laisser leurs
données quitter l'entreprise sous n'importe quelle situation.
c. Solution envisagée :
De cette façon, même si les experts en IA restent rares par rapport aux
besoins du marché, les entreprises et les développeurs seraient toujours en
mesure de produire et d'expérimenter en utilisant l'IA sans les coûts élevés de
recrutement.
21
Chapitre 1 : Contexte
Au fur et à mesure que cette nouvelle vague d'informatique s'installe, tous les
domaines de l'informatique ont lentement commencé à connaître certains
changements, afin de pouvoir s'y adapter correctement. L'IA a également
commencé à connaître certains de ces changements, avec l'émergence de
l'apprentissage par machine quantique, qui utilise des algorithmes adaptés à
l'utilisation des ordinateurs quantiques.
Notre objectif est de fournir des algorithmes quantiques qui sont incorporés
dans notre bibliothèque de vision par ordinateur, ce qui aiderait à classer les
catégories dans la détection des catégories et la classification des images
beaucoup plus facilement sur de nombreuses catégories. Avec ces algorithmes,
même avec des catégories extrêmement nombreuses, que ce soit en
reconnaissance faciale ou en reconnaissance d'objets, les résultats resteraient
toujours rapides et utilisables en temps réel, et les entreprises et les développeurs
pourraient suivre la vague quantique, sans avoir besoin de connaissances
techniques, grâce au niveau élevé d'abstraction.
22
Chapitre 1 : Contexte
Après avoir constaté les nombreuses difficultés rencontrées par les
entreprises pour mettre en production leurs propres modèles d'IA, il est apparu
qu'il s'agit d'une tâche nécessitant un ensemble de compétences différentes et
rares.
Nous avons décidé d'utiliser notre bibliothèque comme base pour fournir un
serveur, qui a ensuite été placé dans un conteneur, aux entreprises qui ont
l'intention d'utiliser l'IA en production, en prenant en charge la mise en
production des modèles. Ces entreprises pourraient alors très facilement placer
ces conteneurs sur leurs propres instances de serveur et accéder aux cas
d'utilisation de l'IA et de la vision par ordinateur que nous fournissons via une
API REST sur leur propre réseau local.
2. Conduite du projet :
a. Démarche de gestion de projet :
23
Chapitre 1 : Contexte
• Compréhension de business :
Cette étape vise principalement à comprendre le monde des affaires sous tous
ses aspects. Il suit les différentes étapes ci-dessous :
• Compréhension de données :
24
Chapitre 1 : Contexte
statistiques multiples afin d’identifier les différentes distributions suivies par les
données.
• Préparation de données :
3. Normalisation/standardisation de données.
6. Réduction de la dimensionnalité.
• Déploiement du modèle :
25
Chapitre 1 : Contexte
Une fois que le modèle est bien évalué et confirmé, il peut être déployé et
mis en production pour répondre aux problématiques du projet.
b. Planification du projet :
La planification fait partie des étapes les plus importantes pour la réalisation
efficace d’un projet, elle permet de s’assurer que ce dernier va atteindre ses
objectifs dans des délais bien définis et contrôlés. Le diagramme GANTT
permet d’évaluer et de suivre la réalisation du projet tout en spécifiant les phases
de chaque partie et les délais pour lesquels elles doivent être réalisées. Le
diagramme de GANTT, couramment utilisé en gestion de projet, est l’un des
outils les plus efficaces pour représenter visuellement l’état d’avancement des
différentes activités et tâches qui constituent les phases d’un projet. La colonne
gauche de diagramme GANTT énumère toutes les tâches à effectuer et la ligne
d'en-tête représente les unités de temps le plus adaptés au projet (jours,
semaines, mois, etc.), cette représentation se fait sur le logiciel Gantt Project.
26
Chapitre 1 : Contexte
3. Conclusion :
Ce chapitre explique le contexte de notre projet et comment, avec cette
solution pour les entreprises et les développeurs, il est devenu plus facile
d'utiliser l'IA à travers le monde. Le chapitre suivant discutera ensuite de notre
analyse des besoins et des spécifications, afin d'obtenir une architecture
adéquate de notre solution.
27
Chapitre 2 : Analyse
28
Chapitre 2 : Analyse
1. Revue et littérature :
a. La vision par ordinateur :
• Présentation
29
Chapitre 2 : Analyse
L'implémentation et les étapes d’un système de vision par ordinateur de la
fonction ou des fonctions qu’il va réaliser. De nombreuses étapes et traitements
sont uniques à l'application. Il existe, cependant, des traitements typiques que
l'on retrouve dans de nombreux systèmes de vision par ordinateur.
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 la reconnaissance vocale, de la vision par ordinateur,
du traitement automatisé du langage et bien d’autres.
30
Chapitre 2 : Analyse
• Les réseaux de neurones artificiels (ANN) : ce sont les plus simples et les
plus souvent utilisés en complément car ils trient correctement les
informations et font preuve de bonnes performances dans les tâches de
classification et régression.
• Les réseaux de neurones convolutifs (CNN) : spécialisés dans le
traitement de l’image en général, ils appliquent des filtres à des données
pour en faire ressortir de nouvelles informations (par exemple, faire
ressortir les contours dans une image peut aider à trouver où se trouve le
visage ou reconnaître les différents objets dans une image).
• Les réseaux de neurones récurrents (RNN) : les plus connus sont les
LSTM (Long Short-Term Memory), qui ont pour faculté de retenir de
l’information et de la réutiliser peu après, chose qui est très utile pour le
traitement des données séquentielles comme les séries temporelles et
l’audio et le texte. Ils servent par exemple pour l’analyse de texte (NLP)
pour la traduction ou la génération de texte et développement des
assistants intelligents, puisque chaque mot dépend des quelques mots
précédents (pour que la grammaire soit correcte).
• Ainsi que des versions plus avancées, comme les auto-encodeurs, les
machines de Boltzmann et les machines de Boltzmann Restreintes, les
cartes auto-adaptatives aussi appelées self-organizing maps (SOM), etc.
c. Le Quantum Computing
• Présentation :
32
Chapitre 2 : Analyse
Les Qubits sont fondamentaux pour l'informatique quantique et sont quelque
peu analogues aux bits d'un ordinateur classique. Les Qubits peuvent être dans
un état quantique 1 ou 0. Mais ils peuvent aussi être dans une superposition des
états 1 et 0. Cependant, lorsque les qubits sont mesurés, le résultat est toujours
un 0 ou un 1 ; les probabilités des deux résultats dépendent de l'état quantique
dans lequel ils se trouvent.
• Principe d’opération :
Bien qu'un état classique de 3 bits et un état quantique de 3 bits soient chacun
des vecteurs à huit dimensions, ils sont manipulés de façon très différente pour
le calcul classique ou quantique. Dans un cas comme dans l'autre, le système
doit être initialisé, par exemple dans la chaîne all-zéros, |000⟩, correspondant au
vecteur (1,0,0,0,0,0,0,0,0,0,0,0). Dans le calcul aléatoire classique, le système
évolue en fonction de l'application de matrices stochastiques, qui préservent que
les probabilités s'additionnent en un (c.-à-d. préservent la norme L1). Dans le
calcul quantique, cependant, les opérations autorisées sont des matrices
unitaires, qui sont effectivement des rotations (elles préservent que la somme
des carrés s'additionne à un, la norme euclidienne ou L2). (Les unités exactes
qui peuvent être appliquées dépendent de la physique de l'appareil quantique.)
Par conséquent, puisque les rotations peuvent être annulées en tournant vers
l'arrière, les calculs quantiques sont réversibles. (Techniquement, les opérations
quantiques peuvent être des combinaisons probabilistes d'unités, de sorte que le
34
Chapitre 2 : Analyse
calcul quantique généralise vraiment le calcul classique. Voir circuit quantique
pour une formulation plus précise.)
35
Chapitre 2 : Analyse
traitement quantique de l'agent, soit en raison de la possibilité de sonder
l'environnement en superpositions, une accélération quantique peut être obtenue.
Open CV (pour Open Computer Vision) est une bibliothèque graphique libre,
initialement développée par Intel, spécialisée dans le traitement d'images en
temps réel. Cette bibliothèque met à disposition de nombreuses fonctionnalités
très diversifiées permettant de créer des programmes partant des données brutes
pour aller jusqu'à la création d'interfaces graphiques basiques. Certains
algorithmes classiques dans le domaine de l'apprentissage artificiel sont aussi
disponibles, qui permettent de traiter les images et de les classifier. Pourtant,
Cette bibliothèque requiert des connaissances en IA, et ne peut être facilement
utilisée pour traiter et classifier une image par un débutant.
b. TF-Insightface :
36
Chapitre 2 : Analyse
Une solution chinoise d’origine, Open Source, qui offre un serveur capable
de d’encoder les images, pour pouvoir passer à l’étape de classification. Il est
surtout utilisé dans la reconnaissance faciale. Il donne une précision de
prédiction surprenante, et est basé sur le langage Python. En revanche, il n’est
pas complet, et requiert d’autres modèles de machine learning et apprentissage
profond pour le complémenter et offrir des résultats pour l’entreprise. En plus, le
serveur ne couvre les questions de déploiement et intégration dans un container.
c. Dlib :
Dlib est une boîte à outils C++ moderne contenant des algorithmes
d'apprentissage automatique et des outils pour créer des logiciels complexes en
C++ pour résoudre des problèmes réels d'IA. Il est utilisé dans l'industrie et le
monde universitaire dans un large éventail de domaines, notamment la
robotique, les appareils intégrés, les téléphones mobiles et les grands
environnements informatiques à haute performance. Il comporte aussi plusieurs
modèles pré-entraînés de traitement et classification d’image, ainsi qu’un API
pour utilisation en Python. Cependant, il nécessite une grande connaissance dans
les processus de machine learning pour être utilisé efficacement.
d. Face_recognition :
Afin de réaliser notre projet ; il est impératif d’expliciter les différents besoins fonctionnels et
techniques, comme il suit :
37
Chapitre 2 : Analyse
• Besoins fonctionnels
En outre, le conteneur doit être capable de gérer toutes les données qui lui
sont envoyées, de les stocker et de les transformer de manière fiable en fonction
des besoins, ainsi que de gérer différentes versions de modèles entraînés par
38
Chapitre 2 : Analyse
l'utilisateur, qui seront utilisés et contrôlés en utilisant des commandes de
contrôle de version même en production.
Ce projet étant Open Source, offert au grand public gratuitement, il lui est
nécessaire d’assurer un nombre de besoins pour assurer son succès et
complétion :
b. Cas d’utilisations :
Après l’étude et analyse des besoins, les cas d’utilisation de notre solution
commencent à apparaître plus claires, et peuvent se résumer dans un diagramme
de cas d’utilisations. (Voir figure 7)
39
Chapitre 2 : Analyse
Cette partie sera mise dans un serveur, qui sera englobé dans un container.
En même temps, le container permettra la gestion des logs de toutes les actions
et erreurs, ainsi que gérer les fichiers temporaires résultants de l’utilisation de la
bibliothèque, en plus de gérer les différentes versions des modèles et
bibliothèque.
41
Chapitre 2 : Analyse
Pour garantir une bonne gestion des requêtes reçues par le container, un API
Gateway a été mis en place pour gérer, sécuriser et guider toutes les requêtes
reçues.
3. Conclusion :
Cette analyse de besoin nous a permis d’éclaircir les cas d’utilisations, ainsi
que les points focaux et prioritaires de notre solution. Ceci nous a poussé à
proposer une architecture du système, qui permettra de mettre en réalité notre
projet.
Dans le chapitre qui suit, nous allons présenter les technologies utilisées pour
la mise en place de notre solution.
42
Chapitre 3 : Environnement
Outils et environnement
43
Chapitre 3 : Environnement
1. Outils de bibliothèque :
a. Python 3 :
Le langage Python est placé sous une licence libre proche de la licence BSD
et fonctionne sur la plupart des plates-formes informatiques, des smartphones
aux ordinateurs centraux, de Windows à Unix avec notamment GNU/Linux en
passant par macOS, ou encore Android, iOS, et peut aussi être traduit en Java ou
.NET. Il est conçu pour optimiser la productivité des programmeurs en offrant
des outils de haut niveau et une syntaxe simple à utiliser.
44
Chapitre 3 : Environnement
cependant particulièrement utilisé comme langage de script pour automatiser des
tâches simples mais fastidieuses, comme un script qui récupérerait la météo sur
Internet ou qui s'intégrera dans un logiciel de conception assistée par ordinateur
afin d'automatiser certains enchaînements d'actions répétitives. On l'utilise
également comme langage de développement de prototype lorsqu'on a besoin
d'une application fonctionnelle avant de l'optimiser avec un langage de plus bas
niveau. Il est particulièrement répandu dans le monde scientifique, et possède de
nombreuses bibliothèques optimisées destinées au calcul numérique.
b. Tensorflow :
Créé par l’équipe Google Brain en 2011, sous la forme d’un système
propriétaire dédié aux réseaux de neurones profonds, Tensorflow [3] s’appelait à
l’origine DistBelief. Par la suite, le code source de DistBelief a été modifié et cet
outil est devenu une bibliothèque basée application. En 2015, il a été renommé
Tensorflow et est devenu open source.
45
Chapitre 3 : Environnement
Nous pouvons la concevoir comme un système de programmation dans
lequel les calculs sont représentés sous forme de graphiques tels que les nœuds
du graphique représentent les opérations mathématiques et les bordures
représentent des flèches de données multidimensionnelles communiquées entre
elles : les tensors.
Nous l’avons choisi pour son très grand support dans la communauté, ainsi
que son aise dans la mise en production de modèles.
C'est pourquoi on l'appelle TensorFlow parce que le tenseur passe par une
liste d'opérations, puis il sort par l'autre côté.
TensorFlow est la meilleure des bibliothèques car elle est conçue pour être
accessible à tous. La bibliothèque Tensorflow intègre différentes API pour
construire à l'échelle une architecture d'apprentissage profond comme CNN ou
RNN. TensorFlow est basé sur le calcul graphique ; il permet au développeur de
visualiser la construction du réseau neuronal avec Tensorboad. Cet outil est utile
pour déboguer le programme. Enfin, Tensorflow est conçu pour être déployé à
grande échelle. Il fonctionne sur CPU et GPU.
Tensorflow attire la plus grande popularité sur GitHub par rapport aux autres
cadres d'apprentissage profond.
46
Chapitre 3 : Environnement
c. Numpy :
Les principales structures de données sont les séries (pour stocker des
données selon une dimension - grandeur en fonction d'un index), les DataFrames
(pour stocker des données selon 2 dimensions - lignes et colonnes), les Panels
(pour représenter des données selon 3 dimensions, les Panels4D ou les
DataFrames avec des index hiérarchiques aussi nommés MultiIndex (pour
représenter des données selon plus de 3 dimensions - hypercube).
• Des outils pour lire et écrire des données structurées en mémoire depuis et
vers différents formats : fichiers CSV, fichiers textuels, fichier du tableur
Microsoft Excel, base de données SQL ou le format rapide et permettant
de gérer de gros volume de données nommé HDF ;
48
Chapitre 3 : Environnement
e. Jupyter Notebook :
Jupyter [2] est une application web utilisée pour programmer dans plus de 40
langages de programmation, dont : Python, Julia, Ruby, R, ou encore Scala.
Jupyter est une évolution du projet IPython. Jupyter permet de réaliser des
calepins ou notebooks, c'est-à-dire des programmes contenant à la fois du texte
en markdown et du code en Julia, Python, R... Ces notebooks sont utilisés en
science des données pour explorer et analyser des données.
Jupyter s'appuie sur un noyau IPython pour Python 2, un noyau IPython pour
Python 3, IRkernel, un noyau pour le langage R et un noyau pour le langage
Julia, IPyLua, noyau pour le langage Lua, IRuby, noyau pour le langage Ruby,
etc. Seuls les noyaux pour les langages Julia, Python, R et Scala sont maintenus
par les développeurs principaux du projet, les autres sont développés par
différentes communautés de développeurs.
49
Chapitre 3 : Environnement
Figure 14. Logo de Jupyter
f. Qiskit :
Une gamme d'ordinateurs portables Jupyter sont fournis avec des exemples
d'utilisation de l'informatique quantique, notamment le code source des études
scientifiques qui utilisent Qiskit, ainsi qu'un ensemble d'exercices pour aider les
gens à apprendre les bases de la programmation quantique.
g. AutoKeras :
50
Chapitre 3 : Environnement
h. Dlib :
Dlib [2] est une librairie logicielle multi-plateforme d'usage général écrite
dans le langage de programmation C++. Sa conception est fortement influencée
par les idées issues de la conception par contrat et du génie logiciel basé sur les
composants. Il s'agit donc avant tout d'un ensemble de composants logiciels
indépendants. Il s'agit d'un logiciel open-source publié sous une licence Boost
Software License.
51
Chapitre 3 : Environnement
2. Environnement et container :
a. Flask :
Flask a été créé initialement par Armin Ronacher comme étant un poisson
d'avril. Le souhait de Ronacher était de réaliser un Framework web contenu dans
un seul fichier Python mais pouvant maintenir des applications très demandées.
52
Chapitre 3 : Environnement
• Une solution d’authentification
• Le support de base de données ou un ORM
• La gestion sécurisée de formulaires HTML
• Une interface d’administration
b. Docker :
L'objectif d'un conteneur est le même que pour un serveur dédié virtuel :
héberger des services sur un même serveur physique tout en les isolant les uns
des autres. Un conteneur est cependant moins figé qu'une machine virtuelle en
matière de taille de disque et de ressources allouées.
2. Conclusion :
Après ce choix de technologies, nous nous sommes lancés alors dans la
réalisation de notre solution. Le prochain chapitre permettra d’expliquer les
différents algorithmes utilisés dans la réalisation de cette solution.
54
Chapitre 4 : Réalisation
Réalisation de la solution
55
Chapitre 4 : Réalisation
A cette étape là, dans chaque image, le système détecte les pixels qui
constituent un visage, pour les transformer en une petite image et les envoyer à
l’étape suivante.
Pour cela, nous allons utiliser une méthode appelée HOG, Histogram of
Oriented Gradients, qui permet de trouver des contours dans une image en noir
et blanc.
56
Chapitre 4 : Réalisation
Le premier pas de cette méthode est la conversion des images en noir et blanc
; puis, pour chaque point de l’image, l’algorithme trouve la direction pour
laquelle la luminosité des points aux alentours est la plus réduite. Si ces
directions sont représentées comme des flèches, aussi appelés gradients, nous
aurons une image qui représente la distribution de l’intensité du gradient.
La raison pour cela n’est pas aléatoire. Nous pouvons avoir des photos de
nous-mêmes avec des luminosités différentes, mais la mesure de l’intensité des
points autour de notre visage reste le même.
Maintenant que nous avons détecté les visages, ceux-ci peuvent être tournés
vers différents sens, et sous différentes perspectives. Ceci donnera de la
difficulté à un algorithme de reconnaître son identité, vu l’infinité des angles
possibles pour chaque visage.
Une étape importante est alors d’avoir un alignement commun de tous les
visages. Ceci sous-entend de détecter les yeux, le nez, la bouche, et les contours
du visage, afin de bien les aligner.
57
Chapitre 4 : Réalisation
Dès que ces points sont détectés dans le visage, nous n’avons plus qu’à
effectuer des coupures et des rotations, pour avoir le visage dans le sens juste.
Cette fonction de triple coût permettra de rendre les mesures de deux images
d’une même identité presque les mêmes, et très différentes des mesures d’une
autre identité.
Avec une base de données déjà existantes de mesures pour chaque identité,
nous pourrons entraîner des modèles de machine learning qui permettent de
classifier chaque nouvelle mesure dans l’espace de sa vraie identité.
b. Reconnaissance d’objet :
58
Chapitre 4 : Réalisation
Ils utilisent tous les deux des modules de Inception qui prennent plusieurs
noyaux convolutionnels de différentes tailles et empilent leurs sorties le long de
la dimension de profondeur afin de capturer des caractéristiques à différentes
échelles. (Voir figure 21)
Les deux réseaux empruntent également le concept d'un réseau résiduel avec
des connexions de saut où l'entrée est ajoutée à la sortie de sorte que le modèle
est forcé de prévoir le résidu plutôt que la cible elle-même. (Voir figure 22)
59
Chapitre 4 : Réalisation
c. Algorithme quantique :
Pour notre solution, nous avons décidé d’implémenter des SVM [13]
(Support Vector Machines) Quantiques, dont la version en informatique
classique est reconnue pour sa grande exactitude dans la classification.
60
Chapitre 4 : Réalisation
• Revue sur les Support Vector Machines :
Ces algorithmes ont été développés dans les années 1990 à partir des
considérations théoriques de Vladimir Vapnik sur le développement d'une
théorie statistique de l'apprentissage. Ils ont rapidement été adoptés pour leur
capacité à travailler avec des données de grandes dimensions, le faible nombre
de hyperparamètres, leurs garanties théoriques, et leurs bons résultats en
pratique.
Les machines à vecteurs de support sont des classificateurs qui reposent sur
deux idées clés, qui permettent de traiter des problèmes de discrimination non
linéaire, et de reformuler le problème de classement comme un problème
d'optimisation quadratique.
Afin de pouvoir traiter des cas où les données ne sont pas linéairement
séparables, la deuxième idée clé des SVM est de transformer l'espace de
représentation des données d'entrées en un espace de plus grande dimension
(possiblement de dimension infinie), dans lequel il est probable qu'il existe une
séparation linéaire. Ceci est réalisé grâce à une fonction noyau, qui a l'avantage
de ne pas nécessiter la connaissance explicite de la transformation à appliquer
pour le changement d'espace. Les fonctions noyau permettent de transformer un
produit scalaire dans un espace de grande dimension, ce qui est coûteux, en une
61
Chapitre 4 : Réalisation
simple évaluation ponctuelle d'une fonction. Cette technique est connue sous le
nom de kernel trick (ou astuce du noyau).
Lorsque les points de données sont projetés dans des dimensions plus
élevées, il est difficile pour les ordinateurs classiques d'effectuer des calculs de
cette taille. Ainsi, avec un ordinateur quantique, cette tâche peut devenir facile et
même l'ensemble de données le plus complexe peut être calculé dans des
dimensions extrêmement élevées pour une classification précise. Cet algorithme
spécifique est appelé Algorithme du noyau quantique de la machine à vecteurs
de support. Il s'agit simplement de prendre l'algorithme ML classique et de le
traduire en un circuit quantique pour qu'il puisse être exécuté efficacement sur
un ordinateur quantique.
d. Modularisation de la bibliothèque :
Après avoir établi ces modèles, et établi le flux des données entre eux, vient
l’étape de les geler, afin de pouvoir les exploiter sans danger de modification des
modèles critiques par l’utilisateur.
Après les avoir gelés, ils ont été exploités à travers Tensorflow qui a permis
de les mettre en mémoire et de les utiliser pour établir des inférences.
Ainsi, les flux internes des données ont été organisés, avec des fonctions pour
la mise en mémoire fluide des modèles lors de l’importation de la bibliothèque,
pour un usage encore plus optimisé, ainsi qu’une gestion d’erreur exhaustive
pour plus d’efficacité.
La prochaine étape a été de spécifier les APIs que l’utilisateur pourra utiliser
pour communiquer avec notre solution, et les entrées et sorties de cette
communication. Celle-ci a été établie comme suit :
• GET /vision_recognition/status
63
Chapitre 4 : Réalisation
Retourne l'état du modèle. Peut être utilisé pour suivre les échecs de
formation, l'avancement de la mise à jour du modèle et la disponibilité du
modèle. Si le modèle est en cours d’entraînement, la version précédente sera la
version active pour la prédiction.
• GET /vision_recognition/categories
• PUT /vision_recognition/categories
• PATCH /vision_recognition/categories/{categories}
• DELETE /vision_recognition/categories/{category}
• GET /vision_recognition/retrain
• POST /vision_recognition/prediction
64
Chapitre 4 : Réalisation
2. Conclusion :
Ce chapitre a présenté les étapes de réalisation de notre projet, ainsi que les
algorithmes et méthodes utilisées pour le développement de chaque partie. En
premier lieu, nous avons développé une bibliothèque de vision d’ordinateur
homogène adaptée à l’utilisateur non connaisseur dans l’IA, lui offrant
simplicité et performance lors de son utilisation. En deuxième lieu, nous avons
aussi résolu les problèmes de mises en productions aux entreprises, en leur
présentant un produit prêt à l’usage sur leurs serveurs.
65
Conclusion Générale :
Conclusion Générale :
L’objectif de notre stage de fin d’étude, effectué à Zenika à Paris, et dont le
présent document décrit le déroulement, a consisté en la conception et
développement d’une bibliothèque de vision d’ordinateur, opérable dans le
milieu informatique classique ainsi que le milieu informatique quantique, et de
la mettre en production dans un container réutilisable par toute entreprise
désirant intégrer les services IA dans ses processus.
Ce projet avait commencé par la spécification des besoins, qui nous avaient
permis de discerner les cas d’utilisations et les utilisateurs possibles, et d’en
conclure une architecture valable pour notre solution.
Ce projet n’est que le premier pas dans une plus grande vision, de créer des
outils permettant aux développeurs, ainsi qu’aux non-développeurs, d’utiliser les
outils de l’IA dans leurs plus grandes performances facilement sans contraintes.
Ceci s’inscrit dans la vision de l’entreprise, de faire le point de liaison entre le
monde développeur et le monde non-développeur, et de produire des solutions
qui poussent à un tel futur. Notre outil alors sera élargi, avec de nouvelles
capacités IA en plus de la vision d’ordinateur.
66
Webographie :
Webographie :
[1] : https://www.zenika.com/
[2] : https://www.tensorflow.org/
[3] : https://www.numpy.org/
[4] : https://pypi.org/project/pandas/
[5] : https://jupyter.org/
[6] : https://qiskit.org/
[7] : https://autokeras.com/
[8] : http://dlib.net/
[9] : http://flask.pocoo.org/
[10] : https://www.docker.com/
[11] : https://arxiv.org/abs/1503.03832
[12] : https://towardsdatascience.com/a-simple-guide-to-the-versions-of-the-
inception-network-7fc52b863202
[13] : https://towardsdatascience.com/support-vector-machine-introduction-
to-machine-learning-algorithms-934a444fca47
67