Projet : Détection par ordinateur des dimensions et du volume d'une palette

Définition du projet :
L'une des problématiques bien connues des transporteurs est le rapport poids/volume des
expéditions de leurs clients.
Trop souvent mise à l'écart car jugée trop complexe à mettre en œuvre, tant techniquement que commercialement,
elle est pourtant cruciale pour permettre une facturation juste des prestations de transport.
Personnellement, j'ai constaté que sa prise en compte permettait d'augmenter de 10 à 15 % en moyenne
le chiffre d'affaires des clients.
Alors, comment font les transporteurs ?
Par exemple, chez Transports BONNARD, le processus était simple mais chronophage :
- Édition d’un listing pour les agents de quai
- Contrôle physique des palettes
- Prise de notes manuscrite des dimensions
- Calcul du RPV par le service facturation
Perte de temps, manque d’efficacité et risque d’erreurs : les inconvénients sont nombreux, mais ils ne doivent pas occulter l’importance du RPV (rapport poids/volume).
La solution ?
Entraîner un modèle de vision par ordinateur à estimer le cubage d'une palette.
De quoi avons-nous besoin ?
- De données (vidéos, photos)
- D’un modèle de vision par ordinateur
- D’un Data Scientist... votre serviteur en l'occurrence
L’un des intérêts de l’apprentissage du développement et du code est la capacité à segmenter
les tâches.
Ici, la première étape est de comprendre la vision par ordinateur. Le but n’étant pas de faire
un cours magistral, je vous partage quelques sources pour approfondir.
Concernant les données :
Des bases de données publiques et des data sets libres de droit sont disponibles en ligne.
Pour valider et appliquer à un cas concret, j'utilise des images collectées en 2017.
Ces dernières n'ont pas été utilisées pour l'entraînement.
Il faut ensuite annoter ces données, c’est-à-dire construire un jeu de données qui représente les résultats attendus par le modèle.
Ici, j’ai choisi d’utiliser un modèle dit de "pose", c’est-à-dire qu’il détecte des points
précis dans une image et dans un contexte donné.
C’est une étape longue et laborieuse qui demande une grande rigueur dans l’annotation
des objets.
Concernant le modèle :
Mon choix s’est porté sur un modèle de vision open source bien connu : YOLO (You Only Look
Once).
C’est un modèle simple, robuste, qui a déjà fait ses preuves, notamment avec sa version 8.
Ici, j’utilise la dernière version, la version 11, et plus précisément sa déclinaison "pose".
La détection de pose permet d’identifier les 8 angles d’une palette, ce qui permet ensuite de calculer
son volume.
Deux méthodes peuvent être utilisées pour convertir les pixels en dimensions réelles :
- Définir une zone dans l’image dont on connaît le rapport entre pixels et centimètres dans les trois dimensions
- Détecter d’autres points proches de la palette dont les dimensions sont connues
Les premiers résultats :
Une fois toutes les étapes accomplies, et après normalisation des données, on peut enfin entraîner le modèle.
Pour l’instant, j’entraîne le modèle sur 62 images (ce qui constitue un très petit jeu de
données) :
50 pour l'entraînement, 12 pour le test du modèle.
Après entraînement, voici les premiers résultats obtenus :


En multipliant les cycles d’entraînement (ici 6), on observe une nette amélioration.
On pourra continuer à optimiser le modèle en augmentant le nombre de cycles, mais surtout en élargissant
le jeu de données.