Einführung in DETR – Teil 1
DETR (Detection Transformer) ist eine Deep-Learning-Architektur, die erstmals als neuer Ansatz zur Objekterkennung vorgeschlagen wurde. Es ist das erste Objekterkennungs-Framework, das Transformatoren erfolgreich als zentralen Baustein in die Erkennungspipeline integriert.
DETR verändert die Architektur im Vergleich zu früheren Objekterkennungssystemen vollständig. In diesem Artikel befassen wir uns mit dem Konzept des Detection Transformer (DETR), einem bahnbrechenden Ansatz zur Objekterkennung.
Was ist Objekterkennung?
Laut Wikipedia handelt es sich bei der Objekterkennung um eine Computertechnologie im Zusammenhang mit Computer Vision und Bildverarbeitung, die Instanzen semantischer Objekte einer bestimmten Klasse (z. B. Menschen, Gebäude oder Autos) in digitalen Bildern und Videos erkennt.
Es wird in selbstfahrenden Autos verwendet, um dem Auto dabei zu helfen, Fahrspuren, andere Fahrzeuge und gehende Personen zu erkennen. Auch bei der Videoüberwachung und der Bildsuche hilft die Objekterkennung. Die Objekterkennungsalgorithmen nutzen maschinelles Lernen und Deep Learning, um die Objekte zu erkennen. Hierbei handelt es sich um fortgeschrittene Möglichkeiten für Computer, selbstständig zu lernen, indem sie sich viele Beispielbilder und Videos ansehen.
Wie funktioniert die Objekterkennung?
Die Objekterkennung funktioniert durch die Identifizierung und Lokalisierung von Objekten in einem Bild oder Video. Der Prozess umfasst die folgenden Schritte:
- Feature-Extraktion: Das Extrahieren von Features ist der erste Schritt bei der Objekterkennung. Dabei wird in der Regel ein Convolutional Neural Network (CNN) trainiert, um Bildmuster zu erkennen.
- Erstellung von Objektvorschlägen: Nachdem Sie die Funktionen erhalten haben, müssen Sie als Nächstes Objektvorschläge generieren – Bereiche im Bild, die ein Objekt enthalten könnten. Die selektive Suche wird häufig verwendet, um viele potenzielle Objektvorschläge herauszufiltern.
- Objektklassifizierung: Der nächste Schritt besteht darin, die Objektvorschläge dahingehend zu klassifizieren, ob sie ein Objekt von Interesse enthalten oder nicht. Dies erfolgt typischerweise mithilfe eines Algorithmus für maschinelles Lernen, beispielsweise einer Support Vector Machine (SVM).
- Bounding-Box-Regression: Nachdem die Vorschläge klassifiziert wurden, müssen wir die Begrenzungsrahmen um die interessierenden Objekte verfeinern, um deren Position und Größe festzulegen. Diese Begrenzungsrahmen-Regression passt die Rahmen so an, dass sie die Zielobjekte umschließen.
DETR: Eine transformatorbasierte Revolution
DETR (Detection Transformer) ist eine Deep-Learning-Architektur, die als neuer Ansatz zur Objekterkennung und panoptischen Segmentierung vorgeschlagen wird. DETR ist ein bahnbrechender Ansatz zur Objekterkennung, der über mehrere einzigartige Funktionen verfügt.
End-to-End-Deep-Learning-Lösung
DETR ist eine durchgängig trainierbare Deep-Learning-Architektur zur Objekterkennung, die einen Transformatorblock nutzt. Das Modell gibt ein Bild ein und gibt einen Satz Begrenzungsrahmen und Klassenbezeichnungen für jede Objektabfrage aus. Es ersetzt die chaotische Pipeline handgefertigter Teile durch ein einziges durchgängiges neuronales Netzwerk. Dadurch wird der gesamte Prozess einfacher und verständlicher.
Optimierte Erkennungspipeline
DETR (Detection Transformer) ist vor allem deshalb etwas Besonderes, weil es vollständig auf Transformatoren basiert, ohne einige Standardkomponenten in herkömmlichen Detektoren wie Ankerkästen und Non-Maximum Suppression (NMS) zu verwenden.
In traditionellen Objekterkennungsmodellen wie YOLO und Faster R-CNN spielen Ankerboxen eine zentrale Rolle. Diese Modelle müssen eine Reihe von Ankerkästen vordefinieren, die verschiedene Formen und Maßstäbe darstellen, die ein Objekt im Bild haben kann. Das Modell lernt dann, diese Anker so anzupassen, dass sie mit den tatsächlichen Objektbegrenzungsrahmen übereinstimmen.
Die Verwendung dieser Ankerkästen verbessert die Genauigkeit der Modelle erheblich, insbesondere bei der Erkennung kleiner Objekte. Die wichtige Einschränkung hierbei besteht jedoch darin, dass die Größe und der Maßstab dieser Boxen manuell fein abgestimmt werden müssen, was es zu einem etwas heuristischen Prozess macht, der besser sein könnte.
Ebenso ist NMS eine weitere handgefertigte Komponente, die in YOLO und Faster R-CNN verwendet wird. Es handelt sich um einen Nachbearbeitungsschritt, um sicherzustellen, dass jedes Objekt nur einmal erkannt wird, indem schwächere überlappende Erkennungen eliminiert werden. Obwohl dies für diese Modelle aufgrund der Praxis der Vorhersage mehrerer Begrenzungsrahmen um ein einzelnes Objekt erforderlich ist, kann es auch zu Problemen führen. Die Auswahl von Schwellenwerten für NMS ist nicht einfach und könnte die endgültige Erkennungsleistung beeinflussen. Der herkömmliche Objekterkennungsprozess kann im Bild unten dargestellt werden:
Andererseits macht DETR Ankerboxen überflüssig und schafft es, Objekte direkt mit einem satzbasierten globalen Verlust zu erkennen. Alle Objekte werden parallel erkannt, was den Lern- und Inferenzprozess vereinfacht. Dieser Ansatz reduziert den Bedarf an aufgabenspezifischem Engineering und reduziert dadurch die Komplexität der Erkennungspipeline.
Anstatt sich darauf zu verlassen, dass NMS mehrere Erkennungen bereinigt, nutzt es einen Transformator, um eine feste Anzahl von Erkennungen parallel vorherzusagen. Es wendet einen festgelegten Vorhersageverlust an, um sicherzustellen, dass jedes Objekt nur einmal erkannt wird. Dieser Ansatz unterdrückt effektiv den Bedarf an NMS. Wir können den Prozess im Bild unten visualisieren:
Das Fehlen von Ankerkästen vereinfacht das Modell, könnte aber auch seine Fähigkeit zur Erkennung kleiner Objekte beeinträchtigen, da es sich nicht auf bestimmte Maßstäbe oder Verhältnisse konzentrieren kann. Dennoch verhindert das Entfernen von NMS mögliche Pannen, die durch unsachgemäße Schwellenwerte auftreten könnten. Dadurch wird DETR auch einfacher durchgängig trainierbar, wodurch seine Effizienz gesteigert wird.
Neuartige Architektur und mögliche Anwendungen
Eine Sache von DETR ist, dass seine Struktur mit Aufmerksamkeitsmechanismen die Modelle verständlicher macht. Wir können leicht erkennen, auf welche Teile eines Bildes der Fokus gerichtet ist, wenn eine Vorhersage getroffen wird. Es erhöht nicht nur die Genauigkeit, sondern hilft auch beim Verständnis der zugrunde liegenden Mechanismen dieser Computer-Vision-Modelle.
Dieses Verständnis ist entscheidend für die Verbesserung der Modelle und die Identifizierung potenzieller Verzerrungen. DETR hat neue Wege beschritten, indem es Transformatoren vom NLP in die Visionswelt überführt hat, und seine interpretierbaren Vorhersagen sind ein schöner Bonus des Aufmerksamkeitsansatzes. Die einzigartige Struktur von DETR hat mehrere praktische Anwendungen, bei denen es sich als vorteilhaft erwiesen hat:
- Autonome Fahrzeuge: Das End-to-End-Design von DETR bedeutet, dass es mit viel weniger manuellem Engineering trainiert werden kann, was ein großer Segen für die Branche der autonomen Fahrzeuge ist. Es nutzt die Transformer-Encoder-Decoder-Architektur, die Objektbeziehungen im Bild inhärent modelliert. Dies kann zu einer besseren Echtzeiterkennung und -identifizierung von Objekten wie Fußgängern, anderen Fahrzeugen, Schildern usw. führen, was in der Szene autonomer Fahrzeuge von entscheidender Bedeutung ist.
- Einzelhandel: DETR kann effektiv für die Bestandsverwaltung und -überwachung in Echtzeit eingesetzt werden. Seine satzbasierte Verlustvorhersage kann einen ungeordneten Satz von Prognosen mit fester Größe bereitstellen, wodurch es für eine Einzelhandelsumgebung geeignet ist, in der die Anzahl der Objekte variieren kann.
- Medizinische Bildgebung: Die Fähigkeit von DETR, variable Instanzen in Bildern zu identifizieren, macht es in der medizinischen Bildgebung nützlich, um Anomalien oder Krankheiten zu erkennen. Aufgrund ihres Anker- und Bounding-Box-Ansatzes haben herkömmliche Modelle oft Schwierigkeiten, mehrere Instanzen derselben Anomalie oder leicht unterschiedliche Anomalien im selben Bild zu erkennen. DETR hingegen kann diese Szenarien effektiv bewältigen.
- Hausroboter: Es kann effektiv in Haushaltsrobotern eingesetzt werden, um die Umgebung zu verstehen und mit ihr zu interagieren. Angesichts der Unvorhersehbarkeit häuslicher Umgebungen macht die Fähigkeit von DETR, eine beliebige Anzahl von Objekten zu identifizieren, diese Roboter effizienter.
Satzbasierter Verlust in DETR für eine genaue und zuverlässige Objekterkennung
DETR nutzt eine satzbasierte Gesamtverlustfunktion, die eindeutige Vorhersagen durch bipartites Matching erzwingt, ein charakteristischer Aspekt von DETR. Diese einzigartige Funktion von DETR hilft Stellen Sie sicher, dass das Modell genaue und zuverlässige Vorhersagen liefert. Der satzbasierte Gesamtverlust gleicht die vorhergesagten Begrenzungsrahmen mit den Grundwahrheitsrahmen ab. Diese Verlustfunktion stellt sicher, dass jeder vorhergesagte Begrenzungsrahmen nur mit einem Ground-Truth-Begrenzungsrahmen abgeglichen wird und umgekehrt.
Das Diagramm stellt den Prozess der Berechnung des satzbasierten Verlusts dar.
Beim Durchgehen des obigen Diagramms stoßen wir zunächst auf eine faszinierende Eingabephase, in der vorhergesagte und Ground-Truth-Objekte in das System eingespeist werden. Je tiefer wir in die Mechanismen vordringen, desto mehr wird unsere Aufmerksamkeit auf einen Rechenprozess gelenkt, der die Berechnung einer Kostenmatrix beinhaltet.
Der ungarische Algorithmus kommt rechtzeitig zum Einsatz, um eine optimale Übereinstimmung zwischen vorhergesagten und Ground-Truth-Objekten zu orchestrieren – der Algorithmus berücksichtigt Klassifizierungs- und Bounding-Box-Verluste für jedes Übereinstimmungspaar.
Vorhersagen, die kein Gegenstück finden, erhalten das Label „kein Objekt“ und ihr jeweiliger Klassifizierungsverlust wird bewertet. Alle diese Verluste werden aggregiert, um den gesamten satzbasierten Verlust zu berechnen, der dann ausgegeben wird und das Ende des Prozesses markiert.
Diese eindeutige Übereinstimmung zwingt das Modell dazu, für jedes Objekt unterschiedliche Vorhersagen zu treffen. Der globale Charakter der gemeinsamen Auswertung des gesamten Satzes von Prognosen im Vergleich zu den Grundwahrheiten veranlasst das Netzwerk, kohärente Erkennungen über das gesamte Bild hinweg durchzuführen. Der spezielle Paarungsverlust sorgt also für eine Überwachung auf der Ebene des gesamten Vorhersagesatzes und gewährleistet so eine robuste und konsistente Objektlokalisierung.
Überblick über die DETR-Architektur zur Objekterkennung
Wir können uns das Diagramm der DETR-Architektur unten ansehen. Wir kodieren das Bild auf der einen Seite und übergeben es dann auf der anderen Seite an den Transformer-Decoder. Kein verrücktes Feature-Engineering oder irgendetwas Manuelles mehr. Das alles wird automatisch aus den Daten des neuronalen Netzwerks gelernt.
Quelle
Wie im Bild gezeigt, besteht die Architektur von DETR aus den folgenden Komponenten:
- Faltungs-Backbone: Das Faltungs-Backbone ist ein Standard-CNN, das zum Extrahieren von Merkmalen aus dem Eingabebild verwendet wird. Die Features werden dann an den Transformer-Encoder übergeben.
- Transformer-Encoder: Der Transformer-Encoder verarbeitet die vom Faltungs-Backbone extrahierten Features und generiert eine Reihe von Feature-Maps. Der Transformer-Encoder nutzt die Selbstaufmerksamkeit, um die Beziehungen zwischen den Objekten im Bild zu erfassen.
- Transformer-Decoder: Der Transformer-Decoder erhält ein paar festgelegte gelernte Positionseinbettungen als Eingabe, die wir Objektabfragen nennen. Dabei wird auch auf den Encoder-Ausgang geachtet. Wir geben jede Ausgabeeinbettung vom Decoder an ein gemeinsames Feed-Forward-Netzwerk (FFN) weiter, das entweder eine Erkennung (Klasse und Begrenzungsrahmen) oder eine „Kein Objekt“-Klasse vorhersagt.
- Objektabfragen: Bei den Objektabfragen handelt es sich um erlernte Positionseinbettungen, die vom Transformer-Decoder zur Bearbeitung der Encoder-Ausgabe verwendet werden. Die Objektabfragen werden während des Trainings erlernt und zur Vorhersage der endgültigen Erkennungen verwendet.
- Erkennungskopf: Der Erkennungskopf ist ein Feed-Forward-Neuronales Netzwerk, das die Ausgabe des Transformatordecoders übernimmt und den endgültigen Satz von Erkennungen erzeugt. Der Erkennungskopf sagt die Klasse und den Begrenzungsrahmen für jede Objektabfrage voraus.
Die von DETR übernommene Transformers-Architektur ist im Bild unten dargestellt:
Quelle
DETR bringt einige neue Konzepte zur Objekterkennung auf den Tisch. Es verwendet Objektabfragen, Schlüssel und Werte als Teil des Selbstaufmerksamkeitsmechanismus des Transformers.
Normalerweise wird die Anzahl der Objektabfragen im Voraus festgelegt und ändert sich nicht basierend darauf, wie viele Objekte sich tatsächlich im Bild befinden. Die Schlüssel und Werte stammen aus der Codierung des Bildes mit einem CNN. Die Schlüssel zeigen an, wo sich verschiedene Stellen im Bild befinden, während die Werte Informationen über Merkmale enthalten. Diese Schlüssel und Werte werden zur Selbstaufmerksamkeit verwendet, damit das Modell bestimmen kann, welche Teile des Bildes am wichtigsten sind.
Die wahre Innovation von DETR liegt in der Verwendung der Multi-Head-Selbstaufmerksamkeit. Dadurch kann DETR komplexe Beziehungen und Verbindungen zwischen verschiedenen Objekten im Bild verstehen. Jeder Aufmerksamkeitskopf kann sich gleichzeitig auf verschiedene Teile des Bildes konzentrieren.
Verwendung des DETR-Modells zur Objekterkennung mit Hugging Face Transformers
Das facebook/detr-resnet-50-Modell ist eine Implementierung des DETR-Modells. Im Kern basiert es auf einer Transformatorarchitektur.
Insbesondere verwendet dieses Modell einen Encoder-Decoder-Transformator und ein ResNet-50-Faltungs-Neuronales Backbone-Netzwerk. Das bedeutet, dass es ein Bild analysieren, verschiedene Objekte darin erkennen und identifizieren kann, um welche Objekte es sich handelt.
Die Forscher trainierten dieses Modell anhand eines riesigen Datensatzes namens COCO, der unzählige beschriftete Alltagsbilder mit Menschen, Tieren und Autos enthält. Auf diese Weise lernte das Modell, alltägliche Objekte aus der realen Welt wie ein Profi zu erkennen. Der bereitgestellte Code demonstriert die Verwendung des DETR-Modells zur Objekterkennung.
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 APIlet'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}"
)
Ausgabe:
- Der obige Code erledigt einige Aufgaben zur Objekterkennung. Zuerst greift es auf die Bibliotheken zu, die es benötigt, wie die Hugging Face-Transformatoren und einige andere Standard-Transformatoren wie Torch, PIL und Requests.
- Anschließend lädt es über Anfragen ein Bild von einer URL. Das Bild wird mithilfe des
DetrImageProcessor
einer Verarbeitung unterzogen, um es für das Modell vorzubereiten. - Es instanziiert das
DetrForObjectDetection
-Modell aus „facebook/detr-resnet-50“ mithilfe der Methodefrom_pretrained
. Der Parameterrevision="no_timm"
gibt den Revisionstag an, wenn die Zeitabhängigkeit nicht gewünscht ist. - Sobald das Bild und das Modell vorbereitet sind, wird das Bild in das Modell eingespeist, was zu einer nahtlosen Objekterkennung führt. Der
Prozessor
bereitet das Bild für die Eingabe vor und dasModell
führt die Objekterkennungsaufgabe aus. - Die Ausgaben des Modells, zu denen Begrenzungsrahmen, Klassenprotokolle und andere relevante Informationen zu den erkannten Objekten im Bild gehören, werden dann mit der Methode
processor.post_process_object_detection
nachverarbeitet, um die endgültigen Erkennungsergebnisse zu erhalten . - Anschließend durchläuft der Code die Ergebnisse, um die erkannten Objekte, ihre Konfidenzwerte und ihre Positionen im Bild auszudrucken.
Abschluss
DETR ist ein Deep-Learning-Modell zur Objekterkennung, das die Transformer-Architektur nutzt. Es wurde ursprünglich für NLP-Aufgaben (Natural Language Processing) als Hauptkomponente entwickelt, um das Problem der Objekterkennung auf einzigartige und hochwirksame Weise anzugehen.
DETR behandelt das Objekterkennungsproblem anders als herkömmliche Objekterkennungssysteme wie Faster R-CNN oder YOLO. Es vereinfacht die Erkennungspipeline, indem mehrere von Hand entworfene Komponenten weggelassen werden, die Vorwissen kodieren, wie z. B. räumliche Anker oder nicht maximale Unterdrückung.
Es verwendet eine festgelegte globale Verlustfunktion, die das Modell dazu zwingt, für jedes Objekt eindeutige Vorhersagen zu generieren, indem es sie paarweise abgleicht. Dieser Trick hilft DETR, gute Vorhersagen zu treffen, denen wir vertrauen können.