PSA Vision

Projet PSA

 

 

JENNY Lou – DRAZEVICANIN Aleksandar – VOS Quentin

 

Sommaire

I)Introduction
Présentation du sujet
Matériel à disposition
Présentation du groupe

II)Objectifs du projet
Résultats attendus par PSA

III)Partie programmation
Familiarisation avec Linux et le Raspberry Pi
Utilisation de la librairie Opencv2
Le traitement d’image avec le langage Python

IV)Problèmes rencontrés
Limite du système
Étiquette entourée d’un cadre

V)Résultats

VI)Améliorations possibles
Utilisation d’une Intelligence Artificielle
Qualité de la caméra
Meilleur système

VII)Conclusion et remerciements

 

 

 

 

 

 

 

 

I)Introduction

1.Présentation du sujet

Dans le cadre de notre 2ème année de DUT GEII, nous avons dû réaliser un projet en groupe que nous avions choisis. Il y a eu plusieurs projets présentés par Mr. BAZEILLE Stéphane, ainsi que Mr. REBERT Martin, qui étaient donc nos tuteurs pour le projet.
Le projet que nous avons choisi est celui appelé « Projet PSA ».
Nous avions à notre disposition 100 heures de projet dans l’emploi du temps, mais aussi le temps libre en dehors des heures de projet pour le réaliser.

Notre projet consistait donc à faire du traitement d’image sur une étiquette pour en extraire les caractères et les différentes informations demandées par PSA.

              Zones qui nous intéressent encadrées en vert

 

Voici une étiquette type de chez PSA qui est sur toutes les palettes disponibles dans leur entrepôt.

Nous avons donc pris conscience de ce que PSA nous demandait de faire, et le début du projet fut très flou pour nous, c’est pourquoi nous avons organisés une visite de leur entrepôt pour mieux comprendre le problème, ainsi que la situation dans laquelle il était.

C’est par le biais de cette visite, que nous avons pu comprendre clairement ce qui était demandé, et donc ce qui était désiré était donc d’extraire et d’afficher la date et l’heure de cette étiquette, pour permettre au cariste qui range les palettes de ne pas se tromper, et d’en sauvegarder la référence dans un dossier texte pour pouvoir retrouver justement la personne qui a fait une erreur sur le placement d’une palette, si une erreur se présente.

Le traitement d’image était donc le sujet de notre projet, nous devions bien comprendre comment résoudre ce problème et surtout comment le faire avec un Raspberry Pi et le langage Python, qui n’a jamais été utilisé par notre groupe auparavant. C’est aussi grâce à la librairie d’Opencv2 que nous avions pu faire notre projet.

 

2. Matériel à disposition

Pour notre projet, nous avons eu à notre disposition un Raspberry Pi, un écran tactile de Raspberry Pi, et une caméra apportée par un membre du groupe.

Caméra Logitech C270
Raspberry Pi

 

 

 

 

 

 

 

 

La caméra nous a permise d’avoir des photos de notre étiquette et de faire des tests pour notre programme de traitement d’image.

 

3. Présentation du groupe

Le groupe est composé de 3 étudiants JENNY Lou, DRAZEVICANIN Aleksandar et VOS Quentin.
JENNY Lou s’est occupé principalement de la partie programmation sur le Raspberry Pi, DRAZEVICANIN Aleksandar et VOS Quentin se sont occupés des différentes recherches pour aider sur la programmation, ainsi que des différentes recherches au sujet des librairies.

 

II)Objectifs du projet

 

1.Résultats attendus par PSA

Durant notre visite à l’entrepôt de PSA, nous avons eu certaines contraintes qui ont été présentées par les personnes sur place qui suivaient notre projet :

  • La distance entre le cariste et les palettes est d’environ 1,5 mètres
  • Afficher la zone de destination du colis (la date et l’heure présente sur l’étiquette donc)
  • Sauvegarder la référence de chaque étiquette de chaque palette pour pouvoir détecter quel cariste à fait une erreur, s’il y a une erreur

Après avoir eu ces contraintes, nous avons donc tout de suite eu les besoins suivants qui s’ajoutaient :

  • Un boîtier solide requis à cause de l’environnement de travail
  • Une batterie performante pour alimenter le Raspberry Pi
  • Une application qui va donc permettre d’avoir le programme dessus
  • Un écran tactile pour exécuter le code

C’est après cette visite que notre travail a fini par se complexifier.

 

III) Partie programmation

1. Familiarisation avec Linux et le Raspberry Pi

Notre projet fut une grande découverte au niveau du matériel à utiliser ainsi que le domaine de développement adéquat.
Nous avons dû apprendre le langage Python, qui nous a été présenté par Mr. REBERT Martin, et qui nous a aidé en cas de problème ou de questions sur le langage. Nous avons donc dû nous familiariser avec ce langage et malgré les difficultés rencontrées, c’était une expérience et un apprentissage très enrichissant pour notre groupe.

2. Utilisation de la librairie Opencv2

La librairie d’Opencv2 était celle que nous devions utiliser et qui nous offrait la possibilité de faire du traitement d’image en temps réel, et c’est grâce à ceci que notre projet a pu être mené à bien.

3. Le traitement d’image avec le langage Python

Le traitement d’image est le cœur du projet. Une fois la photo de l’étiquette prise, nous avons dû procéder par étape pour obtenir des résultats fiables.

On utilisera alors plusieurs fonctions et méthodes soit la transformée de Hough, des Homography et un traitement d’image par Pytesseract pour extraire les caractères.

 

IV) Problèmes rencontrés

1. Limite du système

Le Raspberry Pi devenait de plus en plus lent au niveau de l’exécution du code car il devenait dense à force que nous développions notre programme, et c’est pour ceci qu’un système plus rapide commençait à s’imposer car si nous voulions implémenter le système sur le terrain à l’entrepôt de PSA, il fallait avoir un système très rapide, facile d’utilisation et surtout fiable, car les caristes travaillent très rapidement, c’est pourquoi, si le système ne suivait pas la cadence, PSA ne pourrait pas le mettre en place et l’utiliser.

2. Etiquette entourée d’un cadre

Pour notre projet nous avons eu un problème pendant l’extraction des caractères de notre étiquette, en effet nous avons eu l’idée de la part de nos tuteurs, de rajouter un cadre de couleur pour pouvoir repérer l’étiquette plus facilement et pouvoir zoomer dessus et en extraire les caractères qui nous intéressent.

 

 

C’est donc cette étiquette que nous avions dû utiliser pour nos tests et surtout pour la suite de tout notre projet, c’est ce qui a pu nous débloquer car nous étions bloqués sur le traitement de notre étiquette.

Le seul problème de cette étiquette était :

  • Comment présenter ceci à PSA ?

Effectivement, comme ce n’est pas PSA qui créait ces étiquettes, il fallait que ce soit les entreprises qui faisaient les différents matériaux pour PSA qui devaient changer toute leurs étiquettes, ce qui serait impossible à réaliser.

V) Résultats

Pour ce qui est des résultats obtenus, nous avons décidés de faire plusieurs tests dans de différentes situations, qui peuvent arriver à l’entrepôt de PSA, ce sont bien sûr des situations que nous avons pu voir durant notre visite.

Voici une photo prise par notre caméra de notre étiquette, nous pouvons voir que celle-ci est de travers.
Grâce à une transformée de Hough ainsi que de la méthode de l’Homography, nous arrivons à découper notre image comme ceci :

 

 

On peut donc voir que notre programme remet l’étiquette droite et réussi à zoomer dessus, ce qui permet de la voir plus nettement et surtout de plus près, ce qui rend le tout plus facile à lire et surtout traiter.

 

Après avoir découper l’image comme ceci, nous avons appliqués un deuxième traitement sur l’image découpée, pour pouvoir enlever le cadre jaune grâce au traitement, ce qui va donner ceci :

 

Et après avoir eu cette image-là, nous avons pu faire notre extraction de caractère sur les deux zones que nous avons besoin, et le programme nous retourne bien le bon résultat :

On peut donc voir que nous obtenons bien la bonne référence ainsi que la bonne date, qui s’affiche bien comme il faut.

Cette extraction est faite grâce à Pytesseract qui permet d’extraire des caractères d’une image.

 

Après avoir eu nos résultats, nous avons essayés de nous mettre dans les conditions que nous avions pu voir à l’entrepôt, car la distance entre le cariste et les palettes est de minimum 1.5m, donc il nous faut une très bonne caméra qui puisse repérer l’étiquette sans problème à cette distance.
Les tests que nous avons faits nous donnent ces résultats :

 

 

 

Distance Référence Date et heure Date et heure d’enregistrement
30cm 106778 181210 08:30 2019/02/06  17:30
50cm 106778 181210 08:30 2019/02/06  17:32
70cm 106778 181210 08:30 2019/02/12  14:08
80cm 106778 181210 08:30 2019/02/12 14:10
90cm 106778 181210 08:30 2019/02/12 14:33
100cm 106778 [E1210 08:30 2019/02/06 17:34
110cm 106778 [EE210 08:30 2019/02/06  17:34
120cm ‘ « i’ 06778 [EE210 08:30 2019/02/06  17:35
130cm 106778 [EE20830 2019/02/06  17:36
140cm (J__G1_18 [« ‘ »ILFJE »‘ 2019/02/06  17:26
150cm IUDII6.ll EE208″JI »0 2019/02/06  17:30
160cm 2019/02/06  17:21
170cm 2019/02/06  17:26
180cm 2019/02/06  14:12

 

 

On se rend vite compte que plus la distance augmente, plus c’est difficile voir impossible d’extraire les caractères exacts de ce qui nous intéresse, voir les caractères extraits sont très, ou totalement, hasardeux.

Ceci est dû à cause de notre caméra qui n’est pas non plus une caméra de bonne qualité, c’est une webcam, et avec une meilleure caméra il est possible de pouvoir extraire exactement les bons caractères à ces distances.

On peut se rendre compte que notre programme fonctionne bien sur une distance modérée, et que l’on arrive à extraire ce qui nous était demandé, mais bien évidemment avec le cadre jaune autour de l’étiquette.

 

VI) Améliorations possibles

1.Utilisation d’une Intelligence Artificielle

Il serait possible d’utiliser une Intelligence Artificielle pour l’adapter à la situation et lui faire de l’apprentissage sur l’étiquette, pour lui permettre de découper l’étiquette, d’en extraire les caractères sans aucun problème, et ceci dans n’importe quelle situation, et surtout sans le cadre jaune que nous avons.

Nous pensons que c’est une solution qui permettrait de résoudre le problème que PSA rencontre dans son entrepôt, mais surtout par faute de moyens, et de connaissances de l’environnement, nous ne sommes pas capables de mettre en place ceci.

2.Qualité de la caméra

La qualité de la caméra était un problème que nous avions car nous disposions seulement d’une webcam bas de gamme, qui n’est pas appropriée pour ce genre de projets et pour la vision dans ce domaine.
Une solution que nous pensons être bonne serait d’intégrer un système de vision utilisable par les caristes avec une caméra dotée d’Intelligence Artificielle en elle.

3.Meilleur système

Un meilleur système est nécessaire pour pouvoir avoir une vitesse d’exécution de notre programme, une meilleure autonomie et une meilleure qualité en général.

VII) Conclusion et remerciements

Nous voulons particulièrement remercier Mr. BAZEILLE Stéphane et Mr. REBERT Martin de nous avoir guidés durant tout le projet et surtout de nous avoir permis de faire ce projet.

C’était une expérience très enrichissante pour nous car ceci nous a permis de nous faire découvrir de nouvelles choses, comme le langage Python, l’environnement Linux ainsi qu’Opencv2 qui permet de faire du traitement d’image. Ce projet nous a appris à collaborer en groupe pour s’entraider et atteindre l’objectif qui nous était demandé, dans un domaine que nous ne connaissions pas forcément.