Archives dans juin 2022

Outils d’annotation des images

Avant de procéder à l’entrainement d’un modèle basé sur les réseaux de neurones (cas de détection, classification et segmentation), il est important d’annoter les objets afin de permettre au modèle de reconnaître les objets plus tard et faire la prédiction. Pour faciliter le travail d’annotation, plusieurs outils existent déjà en version gratuite et payante. Je vous présente ici une liste non exhaustive dans le cas de l’annotation des images.

 

  • labelImg : LabelImg est un outil d’annotation d’image graphique et des boîtes de délimitation d’objets d’étiquette dans les images
  • Roboflow . En plus de l’annotation, la plate-forme facilite la conversion entre les formats d’annotation et la gestion des ensembles de données, ainsi que la formation et le déploiement de modèles personnalisés sur des points de terminaison d’API privés
  • CVAT – Outil d’annotation de vision par ordinateur puissant et efficace
  • labelme – Annotation polygonale d’image avec Python
  • VoTT – Un outil d’annotation et d’étiquetage open source pour les images et les vidéos
  • imglab – Un outil basé sur le Web pour étiqueter les images des objets qui peuvent être utilisés pour former dlib ou d’autres détecteurs d’objets
  • Yolo_mark – GUI pour marquer des boîtes délimitées d’objets dans des images pour former le réseau de neurones Yolo v3 et v2
  • PixelAnnotationTool – Logiciel qui vous permet d’annoter manuellement et rapidement des images dans des répertoires
  • OpenLabeling – Étiquetez des images et des vidéos pour les applications de vision par ordinateur
  • imagetagger – Une plateforme en ligne open source pour l’étiquetage collaboratif d’images
  • Alturos.ImageAnnotation – Un outil collaboratif pour étiqueter les données d’image
  • deeplabel – Un outil d’annotation d’images multiplateforme pour l’apprentissage automatique
  • MedTagger – Un cadre collaboratif pour annoter des ensembles de données médicales à l’aide du crowdsourcing.

Pour avoir plus de détails et d’autres outils d’annotation pour (les videos, le texte, l’audio et autres ..etc…) aller sur https://github.com/heartexlabs/awesome-data-labeling

Augmentation des données ou data augmentation

 

Qu’est-ce que l’augmentation d’image?

Afin d’augmenter la performance des algorithmes basés sur les réseaux de neurones, on applique souvent les méthodes d’augmentation des données. Selon Wikipédia (https://en.wikipedia.org/wiki/Data_augmentation), l’augmentation des données dans l’analyse des données sont des techniques utilisées pour augmenter la quantité de données en ajoutant des copies légèrement modifiées de données déjà existantes ou de données synthétiques nouvellement créées à partir de données existantes. Pour ce qui concerne la détection d’objets, l’augmentation de données permet d’optimiser la performance et la robustesse des détections.

Les algorithmes basés sur les réseaux de neurones profonds nécessitent beaucoup de données d’entraînement pour obtenir de bons résultats et éviter le surajustement. Cependant, il est souvent très difficile d’obtenir suffisamment d’échantillons d’apprentissage.

L’augmentation d’image  peut être défini comme un processus de création de nouveaux exemples de formation à partir d’exemples existants.

Parmi les méthodes d’augmentation de données pour la détection des objets, il y a deux types  de transformation (Transformations au niveau du pixel et Transformations au niveau spatial)

  1. Transformations au niveau du pixel

Les transformations au niveau du pixel ne changeront qu’une image d’entrée et laisseront inchangées toutes les cibles supplémentaires telles que les masques, les cadres de délimitation et les points clés. Voici quelques transformations au niveau du pixel :

Pour avoir plus de détail voir (https://github.com/albumentations-team/albumentations)

On peut également modifier la luminosité de l’image. L’augmentation de la luminosité de l’image implique l’augmentation ou la diminution aléatoire d’une image, comme l’application d’un changement de pourcentage +/- uniforme à tous les pixels d’une image. On peut appliquer le changement de teinte en changeant l’espace colorimétrique( la couleur de l’image). L’augmentation de la teinte de l’image modifie de manière aléatoire les couleurs d’une image, rendant ainsi un modèle plus résistant aux couleurs spécifiques des objets.

  2.Transformations au niveau spatial

Les transformations au niveau spatial modifieront simultanément une image d’entrée ainsi que des cibles supplémentaires telles que des masques, des cadres de délimitation et des points clés. Voici quelques transformations au niveau spatial

La liste complète des transformations à appliquer sur les images pour augmenter les données  est accessible via leur documentation en ligne via ()le lien suivant.

 

Algorithmes de détection d’objets

Quels sont les algorithmes de détection d’objets par les réseaux de neurones?

En général, les détecteurs d’objets basés sur l’apprentissage en profondeur extraient des caractéristiques de l’image ou de l’image vidéo d’entrée. Un détecteur d’objets résout deux tâches successives :

  • Tâche n° 1 : trouver un nombre arbitraire d’objets (peut-être même zéro), et
  • Tâche n° 2 : classer chaque objet et estimer sa taille à l’aide d’un cadre de sélection.

En fonction de l’étude menée ou du résultat attendu, on peut utiliser des algorithmes qui combinent les deux tâches ( algorithmes à une étage) ou utiliser des algorithmes qui font séparément les tâches ( algorithmes à deux étages). Voyons plus en détails les deux types d’algorithmes, leurs avantages et inconvénients.  

  1. Méthodes  ou algorithmes à une étage: les détecteurs à une étape prédisent simultanément la probabilité de la classe de sortie et la position exacte de l’objet à détecter. Ils combinent les deux tâches en une seule ce qui fait que le processus prend moins de temps  ce qui fait que ces algorithmes sont les plus utilisés dans la détection en temps réel. Ces  détecteurs d’objets à un étage donnent la priorité à la vitesse d’inférence et sont super rapides mais pas moins bons (moins précis) pour reconnaître des objets de forme irrégulière ou un groupe de petits objets. Parmi les détecteurs à un étage les plus populaires on a:  YOLO,  SSD ,  RetinaNet, HOG etc….
  2. Méthodes ou algorithmes à deux étages: les détecteurs d’objets à deux étages utilisent d’abord le réseau de suggestion régional ( RPN) pour générer des boîtes à suggestions régionales approximatives puis utilisent  une tête de détection dédiée pour classer les objets dans l’image. En d’autre terme,  une proposition de région d’objet avec des méthodes conventionnelles de vision par ordinateur ou des réseaux profonds, suivie d’ une classification d’objet basée sur des caractéristiques extraites de la région proposée avec une régression de boîte englobante. Les méthodes en deux étapes ou étages permettent d’obtenir la précision de détection la plus élevée, mais sont généralement plus lentes. Les détecteurs d’objets à deux étages trouvent d’abord une région d’intérêt et utilisent cette région recadrée pour la classification. Parmi les détecteurs à deux étages ou étapes les plus populaires on a: R-CNN, Fast R-CNN, Faster R-CNN, Mask R-CNN etc…

Détection des objets

Détection des objets

Qu’est-ce que la détection d’objets ?

En vision par ordinateur ou computer vision,  la détection d’objets  est désignée par une méthode permettant de détecter la présence d’une instance ou d’une classe d’objets dans une image numérique[1] https://fr.wikipedia.org/wiki/D%C3%A9tection_d’objet.

Selon la terminologie usuelle on peut distinguer la détection, de la localisation et de la reconnaissance d’objets :

  • détection (ou classification) : présence d’une instance de l’objet dans l’image
  • reconnaissance : identification d’une instance particulière (« déchets  », « le visage d’une personne »…)
  • localisation (ou parfois détection) : situation précise de l’instance (détectée ou reconnue) dans l’image (cadre englobant ou segmentation de la zone).

Il est important de noter que pour des entités visuelles localisées (objet, visage, personne…), la détection et la localisation se confondent souvent.

La détection d’une classe d’objets est généralement considérée comme un problème plus difficile que la reconnaissance d’une instance particulière, puisqu’il faut identifier les caractéristiques communes à la classe en faisant abstraction de la variété des différentes instances au sein de ladite classe.

Approche générale

La détection d’un objet dans une image se décompose souvent en trois étapes qui sont:

Les méthodes utilisées pour faire la détection d’objets sont subdivisées en deux grandes familles (les méthodes de seuillages d’images(1) ou les méthodes utilisant l’intelligence artificielle (2) le machine learning ou le deep learning), chacune a ses avantages et inconvénients que nous allons décrire plus bas. 

1- Technique ou méthode de seuillage d’images: ne nécessitent généralement pas de données historiques(données pour faire un entrainement) pour la formation et ne sont pas supervisées par nature. La méthode de seuillage choisie est appliquée directement sur l’image ce qui permet d’avoir une segmentation binaire( segmentation en deux classes) avec une des deux classes représentant l’objet à identifier ou à détecter.

  • Avantages: ces tâches ne nécessitent pas d’ images annotées , où les humains étiquettent les données manuellement (pour une formation supervisée).
  • Inconvénients : ces techniques sont limitées à plusieurs facteurs, tels que les scénarios complexes (sans arrière-plan unicolore), l’occlusion (objets partiellement masqués), l’éclairage et les ombres, et l’effet de fouillis. Ces techniques ne peuvent pas être appliquées sur des images avec plusieurs variations d’éclairage ou d’arrière-plan.

2-Les méthodes d’intelligence artificielle ( machine learning ou le deep learning): reposent généralement sur une formation supervisée . Les performances sont limitées par la puissance de calcul  des GPU en fonction de la machine utilisée et des données(images).

  • Avantages : La détection d’objets d’apprentissage en profondeur ou par les techniques de l’intelligence artificielle est beaucoup plus robuste à l’occlusion, aux scènes complexes et à l’éclairage difficile.
  • Inconvénients : une énorme quantité de données (dans notre  cas images) d’entraînement est nécessaire pour avoir une bonne performance. Pour ce qui de vitesse de du modèle entraîné, il faut une machine avec un bon processeur (GPU) et une mémoire Ram avec une capacité assez élevée et  le processus d’ annotation d’images est laborieux et coûteux. Toutefois, il faut noter qu’il existe déjà des ensemble de données( datasets existants) permettant de faciliter la tâche si l’objet ou les objets à détecter est déjà présent dans une des classes des datasets existants.