Logo Zéphyrnet

Détection d'objets basée sur un petit ensemble de données

Date :

détection d'objets sur les journaux
Illustration: © IoT For All

Le démarrage d'un projet d'apprentissage automatique commence souvent par la question : « Combien de données suffisent ? » La réponse dépend d'un certain nombre de facteurs tels que la diversité des données de production, la disponibilité d'ensembles de données open source et les performances attendues du système ; la liste peut s'allonger pendant un bon moment. Dans cet article, nous aimerions démystifier un mythe populaire selon lequel les machines n'apprennent qu'à partir de grandes quantités de données et partager un cas d'utilisation d'application de ML avec un petit ensemble de données. 

Avec l'adoption rapide de l'apprentissage en profondeur en vision par ordinateur, il existe un nombre croissant de tâches diverses qui doivent être résolues à l'aide de machines. Pour comprendre ces petites applications de machine learning dans le monde réel, concentrons-nous sur la tâche de détection d'objets.

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

La détection d'objets est une branche de la vision par ordinateur qui traite de l'identification et de la localisation d'objets dans une photo ou une vidéo. L'objectif de la détection d'objets est de trouver des objets présentant certaines caractéristiques dans une image ou une vidéo numérique à l'aide de l'apprentissage automatique. Souvent, la détection d'objets est une étape préliminaire à la reconnaissance d'objets : nous devons d'abord identifier des objets, puis seulement pouvons-nous appliquer des modèles de reconnaissance pour identifier certains éléments. 

Cas d'utilisation commerciale de la détection d'objets 

La détection d'objets est une tâche essentielle des solutions basées sur l'IA pour des tâches telles que l'inspection visuelle, l'automatisation des entrepôts, la gestion des stocks, la sécurité, etc. Vous trouverez ci-dessous quelques cas d'utilisation de détection d'objets mis en œuvre avec succès dans tous les secteurs.

Fabrication

De l'assurance qualité et de la gestion des stocks au tri et à l'assemblage, la détection d'objets joue un rôle important dans l'automatisation de nombreux processus de fabrication. Les algorithmes d'apprentissage automatique permettent au système de détecter rapidement tout défaut ou de compter et localiser automatiquement les objets. Ces algorithmes leur permettent d'améliorer la précision des stocks en minimisant les erreurs humaines et le temps passé à vérifier et à trier ces objets.

Services automobiles

L'apprentissage automatique est utilisé dans voitures auto-conduite, la détection des piétons et l'optimisation de la fluidité du trafic dans les villes. La détection d'objets est utilisée pour percevoir les véhicules et les obstacles à proximité immédiate du conducteur. Dans les transports, la reconnaissance d'objets est utilisée pour détecter et compter les véhicules. Il est également utilisé pour l'analyse du trafic et permet de détecter les voitures qui se sont arrêtées sur les autoroutes ou les carrefours.

Au detail

La détection d'objets permet de détecter les SKU (Stock Keeping Units) en analysant et en comparant les images des étagères avec l'état idéal. Les techniques de vision par ordinateur intégrées au matériel aident à réduire le temps d'attente dans les magasins de détail, à suivre la manière dont les clients interagissent avec les produits et à automatiser la livraison. 

Système de santé

La détection d'objets est utilisée pour étudier des images médicales telles que les tomodensitogrammes, les IRM et les rayons X. Il est également utilisé dans le dépistage du cancer afin d'aider à identifier les patients à haut risque, à détecter des anomalies et même à fournir une assistance chirurgicale. L'application de la détection et de la reconnaissance d'objets pour faciliter les examens médicaux de télésanté est une nouvelle tendance qui va changer la façon dont les soins de santé sont fournis aux patients. 

Sécurité et surveillance

Parmi les applications de la détection d'objets figurent les systèmes de vidéosurveillance capables de détecter des personnes et de reconnaître les visages. Utilisant des algorithmes d'apprentissage automatique, de tels systèmes sont conçus pour l'authentification biométrique et la surveillance à distance. Cette technologie a même été utilisée pour la prévention du suicide.

Logistique et automatisation des entrepôts

Les modèles de détection d'objets sont capables d'inspecter visuellement les produits pour la détection des défauts, ainsi que la gestion des stocks, le contrôle de la qualité et l'automatisation de la gestion de la chaîne d'approvisionnement. Les solutions logistiques basées sur l'IA utilisent des modèles de détection d'objets au lieu de la détection de codes-barres, remplaçant ainsi la numérisation manuelle.  

Comment développer un système de détection d'objets : l'approche PoC

Développer un système de détection d'objets à utiliser pour des tâches telles que celles mentionnées ci-dessus n'est pas différent de tout autre projet de ML. Cela commence généralement par la construction d'une hypothèse à vérifier au cours de plusieurs cycles d'expérimentation.

Une telle hypothèse fait partie de l'approche Proof of Concept (PoC) en développement logiciel. Il s'aligne sur l'apprentissage automatique, car dans ce cas, la livraison n'est pas un produit final. Mener des recherches nous permet d'obtenir des résultats qui nous permettront de déterminer que soit l'approche choisie pourrait être utilisée, soit qu'il est nécessaire de mener des expériences supplémentaires pour choisir une direction différente.

Si la question est « combien de données sont suffisantes pour l'apprentissage automatique », l'hypothèse peut être une déclaration initiale telle que « 150 échantillons de données suffisent pour que le modèle atteigne un niveau de performance optimal ».

Des praticiens du ML expérimentés tels que Andrew Ng (co-fondateur de Google Brain et ancien scientifique en chef de Baidu) recommander construire rapidement la première itération du système avec la fonctionnalité d'apprentissage automatique, puis la déployer et itérer à partir de là.

Cette approche nous permet de créer un système prototype fonctionnel et évolutif qui peut être mis à niveau avec les données et les commentaires de l'équipe de production. Cette solution est bien plus efficace par rapport à la perspective d'essayer de construire le système final dès le départ. Un prototype de cette nature ne nécessite pas nécessairement de grandes quantités de données. 

Pour répondre à la question « combien de données suffisent », il est indéniable qu'aucun expert en apprentissage automatique ne peut prédire exactement la quantité de données nécessaire. La seule façon de le savoir est d'établir une hypothèse et de la tester dans des conditions réelles. C'est exactement ce que nous avons fait avec l'exemple de détection d'objet suivant.

Étude de cas : Détection d'objets à l'aide d'un petit ensemble de données pour le comptage automatisé d'articles en logistique

Notre objectif était de créer un système capable de détecter des objets pour la logistique. Le transport des marchandises de la production à l'entrepôt ou de l'entrepôt aux installations nécessite souvent un contrôle intermédiaire et une coordination de la quantité réelle à l'aide de factures et d'une base de données. Si elle est effectuée manuellement, cette tâche nécessiterait des heures de travail humain et impliquerait un risque élevé de perte, de dommage ou de blessure. 

Notre hypothèse initiale était qu'un petit ensemble de données annotées serait suffisant pour résoudre le problème du comptage automatique de divers articles à des fins logistiques. 

L'approche traditionnelle du problème que beaucoup adopteraient consiste à utiliser des techniques classiques de vision par ordinateur. Par exemple, on pourrait combiner un algorithme de détection de contour de filtre de Sobel avec des méthodes de transformation de cercle de Hough pour détecter et compter les objets ronds. Cette méthode est simple et relativement fiable ; cependant, il est plus adapté à un environnement contrôlé, comme une ligne de production qui produit des objets qui ont une forme ronde ou ovale bien définie.

Dans le cas d'utilisation que nous avons sélectionné, les méthodes classiques sont beaucoup moins fiables car la forme des objets, la qualité des images et les conditions d'éclairage peuvent varier considérablement. De plus, ces méthodes classiques ne peuvent pas apprendre des données collectées. Il est donc difficile d'affiner le système en collectant plus de données. Dans ce cas, la meilleure option serait plutôt d'affiner un détecteur d'objets basé sur un réseau de neurones.

Collecte et étiquetage des données 

Pour effectuer une expérience de détection d'objets avec un petit ensemble de données, nous avons collecté et annoté manuellement plusieurs images disponibles via des sources publiques. Nous avons décidé de nous concentrer sur la détection des bûches de bois et avons divisé les images annotées en train et validation se divise.

Nous avons également rassemblé un ensemble de tester images sans étiquettes où les journaux seraient en quelque sorte différents des images de train et de validation (orientation, taille, forme ou couleur des journaux) pour voir où se situent les limites des capacités de détection du modèle pour le train défini.

Puisqu'il s'agit de détection d'objets, les annotations d'images sont représentées sous forme de cadres de délimitation. Pour les créer, nous avons utilisé un outil basé sur un navigateur open source, Annotateur d'images VGG, qui dispose de suffisamment de fonctionnalités pour créer un jeu de données à petite échelle. Malheureusement, l'outil produit des annotations dans son propre format que nous avons ensuite converties au format COCOS DE PÂQUES norme de détection d'objets.

Dans la détection d'objets, la quantité de données est déterminée non seulement par le nombre d'images dans l'ensemble de données, mais également par la quantité d'instances d'objets individuels dans chaque image. Dans notre cas, les images étaient assez denses en objets – le nombre d'instances atteignait 50-90 par image.

Détection d'objets Detectron2 

Le modèle que nous avons décidé d'utiliser était une implémentation de R-CNN plus rapide par Facebook dans la bibliothèque de vision par ordinateur Détecteur2

Examinons de plus près comment Faster R-CNN fonctionne pour la détection d'objets. Tout d'abord, une image d'entrée est transmise à l'épine dorsale (un modèle CNN profond pré-entraîné à un problème de classification d'images) et est convertie en une représentation compressée appelée carte de caractéristiques. Les cartes de caractéristiques sont ensuite traitées par le réseau de proposition de région (RPN) qui identifie les zones des cartes de caractéristiques susceptibles de contenir un objet d'intérêt.

Ensuite, les zones sont extraites des cartes de caractéristiques à l'aide de l'opération de regroupement RoI et traitées par la tête de décalage de la zone de délimitation (qui prédit les coordonnées précises de la zone de délimitation pour chaque région) et la tête de classification des objets (qui prédit la classe de l'objet dans la région).

Faster R-CNN (Region-based Convolutional Neural Network) est la 3ème itération de l'architecture R-CNN. 

Faster R-CNN est un modèle de détection d'objets en deux étapes. Il inclut le sous-réseau RPN pour échantillonner des propositions d'objets. Cependant, ce n'est pas la seule solution au petit ensemble de données pour la détection d'objets.

Il existe également des modèles de détecteurs à une étape qui tentent de trouver les objets pertinents sans cette étape de sélection de proposition de région. Les détecteurs à un étage ont des architectures plus simples et sont généralement plus rapides mais moins précis que les modèles à deux étages. Les exemples incluent le Yolov4 et Yolov5 architectures, – certains des modèles configurés plus légers de ces familles peuvent atteindre jusqu'à 50-140 FPS (bien que compromettant la qualité de détection), par rapport au Faster R-CNN qui fonctionne à 15-25 FPS au maximum.

L'article original sur Faster R-CNN expliqué a été publié en 2016 et a reçu quelques petites améliorations de l'architecture au fil du temps, qui se sont reflétées dans la bibliothèque Detectron2 que nous avons utilisée.

Par exemple, la configuration du modèle retenu pour nos expérimentations, R50-FPN, utilise le réseau fédérateur ResNet-50 avec Feature Pyramid Network – un concept qui a été introduit dans le CVPR 2017 papier et est depuis devenu un incontournable des dorsales CNN pour l'extraction de caractéristiques. En termes plus simples, dans les réseaux de pyramides de fonctionnalités que nous utilisons, nous ne nous limitons pas aux cartes de fonctionnalités les plus profondes extraites de CNN, mais incluent également des cartes de fonctionnalités de bas et de moyen niveau. Cela permet la détection de petits objets qui seraient autrement perdus lors de la compression jusqu'aux niveaux les plus profonds.

Résultats

Dans nos expérimentations, nous avons utilisé la méthodologie suivante : 

  1. Prenez une instance Faster R-CNN pré-entraînée sur Coco 2017 ensemble de données avec 80 classes d'objets.
  2. Remplacer 320 unités dans la régression de la boîte englobante et 80 unités dans les têtes de classification par 4 et 1 unités respectivement, afin d'entraîner le modèle pour 1 nouvelle classe (la tête de régression de la boîte englobante a 4 unités pour chaque classe afin de régresser X, Y, W , H dimensions de la boîte englobante où X, Y sont les coordonnées centrales du centre de la bbox et W, H sont sa largeur et sa hauteur). 

Après quelques essais préliminaires, nous avons sélectionné les paramètres d'entraînement suivants :

  • Configuration du modèle : R50-FPN
  • Taux d'apprentissage: 0.000125
  • Taille du lot : 2
  • Taille du lot pour les têtes de ROI : 128
  • Nombre maximal d'itérations : 200

Une fois les paramètres définis, nous avons commencé à examiner l'aspect le plus intéressant de l'entraînement : combien d'instances d'entraînement étaient nécessaires pour obtenir des résultats décents sur l'ensemble de validation. Étant donné que même 1 image contenait jusqu'à 90 instances, nous avons dû supprimer au hasard une partie des annotations pour tester un plus petit nombre d'instances. Ce que nous avons découvert, c'est que pour notre ensemble de validation avec 98 instances, à 10 instances d'entraînement, nous ne pouvions récupérer que 1 à 2 instances de test, à 25, nous en obtenions déjà environ 40, et à 75 et plus, nous pouvions prédire toutes les instances.

L'augmentation du nombre d'instances d'entraînement de 75 à 100 et 200 a conduit aux mêmes résultats d'entraînement finaux. Cependant, le modèle a convergé plus rapidement en raison de la plus grande diversité des exemples de formation.

Les prédictions du modèle formé avec 237 instances sur l'image de l'ensemble de validation peuvent être vues dans l'image ci-dessous ; il existe plusieurs faux positifs (indiqués par des flèches rouges), mais ils ont une faible confiance et pourraient donc être principalement filtrés en définissant le seuil de confiance à ~ 80 %. 

Dans l'étape suivante, nous avons exploré les performances du modèle entraîné sur des images de test sans étiquettes. Comme prévu, les images similaires à la distribution de l'ensemble d'apprentissage avaient des prédictions fiables et de haute qualité, tandis que les images où les journaux avaient une forme, une couleur ou une orientation inhabituelle étaient beaucoup plus difficiles à utiliser pour le modèle.

Cependant, même sur les images difficiles de l'ensemble de test, nous avons observé un effet positif de l'augmentation du nombre d'instances d'entraînement. Dans l'image ci-dessous, nous montrons comment le modèle apprend à prendre des instances supplémentaires (marquées par des étoiles vertes) avec l'augmentation du nombre d'images de train (1 image de train - 91 instances, 2-4 images - 127-237 instances). 

En résumé, les résultats ont montré que le modèle était capable de récupérer environ 95 % des instances dans l'ensemble de données de validation. Après un réglage fin avec 75 à 200 instances d'objets fournies, les données de validation ressemblaient aux données de train. Cela prouve que la sélection d'exemples de formation appropriés permet une détection d'objet de qualité dans un scénario de données limité.

L'avenir de la détection d'objets

La détection d'objets est l'une des technologies de vision par ordinateur les plus couramment utilisées qui a émergé ces dernières années. La raison en est principalement la polyvalence. Certains des modèles existants sont implémentés avec succès dans l'électronique grand public ou intégrés dans des logiciels d'aide à la conduite, tandis que d'autres constituent la base de solutions robotiques utilisées pour automatiser la logistique et transformer les secteurs de la santé et de la fabrication.

La tâche de détection d'objets est essentielle pour la transformation numérique, car elle sert de base aux logiciels et à la robotique pilotés par l'IA, ce qui, à long terme, nous permettra de libérer les gens des tâches fastidieuses et d'atténuer les risques multiples.

PlatonAi. Web3 réinventé. L'intelligence des données amplifiée.
Cliquez ici pour y accéder.

Source : https://www.iotforall.com/small-dataset-based-object-detection

spot_img

Dernières informations

spot_img

Discutez avec nous

Salut! Comment puis-je t'aider?