Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

Rapport PFE - Sahar Dahmane

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1sur 70

AU : 2018-2019

Université de Sousse
Ecole Nationale d’Ingénieurs de Sousse

Département Mécanique Organismes d'accueil


Avancée

Mémoire de Projet de Fin d'Études


Présenté en vue de l’obtention du diplôme d’

Ingénieur en Génie Mécatronique


Détection d’objets par apprentissage profond
Réalisé par : Sahar DAHMANE
Soutenu le 03/09/2019

Devant le jury

Président : M. Farhat ZEMZEMI, ENISo


Rapporteur : M. Abdelfatteh MLIKA, ENISo
Encadrant Académique : M. Sami BENNOUR, ENISo
Encadrants Professionnels : M. Thierry CHATEAU, Institut Pascal
M. Mohamed Abbas KONATE, Michelin

©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.

J’ai l’extrême honneur de dédier ce travail :

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

Arrivant à l’aboutissement de ma tâche, je me trouve dans l’obligation respectueuse de


devoir présenter mes chaleureux remerciements et témoignages de ma gratitude à tous
ceux qui ont contribué aimablement et avec patience à l’élaboration de ce mémoire.

Je tiens à exprimer ma sincère gratitude à Monsieur Sami BENNOUR pour sa générosité


en matière d’encadrement, pour ses précieux conseils, son soutien moral et son aide
durant l’élaboration de ce projet.

Je remercie tout particulièrement mon responsable de stage, Monsieur Thierry CHATEAU,


professeur à l’Institut Pascal pour m’avoir encadré et soutenu durant le stage, pour sa
grande gentillesse et surtout pour m’avoir dirigé sur la bonne voie de succès avec ses
recommandations.

Je souhaite également exprimer ma profonde gratitude à Monsieur Mohamed Abbas


KONATE, mon encadrant à Michelin pour ses conseils précieux, son soutien, la confiance
qu’il m’a accordée tout le long de mon stage et pour avoir partager avec moi ses
expériences enrichissantes.

Je souhaite aussi remercier Madame Céline TEULIERE, ma Co-encadrante à l’Institut


Pascal pour le temps qu’elle m’a consacré.

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.

Je tiens à remercier profondément les membres du jury Monsieur Farhat ZEMZEMI et


Monsieur Abdelfatteh MLIKA qui m’ont fait l’honneur de juger mon travail.

J’adresse mes vifs remerciements à mes professeurs de l’Ecole Nationale d’Ingénieurs de


Sousse qui ont contribué énormément à ma formation.

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.

Mots clés : Apprentissage profond, dévracage robotisé, détection d’objets, segmentation


d’instances, Mask R-CNN.
Abstract

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.

Keywords: Deep learning, automated Bin Picking, object detection, instance


segmentation, Mask R-CNN
Table des matières
Introduction générale ................................................................................... 1
Chapitre I: Présentation du cadre de travail ......................................... 3
Introduction .......................................................................................................................3
I.1. Présentation de l’Institut Pascal........................................................................3
I.2. Présentation de Michelin ..................................................................................4
I.3. Problématique ..................................................................................................4
I.4. Objectif............................................................................................................5
Conclusion .........................................................................................................................6
Chapitre II: Etat de l’art .......................................................................... 7
Introduction .......................................................................................................................7
II.1. Solutions existantes .........................................................................................7
II.1.1. Par vision ..................................................................................................7
II.1.2. Conception 3D ..........................................................................................8
II.2. Segmentation d’instances .................................................................................9
II.3. Réseaux de neurones ......................................................................................10
II.3.1. Les réseaux de segmentation d’instances ................................................. 11
II.3.2. Les réseaux de neurones convolutionnels (CNN) ..................................... 12
II.3.3. RCNN .....................................................................................................13
II.3.4. Faster RCNN...........................................................................................13
II.3.5. Mask RCNN ...........................................................................................14
Conclusion ....................................................................................................................... 15
Chapitre III: Méthodologie...................................................................... 16
Introduction .....................................................................................................................16
III.1. Détection d’objets ..........................................................................................16
III.1.1. Base des données ....................................................................................16
III.1.1.1. Acquisition des données ......................................................................16
III.1.1.2. Préparation des données .......................................................................18
III.1.1.2.1. Annotation des images ...............................................................18
III.1.1.2.2. Intégration de la profondeur .......................................................20
III.1.1.2.3. Augmentation des données .........................................................21
III.1.2. Architecture du réseau .............................................................................23
III.1.2.1. RPN.....................................................................................................24
III.1.2.2. Network Head......................................................................................26
III.1.3. Apprentissage du réseau ..........................................................................27
III.1.3.1. Environnement du travail .....................................................................27
III.1.3.2. Configuration du modèle .....................................................................28
III.1.3.3. Les fonctions de perte ..........................................................................31
III.2. Calcul de pose................................................................................................33
III.2.1. Nuages de points .....................................................................................33
III.2.2. Ajustement des cylindres .........................................................................35
Conclusion ....................................................................................................................... 36
Chapitre IV: Tests et évaluation.............................................................. 38
Introduction .....................................................................................................................38
IV.1. Critères d’évaluation ......................................................................................38
IV.1.1. Mean Average Precision « mAP » ...........................................................38
IV.1.2. Intersection sur Union « IoU »................................................................. 40
IV.2. Tests des apprentissages.................................................................................41
IV.3. Implémentation sur le robot ...........................................................................50
IV.3.1. Robot UR10 ............................................................................................50
IV.3.2. Fonctionnement .......................................................................................51
Conclusion .......................................................................................................................53
Conclusion générale et perspectives .......................................................... 54
Bibliographies ............................................................................................. 56
Liste des figures

Figure 1: Les axes de l'Institut Pascal .................................................................................3

Figure 2: Etapes de la charge des pneus dans les camions...................................................5

Figure 3 : Exemples de capteurs visuels .............................................................................8

Figure 4: Exemples de préhenseurs de robot.......................................................................8

Figure 5: Conception 3D d’une pièce mécanique................................................................9

Figure 6: Différentes méthodes de détection .....................................................................10

Figure 7: Différence entre (a) les couches totalement connectées et (b) les couches
convolutionnelles .............................................................................................................11

Figure 8: Principe de réseau de neurones ..........................................................................11

Figure 9: Architecture d'un RCNN ................................................................................... 13

Figure 10: Architecture du Faster R-CNN ........................................................................ 13

Figure 11: Architecture Mask R-CNN (He, Gkioxari, Doll´ar & Girshick, 2017). ............14

Figure 12: Intel RealSense Depth Camera D415...............................................................16

Figure 13: Acquisition des images....................................................................................17

Figure 14: Echantillons de la base des données ................................................................18

Figure 15: Exemple d'annotation avec VIA ......................................................................19

Figure 16: Dessin explicatif du résultat de l'annotation .....................................................19

Figure 17: Etapes de conversion réalisées.........................................................................21

Figure 18: Résultat de la conversion d'une image .............................................................21

Figure 19: Exemple de symétries (a) horizontale et (b) verticale .......................................22

Figure 20: Exemple de normalisation de contraste............................................................ 23

Figure 21: Exemple de l'effet floue gaussien ....................................................................23

Figure 22: Architecture du Mask-RCNN ..........................................................................24

Figure 23: Architecture de l'RPN .....................................................................................25


Figure 24: Exemples des ancres dans une position (320,320) de l'image ...........................25

Figure 25: Résumé sur les architectures de la famille des R-CNN ....................................27

Figure 26: Bloc résiduel de l'architecture du ResNet ........................................................29

Figure 27: Exemples de la base COCO ............................................................................29

Figure 28: Exemple de prédiction de masques ..................................................................34

Figure 29: Exemples d'ajustement des cylindres ...............................................................36

Figure 30: Courbe de la précision en fonction du recall ....................................................40

Figure 31: Détermination du mAP....................................................................................40

Figure 32: Visualisation des graphes des fonctions de pertes ............................................ 48

Figure 33: Histogramme de l'IoU moyenne ......................................................................49

Figure 34: Résultat des prédictions finales .......................................................................49

Figure 35: Résultat de l’amélioration du réseau ................................................................50

Figure 36: Robot UR10 ....................................................................................................51

Figure 37: Prédiction par le robot en temps réel ............................................................... 51

Figure 38: Nuages de points 3D des pneus prédits ............................................................52

Figure 39: Ajustement de cylindre sur le masque prédit ...................................................52


Liste des tableaux

Tableau 1: Résultats comparatifs de l'influence de la profondeur ...................................... 42

Tableau 2: Résultats comparatifs de l'influence du seuil de segmentation .........................43

Tableau 3: Résultats comparatifs de l'influence de l'optimiseur ........................................ 43

Tableau 4: Résultats comparatifs de l'influence du taux d'apprentissage ...........................44

Tableau 5: Résultats comparatifs de l'influence du Backbone ........................................... 45

Tableau 6: Résultats comparatifs de l'influence de la valeur maximale de la profondeur ...46

Tableau 7: Résultats comparatifs de l'influence de l'augmentation des données ................46


Abréviations
CNN : Convolutional Neural Network

FCIS : Fully Convolutional Instance Segmentation

IA: Intelligence Artificielle

IoU: Intersection Over Union

ISPR: Image, Systèmes de Perception, Robotique

mAP: Mean Average Precision

OpenCv: Open Source Computer Vision Library

PCD: Point Cloud Data

R-CNN: Region Convolutional Neural Network

RGB: Red Green Blue

RGB-D: Red Green Blue, Depth

RNN: Recurrent Neural Network

RoI: Region Of Interest

SGD : Stochastic Gradient Descent


Introduction générale

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.

Aujourd'hui, le système de production industrielle était organisé autour de la machine. Il


peut être intégré plus facilement dans un environnement existant.

L'autonomie d'un robot dans un environnement peut être subdivisée en perception,


planification et exécution. L'idée principale de la convergence de l'Intelligence Artificielle
IA et de la robotique est d'essayer d'optimiser son niveau d'autonomie par le biais de
l'apprentissage. Ce niveau d'intelligence peut être mesuré comme la capacité de prédire
l'avenir, que ce soit pour planifier une tâche ou pour interagir avec le monde.

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

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.

I.1. Présentation de l’Institut Pascal

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.

Les trois domaines d’application développés sont :

- L’usine (incluant les écosystèmes)


- Les transports
- L’hôpital du futur

L'Institut Pascal développe des systèmes innovants et intelligents par une approche
systémique et multi-échelle sur 5 axes de recherche :

GePEB : Génie des Procédés, Energétique et


Biosystèmes.
Institut Pascal

ISPR : Image, Systèmes de Perception, Robotique.

M3G : Mécanique, Génie Mécanique, Génie Civil, Génie


Industriel.

PHOTON : Photonique, Ondes, Nanomatériaux.

TGI : Thérapies Guidées par l’Image.

Figure 1: Les axes de l'Institut Pascal

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.

I.2. Présentation de Michelin

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.

Les activités principales de Michelin sont la conception, la production et


commercialisation des pneus. Dans le but de garantir un meilleur niveau de sécurité et de
hautes performances, malgré les conditions de la route. C’est ça en fait le défi principal que
l’entreprise travaille à l’assurer. Chaque année, environ 200 millions de pneus sont
produits par Michelin.

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

Ci-dessous un schéma explicatif de toutes les étapes :

Déchainer
Trier
Enchainer
Déplacer
Valider

Charger

Figure 2: Etapes de la charge des pneus dans les camions

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

L’automatisation des tâches de la charge et la décharge des pneus, considérées pénibles et


à faible valeur ajoutée, permettra de libérer les opérateurs qui en sont responsables afin
qu’ils puissent concentrer sur leur savoir-faire.

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.

Ce système va être réalisé à l’aide de la progression de l’intelligence artificielle et plus


précisément l’apprentissage profond pour que le robot sera capable de détecter et connaitre
la position de chaque pneu. Ainsi que leur repérage et leur orientation sera réalisé par un
système de vision pilotant les trajectoires du robot de dévracage. Et donc des modules de
préhension intelligents et sensibles sont nécessaires à cet effet. La clé du succès réside dans
la capacité du robot, du capteur et du système à implémenter, à travailler ensemble de
manière synchronisée.

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

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.

II.1. Solutions existantes

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.

II.1.1. Par vision

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

Caméra RGB Intel RealSense Kinect laser-based 3D scanner

Figure 3 : Exemples de capteurs visuels

- Traitement de l’image : Les coordonnées de l'instance à extraire sont calculées à


partir de la représentation de scène capturée. Le temps de calcul et la pertinence des
coordonnées produites sont des facteurs clés pour obtenir de meilleures
performances.

- Action du robot : Un manipulateur robotique (Figure 4) extrait l’objet aux


coordonnées envoyées. L'effecteur terminal du robot qui est le préhenseur peut être
une ventouse à vide ou une pince à mâchoire parallèle, mais il existe d'autres
conceptions dépendantes de l'application.

Préhenseur magnétique Préhenseur pneumatique Préhenseur par aspiration Préhenseur par déformation

Figure 4: Exemples de préhenseurs de robot

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

Figure 5: Conception 3D d’une pièce mécanique

II.2. Segmentation d’instances

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.

Il existe différentes méthodes [6] pour détecter un objet : la classification, la détection


d’instances, la segmentation sémantique et la segmentation d’instances.

Dans ce travail, nous nous intéressons principalement à la tâche de la segmentation


d’instance générique, c’est-à-dire de la segmentation d’instance indépendante de la
catégorie. Plus précisément, la segmentation d'instances diffère des tâches de classification
d'image et de segmentation sémantique en termes d’objectif : Ces deux tâches visent plutôt
à attribuer des catégories d'objet au niveau de l'image et au niveau du pixel,
respectivement, sans notion d'instance. La segmentation d'instance, augmentée de la
catégorisation au niveau des pixels, définit ainsi la tâche appelée segmentation sémantique.
La segmentation d'instances diffère également de la tâche de détection d'instance qui
consiste à localiser grossièrement des instances en générant des cadres de sélections qui
sont des rectangles.

Ces différences s’expliquent bien dans la figure ci-dessous.

9
Chapitre II : Etat de l’art

Classification Localisation Segmentation Segmentation


d’instances Sémantique

Figure 6: Différentes méthodes de détection

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.

II.3. Réseaux de neurones

Dans cette section, nous parlerons de plusieurs concepts reliés aux réseaux de neurones
artificiels importants à la compréhension de ce rapport.

Un réseau de neurones profond est une structure d'apprentissage informatique de nœuds


interconnectés, appelés neurones, destinée à coder un ou plusieurs tenseurs d'entrée.
L’entrée peut être des images, des signaux audios ou aussi des vidéos. Le plus souvent, les
neurones sont disposés en couches, de sorte que l’entrée de neurone d’une couche est
connectée à toutes les sorties de neurones de la couche précédente. Dans une telle
configuration, les couches sont dites totalement connectées « Fully connected FC » (Figure
7). Par exemple, dans le cas des images, chaque pixel serait une entrée de neurone, et le
neurone de la couche supérieure serait alors connecté à chaque pixel.

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.

Figure 8: Principe de réseau de neurones

II.3.1. Les réseaux de segmentation d’instances

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

Plus récemment, Li et al [19] ont combiné le système de proposition de segmentation et le


système de détection d'objet pour « Fully Convolutional Instance Segmentation » (FCIS).
L'idée commune est de prédire conjointement, pour chaque emplacement de l'image, une
classe d'objet, un cadre de sélection et un masque de segmentation, ce qui accélère le
système. Mais FCIS présente des erreurs systématiques sur les instances qui se
chevauchent et crée des bords parasites, ce qui montre qu'il est mis en cause par les
difficultés fondamentales liées à la segmentation d'instances. Au lieu de cela, une méthode
appelée Mask R-CNN est basée sur la prédiction parallèle des masques et des labels de
classe, ce qui est plus simple et plus flexible.

L'inconvénient commun des méthodes de segmentation d'instance existantes, c’est qu'elles


nécessitent un signal de supervision fort, constitué des masques d'annotation des objets
connus utilisés lors de l'entrainement.

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

II.3.2. Les réseaux de neurones convolutionnels (CNN)

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...

Les réseaux de neurones convolutionnels sont composés essentiellement de neurones


artificiels qui constituent des couches d’entrées, de sorties et intermédiaires. Ces couches
permettent le traitement de l’information.

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 ».

Figure 9: Architecture d'un RCNN

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.

II.3.4. Faster RCNN

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.

Figure 10: Architecture du Faster R-CNN

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

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.

III.1. Détection d’objets

III.1.1. Base des données

III.1.1.1. Acquisition des données

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.

Figure 12: Intel RealSense Depth Camera D415

16
Chapitre III : Méthodologie

La D415 [23] de taille 99 mm x 20 mm x 23 mm, utilise la vision stéréoscopique pour


calculer la profondeur. C’est une caméra de profondeur alimentée par USB qui consiste en
une paire de capteurs de profondeur, un capteur RGB et un projecteur infrarouge.

La caméra de profondeur comprend :

- Un puissant processeur de vision permettant de calculer des images de profondeur


en temps réel et accélérer la sortie.
- Nouvel algorithme avancé de profondeur stéréo pour une perception de profondeur
précise et à longue portée.
- Ensemble de capteurs d’images permettant de capturer les disparités entre les
images d’une résolution maximale de 1280 x 720.
- Processeur de signal d'image couleur dédié pour les réglages d'image et la mise à
l'échelle des données de couleur.
- Projecteur infrarouge actif pour éclairer des objets afin d'améliorer les données de
profondeur.
- La caméra de profondeur Intel® RealSense ™ D415 offre une résolution de
profondeur élevée lorsque la taille de l'objet est petite et que des mesures plus
précises sont nécessaires.

Figure 13: Acquisition des images

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

Figure 14: Echantillons de la base des données

Nous avons fait l’acquisition de 268 images en total que nous avons séparé en trois sets
distincts :

- Le set d’entrainement : Utilisé pour générer le modèle.


- Le set de validation : Permet d’observer l’amélioration de la précision du modèle
entre les différentes itérations.
- Le set de test : Permet d’avoir des données pour l’évaluation finale. En effet, il est
important d’avoir des données non utilisées pendant les diverses itérations afin
d’assurer que le modèle peut fonctionner dans des cas non prévus.

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.

III.1.1.2. Préparation des données

Cette partie s’occupe de traiter les données acquises pour les préparer et les adapter au
réseau.

III.1.1.2.1. Annotation des images

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 :

Figure 15: Exemple d'annotation avec VIA

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

Figure 16: Dessin explicatif du résultat de l'annotation

19
Chapitre III : Méthodologie

III.1.1.2.2. Intégration de la profondeur

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.

La valeur maximale de la profondeur est choisie à une valeur égale à 1500.

20
Chapitre III : Méthodologie

Cette conversion peut être schématisée comme suit :

Profondeur

CV2

RGB HSV RGB

Hue Depth Saturation Value

Figure 17: Etapes de conversion réalisées

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] :

- Hue (teinte) : Les couleurs de chaque teinte allant du noir au blanc.


- Saturation : Cette dimension ressemble à différentes nuances de couleurs vives.
- Value : La dimension de valeur ressemble au mélange de ces couleurs avec des
quantités variables de couleur noir ou blanche.

Image en couleur Image de profondeur Image RGB convertie

Figure 18: Résultat de la conversion d'une image

III.1.1.2.3. Augmentation des données

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.

Donc pour améliorer l’entrainement du modèle et éviter le surapprentissage, procéder à


l’augmentation est important pour notre cas.

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.

Les transformations réalisées choisies sont :

Symétries :

(a) FlipLr : Symétrie horizontale (b) FlipUd : Symétrie verticale

Figure 19: Exemple de symétries (a) horizontale et (b) verticale

22
Chapitre III : Méthodologie

Contrast Normalization : Changer le contraste de l’image avec un facteur de 0.5 à 1.5

Figure 20: Exemple de normalisation de contraste

Gaussian Blur : Flouter les images en utilisant des noyaux gaussiens

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.

Figure 21: Exemple de l'effet floue gaussien

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

L’architecture du Mask R-CNN peut être divisée en deux parties :

- RPN : Region Proposal Network [11]


- Network Head : Prédiction des classes et des cadres de sélection en parallèle avec
la prédiction d’un masque de segmentation pour chaque région d’intérêt.

23
Chapitre III : Méthodologie

Figure 22: Architecture du Mask-RCNN

III.1.2.1. RPN

- Extraction des caractéristiques :

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 23: Architecture de l'RPN

L’RPN a un classificateur qui détermine la probabilité qu’une proposition de région ait


l’objet cible et une régression qui régresse les coordonnées de ces propositions. Ce réseau
introduit le concept des ancres qui joue un rôle important dans le réseau. Une ancre est une
boite. A l'aide des régions définies avec jusqu'à 200 000 ancres, le RPN analyse chaque
région et détermine si un objet est présent ou non. C’est l’un des principaux avantages du
RPN, qu'il ne traite pas toute l'image d’entrée, mais il scanne la carte des caractéristiques,
ce qui la rend beaucoup plus rapide.

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.

Chaque position de la carte des caractéristiques a 9 ancres (configuration par défaut du


réseau) (voir Figure 24) et chaque ancre a deux étiquettes possibles (arrière-plan / objet). Si
nous établissons la profondeur de la carte des caractéristiques à 18 (9 ancres x 2 étiquettes),
chaque ancre aura un vecteur avec deux valeurs représentant les deux classes. Si nous
introduisons ce vecteur dans une fonction d'activation de régression, il prédira les
étiquettes. Maintenant, les données d’apprentissage sont complètes avec des
caractéristiques et des étiquettes. Et donc, pour chacune de ces ancres, une valeur de
probabilité est calculée, indiquant dans quelle mesure ces ancres chevauchent avec les
cadres de sélections cibles.

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.

III.1.2.2. Network Head

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

Figure 25: Résumé sur les architectures de la famille des R-CNN

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.

III.1.3. Apprentissage du réseau

III.1.3.1. Environnement du travail

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.

III.1.3.2. Configuration du modèle

• 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

Figure 26: Bloc résiduel de l'architecture du ResNet

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.

Figure 27: Exemples de la base COCO

• 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 :

Il permet de déterminer la vitesse de convergence du processus 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 taux d’apprentissage choisit est égal à LR=0.001

• Nombre d’époques/ Itérations :

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

Les performances de détection de petits objets sont médiocres lorsque le seuil de


chevauchement est très élevé, tandis qu'un seuil très bas entraînera une mauvaise précision
de localisation.

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.

III.1.3.3. Les fonctions de perte

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.

• Choix des fonctions de pertes :

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 :

0.5 − , ⃓ − ⃓ < 1"


, =
(2)
⃓ − ⃓ − 0.5, ! !

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.

Dans l'ensemble de données d'apprentissage, la probabilité qu'un exemple appartienne à


une classe donnée serait de 1 ou 0.

Par conséquent, sous-estimation du maximum de vraisemblance, nous rechercherions un


ensemble de poids de modèle minimisant la différence entre la distribution de probabilité
prédite du modèle en fonction de l’ensemble de données et la distribution des probabilités
dans l’ensemble de données d’apprentissage. Ceci s'appelle Cross Entropy. Cette fonction
peut être modélisée sous la forme suivante :

# $, % = − & $ log % (3)

Avec : p(x) : Probabilité estimée

q(x) : Probabilité prédite

Ou elle peut s’écrire aussi :

, -.
= − 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.

Ces choix ont donné de meilleurs résultats et permettent au modèle de s’entrainer


plus facilement.

• Choix du meilleur modèle :

Lors de l’apprentissage, nous enregistrons le meilleur modèle. D’où la nécessité de choisir


un critère d’arrêt [36] tels que :

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

III.2. Calcul de pose

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.

Cette connaissance est importante pour effectuer le pick-and-place des objets.

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.

III.2.1. Nuages de points

Après avoir obtenir les masques de segmentation, nous devons suivre les étapes suivantes
pour avoir les nuages de points 3D :

• Récupération des coordonnées 2D :

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)

Matrice 1 Matrice 2 Matrice 3

Matrice 4 Matrice 5 Matrice 6

Figure 28: Exemple de prédiction de masques

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.

• Conversion des coordonnées 2D en 3D


• Obtention des nuages de points 3D

34
Chapitre III : Méthodologie

III.2.2. Ajustement des cylindres

En raison de la complexité et du volume important des données de nuage de points (PCD),


l'extraction de formes géométriques significatives a une demande croissante.

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 :

- Les points de données plus éloignés que 1 mètres sont filtrés


- Les normales de surface à chaque point sont estimées
- Un modèle plan est segmenté et enregistré.
- Un modèle cylindrique est segmenté et enregistré.

Figure 29: Exemples d'ajustement des cylindres

Conclusion

Nous avons développé un programme de segmentation et détection d’objets en temps réel


en python. Pour assurer la tâche de la segmentation d’instances pour la détection d’objets,
nous nous sommes appuyés sur le réseau Mask RCNN avec le modèle pré entrainé
ResNet101 implémenté par TensorFlow et qui a été entraîné avec la base MSCOCO. Puis
nous avons joué avec les paramètres et la configuration du modèle afin d’avoir finalement
le meilleur modèle qui nous a donné les meilleurs résultats.

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

Chapitre IV: Tests et évaluation

Introduction

Afin de déterminer la meilleure configuration, nous avons essayé beaucoup de paramètres


jusqu’à l’obtention des meilleurs résultats. Dans ce chapitre, nous allons justifier chaque
choix en s’appuyant sur des visualisations des résultats trouvés ainsi que des mesures
d’évaluation.

IV.1. Critères d’évaluation

Pour affirmer l’utilité et la validité d’un système de segmentation, ses performances


doivent être évaluées avec rigueur. En outre, cette évaluation doit être effectuée à l'aide de
mesures standards et bien connues permettant une comparaison équitable avec les
méthodes existantes.

En fonction de l’objet ou du contexte du système, certaines métriques peuvent être plus


importantes que d’autres.

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.

IV.1.1. Mean Average Precision « mAP »

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.

Cette mesure peut être présentée par la formule suivante :

7
1
345 = & 45*
6 (5)
*89

Avec N : le nombre d’instances

AP : Précision moyenne

Précision et rappel :

- La précision : mesure la sureté des - Le rappel : mesure à quel point nous


prédictions. C’est-à-dire calculer le trouvons tous les points positifs. Par
pourcentage des prédictions exemple, nous pouvons trouver 80%
correctes. des cas positifs possibles dans nos K
principales prévisions.

Objet Objet

Masque Masque
Précision = Recall =

Masque Objet

39
Chapitre IV : Test et évaluation

Nous visualisons la courbe de la précision en fonction du rappel comme suivant :

Figure 30: Courbe de la précision en fonction du recall

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.

Figure 31: Détermination du mAP

IV.1.2. Intersection sur Union « IoU »

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

segmentation. Il calcule un rapport entre l'intersection et l'union de deux ensembles, dans


notre cas, les labels de vérité initialement définis et la prédiction du modèle. Cette IoU est
calculée par classe, puis moyennée.

Objet

Intersection Masque
IoU =
Union Objet

Masque

En raison de la diversité des paramètres de notre modèle (méthode d’extraction des


caractéristiques, échelle, etc.), une correspondance complète et totale entre les masques
prédits et les masques estimés est extrêmement improbable et tout simplement irréaliste.

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.

Un score d'intersection supérieur à l'Union supérieur à 0,5 est généralement considéré


comme une bonne prédiction.

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.

IV.2. Tests des apprentissages

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.

Les résultats obtenus sont comme suit :

RGB RGB-D

mAP 0,453 0,609

IoU 0,683 0,658

Tableau 1: Résultats comparatifs de l'influence de la profondeur

Nous pouvons bien voir l’effet de l’intégration de la profondeur à partir de ces


résultats. Avec des images RGB, le réseau n’a pu détecter que trois pneus et il y’a
deux pneus qui ont été prédit avec un seul masque et donc comme si c’est la même
instance. Alors qu’avec les images converties, le réseau a détecté six pneus. Mais
des erreurs subtiles existent telles que les imprécisions dans la prédiction des
masques ainsi qu’une fausse détection et un pneu non détecté. D’où l’importance
des informations de la profondeur dans l’apprentissage du réseau.
La valeur plus élevée du mAP dans le cas d’image RGB-D confirme ces
observations alors que l’IoU a enregistré une valeur légèrement supérieure pour des
images RGB.

42
Chapitre IV : Test et évaluation

• Effet du seuil de segmentation :

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.

Seuil = 0.7 Seuil = 0.5 Seuil = 0.3

mAP 0,495 0,733 0,729

IoU 0,5971 0,655 0,6549

Tableau 2: Résultats comparatifs de l'influence du seuil de segmentation

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

mAP 0,526 0,733

IoU 0,62 0,641

Tableau 3: Résultats comparatifs de l'influence de l'optimiseur

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

mAP 0,7039 0,709

IoU 0,6319 0,658

Tableau 4: Résultats comparatifs de l'influence du taux d'apprentissage

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

mAP 0.595 0,733

IoU 0.639 0,641

Tableau 5: Résultats comparatifs de l'influence du Backbone

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.

• Effet du maximum de la profondeur :

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

2500 1500 1000

mAP 0,6349 0,719 0,5969

IoU 0,655 0,6624 0,66

Tableau 6: Résultats comparatifs de l'influence de la valeur maximale de la


profondeur

Si nous voulons comparer la visualisation des masques et des cadres de sélection,


nous ne trouvons pas une grande différence entre les trois cas mais le deuxième est
un peu plus précis que les deux autres cas. Cependant, nous enregistrons une valeur
de mAP beaucoup plus importante avec un maximum de profondeur égale à 1500.
D’où notre choix de cette valeur pour la conversion.
• Effet de l’augmentation des données :

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 (…).

Sans augmentation Avec augmentation Avec plus d’augmentation

mAP 0,6349 0,719 0,749

IoU 0,655 0,6624 0,669

Tableau 7: Résultats comparatifs de l'influence de l'augmentation des données

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

(a) Graphe du loss global d’apprentissage et de validation


loss

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

(b) Graphe du loss du masque d’apprentissage et de validation


loss

10 20 30 40 50 60 70 80 90 100 loss 10 20 30 40 50 60 70 80 90 100


epochs epochs

(c ) Graphe du loss des cadres de selection d’apprentissage et de validation

Figure 32: Visualisation des graphes des fonctions de pertes

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

Figure 33: Histogramme de l'IoU moyenne

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.

Figure 34: Résultat des prédictions finales

Le modèle a pu détecter tous les pneus même le pneu horizontal en haut. Il a


délimité chaque pneu avec des cadres de sélection bien précis et des masques de
segmentation qui sont presque semblables aux régions réelles. La seule erreur dans
cette prédiction, c’est dans la précision des masques dans les contours des pneus.

49
Chapitre IV : Test et évaluation

Figure 35: Résultat de l’amélioration du réseau

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.

IV.3. Implémentation sur le robot

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.

IV.3.1. Robot UR10

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

Figure 36: Robot UR10

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.

Nous faisons maintenant appel à notre réseau de détection.

La figure ci-dessous montre le résultat de la prédiction faite par le robot en temps réel.

Figure 37: Prédiction 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 :

Figure 38: Nuages de points 3D des pneus prédits

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.

Figure 39: Ajustement de cylindre sur le masque prédit

Une fois que le cylindre est bien prédit, la position du pneu est envoyée au robot.

Le robot se déplace donc vers la palette pour prendre le pneu et le déplacer.

Le logiciel empêche les collisions : Le module de planification de trajectoire intégrée


prend en compte les pinces, les bacs ou d’autres contours obstructifs. Cela vous assure que
le robot ne se heurtera pas à l'environnement lors du retrait des pneus.

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

Conclusion générale et perspectives


Nous finissons ce rapport avec une récapitulation de toutes ses différentes parties. Tout
d’abord, nous avons présenté le cadre de travail dans lequel le stage de projet de fin
d’études a été effectué. Ce dernier est dans le cadre d’une collaboration entre le laboratoire
de recherche l’Institut Pascal et la manufacture Michelin. Le sujet sur lequel nous
travaillons est à propos de la détection d’objets par apprentissage profond afin de rendre le
dévracage des pneus, robotisé.

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 :

- Etablir un modèle de détection des pneus par apprentissage profond.


- Calculer la position et l’orientation 3D des objets détectés dans la scène.
- Implémenter le code sur le robot
- Ce système doit être pratique et réduit l’effort des opérateurs dépensé dans des
tâches manuelles pénibles ainsi que le temps de travail humain lors du processus du
dévracage.

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.

[2] « Institut Pascal - Accueil ». [En ligne]. Disponible sur:


http://www.institutpascal.uca.fr/index.php/fr/. [Consulté le: 11-août-2019].

[3] « Groupe Michelin | Le leader des pneus et de la mobilité », Michelin Corporate.


[En ligne]. Disponible sur: https://www.michelin.com/. [Consulté le: 11-août-2019].

[4] « Vision par ordinateur », Wikipédia. 13-juill-2019.

[5] S. Yuheng et Y. Hao, « Image Segmentation Algorithms Overview », p. 6.

[6] T.-Y. Lin et al., « Microsoft COCO: Common Objects in Context »,


ArXiv14050312 Cs, mai 2014.

[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].

[8] R. Girshick, J. Donahue, T. Darrell, et J. Malik, « Rich feature hierarchies for


accurate object detection and semantic segmentation », ArXiv13112524 Cs, nov. 2013.

[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.

[10] T. Grel, « Region of interest pooling explained », deepsense.ai, 28-févr-2017. .

[11] T. Karmarkar, « Region Proposal Network (RPN) — Backbone of Faster R-CNN »,


Medium, 23-juill-2019. [En ligne]. Disponible sur: https://medium.com/egen/region-
proposal-network-rpn-backbone-of-faster-r-cnn-4a744a38d7f9. [Consulté le: 11-août-
2019].

[12] K. He, G. Gkioxari, P. Dollár, et R. Girshick, « Mask R-CNN », ArXiv170306870


Cs, mars 2017.

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].

[14] T.-Y. Lin, P. Dollár, R. Girshick, K. He, B. Hariharan, et S. Belongie, « Feature


Pyramid Networks for Object Detection », ArXiv161203144 Cs, déc. 2016.

[15] P. O. Pinheiro, R. Collobert, et P. Dollar, « Learning to Segment Object


Candidates », in Advances in Neural Information Processing Systems 28, C. Cortes, N. D.
Lawrence, D. D. Lee, M. Sugiyama, et R. Garnett, Éd. Curran Associates, Inc., 2015, p.
1990–1998.

[16] J. Dai, K. He, et J. Sun, « Instance-aware Semantic Segmentation via Multi-task


Network Cascades », ArXiv151204412 Cs, déc. 2015.

[17] M. Ren et R. S. Zemel, « End-to-End Instance Segmentation with Recurrent


Attention », ArXiv160509410 Cs, mai 2016.

[18] B. Romera-Paredes et P. H. S. Torr, « Recurrent Instance Segmentation »,


ArXiv151108250 Cs, nov. 2015.

[19] Y. Li, H. Qi, J. Dai, X. Ji, et Y. Wei, « Fully Convolutional Instance-aware


Semantic Segmentation », ArXiv161107709 Cs, nov. 2016.

[20] « Kinect », Wikipédia. 13-juill-2019.

[21] « Caméra Intel® RealSenseTM R200 Caractéristiques techniques ». [En ligne].


Disponible sur: https://ark.intel.com/content/www/fr/fr/ark/products/92256/intel-realsense-
camera-r200.html. [Consulté le: 11-août-2019].

[22] « ZED Stereo Camera - Stereolabs ». [En ligne]. Disponible sur:


https://www.stereolabs.com/zed/. [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

[25] C. Couprie, C. Farabet, L. Najman, et Y. LeCun, « Indoor Semantic Segmentation


using depth information », ArXiv13013572 Cs, janv. 2013.

[26] « Changing Colorspaces — OpenCV 3.0.0-dev documentation ». [En ligne].


Disponible sur: https://docs.opencv.org/3.0-
beta/doc/py_tutorials/py_imgproc/py_colorspaces/py_colorspaces.html. [Consulté le: 11-
août-2019].

[27] « OpenCV », Wikipédia. 28-sept-2018.

[28] « HSL and HSV - Wikipedia ». [En ligne]. Disponible sur:


https://en.wikipedia.org/wiki/HSL_and_HSV. [Consulté le: 11-août-2019].

[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].

[30] P. Jay, « Understanding and Implementing Architectures of ResNet and ResNeXt


for state-of-the-art Image Classification: From Microsoft to Facebook [Part 1] », Medium,
08-avr-2018. [En ligne]. Disponible sur: https://medium.com/@14prakash/understanding-
and-implementing-architectures-of-resnet-and-resnext-for-state-of-the-art-image-
cf51669e1624. [Consulté le: 11-août-2019].

[31] « GitHub - matterport/Mask_RCNN: Mask R-CNN for object detection and


instance segmentation on Keras and TensorFlow ». [En ligne]. Disponible sur:
https://github.com/matterport/Mask_RCNN. [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.

[33] « COCO - Common Objects in Context ». [En ligne]. Disponible sur:


http://cocodataset.org/#home. [Consulté le: 11-août-2019].

[34] « An overview of gradient descent optimization algorithms ». [En ligne].


Disponible sur: http://ruder.io/optimizing-gradient-descent/. [Consulté le: 11-août-2019].

[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

[36] « Callbacks - Keras Documentation ». [En ligne]. Disponible sur:


https://keras.io/callbacks/. [Consulté le: 11-août-2019].

[37] J. Brownlee, « Use Early Stopping to Halt the Training of Neural Networks At the
Right Time », Machine Learning Mastery, 09-déc-2018. .

[38] A. Nurunnabi, Y. Sadahiro, et R. Lindenbergh, « ROBUST CYLINDER FITTING


IN THREE-DIMENSIONAL POINT CLOUD DATA », ISPRS - Int. Arch. Photogramm.
Remote Sens. Spat. Inf. Sci., vol. XLII-1/W1, p. 63‑70, mai 2017.

[39] « Documentation - Point Cloud Library (PCL) ». [En ligne]. Disponible sur:
http://pointclouds.org/documentation/tutorials/cylinder_segmentation.php. [Consulté le:
11-août-2019].

[40] « Evaluating image segmentation models. » [En ligne]. Disponible sur:


https://www.jeremyjordan.me/evaluating-image-segmentation-models/. [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].

[42] H. Lamba, « Understanding Semantic Segmentation with UNET », Medium, 17-


févr-2019. [En ligne]. Disponible sur: https://towardsdatascience.com/understanding-
semantic-segmentation-with-unet-6be4f42d4b47. [Consulté le: 11-août-2019].

59

Vous aimerez peut-être aussi