Recherche de site Web

Introduction à DETR - Partie 1


DETR (Detection Transformer) est une architecture d'apprentissage profond proposée pour la première fois comme une nouvelle approche de la détection d'objets. C'est le premier cadre de détection d'objets à intégrer avec succès les transformers comme élément central dans le pipeline de détection.

DETR change complètement l'architecture par rapport aux systèmes de détection d'objets précédents. Dans cet article, nous approfondissons le concept de Detection Transformer (DETR), une approche révolutionnaire de la détection d'objets.

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

Selon Wikipédia, la détection d'objets est une technologie informatique liée à la vision par ordinateur et au traitement d'image qui détecte les instances d'objets sémantiques d'une classe particulière (comme les humains, les bâtiments ou les voitures) dans des images et des vidéos numériques.

Il est utilisé dans les voitures autonomes pour aider la voiture à détecter les voies, les autres véhicules et les piétons. La détection d'objets aide également à la vidéosurveillance et à la recherche d'images. Les algorithmes de détection d'objets utilisent l'apprentissage automatique et l'apprentissage profond pour détecter les objets. Ce sont des méthodes avancées permettant aux ordinateurs d'apprendre de manière autonome en se basant sur l'observation de nombreux exemples d'images et de vidéos.

Comment fonctionne la détection d'objets

La détection d'objets fonctionne en identifiant et en localisant des objets dans une image ou une vidéo. Le processus implique les étapes suivantes :

  • Extraction de caractéristiques : L'extraction de caractéristiques est la première étape de la détection d'objets. Cela implique généralement de former un réseau de neurones convolutif (CNN) à reconnaître les motifs d'image.
  • Génération de propositions d'objets : Après avoir obtenu les caractéristiques, la prochaine étape consiste à générer des propositions d'objets - des zones de l'image qui pourraient contenir un objet. La recherche sélective est couramment utilisée pour produire de nombreuses propositions d'objets potentielles.
  • Classification d'objets : L'étape suivante consiste à classifier les propositions d'objets comme contenant ou non un objet d'intérêt. Cela se fait généralement à l'aide d'un algorithme d'apprentissage automatique tel qu'une machine à vecteurs de support (SVM).
  • Régression des boîtes englobantes : Une fois les propositions classifiées, nous devons affiner les boîtes englobantes autour des objets d'intérêt pour déterminer avec précision leur emplacement et leur taille. Cette régression des boîtes englobantes ajuste les boîtes pour envelopper les objets cibles.

DETR : Une révolution basée sur les Transformers

DETR (Detection Transformer) est une architecture d'apprentissage profond proposée comme une nouvelle approche pour la détection d'objets et la segmentation panoptique. DETR est une approche révolutionnaire de la détection d'objets qui possède plusieurs caractéristiques uniques.

Solution d'apprentissage profond de bout en bout

DETR est une architecture d'apprentissage profond entraînable de bout en bout pour la détection d'objets qui utilise un bloc transformateur. Le modèle prend en entrée une image et produit un ensemble de boîtes englobantes et d'étiquettes de classe pour chaque requête d'objet. Il remplace le pipeline compliqué de composants conçus manuellement par un seul réseau neuronal de bout en bout. Cela rend l'ensemble du processus plus simple et plus facile à comprendre.

Pipeline de détection rationalisé

DETR (Detection Transformer) est spécial principalement parce que il s'appuie entièrement sur les transformers sans utiliser certains composants standards des détecteurs traditionnels, tels que les boîtes d'ancrage et la suppression non maximale (NMS).

Dans les modèles traditionnels de détection d'objets comme YOLO et Faster R-CNN, les boîtes d'ancrage jouent un rôle central. Ces modèles doivent prédéfinir un ensemble de boîtes d'ancrage, qui représentent une variété de formes et d'échelles qu'un objet peut avoir dans l'image. Le modèle apprend ensuite à ajuster ces ancres pour correspondre aux boîtes englobantes réelles des objets.

L'utilisation de ces boîtes d'ancrage améliore considérablement la précision des modèles, en particulier pour la détection d'objets de petite taille. Cependant, la mise en garde importante ici est que la taille et l'échelle de ces boîtes doivent être ajustées manuellement, ce qui en fait un processus quelque peu heuristique qui pourrait être amélioré.

De même, la NMS est un autre composant conçu manuellement utilisé dans YOLO et Faster R-CNN. C'est une étape de post-traitement pour s'assurer que chaque objet n'est détecté qu'une seule fois en éliminant les détections chevauchantes plus faibles. Bien qu'elle soit nécessaire pour ces modèles en raison de la pratique consistant à prédire plusieurs boîtes englobantes autour d'un seul objet, elle pourrait également poser certains problèmes. Choisir les seuils pour la NMS n'est pas simple et pourrait influencer la performance finale de la détection. Le processus traditionnel de détection d'objets peut être visualisé sur l'image ci-dessous :

D'autre part, DETR élimine le besoin de boîtes d'ancrage, parvenant à détecter les objets directement avec une perte globale basée sur un ensemble. Tous les objets sont détectés en parallèle, simplifiant le processus d'apprentissage et d'inférence. Cette approche réduit le besoin d'ingénierie spécifique à la tâche, réduisant ainsi la complexité du pipeline de détection.

Au lieu de se fier à la NMS pour éliminer les détections multiples, il utilise un transformeur pour prédire un nombre fixe de détections en parallèle. Il applique une perte de prédiction en ensemble pour garantir que chaque objet ne soit détecté qu'une seule fois. Cette approche supprime efficacement le besoin de NMS. Nous pouvons visualiser le processus dans l'image ci-dessous :

L'absence de boîtes d'ancrage simplifie le modèle mais pourrait également réduire sa capacité à détecter de petits objets car il ne peut pas se concentrer sur des échelles ou des ratios spécifiques. Néanmoins, supprimer la NMS empêche les éventuels problèmes qui pourraient survenir en raison d'un seuil incorrect. Cela rend également DETR plus facilement entraînable de bout en bout, améliorant ainsi son efficacité.

Architecture innovante et applications potentielles

Une chose à propos de DETR est que sa structure avec des mécanismes d'attention rend les modèles plus compréhensibles. Nous pouvons facilement voir sur quelles parties d'une image il se concentre lorsqu'il fait une prédiction. Cela améliore non seulement la précision mais aide également à comprendre les mécanismes sous-jacents de ces modèles de vision par ordinateur.

Cette compréhension est cruciale pour améliorer les modèles et identifier les biais potentiels. DETR a ouvert de nouvelles voies en transférant les transformers du traitement du langage naturel (NLP) vers le domaine de la vision, et ses prédictions interprétables sont un avantage supplémentaire de l'approche par attention. La structure unique de DETR a plusieurs applications dans le monde réel où elle s'est révélée bénéfique :

  • Véhicules autonomes : La conception de bout en bout de DETR signifie qu'il peut être entraîné avec beaucoup moins d'ingénierie manuelle, ce qui est un excellent avantage pour l'industrie des véhicules autonomes. Il utilise l'architecture encodeur-décodeur de transformateur qui modélise de manière inhérente les relations entre les objets dans l'image. Cela peut se traduire par une meilleure détection et identification en temps réel d'objets comme les piétons, les autres véhicules, les panneaux, etc., ce qui est crucial dans le domaine des véhicules autonomes.
  • Industrie du commerce de détail : DETR peut être utilisé efficacement dans la gestion des stocks en temps réel et la surveillance. Sa prédiction de pertes basée sur des ensembles peut fournir un ensemble de prévisions de taille fixe et non ordonné, ce qui le rend adapté à un environnement de vente au détail où le nombre d'objets peut varier.
  • Imagerie Médicale : La capacité de DETR à identifier des instances variables dans les images le rend utile en imagerie médicale pour détecter des anomalies ou des maladies. En raison de leur approche basée sur l’ancrage et les boîtes englobantes, les modèles traditionnels ont souvent du mal à détecter plusieurs instances de la même anomalie ou d’anomalies légèrement différentes dans la même image. DETR, en revanche, peut gérer efficacement ces scénarios.
  • Robots domestiques : Il peut être utilisé efficacement dans les robots domestiques pour comprendre et interagir avec l'environnement. Étant donné la nature imprévisible des environnements domestiques, la capacité de DETR à identifier un nombre arbitraire d'objets rend ces robots plus efficaces.

Perte basée sur l'ensemble dans DETR pour une détection d'objets précise et fiable

DETR utilise une fonction de perte globale basée sur un ensemble qui oblige à des prédictions uniques grâce au jumelage bipartite, un aspect distinctif de DETR. Cette caractéristique unique de DETR aide à garantir que le modèle produit des prédictions précises et fiables. La perte totale basée sur un ensemble correspond les boîtes englobantes prédites aux boîtes de vérité terrain. Cette fonction de perte garantit que chaque boîte englobante prédite est associée à une seule boîte de vérité terrain et vice versa.

Le diagramme représente le processus de calcul de la perte basée sur l'ensemble.

En parcourant le schéma ci-dessus, nous rencontrons d'abord une étape d'entrée fascinante où les objets prédits et les objets réels sont introduits dans le système. Au fur et à mesure que nous avançons dans ses mécanismes, notre attention se porte sur un processus de calcul qui consiste à établir une matrice de coûts.

L'algorithme hongrois intervient à temps pour orchestrer la correspondance optimale entre les objets prédits et les objets de référence — l'algorithme prend en compte les pertes de classification et de boîte englobante pour chaque correspondance associée.

Les prédictions qui ne trouvent pas de contrepartie se voient attribuer l’étiquette « aucun objet » avec leur perte de classification respective évaluée. Toutes ces pertes sont agrégées pour calculer la perte totale basée sur l’ensemble, qui est ensuite produite, marquant la fin du processus.

Cette correspondance unique oblige le modèle à faire des prédictions distinctes pour chaque objet. La nature globale de l'évaluation de l'ensemble complet des prévisions par rapport aux vérités terrain pousse le réseau à effectuer des détections cohérentes sur l'ensemble de l'image. Ainsi, la perte de couplage spéciale fournit une supervision au niveau de l'ensemble des prédictions, garantissant une localisation des objets robuste et cohérente.

Aperçu de l'architecture DETR pour la détection d'objets

Nous pouvons regarder le diagramme de l'architecture DETR ci-dessous. Nous encodons l'image d'un côté puis la passons au décodeur Transformer de l'autre côté. Plus besoin d'ingénierie de caractéristiques complexe ou de quoi que ce soit de manuel. Tout est appris automatiquement à partir des données par le réseau de neurones.

source

Comme montré sur l'image, l'architecture de DETR se compose des composants suivants :

  • Backbone convolutionnel : Le backbone convolutionnel est un CNN standard utilisé pour extraire des caractéristiques de l'image d'entrée. Les caractéristiques sont ensuite transmises à l'encodeur du transformeur.
  • Encodeur Transformer : L'encodeur transformer traite les caractéristiques extraites par le réseau convolutionnel principal et génère un ensemble de cartes de caractéristiques. L'encodeur transformer utilise l'auto-attention pour capturer les relations entre les objets dans l'image.
  • Décodeur du Transformer : Le décodeur Transformer reçoit quelques embeddings de position appris définis comme entrée, que nous appelons des requêtes d'objet. Il prête également attention à la sortie de l'encodeur. Nous donnons chaque embedding de sortie du décodeur à un réseau feed-forward (FFN) partagé qui prédit soit une détection (classe et boîte englobante), soit une classe « pas d'objet ».
  • Requêtes d'objet : Les requêtes d'objet sont des embeddings positionnels appris utilisés par le décodeur du transformeur pour porter attention à la sortie de l'encodeur. Les requêtes d'objet sont apprises pendant l'entraînement et utilisées pour prédire les détections finales.
  • Tête de détection : La tête de détection est un réseau neuronal à propagation avant qui prend la sortie du décodeur transformeur et produit l'ensemble final des détections. La tête de détection prédit la classe et la boîte englobante pour chaque requête d'objet.

L'architecture Transformers adoptée par DETR est montrée dans l'image ci-dessous :

source

DETR apporte de nouveaux concepts dans le domaine de la détection d'objets. Il utilise des requêtes, des clés et des valeurs d'objets dans le cadre du mécanisme d'auto-attention du Transformer.

Habituellement, le nombre de requêtes d'objets est fixé à l'avance et ne change pas en fonction du nombre réel d'objets dans l'image. Les clés et les valeurs proviennent de l'encodage de l'image avec un CNN. Les clés montrent où se trouvent différents points dans l'image, tandis que les valeurs contiennent des informations sur les caractéristiques. Ces clés et valeurs sont utilisées pour l'auto-attention afin que le modèle puisse déterminer quelles parties de l'image sont les plus importantes.

La véritable innovation de DETR réside dans son utilisation de l'attention multi-têtes. Cela permet à DETR de comprendre les relations et les connexions complexes entre différents objets de l'image. Chaque tête d'attention peut se concentrer sur diverses parties de l'image simultanément.

Utilisation du modèle DETR pour la détection d'objets avec Hugging Face Transformers

Le modèle facebook/detr-resnet-50 est une implementation du modèle DETR. Au cœur, il est alimenté par une architecture de transformateur.

Plus précisément, ce modèle utilise un transformeur encodeur-décodeur et un réseau de neurones convolutionnel ResNet-50 comme architecture principale. Cela signifie qu'il peut analyser une image, détecter divers objets à l'intérieur et identifier ce que sont ces objets.

Les chercheurs ont entraîné ce modèle sur un vaste ensemble de données appelé COCO, qui contient de nombreuses images étiquetées du quotidien avec des personnes, des animaux et des voitures. De cette façon, le modèle a appris à détecter des objets du monde réel du quotidien comme un professionnel. Le code fourni montre l'utilisation du modèle DETR pour la détection d'objets.

from transformers import DetrImageProcessor, DetrForObjectDetection
import torch
from PIL import Image
import requests

url = "http://images.cocodataset.org/val2017/000000039769.jpg"
image = Image.open(requests.get(url, stream=True).raw)

# you can specify the revision tag if you don't want the timm dependency
processor = DetrImageProcessor.from_pretrained("facebook/detr-resnet-50", revision="no_timm")
model = DetrForObjectDetection.from_pretrained("facebook/detr-resnet-50", revision="no_timm")

inputs = processor(images=image, return_tensors="pt")
outputs = model(__inputs)

# convert outputs (bounding boxes and class logits) to COCO API
# let's only keep detections with score > 0.9
target_sizes = torch.tensor([image.size[::-1]])
results = processor.post_process_object_detection(outputs, target_sizes=target_sizes, threshold=0.9)[0]

for score, label, box in zip(results["scores"], results["labels"], results["boxes"]):
    box = [round(i, 2) for i in box.tolist()]
    print(
            f"Detected {model.config.id2label[label.item()]} with confidence "
            f"{round(score.item(), 3)} at location {box}"
    )

Sortie :

  • Le code ci-dessus fait quelques opérations de détection d'objets. Tout d'abord, il récupère les bibliothèques dont il a besoin, comme les transformers de Hugging Face et d'autres bibliothèques standard comme torch, PIL et requests.
  • Ensuite, il charge une image à partir d'une URL en utilisant requests. Il envoie l'image à travers un certain traitement en utilisant le DetrImageProcessor pour la préparer pour le modèle.
  • Il instancie le modèle DetrForObjectDetection à partir de « facebook/detr-resnet-50 » en utilisant la méthode from_pretrained. Le paramètre revision="no_timm" spécifie le tag de révision si la dépendance temporelle n'est pas souhaitée.
  • Avec l'image et le modèle préparés, l'image est introduite dans le modèle, ce qui permet une détection des objets sans faille. Le processor prépare l'image pour l'entrée, et le model effectue la tâche de détection des objets.
  • Les sorties du modèle, qui comprennent des boîtes englobantes, des logits de classes et d'autres informations pertinentes sur les objets détectés dans l'image, sont ensuite post-traitées en utilisant la méthode processor.post_process_object_detection pour obtenir les résultats finaux de détection.
  • Le code parcourt ensuite les résultats pour afficher les objets détectés, leurs scores de confiance et leurs emplacements dans l'image.

Conclusion

DETR est un modèle d'apprentissage profond pour la détection d'objets qui exploite l'architecture Transformer. Il a été initialement conçu pour les tâches de traitement du langage naturel (NLP) comme composant principal afin de résoudre le problème de la détection d'objets de manière unique et très efficace.

DETR traite le problème de la détection d'objets différemment des systèmes de détection d'objets traditionnels comme Faster R-CNN ou YOLO. Il simplifie le processus de détection en supprimant plusieurs composants conçus manuellement qui encodent des connaissances préalables, comme les ancres spatiales ou la suppression non maximale.

Il utilise une fonction de perte globale définie qui oblige le modèle à générer des prédictions uniques pour chaque objet en les associant par paires. Cette astuce aide DETR à faire de bonnes prédictions auxquelles nous pouvons faire confiance.

Merci d'apprendre avec la communauté Linux-Console.net.