Rapport PFE - Sahar Dahmane
Rapport PFE - Sahar Dahmane
Rapport PFE - Sahar Dahmane
Université de Sousse
Ecole Nationale d’Ingénieurs de Sousse
Devant le jury
©Dahmane, 2019
Dédicace
Je commence par rendre grâce à Dieu pour la santé, la patience et le courage qu’il m’a
donné pour arriver à ce stade.
A mes grands-parents, que leur prière et leur bénédiction m’ont donné un secours pour
mener à bien mes études.
A mon Père,
A qui je dois ma réussite. Aucun hommage ne pourra être à la mesure de ce qu’il mérite et
de tout ce qu’il a fait pour nous assurer les bonnes conditions pour réussir.
Aucun mot ne saurait témoigner de l’étendue des sentiments du respect que j’éprouve à
son égard pour ses sacrifices continus et son amour inconditionnel qui ont fait de moi ce
que je suis.
A ma Mère,
Nulle dédicace ne puisse exprimer ce que je lui dois. Les mots ne manquent pour exprimer
toute la reconnaissance, la fierté et le profond amour que je vous porte pour les sacrifices
que vous avez consentis pour ma réussite. J’ai vu le jour grâce à toi et tu resteras toujours
ma lumière et ma source de bonheur.
A ma sœur Khouloud..
En témoignage de mes sincères reconnaissances d’être toujours là pour moi, pour les
efforts et le temps qu’elle a consenti pour l’accomplissement de mes études ainsi que son
aide précieuse et son encouragement. Elle était toujours mon repère et ma fierté dans la
vie.
A toute ma grande famille, A tous mes chers Samar Sirine, Mayssa, Sirine, souad et Mehdi
de croire en moi et pour tous leurs encouragements et leur soutien continu.
A tous ceux qui me connaissent de près ou de loin…
Sahar
Remerciements
Les conseils de mes encadrants et leur grande disponibilité m’ont permis de réaliser un
stage dans les meilleures conditions possibles.
Je remercie toute l’équipe de l’Institut Pascal ainsi que celle de Michelin pour leur
sympathie, leur accueil chaleureux et leur aide.
Enfin, je remercie tous ceux qui ont contribué de prés ou de loin au bon déroulement de
mon projet.
Que tous trouvent dans ce modeste travail, l’expression sincère de mes sentiments les
meilleures.
Sahar
Résumé
Ce projet, réalisé dans le cadre d’un stage de projet de fin d’études, a été effectué au sein
du laboratoire Institut Pascal en collaboration avec l’entreprise Michelin. L’objectif de ce
projet est d’étudier un système qui sera monté sur un robot manipulateur permettant de
détecter les pneus par apprentissage profond. En effet, la charge et la décharge des pneus
dans les camions sont des taches pénibles et nécessitent beaucoup d’efforts d’où l’idée de
les automatiser. La détection et la localisation des objets dans une image sont devenues des
éléments importants dans la recherche courante en vision par ordinateur. Cette discipline
cherche à détecter dans une image les différents objets présents, leurs classes ainsi que
leurs positions dans l’image. Pour y arriver, une architecture utilisée ces dernières années
appelée R-CNN « Réseaux de neurones convolutionnels régionals ». Ce type d’architecture
de l’apprentissage automatique s’est montré comme très performant dans plusieurs
domaines pour résoudre la détection d’objets. Plus précisément, nous allons travailler avec
le réseau Mask R-CNN assurant la technique de segmentation d’instances. Dans ce projet,
nous allons étudier de près cette architecture et le choix de ses paramètres de configuration
après avoir faire l’acquisition et la préparation des données afin de faire entrainer le réseau.
Et nous allons voir dans une dernière partie l’évaluation des tests réalisés et
l’implémentation du système sur le robot.
This end-of-study project was realized within Institut Pascal laboratory in collaboration
with the Michelin company. The objective of this project is to study a system for tires
detection by deep learning that will be mounted on a robot manipulator. Indeed, the
loading and unloading of tires in the trucks are considered as difficult tasks and require a
lot of human effort hence the idea of automating these tasks. The detection and location of
objects in an image have become important elements in current research in computer
vision. This discipline seeks to detect in an image the different objects present, their classes
as well as their positions in the image. To achieve this, an architecture is used in recent
years called R-CNN "Region Convolutional Neural Networks." This type of Machine
Learning architecture proved to be very efficient in several areas to solve object detection.
More precisely, we will work with the Mask R-CNN network providing the instance
segmentation technique. In this project, we will study with details this architecture and the
choice of its configuration parameters after acquiring and preparing the data in order to
train the network. And we will see in a final part, the evaluation of the tests carried out and
the implementation of the system on the robot.
Figure 7: Différence entre (a) les couches totalement connectées et (b) les couches
convolutionnelles .............................................................................................................11
Figure 11: Architecture Mask R-CNN (He, Gkioxari, Doll´ar & Girshick, 2017). ............14
Figure 25: Résumé sur les architectures de la famille des R-CNN ....................................27
Introduction générale
S'appuyant sur les progrès réalisés dans les domaines de la mécatronique, de
l'électrotechnique et de l'informatique, la robotique développe des fonctions de plus en plus
sophistiquées qui donnent aux machines la capacité de s'adapter à un environnement en
constante évolution.
Des robots intelligents ont été essayés plusieurs fois. Bien qu’il soit difficile d’atteindre le
niveau d’intelligence de l’homme, les robots sont capables d’effectuer des tâches
autonomes spécifiques, telles que conduire un véhicule, transporter des boîtes et du
matériel sur des terrains différents, prendre des objets et les déposer.
Une autre application importante de l'IA en robotique concerne la tâche de perception. Les
robots peuvent détecter l'environnement à l'aide de capteurs intégrés ou de vision par
ordinateur. Au cours de la dernière décennie, les systèmes informatiques ont amélioré la
qualité de la détection et de la vision.
Ces robots dotés d'un large éventail de capacités sont en cours de développement et
pourraient fournir une assistance aux tâches pénibles. Afin de faciliter et réduire la
pénibilité au travail des opérateurs, les robots se montrent beaucoup plus performants et
affichent une grande rentabilité [1]. D’où le fait que les industries font appel à ces derniers
non seulement pour l’amélioration de la qualité en fin de chaîne mais aussi pour répondre
au manque de main-d’œuvre surtout que les entreprises trouvent parfois des difficultés
dans l’embauche à des postes pénibles.
La reconnaissance des objets est l’un des domaines d’apprentissage où l’IA est en plein
essor. Ces techniques pour détecter et connaitre des objets à partir des caméras permettent
aux robots de faire face aux imprévus. Tel que leur utilisation lors du processus du
1
Introduction générale
dévracage qui est connu sous le nom de « Bin Picking ». Là où des pièces ou des
composants déposés en vrac dans une trémie de stockage sont prises afin de les déposer sur
un emplacement référencé.
C’est dans ce contexte que s’insère ce projet de fin d’études dont l’objectif est de rendre
l’opération du dévracage des pneus, robotisée. Pour ce faire, nous allons étudier un
système de détection des pneus par apprentissage profond.
Le présent rapport comprend quatre chapitres. Dans le premier chapitre, nous présenterons
le cadre du travail dans lequel le stage a été effectué et son objectif, puis dans le deuxième
chapitre nous allons faire une étude sur les solutions existantes et établir un état de l’art des
méthodes utilisées pour détecter des objets. A partir de cette étude, nous pourrons
déterminer l’ensemble des données nécessaire pour la reconnaissance des pneus et
l’acquérir. Dans la troisième partie, tout le travail réalisé va être bien détaillé. Elle portera
sur l’acquisition de la base des données et la description de sa préparation. Aussi le
principe des méthodes de détection implémentées y sera détaillé. Et nous finirons dans un
quatrième chapitre, par la visualisation des résultats obtenus et leurs interprétations.
2
Chapitre I : Présentation du cadre de travail
Introduction
Le stage s’est déroulé dans le cadre du FactoLab, c’est une collaboration entre l’Institut
Pascal de l’axe Image, Systèmes de Perception, Robotique (ISPR) et la manufacture
Michelin. Il est porteur du laboratoire d’excellence IMobS3. Dans ce chapitre, on va
présenter les deux unités et leurs principales missions.
L'Institut Pascal [2] est une unité mixte de recherche interdisciplinaire placée sous la tutelle
de l'Université Clermont Auvergne (UCA), de l’institut principal INSIS, instituts
secondaires INS2I, INP (CNRS) et de SIGMA Clermont.
L'Institut Pascal développe des systèmes innovants et intelligents par une approche
systémique et multi-échelle sur 5 axes de recherche :
3
Chapitre I : Présentation du cadre de travail
Le stage a été effectué au sein de l’équipe Comsee, spécialisée dans la vision artificielle de
l’axe ISPR. C’est l'axe œuvre dans le domaine de la Perception et de la Vision Artificielle
pour la commande des systèmes robotiques, dont l’objectif est de développer des concepts
théoriques, méthodologiques et architecturaux pour la perception et le contrôle des
systèmes.
Michelin [3] est l’une des manufactures leader de la mobilité durable, faisant partie des
entreprises les plus innovantes et performantes au monde. Elle est présente sur l’échelle
internationale avec 69 sites de production et 7 pôles de recherche et développement. Elle
est implantée aujourd’hui sur tous les continents dans 171 pays.
Le R&D à Michelin permet d’avoir une mobilité plus efficace, plus sure et plus accessible.
Le stage a été effectué au sein d’une équipe de recherche et de développement et à l’atelier
de la robotique. Cette unité considère l’innovation comme objectif principal dans ses
projets.
I.3. Problématique
Michelin est une manufacture très connue et populaire dans le monde entier. Ce qui
implique le grand mouvement de la production et par suite le nombre important des pneus
à transporter vers les clients. Pour ce faire, il y’a tout un processus qui s’effectue pour le
chargement et le déchargement des pneus dans les camions.
4
Chapitre I : Présentation du cadre de travail
Déchainer
Trier
Enchainer
Déplacer
Valider
Charger
Les pneus arrivent des usines, enchainés dans des palettes de transport. L’opérateur prend
chaque pneu et le place dans une palette spécifique afin de faire le tri selon le besoin de
chaque client. Après ce déchainage, les pneus sont placés de façon qu’ils soient bien
enchainés dans chaque palette qui sera transportée vers des parties réservées chacune pour
un client. L’opérateur fait le compte des pneus sur lesquels des tickets sont collés. Ils les
scannent et les valident puis les chargent dans les camions.
Toutes ces étapes sont manuelles et nécessitent beaucoup d’efforts physiques d’où l’idée
d’automatiser l’opération de la charge et la décharge des pneus.
I.4. Objectif
La robotique ici ne s'inscrit pas pour nous dans une recherche de productivité, mais
d'amélioration. Avec la cobotique et l’amélioration de la vision et des technologies de
préhension, nous souhaitons avant tout apporter davantage de confort aux collaborateurs
dans leur mission.
L’objectif de ce stage est d’étudier un système de détection des pneus qui sera monté sur
un cobot manipulateur. Ce dernier est un robot qui est capable grâce à des capteurs de
5
Chapitre I : Présentation du cadre de travail
savoir s’arrêter lorsqu’un opérateur est à proximité. Ce qui est plus facile de les intégrer
dans les usines.
Conclusion
Dans ce chapitre une présentation générale du cadre de travail a été présenté tout en
détaillant la problématique du sujet et son objectif.
Le chapitre suivant est consacré à présenter l’étude de l’état de l’art nécessaire pour la
réalisation du projet.
6
Chapitre II : Etat de l’art
Introduction
Dans ce chapitre, nous allons voir l’état de l’art sur les méthodes du dévracage. Plus
précisément, nous décrivons d’abord les différentes approches permettant d’automatiser
une telle opération. Nous passons ensuite de manière plus approfondie à l’état de l’art en
matière de segmentation d’instances et les réseaux de neurones qui l’assurent.
Dans cette section, nous allons voir les approches les plus récentes du dévracage robotisé,
qui est l’application cible de ce travail.
Au cours des dernières décennies, des experts en robotique ont mené d’énormes travaux de
recherche et développement en robotique. Cela a abouti à des robots améliorés capables de
détecter les articles désorganisés dans une boîte et de les cueillir individuellement. Pour ce
faire, il y’a généralement deux méthodes : soit par vision par ordinateur, soit en passant par
une conception 3D du produit.
Le dévracage robotisé définit différents processus dans lesquels des robots sont utilisés
pour prélever et placer des matériaux dans un emplacement spécifique. C’est une tâche
robotique délicate dans le monde robotique. Aujourd'hui, elle est plus possible qu'il y a
quelques années. Les progrès des robots au fil des ans ont permis de résoudre un bon
nombre des problèmes.
Dans de telles applications, un robot est généralement asservi à un module basé sur la
vision [4], qui est non seulement pour la détection et la catégorisation, mais également
pour l’estimation de la pose et les opérations robotiques de sélection et d’emplacement. Et
ceci dans un cycle de fonctionnement en trois étapes :
- Acquisition des images : La capture de la base des données se fait à l’aide des
capteurs classiques qui sont de simples caméras RGB ou des capteurs 3D plus
complexes qui permettent également une reconstruction de scènes à vues multiples.
7
Chapitre II : Etat de l’art
Préhenseur magnétique Préhenseur pneumatique Préhenseur par aspiration Préhenseur par déformation
II.1.2. Conception 3D
La plupart des solutions de « Pick and Place » utilisent des modèles CAO des pièces à
relever pour renseigner au robot la forme des objets et les positions des préhensions
possibles. Donc ça nécessite une conception 3D d’où il fallait que les objets soient de la
même forme et de la même position pour que le robot soit capable de les détecter. Ce qui
n’est pas le cas pour notre projet. D’où le choix de travailler avec la vision par ordinateur.
8
Chapitre II : Etat de l’art
Dans cette section, nous passons à l’étude de l’état de l’art sur la segmentation d’instances
[5], qui est un sujet d’intérêt majeur pour la détection d’objets. En vision par ordinateur, la
segmentation d'instances vise à identifier de manière précise chaque objet d’une classe
dans des images et donc relier chaque pixel dans une image à une instance d’objet.
9
Chapitre II : Etat de l’art
La segmentation d’instances est considérée comme un défi, car elle nécessite la détection
correcte de tous les objets d'une image et la segmentation précise de chaque instance.
Il est possible d’en profiter largement en tout ce qui concerne les véhicules autonomes, la
robotique, et la vidéosurveillance, …
Dans le cadre de notre recherche, nous avons mené une étude sur les détecteurs existants.
Grâce à l'apprentissage profond, il existe une pléthore de modèles pré-entrainés pour la
détection d'objets. En particulier pour la segmentation d'instance, les réseaux de neurones
convolutionnels CNN [7, p. 9] sont les plus connus.
Dans cette section, nous parlerons de plusieurs concepts reliés aux réseaux de neurones
artificiels importants à la compréhension de ce rapport.
10
Chapitre II : Etat de l’art
Figure 7: Différence entre (a) les couches totalement connectées et (b) les couches
convolutionnelles
Comme l'illustre la figure 8, chaque neurone est une opération simple en deux étapes : une
transformation affine des valeurs d'entrée auxquelles une fonction d'activation non linéaire
est appliquée. Les paramètres, également appelés poids, de ces opérateurs linéaires sont
déterminés par optimisation non convexe. Un réseau de neurones profond peut contenir des
milliards de paramètres structurés en centaines de couches, ce qui facilite l’apprentissage
du modèle.
Les méthodes DeepMask [15] et SharpMask [15] apprennent à générer des propositions de
segmentation qui sont ensuite classées en catégories sémantiques à l’aide de Fast-RCNN.
Dans cette méthode, la segmentation précède la reconnaissance, ce qui rend le réseau lent
et moins précis. De même, Dai et al [16] ont proposé une cascade complexe à plusieurs
étapes qui prédit les propositions de segmentation à partir des propositions des cadres de
sélection, suivie d'une classification.
Et pour les méthodes de [17], [18], elles utilisent des réseaux de neurones récurrents
(RNN) pour prédire séquentiellement un masque binaire d'objet à chaque étape.
11
Chapitre II : Etat de l’art
Vu les avantages et les inconvénients de chaque réseau, nous avons jugé que les réseaux de
neurones convolutionnels CNN sont les plus adaptés pour notre cas
Les CNN sont les éléments de base de la plupart des tâches de vision par ordinateur dans
l'apprentissage profond. On peut apprendre aux ordinateurs à reconnaître l’objet dans une
image en leur faisant apprendre les motifs tels que les bords verticaux, les bords
horizontaux et de différentes formes...
Le traitement se fait en découpant l’image d’entrée en des zones de petites tailles appelées
« tuiles ». Les pixels d’une même tuile sont traités d’une manière globale par un neurone
artificiel en donnant un poids à chaque pixel. Une strate de neurones de mêmes paramètres
constitue un noyau de convolution. Les CNN sont caractérisés par des noyaux de
convolution constitués de neurones qui reçoivent des signaux d’entrées ayant tous le même
poids. Cette caractéristique permet l'amélioration des performances du réseau.
12
Chapitre II : Etat de l’art
II.3.3. RCNN
L’approche CNN basée sur la région pour la détection d’objets est appelée R-CNN [8].
Elle consiste à gérer un nombre de zones susceptibles de contenir des objets et à évaluer les
réseaux de convolution de manière indépendante sur chaque région d’intérêt « RoI ».
R-CNN a donné de bons résultats, mais sa principale limitation c'est qu'il est un peu lent.
L'algorithme Faster RCNN [9] a résolu ce problème.
En effet, R-CNN a été étendu pour permettre la gestion des ROIS sur les cartes de
caractéristiques à l'aide de RoIPool [10], permettant ainsi une vitesse plus rapide et une
meilleure précision.
Faster R-CNN a avancé ce flux avec un réseau RPN (Region Proposal Network) [11]. Il est
flexible et robuste à de nombreuses améliorations ultérieures.
13
Chapitre II : Etat de l’art
Alors que Faster RCNN n'a pas été conçu pour un alignement pixel à pixel entre les entrées
et les sorties du réseau. Pour fixer ce désalignement, Mask R-CNN [12] propose une
couche simple, sans quantification, appelée RoIAlign [13] qui préserve exactement les
emplacements spatiaux ce qui donne des performances meilleures que celles dans [14].
RoIAlign a un impact important : il améliore la précision des masques de 10% à 50%, et
affiche des gains plus importants avec des mesures de localisation plus strictes.
II.3.5. Mask RCNN
Mask R-CNN est une extension du réseau Faster R-CNN. La sortie finale du réseau n’est
pas la même.
En effet, Faster R-CNN permet de localiser les objets dans une image avec une boite
englobante. L’architecture Mask R-CNN permet, quant à elle, de générer un masque de
segmentation pour chaque instance d’un objet. Cette branche ajoutée permet donc
l’amélioration du modèle par la segmentation d’instance (Section II.2) [14].
Figure 11: Architecture Mask R-CNN (He, Gkioxari, Doll´ar & Girshick, 2017).
Comme il est illustré dans la figure 11, Mask R-CNN est semblable à Faster R-CNN dans
son architecture mais en ajoutant des couches en parallèle de la classification. C’est l’une
des caractéristiques du Mask R-CNN qui le différencie des autres architectures de
segmentation d’instance. Ces derniers classifiaient les résultats par rapport au masque
généré (Dai, He & Sun, 2015 ; Pinheiro, Collobert & Doll´ar, 2015) alors que cette
approche en parallèle permet à chaque objet de prédire leur masque sans être en
concurrence avec les autres classes du modèle (He et al., 2017).
14
Chapitre II : Etat de l’art
Conclusion
Cette revue de l’état de l’art nous a permis de savoir les méthodes de l’automatisation du
dévracage et celles de détection d’objets. Où pour notre cas, nous allons opter pour la
détection d’objets par apprentissage profond en segmentant les instances des objets. Pour
assurer cette tâche, nous allons travailler avec le réseau Mask R-CNN qu’on a jugé le plus
intéressant pour notre application.
15
Chapitre III : Méthodologie
Introduction
Après avoir étudier les bases utiles à appliquer pour achever notre objectif, nous allons
détailler dans ce chapitre toutes les étapes réalisées commençant par l’acquisition de la
base des données et sa description, l’architecture du Mask-RCNN et la configuration du
modèle lors de l’apprentissage ainsi que la méthode adaptée pour l’estimation de pose des
objets par rapport à la caméra.
La collecte des données est primordiale pour entrainer un réseau par apprentissage
profond. C’est une étape très importante vu que ce sont ces données qui permettront au
réseau d’être capable d’apprendre.
Après avoir tester plusieurs caméras et comparer leurs caractéristiques tels que la Kinect
V2 [20], Realsense R200 [21], la ZED [22], ... Nous avons jugé que le capteur le plus
performant pour le cas de ce projet est l’Intel RealSense Depth caméra D415 [23]. En effet,
les images prises par cette caméra ont présenté moins de bruit en combinant l’image en
couleur et l’IR.
16
Chapitre III : Méthodologie
La sortie de la caméra est sous forme de trois données, des images de couleurs enregistrés
sous format « .jpg », des images de profondeur sous format « .jpg » et «. npy » qui sont
sauvegardés chacune dans son propre dossier. Les images sont toutes de taille 1280*720
pixels. Comme l’illustre la figure 14 ci-dessous, les pneus sont capturés dans différentes
poses afin de bien apprendre au réseau les différentes formes qu’un pneu pourrait avoir.
17
Chapitre III : Méthodologie
Nous avons fait l’acquisition de 268 images en total que nous avons séparé en trois sets
distincts :
Le nombre des données dans chaque set est choisi de façon que nous aurons 80% du
nombre total des images, 10% et 10% respectivement pour le set d’entrainement, le set de
validation et celui du test.
Cette partie s’occupe de traiter les données acquises pour les préparer et les adapter au
réseau.
La première étape de la préparation des données et la plus importante est d’annoter les
images et identifier les régions des pneus à détecter. Ces annotations sont considérées la
base de connaissances pour l’apprentissage du réseau. Le but donc du modèle sera de se
rapprocher au plus près de ces régions annotées. Il faut s’assurer donc que ces annotations
soient correctes et bien définies.
18
Chapitre III : Méthodologie
Le logiciel utilisé pour assurer cette tâche est VIA « VGG Image Annotator » -v1.0.6 [24].
C’est un logiciel d'annotation manuelle simple et autonome pour les images, l'audio et la
vidéo. VIA s'exécute dans un navigateur Web. En utilisant cet outil, nous pouvons créer un
masque de polygone comme indiqué ci-dessous :
Une fois que les annotations de toutes les images sont créées, elles peuvent être
téléchargées et enregistrées au format JSON. Ce fichier JSON contient le nom de l’image,
la classe de chaque région identifiée et ses coordonnées x et y.
Annotation
Image réelle
Fichier. JSON
Visualisation
Image annotée
19
Chapitre III : Méthodologie
De nos jours, les capteurs RGB-D sont omniprésents dans de nombreux systèmes
robotiques. Ils ne nécessitent pas de matériel compliqué et offrent des capacités de
détection uniques. Comparées aux données RGB, qui fournissent des informations sur
l’apparence et la texture, les données de profondeur contiennent des informations
supplémentaires sur la forme de l’objet et sont invariants vis-à-vis de la luminosité ou des
variations de couleurs.
Il a été observé [25] dans certaines études que la segmentation de classes ayant une
profondeur, une apparence et un emplacement similaires est améliorée en utilisant les
informations de profondeur.
En effet, dans certains cas, Les informations de profondeur ont le potentiel d’améliorer les
résultats de la segmentation d’images en ajoutant plus de données complémentaires sur
l’image.
Et donc, pour qu’on puisse entrainer notre réseau qui reçoit en entrée une image RGB de
trois canaux seulement, on a pensé à encoder une image de profondeur sous forme d’image
RGB rendue, en intégrant les données de profondeur dans les trois canaux RGB.
Pour ceci, nous avons fait un script de conversion qui lit les données de profondeur
enregistrées sous format. npy en plus des images RGB acquises (III.1.1.1). Ces dernières
sont converties en HSV (Hue Saturation Value) à l’aide de la bibliothèque OpenCv [26].
Puis nous avons intégré la profondeur au lieu de la teinte puisque les informations de la
teinte ne sont pas trop importantes dans notre cas. Et enfin, nous reconvertissons cette
image résultante en RGB. D’où nous obtenons finalement une image RGB avec 3 canaux
ayant des informations sur la profondeur.
20
Chapitre III : Méthodologie
Profondeur
CV2
CV2 : OpenCv « Open Source Computer Vision Library » [27] est une bibliothèque libre
de Python conçue pour résoudre les problèmes de vision par ordinateur en intégrant des
fonctions de base.
HSV [28] :
L’augmentation des données (Data augmentation) [29] est une technique permettant de
créer artificiellement de nouvelles données d'entraînement à partir de données
d'apprentissage existantes. Pour ce faire, plusieurs transformations qui comprennent une
gamme d'opérations dans le domaine de la manipulation d'images, peuvent être appliquées
telles que les translations, les rotations, les zooms, les symétries, etc.
21
Chapitre III : Méthodologie
L'intention est d'élargir l'ensemble de données d’apprentissage avec des versions modifiées
des images de ce set des données. Cela signifie des variations des images susceptibles
d'être vues par le modèle.
Les algorithmes d'apprentissage profond modernes, tels que les réseaux de neurones
convolutionnels ou CNN, peuvent apprendre des caractéristiques invariantes par rapport à
leur emplacement dans l'image. Néanmoins, l’augmentation peut aider d’avantage le
modèle à acquérir des fonctionnalités qui sont également invariantes aux transformations
telles que l’ordre de gauche à droite, les niveaux de luminosité, etc.
Les augmentations sont particulièrement utiles lorsqu’on a peu de données acquises et ont
prouvé leur efficacité en améliorant les performances des réseaux.
Pour ce faire, nous utiliserons la librairie python Imgaug. Cette dernière permet facilement
d’appliquer des transformations sur les images de la base d’entrainement. De plus elle peut
non seulement augmenter les images, mais également les points clés et les points de repère,
les cadres de sélection et les cartes de segmentation.
Symétries :
22
Chapitre III : Méthodologie
Pendant l’apprentissage, nous filtrons de manière aléatoire une image sur deux avec un
flou gaussien et une instabilité indépendante des valeurs RGB. Les paramètres de filtrage
gaussien sont choisis de manière aléatoire dans des intervalles prédéfinis de manière
empirique. Cela empêche le réseau de sur-adapter les variations de couleur synthétiques
trop parfaites.
Cette augmentation des données s’effectue durant l’apprentissage du réseau pour réduire
l’espace occupé par la base des données. De cette façon, chaque image est montrée pas
plus qu’une fois par cycle d’apprentissage au modèle bien qu’elle représente plusieurs
variantes après l’augmentation.
En effet, il est important qu’on apprenne au modèle des données différentes et bien
distinctes.
III.1.2.Architecture du réseau
23
Chapitre III : Méthodologie
III.1.2.1. RPN
Le CNN est un réseau standard utilisé pour extraire les caractéristiques à partir d’une
image d’entrée. Pour notre cas, c’est un ResNet [30] dont nous allons parler dans la section
suivante (III.1.3.2)
- Proposition de régions :
L’RPN « Region Proposal Network » permet de prédire les régions qui sont susceptibles de
contenir des objets. Ces régions sont appelées des régions d’intérêts « RoI : Region of
Interest ».
Pour générer ces "propositions" pour la région où se trouve l'objet, ce réseau est placé sur
la carte de caractéristiques extraite qui est la sortie de la dernière couche de convolution du
CNN. Il possède une architecture unique et spécialisée.
24
Chapitre III : Méthodologie
Figure 24: Exemples des ancres dans une position (320,320) de l'image
25
Chapitre III : Méthodologie
Le résultat d'un RPN est un ensemble de boîtes / propositions qui seront examinées par un
classificateur et un régresseur pour éventuellement vérifier l'occurrence des objets. Pour
être plus précis, RPN prédit la possibilité qu'une ancre contient l’objet cible et affine
l'ancre.
Après l’RPN, nous aurons des propositions d’objets d’intérêts mais avec différentes tailles.
C'est-à-dire alors différentes tailles de cartes de caractéristiques. C’est ici qu’arrive le rôle
du ROI Align [13], qui est l’un des changements les plus importants par rapport au Faster-
RCNN.
En effet, les limites de cellule de la carte des caractéristiques cible sont forcées de se
réaligner avec les limites des cartes de caractéristiques en entrée. Par conséquent, chaque
cellule cible peut ne pas avoir la même taille. Le masque R-CNN utilise ROI Align qui ne
scanne pas la limite des cellules et fait en sorte que chaque cellule cible ait la même taille.
Et par suite le même sous réseau sera capable de prédire les classes, les cadres de
sélections et les masques de segmentation.
A cette étape, l’algorithme prend les régions d’intérêt définies dans les étapes précédentes
comme des entrées et génère la sortie du réseau qui est la prédiction des classes, des cadres
de sélection et des masques. Il utilise donc la même architecture que celle du Faster R-
CNN en ajoutant deux couches de convolution pour la branche du masque de
segmentation.
26
Chapitre III : Méthodologie
En effet, les vecteurs ROI sont passés à travers d’un prédicteur, contenant 2 branches,
chacune avec une couche FC « Fully Connected ». Une pour prédire la classe d'objets et
l'autre pour les valeurs de régression du cadre de sélection.
Le processus d'extraction des caractéristiques des masques est similaire à celui des boîtes.
Mais une différence essentielle réside dans l'absence de couches entièrement connectées
(FC). L'extraction de la structure spatiale des masques peut être traitée naturellement par la
correspondance pixel à pixel fournie par les convolutions. Là où nous trouvons deux
couches de convolution dans la branche du masque de segmentation. Cette représentation
entièrement convolutive nécessite moins de paramètres et est plus précise.
Une couche FC est une couche classique de perceptron et la dernière couche d’un réseau
profond qui opère la discrimination finale entre des images à reconnaître. Les couches
précédentes construisant, extrayant, des caractéristiques (features) de celles-ci.
Alors qu’une couche de Convolution opère une convolution sur le signal d’entrée en
associant une réduction de dimension.
Dans ce projet, nous allons travailler sur le réseau Mask R-CNN présenté précédemment.
Nous avons donc utilisé la version de Matterport [31] qui a été implémentée sur Github, vu
qu’elle est utilisée dans plusieurs projets dont le but est le même que celui de notre projet.
27
Chapitre III : Méthodologie
Nous avons exploré dans ce projet sur Linux Ubuntu, le langage Python et les
bibliothèques TensorFlow et Keras.
• Linux Ubuntu est le système d’exploitation sur lequel nous avons travaillé avec la
version 16.04.
• Le langage Python est celui choisi comme langage de programmation dans sa
version 3.7 pour l’application de détection d’objets vu sa portabilité et ses hautes
performances.
• TensorFlow est une plateforme open source pour l'apprentissage automatique. Il
offre un écosystème complet et flexible d’outils, de bibliothèques et de ressources
communautaires qui permet aux chercheurs de se familiariser avec les technologies
de l’état de l’art.
• Keras est une bibliothèque open source de réseau de neurones écrite en Python. Il
est capable de fonctionner sur TensorFlow, Microsoft Cognitive Toolkit, Theano ou
PlaidML. Conçu pour permettre une expérimentation rapide avec des réseaux de
neurones profonds, il se veut convivial, modulaire et extensible.
• Backbone model :
Les réseaux R-CNN sont la plupart du temps couplés avec un modèle c'est-à-dire un réseau
auquel les poids sont précalculés. Pour notre cas, l’architecture du Mask R-CNN est
soutenue par le ResNet101 « Residual Network ». Ce sont des réseaux de neurones
présentant un cadre d’apprentissage résiduel pour faciliter l’entrainement des couches
profondes vu leur difficulté à converger. En effet, ces réseaux apprennent des fonctions
résiduelles avec référence aux entrées de la couche en introduisant des connexions de saut
d'identité afin que les couches puissent copier leurs entrées dans la couche suivante.
L’idée intuitive derrière cette approche est qu’elle garantit que la couche suivante apprend
quelque chose de nouveau et de différent de ce que l’entrée a déjà encodé [32].
28
Chapitre III : Méthodologie
Ce modèle est pré entrainé avec la base des données MSCOCO [33] et donc les poids sont
calculés avec cette base. MSCOCO est composée d’un grand nombre d’images (330K
images) contenant 80 classes d’objets différentes avec une annotation de masques
d’instances.
• Optimiseur :
La descente de gradient est l’un des algorithmes les plus répandus pour réaliser
l’optimisation [34] et de loin le moyen le plus courant d’optimiser les réseaux de neurones.
La descente de gradient stochastique (SGD), en revanche, effectue une mise à jour des
paramètres pour chaque exemple d'apprentissage. On l'appelle stochastique parce que la
méthode utilise des échantillons choisis au hasard pour évaluer les gradients. SGD peut
donc être considéré comme une approximation stochastique de l'optimisation de la
descente de gradient.
La descente de gradient par lots effectue des calculs redondants pour les grands ensembles
de données, car elle recalcule les gradients pour des exemples similaires avant chaque mise
29
Chapitre III : Méthodologie
à jour de paramètre. SGD supprime cette redondance en effectuant une mise à jour à la
fois. Il est donc beaucoup plus rapide. Mais il peut prendre beaucoup plus de temps qu'avec
certains autres optimiseurs, vu que SGD parvient généralement à trouver un minimum.
Pour cette raison nous avons pensé à essayer l’optimiseur Adam, qui présente certainement
plus de rapidité mais durant l’apprentissage le gradient s’est explosé d’où le choix de la
modification du taux d’apprentissage.
Cependant, après la comparaison des résultats des tests, nous avons jugé que SGD
fonctionne mieux pour notre cas.
• Taux d’apprentissage :
Choisir un taux d’apprentissage approprié peut être difficile. Un taux d'apprentissage trop
faible entraîne une convergence extrêmement lente, alors qu'un taux d'apprentissage trop
élevé peut entraver la convergence et entraîner une fluctuation, voire une divergence, de la
fonction de perte qu’on expliquera ultérieurement.
Le nombre d’époques auxquelles on itère notre réseau lors de l’apprentissage est égal à 100
époques et chaque époque contient 100 itérations. Après chaque époque, le réseau
enregistre un modèle.
• Seuil de segmentation :
C’est le seuil du masque à prédire. Le choix de cette valeur dépend de la taille de l’objet à
détecter. Si l’objet est très petit il faut choisir une valeur minimale sinon il faut augmenter
la valeur du seuil. Pour notre cas, après le test de plusieurs cas, nous avons choisi de
travailler avec un seuil égal à 0.5.
• Seuil de chevauchement :
Les mesures de sortie sont calculées en supposant que le modèle ne renvoie jamais de
prédictions avec un score inférieur à cette valeur de seuil.
30
Chapitre III : Méthodologie
D’où le choix du seuil qui est égal à 0.5 afin d’améliorer la capacité du réseau à gérer les
problèmes de détection des petits objets tout en ayant une bonne précision de localisation.
Dans le cadre de l'algorithme d'optimisation, l'erreur pour l'état actuel du modèle doit être
estimée à plusieurs reprises. Cela nécessite le choix d'une fonction d'erreur, appelée
fonction de perte « Loss Function », qui peut être utilisée pour estimer la perte du modèle
afin que les poids puissent être mises à jour afin de réduire la perte lors de la prochaine
évaluation.
Les modèles des réseaux de neurones apprennent une mise en correspondance des entrées
en sorties des exemples et le choix de la fonction de perte doit correspondre au cadrage du
problème de modélisation prédictif spécifique, tel que la classification ou la régression
[35]. En outre, la configuration de la couche de sortie doit également être appropriée pour
la fonction de perte choisie.
Comme il est mentionné dans la section précédente (II.3), parmi les particularités du Mask
R-CNN c’est qu’il combine plusieurs fonctions de perte.
= + + (1)
La fonction de perte utilisée pour les cadres de sélection ainsi que pour les classes prédites
est « L1 Smooth Loss Function». Elle est utilisée pour effectuer la régression sur certains
systèmes de détection d’objets. Elle est donnée par :
Elle utilise un terme carré si l'erreur absolue tombe en dessous de 1 et un terme absolu
sinon. Dans certains cas, elle empêche l’explosion de gradients et elle est moins sensible
aux valeurs aberrantes, qu’une autre régression.
31
Chapitre III : Méthodologie
Alors que pour les masques de segmentation, nous avons utilisé la fonction de perte
« Cross Entropy Loss Function ». Qui est plus utilisé dans les problèmes de classification.
Dans un problème de classification binaire, il y aurait deux classes, nous pouvons donc
prédire la probabilité que l'exemple appartienne à la première classe. Dans le cas d'une
classification à plusieurs classes, nous pouvons prédire une probabilité pour l'exemple
appartenant à chacune des classes.
, -.
= − log + 2
(4)
*
∑1 , -0
Cette formule confirme le fait de minimiser la fonction de perte pour avoir une probabilité
de prédiction plus grande.
32
Chapitre III : Méthodologie
- « Early stopping » [37] qui est une méthode qui permet de spécifier un grand
nombre arbitraire d’époques d’entraînement et d’arrêter l’entraînement une fois que
les performances du modèle ne s’améliorent plus avec un jeu de données de
validation conservé.
- « Save best Only » [36], qui enregistre seulement le modèle où l'optimisation est
arrêtée lorsque l'erreur de validation stagne ou augmente tandis que l'erreur
d'apprentissage continue à diminuer.
Nous avons choisi le deuxième critère d'arrêt, mais bien qu’il puisse ne pas être optimal
pour atteindre les meilleures performances sur chaque jeu de données, il est toutefois
suffisant pour des performances comparatives significatives sur un jeu de données donné
puisque chaque réseau d'une comparaison est formé dans les mêmes conditions
Pour que les robots puissent fonctionner en toute sécurité et efficacement aux côtés des
humains, ils doivent être conscients de leur environnement. L'un des aspects de cette prise
de conscience est la connaissance de la position et de l'orientation 3D des objets dans la
scène.
Notre objectif est de déduire la pose 3D des objets, à partir d'une seule image RGB en
temps réel afin de permettre au robot de manipuler de tels objets. Nous pourrons ainsi
estimer avec précision la position et l’orientation exactes de l’objet par rapport au capteur.
En outre, la reconnaissance d'objet 3D a tendance à être plus résistante à l'encombrement
des scènes où des objets à l'avant obstruent des objets à l'arrière-plan.
Après avoir obtenir les masques de segmentation, nous devons suivre les étapes suivantes
pour avoir les nuages de points 3D :
Les masques binaires prédits sont des tenseurs ayant la forme suivante (H, W, N) avec H :
Hauteur, W : Largeur et N : le nombre d’instances c'est-à-dire le nombre des pneus prédits
dans l’image.
33
Chapitre III : Méthodologie
Par exemple dans ce cas, le réseau a prédit six pneus. Et comme la résolution des images
est 1280*720 donc nous aurons la forme (1280, 720, 6).
(1280,720,6)
Puisque le masque est binaire, les 1 dans la matrice présentent des pixels qui appartiennent
à une instance et les 0 sont ceux qui appartiennent à l’arriere plan. Nous nous intéressons
bien évidemment aux pixels qui appartiennent à une instance. Nous allons donc récupérer
leurs coordonnées 2D pour chaque pneu séparément, puis nous les enregistrons dans une
liste.
34
Chapitre III : Méthodologie
Les entités cylindriques sont l’un des primitifs géométriques les plus fréquemment
rencontrés dans les nuages de points lorsqu’ils sont collectés dans des sites industriels, des
zones urbaines, ...
L’ajustement des cylindres est une tâche fondamentale dans les domaines de l’infographie,
de la vision par ordinateur, de la reconnaissance des formes et pour diverses applications,
telles que l'extraction de caractéristiques (De Guevara et al., 2011), la reconstruction de
surfaces (Schnabel et al., 2007) et peut être utilisée même pour l’estimation de pose des
objets comme pour notre cas.
Nous avons donc utilisé pour assurer cette tâche, un algorithme permettent d’estimer avec
précision les directions des cylindres et d'ajuster des cylindres à partir des données de
nuages de points PCD « Point Cloud Data ».
Les PCD sont généralement partielles, non ordonnées, ont une densité ponctuelle
irrégulière, contiennent diverses structures complexes et peuvent être bruyantes. De plus, la
présence de valeurs aberrantes qui ne suivent pas le contour de la majorité des points
d’intérêt est courante pour de nombreuses raisons. Par conséquent, un raccord de cylindre
robuste pour PCD incomplet a une grande importance et représente également un défi [38].
Cette méthode est pratique donc en cas de présence de bruit, pour des données incomplètes
ou complètes, pour un nombre petit ou grand de points, et quel que soit la taille de rayon
du pneu.
En effet, de nombreuses recherches ont été menées sur l'ajustement des cylindres dans les
données 3D (Shakarji, 1998; Marshal et al., 2001; Rabbani et Heuvel, 2005; Schnabel et
al., 2007; Mendez et al., 2014; Tran et al., 1999). 2015). Sur la base des données et des
applications, les développements ont été développés en deux classes principales ; certains
algorithmes travaillent directement sur des données brutes sans prétraitement important,
d'autres prennent des données prétraitées (par exemple, classification et segmentation) de
sorte que chaque partie soit bien approchée par une forme géométrique appropriée.
35
Chapitre III : Méthodologie
Pour notre cas, après la segmentation et à partir des nuages de points 3D obtenus pour
chaque masque, nous allons estimer les paramètres du cylindre à ajuster. Les quatre
paramètres de cylindre sont : orientation (O), longueur (L), centre (C) et rayon (R)
Nous avons utilisé pour l’ajustement des cylindres la librairie PCL « Point Cloud Library »
où la méthode suivie [39] se résume dans les opérations suivantes qui sont appliquées au
set de données en entrée :
Conclusion
Et donc ces choix faits durant cette section ont été déterminé après beaucoup de tests et
d’apprentissage et à chaque fois, nous évaluons le modèle et nous le comparons avec les
autres.
36
Chapitre III : Méthodologie
Dans le chapitre suivant, nous allons détailler les critères d’évaluation du modèle et nous
allons voir les résultats des tests réalisés qui ont abouti à la détermination de la meilleure
configuration.
37
Chapitre IV : Test et évaluation
Introduction
De nombreux critères d'évaluation [40] ont été proposés et sont fréquemment utilisés pour
évaluer la précision de tout type de technique de segmentation. Ces métriques sont
généralement des variations de la précision des pixels et de l'intersection sur union IoU
« Intersection Over Union ». Ils présentent les mesures les plus courantes pour la
segmentation d’instance actuellement utilisées pour mesurer les performances de cette
tâche. Ces dernières, sont assez similaires à celles de la détection d'objet, à l'exception du
fait que nous les calculons maintenant pour les masques au lieu de boîtes englobantes.
Nous évaluerons les modèles avec la première métrique mAP (Mean Average Precision).
L’objectif de cette mesure est de comparer la région détectée avec la vraie région de
l’objet. Cette métrique montre la capacité d'un système à effectuer la segmentation
d'instance en fonction de ses courbes de rappel de précision pour chaque classe. Tout
d'abord, les courbes de rappel de précision sont obtenues pour l'algorithme en cours
d'évaluation. Ensuite, l’aire sous chaque courbe est calculée, chacune d’elles étant désignée
comme la précision moyenne pour cette classe spécifique. Enfin, la métrique mAP est
38
Chapitre IV : Test et évaluation
définie comme la moyenne des précisions moyennes sur toutes les classes prédéfinies pour
le problème. Pour générer les courbes de rappel de précision d’un algorithme, il faut faire
correspondre les instances générées aux objets initialement annotés présents dans chacune
des images.
7
1
345 = & 45*
6 (5)
*89
AP : Précision moyenne
Précision et rappel :
Objet Objet
Masque Masque
Précision = Recall =
Masque Objet
39
Chapitre IV : Test et évaluation
Maintenant à chaque niveau de rappel, nous remplaçons chaque valeur de précision par la
valeur de précision maximale située à droite de ce niveau de rappel.
Après 11 seuils de confiance différents qui déterminent le « rang » sont choisis tels que le
rappel à ces valeurs soit 0, 0,1, 0,2, 0,3,…, 0,9 et 1,0. AP est maintenant définie comme la
moyenne des valeurs de précision à ces 11 valeurs de rappel sélectionnées. Cela donne au
mAP une vue d’ensemble de toute la courbe de rappel de précision.
Aussi nous utiliserons la mesure Intersection moyenne sur l'Union (Mean IoU) comme
métrique d’évaluation : il s'agit de l'indicateur standard utilisé pour la tâche de
40
Chapitre IV : Test et évaluation
Objet
Intersection Masque
IoU =
Union Objet
Masque
Pour cette raison, cette métrique d'évaluation est définie pour récompenser les masques
prédits en cas de chevauchement important avec les masques de segmentation cibles.
Parmi toutes les mesures d’évaluation, le Mean IoU se démarque donc comme l'indicateur
le plus utilisé en raison de sa représentativité et de sa simplicité. La plupart des défis et des
chercheurs utilisent cette métrique pour rendre compte de leurs résultats.
Beaucoup d’essais ont été réalisés pour arriver finalement au meilleur modèle. Nous allons
voir les résultats de chaque modification et son effet sur l’apprentissage du réseau.
A chaque fois nous testons sur les données de la base de test qui n’ont pas été utilisés
auparavant et non labellisés et nous les enregistrons en visualisant les masques de chaque
instance ainsi que les cadres de sélection et nous déterminons les mesures d’évaluation le
mAP et l’IoU.
41
Chapitre IV : Test et évaluation
• Effet de la profondeur :
Tout d’abord, nous avons lancé un apprentissage sur la base des données initialement
acquises avec la caméra qui sont des données RGB. Puis nous avons comparé les résultats
de cet apprentissage avec celui réalisé sur la base convertie « III.1.1.2.b » où nous avons
intégré la profondeur.
Le maximum de profondeur choisit pour cette conversion est pris initialement à 2500.
RGB RGB-D
42
Chapitre IV : Test et évaluation
Nous avons fait varier la valeur du seuil de segmentation jusqu’à avoir le meilleur résultat,
Ci-dessous les résultats respectivement des valeurs 0.7, 0.5 et 0.3.
Si nous prenons le premier cas où le seuil de segmentation est égal à 0.7, nous
trouvons que les mesures d’évaluation sont trop petites par rapport aux autres cas.
De plus les masques de segmentation présentent beaucoup d’imprécisions.
Pour le deuxième et le troisième cas, les résultats sont presque complémentaires
ainsi que le mAP et le IoU enregistrent des valeurs très proches. Dans notre projet,
nous avons opté pour un seuil de segmentation égal à 0.5.
• Effet de l’optimiseur :
Adam SGD
43
Chapitre IV : Test et évaluation
Nous pouvons remarquer qu’avec SGD le modèle a prédit des masques plus précis
et sans interruptions pour chaque pneu qu’avec Adam. Ce qui est confirmé avec les
valeurs de mAP et de IoU qui sont plus importantes. D’où le choix de travailler
avec SGD comme optimiseur.
• Effet du Taux d’apprentissage :
0.0001 0.001
Nous remarquons qu’il y’a pas une grande différence dans les deux cas. Le
deuxième peut être un peu mieux que le premier. De même pour les mesures
d’évaluation qui sont presque égales. Nous choisissons de prendre un taux
d’apprentissage égale à 0.001 puisque c’est la valeur prise par défaut avec
l’optimiseur SGD.
44
Chapitre IV : Test et évaluation
• Effet du Backend :
Nous avons essayé deux versions de Residual Net, le ResNet50 et le ResNet101. Les tests
ont donné les résultats suivants :
ResNet50 ResNet101
Dans le premier cas, il y’a une fausse détection. Le modèle a détecté un pneu sur le
mur qui n’existe pas, en plus des discontinuités dans les masques de segmentation
alors que ce n’est pas le cas avec ResNet101 et les masques sont beaucoup mieux
précis.
Les mesures d’évaluation confirment bien ces observations.
Nous avons modifié la valeur du maximum de la profondeur initialement pris à 2500 afin
de voir son effet sur la prédiction du modèle. Ci-dessous les résultats enregistrés
respectivement pour des valeurs égales à 2500, 1500 et 1000
45
Chapitre IV : Test et évaluation
En premier lieu, nous avons entrainé le modèle sans augmentation de données, puis nous
avons augmenté notre base avec seulement la symétrie FlipUr. Et finalement, nous avons
essayé d’ajouter encore d’autres augmentations comme il est mentionné dans le chapitre
précèdent (…).
46
Chapitre IV : Test et évaluation
Nous pouvons bien voir la différence entre les trois cas. En augmentant les données
les masques sont beaucoup mieux dessinés d’où plus de précision ce qui nous a
donné des valeurs de mAP et de IoU plus importantes. Nous pouvons remarquer
aussi que dans les deux premiers cas, il y’a une fausse détection qui est l’homme à
droite et le petit pneu à coté en arrière n’a pas été détecté. Alors que dans le
troisième cas, le modèle a détecté tous les pneus et y’a pas de fausses détections.
Et donc après tous ces tests, nous avons pu déterminer notre meilleur modèle avec lequel
nous avons enregistré les graphes du loss, et les valeurs de mesures d’évaluations suivants :
loss
loss
10 20 30 40 50 60 70 80 90 100 10 20 30 40 50 60 70 80 90 100
epochs epochs
loss
10 20 30 40 50 60 70 80 90 100 10 20 30 40 50 60 70 80 90 100
epochs epochs
47
Chapitre IV : Test et évaluation
Nous pouvons bien voir que l’erreur d’apprentissage global ainsi que pour les masques et
les cadres de sélection continue à diminuer et convergent vers des valeurs égales
respectivement à 0.5, 0.355 et 0.1. Tandis que pour la validation l’erreur commence à
augmenter. C’est ici où, l’optimisation est arrêtée et nous enregistrons le meilleur modèle
qui est pour notre cas, le modèle enregistré est celui de l’époque 78 avec des valeurs de
0,918 pour le loss global et 0.3951 pour celui des masques.
Pour les mesures d’évaluation, nous avons enregistré une valeur de 0.75 pour le mAP et
0.67 pour le IoU moyenne.
Nous pouvons dessiner un histogramme présentant les valeurs des IoUs moyennes sur
toute la base de validation.
48
Chapitre IV : Test et évaluation
Cet histogramme montre la fréquence de chaque valeur d’IoU moyenne trouvée. Il est bien
clair que les valeurs sont toutes presque entre 0.65 et 0.75. Ce qui confirme la valeur du
IoU moyenne globale trouvée.
Et finalement nous pouvons voir un exemple de résultat de prédiction sur l’une des images
de tests que le réseau a pu prédire.
49
Chapitre IV : Test et évaluation
Notre système de détection, a bien été amélioré, il est capable maintenant de détecter tous
les pneus mais il a toujours quelques problèmes qui devraient être améliorés.
Dans cette section, nous menons maintenant des expériences sur une configuration
robotique du monde réel. Notre configuration réelle consiste en une seule caméra, la même
avec laquelle nous avons fait l’acquisition des données pour l’apprentissage du réseau,
Intel RealSense Depth Camera D415, pour capturer la scène et un bras robotique UR10
équipé d'une pogne comme effecteur terminal.
Le robot UR10 [41] est le plus grand bras des robots collaboratifs. Il est caractérisé par sa
portée de 1300 mm et est utilisé pour automatiser des tâches d’assemblage, de
conditionnement et de Pick and Place pour des éléments allant jusqu’à 10Kg de charge. Il
permet un gain de temps sur les chaines de production surtout quand la distance se
considère comme un facteur important. Sa configuration est également rapide et
collaborative et facile à programmer.
Le robot pèse 28.9 Kg, ayant 6 degrés de liberté, avec une rotation de 720° sur les 6 axes et
une répétabilité de +/- 0.1mm.
50
Chapitre IV : Test et évaluation
IV.3.2. Fonctionnement
Pour faire l’implémentation du code sur le robot, nous avons fait les installations
nécessaires sur la machine liée au robot et à la caméra. L’intel RealSense Depth Camera
D415 est fixée sur la tête du robot pour faire l’acquisition en temps réel. Et la palette
remplie des pneus est en face du robot.
Tout d’abord, nous activons la caméra pour que le robot puisse capturer la scène et
l’afficher sur l’écran. Nous enregistrons une image en couleur et celle de profondeur avec
une résolution 1280*720.
Après, nous intégrons la profondeur dans l’image RGB de la scène capturée vu que ça nous
a donné de meilleurs résultats dans les tests précédents.
La figure ci-dessous montre le résultat de la prédiction faite par le robot en temps réel.
51
Chapitre IV : Test et évaluation
Nous pouvons visualiser les points 3D récupérés par le robot comme suivant :
Puis, nous récupérons les points 3D des masques pour chaque canal et nous essayons
d’ajuster un cylindre au premier pneu que le robot juge capable de le prendre.
Une fois que le cylindre est bien prédit, la position du pneu est envoyée au robot.
En plus, le temps de capture ainsi que celui de détection sont très réduits : 1S par image.
Ce qui montre que notre réseau est très performant.
52
Chapitre IV : Test et évaluation
Conclusion
Dans ce chapitre, nous avons décrit les mesures d’évaluation choisies en justifiant notre
choix. Ces mesures ont contribué, en plus des visualisations de la sortie du réseau, dans la
détermination des choix des paramètres ainsi que la configuration du modèle et par suite
nous avons pu, après plusieurs essais et tests, améliorer notre réseau qui a été implémenté
sur le robot dans la dernière section.
53
Conclusion Générale et perspectives
Pour ceci, nous avons commencé notre étude avec un état de l’art qui nous a été utile afin
de voir les différentes solutions et les réseaux déjà utilisées pour la détection d’objets. Nos
recherches sur des problèmes similaires nous a permis de créer une référence ainsi que de
faciliter notre travail.
La création de la base des données a été réalisée au sein de Michelin et sa préparation a été
bien décrite dans la première section du troisième chapitre. Puis, nous avons présenté
l’architecture de réseau de neurones utilisé. Cela nous a permis de découvrir l’architecture
du Mask R-CNN (section III.1.2) et la différencier par rapport aux autres réseaux de la
famille R-CNN. Nous avons utilisé cette architecture pour créer notre modèle de détection
des pneus.
Puis, une étude sur l’estimation de pose des objets par rapport au capteur a été menée.
Dans le dernier chapitre, nous avons présenté tous les résultats des tests réalisés et leur
évaluation. Et finalement une implémentation du réseau résultant a été réalisée sur le robot
UR10.
L’objectif de l’étude décrit au départ a été atteint, celui-ci était décrit comme suit :
54
Conclusion Générale et perspectives
Généralement nous avons réussi à faire fonctionner le robot avec notre réseau. Ceci nous a
permis d’obtenir des résultats satisfaisants et notre objectif a été achevé tout en contribuant
à l’amélioration de la productivité.
Cependant, nous pouvons encore plus améliorer notre modèle et continuer la recherche de
ce projet avec plusieurs améliorations différentes qui peuvent être définies comme suit :
- L’acquisition des données peut être refaite ou augmentée avec des pneus réels et
non des prototypes de pneus comme ceux que nous avons utilisé. Le nombre des
images dans le set des données peut aussi être augmenté en capturant d’autres
positions de pneus. Plus le nombre des données d’apprentissage est important plus
le réseau est capable à apprendre mieux et plus rapidement.
- Nous pensons aussi qu'une réduction supplémentaire des pertes et une
augmentation de la précision peuvent être obtenues en ajoutant un autre canal de
profondeur dans l’entrée du réseau.
- Pour éviter les imperfections dans la détection des contours des pneus, nous
pensons à combiner le réseau de segmentation d’instance avec un réseau de
segmentation des contours comme Unet [42].
- D’autres réseaux de segmentation qui peuvent donner de bons résultats avec notre
base des données peuvent aussi être utilisés et faire la comparaison avec Mask-
RCNN.
- La configuration et les paramètres choisis (Optimiseur, LR, Backbone model, …)
ne sont pas forcément les meilleurs, nous pouvons essayer de tester avec d’autres
choix.
55
Bibliographies
Bibliographies
[1] Industrie-techno, « Oui, le robot est une solution performante et rentable ! », oct.
2003.
[7] A. Deshpande, « The 9 Deep Learning Papers You Need To Know About
(Understanding CNNs Part 3) ». [En ligne]. Disponible sur:
https://adeshpande3.github.io/The-9-Deep-Learning-Papers-You-Need-To-Know-
About.html. [Consulté le: 27-avr-2019].
[9] S. Ren, K. He, R. Girshick, et J. Sun, « Faster R-CNN: Towards Real-Time Object
Detection with Region Proposal Networks », ArXiv150601497 Cs, juin 2015.
56
Bibliographies
[13] « How does ROTAlign work in Mask-RCNN? - Quora ». [En ligne]. Disponible
sur: https://www.quora.com/How-does-ROTAlign-work-in-Mask-RCNN. [Consulté le: 11-
août-2019].
[23] « Intel® RealSenseTM Depth Camera D415 ». [En ligne]. Disponible sur:
https://store.intelrealsense.com/buy-intel-realsense-depth-camera-d415.html. [Consulté le:
11-août-2019].
[24] A. Dutta et A. Zisserman, « The VIA Annotation Software for Images, Audio and
Video », ArXiv190410699 Cs, avr. 2019.
57
Bibliographies
[29] « How to Configure Image Data Augmentation in Keras ». [En ligne]. Disponible
sur: https://machinelearningmastery.com/how-to-configure-image-data-augmentation-
when-training-deep-learning-neural-networks/. [Consulté le: 11-août-2019].
[32] K. He, X. Zhang, S. Ren, et J. Sun, « Deep Residual Learning for Image
Recognition », ArXiv151203385 Cs, déc. 2015.
[35] « Loss and Loss Functions for Training Deep Learning Neural Networks ». [En
ligne]. Disponible sur: https://machinelearningmastery.com/loss-and-loss-functions-for-
training-deep-learning-neural-networks/. [Consulté le: 11-août-2019].
58
Bibliographies
[37] J. Brownlee, « Use Early Stopping to Halt the Training of Neural Networks At the
Right Time », Machine Learning Mastery, 09-déc-2018. .
[39] « Documentation - Point Cloud Library (PCL) ». [En ligne]. Disponible sur:
http://pointclouds.org/documentation/tutorials/cylinder_segmentation.php. [Consulté le:
11-août-2019].
[41] « Bras robotisé Universal Robots UR10 | HMI - MBS ». [En ligne]. Disponible sur:
https://www.mb-s.fr/universal-robots-ur10.html. [Consulté le: 11-août-2019].
59