Wprowadzenie do DETR – część 1
DETR (Detection Transformer) to architektura głębokiego uczenia się, zaproponowana po raz pierwszy jako nowe podejście do wykrywania obiektów. Jest to pierwsza platforma do wykrywania obiektów, która skutecznie integruje transformatory jako centralny element rurociągu detekcji.
DETR całkowicie zmienia architekturę w porównaniu z poprzednimi systemami wykrywania obiektów. W tym artykule zagłębiamy się w koncepcję transformatora detekcyjnego (DETR), przełomowego podejścia do wykrywania obiektów.
Co to jest wykrywanie obiektów?
Według Wikipedii wykrywanie obiektów to technologia komputerowa związana z wizją komputerową i przetwarzaniem obrazu, która wykrywa wystąpienia obiektów semantycznych określonej klasy (takich jak ludzie, budynki lub samochody) w cyfrowych obrazach i filmach.
Jest stosowany w samochodach autonomicznych, aby pomóc samochodowi wykryć pas ruchu, inne pojazdy i idących ludzi. Wykrywanie obiektów pomaga także w monitoringu wideo i wyszukiwaniu obrazów. Algorytmy wykrywania obiektów wykorzystują uczenie maszynowe i głębokie uczenie się do wykrywania obiektów. Są to zaawansowane sposoby samodzielnej nauki komputerów, oparte na oglądaniu wielu przykładowych obrazów i filmów.
Jak działa wykrywanie obiektów
Wykrywanie obiektów polega na identyfikowaniu i lokalizowaniu obiektów na obrazie lub filmie. Proces obejmuje następujące kroki:
- Wyodrębnianie cech: Wyodrębnianie cech to pierwszy krok w wykrywaniu obiektów. Zwykle wiąże się to z szkoleniem splotowej sieci neuronowej (CNN) w zakresie rozpoznawania wzorców obrazu.
- Generowanie propozycji obiektów: po uzyskaniu funkcji następną rzeczą jest wygenerowanie propozycji obiektów — obszarów obrazu, które mogą zawierać obiekt. Wyszukiwanie selektywne jest powszechnie stosowane w celu wybrania wielu potencjalnych propozycji obiektów.
- Klasyfikacja obiektu: następnym krokiem jest sklasyfikowanie propozycji obiektów jako zawierających obiekt zainteresowania lub nie. Zwykle odbywa się to przy użyciu algorytmu uczenia maszynowego, takiego jak maszyna wektorów nośnych (SVM).
- Regresja obwiedni: po sklasyfikowaniu propozycji musimy udoskonalić obwiednie wokół interesujących obiektów, aby określić ich lokalizację i rozmiar. Ta regresja obwiedni dostosowuje ramki tak, aby otaczały obiekty docelowe.
DETR: rewolucja oparta na transformatorach
DETR (Detection Transformer) to architektura głębokiego uczenia się proponowana jako nowe podejście do wykrywania obiektów i segmentacji panoptycznej. DETR to przełomowe podejście do wykrywania obiektów, które ma kilka unikalnych cech.
Kompleksowe rozwiązanie do głębokiego uczenia się
DETR to kompleksowa, możliwa do wyszkolenia architektura głębokiego uczenia się do wykrywania obiektów, która wykorzystuje blok transformatora. Model wprowadza obraz i generuje zestaw ramek ograniczających i etykiet klas dla każdego zapytania o obiekt. Zastępuje niechlujny potok ręcznie zaprojektowanych elementów pojedynczą kompleksową siecią neuronową. Dzięki temu cały proces jest prostszy i łatwiejszy do zrozumienia.
Usprawniony proces wykrywania
DETR (Transformator wykrywający) jest wyjątkowy przede wszystkim dlatego, że w całości opiera się na transformatorach, bez stosowania niektórych standardowych komponentów w tradycyjnych detektorach, takich jak skrzynki kotwiczne i niemaksymalne tłumienie (NMS).
W tradycyjnych modelach wykrywania obiektów, takich jak YOLO i Faster R-CNN, skrzynki kotwiczące odgrywają kluczową rolę. Modele te muszą wstępnie zdefiniować zestaw pól kontrolnych, które reprezentują różne kształty i skale, jakie obiekt może mieć na obrazie. Model następnie uczy się dostosowywać te kotwice, aby dopasować je do rzeczywistych ramek ograniczających obiekt.
Zastosowanie tych skrzynek kotwiczących znacznie poprawia dokładność modeli, szczególnie w wykrywaniu obiektów o małej skali. Jednakże ważnym zastrzeżeniem jest to, że rozmiar i skalę tych pól należy dostroić ręcznie, co sprawia, że jest to proces nieco heurystyczny, który mógłby być lepszy.
Podobnie NMS to kolejny ręcznie zaprojektowany komponent używany w YOLO i Faster R-CNN. Jest to etap przetwarzania końcowego, który ma na celu zapewnienie, że każdy obiekt zostanie wykryty tylko raz, poprzez wyeliminowanie słabszych nakładających się wykryć. Chociaż jest to konieczne w przypadku tych modeli ze względu na praktykę przewidywania wielu obwiedni wokół pojedynczego obiektu, może również powodować pewne problemy. Wybór progów dla NMS nie jest prosty i może mieć wpływ na ostateczną skuteczność wykrywania. Tradycyjny proces wykrywania obiektów można zwizualizować na poniższym obrazku:
Z drugiej strony DETR eliminuje potrzebę stosowania skrzynek kontrolnych, umożliwiając bezpośrednie wykrywanie obiektów z globalną stratą opartą na zestawie. Wszystkie obiekty są wykrywane równolegle, co upraszcza proces uczenia się i wnioskowania. Takie podejście zmniejsza potrzebę inżynierii specyficznej dla danego zadania, zmniejszając w ten sposób złożoność rurociągu detekcji.
Zamiast polegać na NMS w celu oczyszczenia wielu detekcji, wykorzystuje transformator do przewidywania stałej liczby detekcji równolegle. Stosuje ustawioną utratę przewidywania, aby mieć pewność, że każdy obiekt zostanie wykryty tylko raz. Takie podejście skutecznie eliminuje potrzebę stosowania NMS. Proces ten możemy zwizualizować na poniższym obrazku:
Brak bloków kontrolnych upraszcza model, ale może również zmniejszyć jego zdolność do wykrywania małych obiektów, ponieważ nie można skupić się na określonych skalach lub współczynnikach. Niemniej jednak usunięcie NMS zapobiega potencjalnym wpadkom, które mogłyby wystąpić w wyniku nieprawidłowego ustawienia progu. Dzięki temu DETR jest łatwiejszy w kompleksowym szkoleniu, co zwiększa jego efektywność.
Nowatorska architektura i potencjalne zastosowania
Jedną z cech DETR jest to, że jego struktura z mechanizmami uwagi sprawia, że modele są bardziej zrozumiałe. Kiedy dokonujemy prognozy, możemy łatwo zobaczyć, na jakich częściach obrazu się koncentrujemy. Nie tylko zwiększa dokładność, ale także pomaga w zrozumieniu mechanizmów leżących u podstaw tych modeli widzenia komputerowego.
Zrozumienie tego ma kluczowe znaczenie dla ulepszania modeli i identyfikowania potencjalnych błędów. DETR otworzył nowe możliwości w przenoszeniu transformatorów z NLP do świata wizji, a jego interpretowalne przewidywania stanowią miły dodatek do podejścia skupiającego się na uwadze. Unikalna struktura DETR ma kilka rzeczywistych zastosowań, w których okazała się korzystna:
- Pojazdy autonomiczne: kompleksowa konstrukcja DETR oznacza, że można go szkolić przy znacznie mniejszym zaangażowaniu w inżynierię ręczną, co jest doskonałym dobrodziejstwem dla branży pojazdów autonomicznych. Wykorzystuje architekturę kodera-dekodera transformatora, która z natury modeluje relacje między obiektami w obrazie. Może to skutkować lepszym wykrywaniem i identyfikowaniem w czasie rzeczywistym obiektów, takich jak piesi, inne pojazdy, znaki itp., co ma kluczowe znaczenie w branży pojazdów autonomicznych.
- Branża detaliczna: DETR można skutecznie wykorzystać do zarządzania zapasami i nadzoru w czasie rzeczywistym. Jego przewidywanie strat oparte na zestawach może zapewnić nieuporządkowany zestaw prognoz o stałym rozmiarze, dzięki czemu jest odpowiedni dla środowiska handlu detalicznego, w którym liczba obiektów może się różnić.
- Obrazowanie medyczne: zdolność DETR do identyfikowania zmiennych elementów obrazów sprawia, że jest on przydatny w obrazowaniu medycznym do wykrywania anomalii lub chorób. Ze względu na podejście do zakotwiczenia i obwiedni tradycyjne modele często mają trudności z wykryciem wielu wystąpień tej samej anomalii lub nieco innych anomalii na tym samym obrazie. Z drugiej strony DETR może skutecznie stawić czoła tym scenariuszom.
- Roboty domowe: można go skutecznie wykorzystać w robotach domowych do zrozumienia otoczenia i interakcji z nim. Biorąc pod uwagę nieprzewidywalny charakter środowisk domowych, zdolność DETR do identyfikowania dowolnej liczby obiektów sprawia, że roboty te są bardziej wydajne.
Utrata DETR oparta na zestawie dla dokładnego i niezawodnego wykrywania obiektów
DETR wykorzystuje funkcję straty ogólnej opartą na zbiorach, która wymusza unikalne przewidywania poprzez dopasowanie dwustronne, charakterystyczny aspekt DETR. Ta unikalna funkcja DETR pomaga upewnij się, że model generuje dokładne i wiarygodne prognozy. Całkowita strata oparta na zestawie dopasowuje przewidywane ramki ograniczające do pól prawdy podstawowej. Ta funkcja straty zapewnia, że każda przewidywana ramka ograniczająca jest dopasowana tylko do jednej ramki ograniczającej prawdy podstawowej i odwrotnie.
Diagram przedstawia proces obliczania straty opartej na zestawie.
Rozpoczynając przeglądanie powyższego diagramu, najpierw natrafiamy na fascynujący etap wejściowy, w którym do systemu wprowadzane są przewidywane i ugruntowane obiekty prawdy. W miarę zagłębiania się w mechanikę, nasza uwaga skupia się na procesie obliczeniowym, który obejmuje obliczenie macierzy kosztów.
Algorytm węgierski pojawia się na czas, aby zaaranżować optymalne dopasowanie obiektów przewidywanych i obiektów rzeczywistych — algorytm uwzględnia straty w klasyfikacji i obwiedni dla każdej pary dopasowań.
Prognozy, które nie znajdują odpowiednika, otrzymują etykietę „brak obiektu” z oceną odpowiadającej im utraty klasyfikacji. Wszystkie te straty są agregowane w celu obliczenia całkowitej straty opartej na zestawie, która jest następnie wyprowadzana, co oznacza koniec procesu.
To unikalne dopasowanie zmusza model do dokonywania odrębnych przewidywań dla każdego obiektu. Globalny charakter łącznej oceny całego zestawu prognoz w porównaniu z podstawowymi prawdami powoduje, że sieć dokonuje spójnych odkryć na całym obrazie. Zatem specjalna utrata parowania zapewnia nadzór na poziomie całego zestawu predykcji, zapewniając solidną i spójną lokalizację obiektu.
Przegląd architektury DETR do wykrywania obiektów
Możemy spojrzeć na schemat architektury DETR poniżej. Kodujemy obraz z jednej strony, a następnie przekazujemy go do dekodera Transformera z drugiej strony. Żadnej szalonej inżynierii funkcji ani niczego ręcznego. Wszystko to uczy się automatycznie na podstawie danych przesyłanych przez sieć neuronową.
źródło
Jak pokazano na obrazku, architektura DETR składa się z następujących komponentów:
- Szkielet splotowy: szkielet splotowy to standardowy CNN używany do wyodrębniania cech z obrazu wejściowego. Funkcje są następnie przekazywane do kodera transformatora.
- Koder transformatora: Koder transformatora przetwarza cechy wyodrębnione przez szkielet splotowy i generuje zestaw map funkcji. Koder transformatorowy wykorzystuje samouważność do uchwycenia relacji między obiektami na obrazie.
- Dekoder transformatora: dekoder transformatora otrzymuje jako dane wejściowe kilka osadzonych ustalonych pozycji, które nazywamy zapytaniami obiektowymi. Zwraca również uwagę na wyjście enkodera. Każde wyjście z dekodera jest osadzane we współdzielonej sieci ze sprzężeniem zwrotnym (FFN), która przewiduje albo wykrycie (klasa i ramka ograniczająca), albo klasę „braku obiektu”.
- Zapytania obiektowe: Zapytania obiektowe to wyuczone osadzania pozycyjne wykorzystywane przez dekoder transformatora do obsługi sygnału wyjściowego kodera. Zapytania dotyczące obiektów są uczone podczas uczenia i wykorzystywane do przewidywania ostatecznych wykryć.
- Głowica detekcyjna: Głowica detekcyjna to sieć neuronowa ze sprzężeniem zwrotnym, która pobiera sygnał wyjściowy z dekodera transformatorowego i generuje ostateczny zestaw wykryć. Głowica detekcyjna przewiduje klasę i obwiednię dla każdego zapytania o obiekt.
Architekturę Transformers przyjętą przez DETR pokazano na poniższym obrazku:
źródło
DETR wprowadza kilka nowych koncepcji wykrywania obiektów. Wykorzystuje zapytania obiektowe, klucze i wartości w ramach mechanizmu samouważności Transformera.
Zwykle liczba zapytań o obiekty jest ustalana z góry i nie zmienia się w zależności od tego, ile obiektów faktycznie znajduje się na obrazie. Klucze i wartości pochodzą z kodowania obrazu za pomocą CNN. Klawisze pokazują, gdzie na obrazie znajdują się różne punkty, a wartości zawierają informacje o obiektach. Te klucze i wartości służą do samouwagi, dzięki czemu model może określić, które części obrazu są najważniejsze.
Prawdziwa innowacja w DETR polega na wykorzystaniu wielogłowej samouwagi. Pozwala to DETR zrozumieć złożone relacje i powiązania między różnymi obiektami na obrazie. Każda głowa uwagi może skupiać się jednocześnie na różnych fragmentach obrazu.
Wykorzystanie modelu DETR do detekcji obiektów z transformatorami o ściskającej powierzchni
Model Facebook/detr-resnet-50 jest implementacją modelu DETR. W swej istocie jest zasilany architekturą transformatorową.
W szczególności model ten wykorzystuje transformator koder-dekoder i szkieletową splotową sieć neuronową ResNet-50. Oznacza to, że może analizować obraz, wykrywać w nim różne obiekty i identyfikować, jakie to są obiekty.
Naukowcy przeszkolili ten model na ogromnym zbiorze danych o nazwie COCO, który zawiera mnóstwo oznaczonych etykietami obrazów codziennego użytku przedstawiających ludzi, zwierzęta i samochody. W ten sposób model nauczył się jak profesjonalista wykrywać przedmioty codziennego użytku w świecie rzeczywistym. Dostarczony kod demonstruje zastosowanie modelu DETR do wykrywania obiektów.
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}"
)
Wyjście:
- Powyższy kod wykonuje pewne czynności związane z wykrywaniem obiektów. Po pierwsze, pobiera potrzebne biblioteki, takie jak transformatory Hugging Face i kilka innych standardowych, takich jak latarka, PIL i żądania.
- Następnie ładuje obraz z adresu URL za pomocą żądań. Wysyła obraz do obróbki przy użyciu
DetrImageProcessor
w celu przygotowania go do modelu. - Tworzy instancję modelu
DetrForObjectDetection
z „facebook/detr-resnet-50” przy użyciu metodyfrom_pretrained
. Parametrrevision="no_timm"
określa znacznik wersji, jeśli zależność od czasu nie jest pożądana. - Po przygotowaniu obrazu i modelu obraz jest wprowadzany do modelu, co zapewnia płynne wykrywanie obiektów.
procesor
przygotowuje obraz do wprowadzenia, amodel
wykonuje zadanie wykrywania obiektu. - Dane wyjściowe modelu, które obejmują ramki ograniczające, logity klas i inne istotne informacje o wykrytych obiektach na obrazie, są następnie przetwarzane końcowo przy użyciu metody
processor.post_process_object_detection
w celu uzyskania ostatecznych wyników wykrywania . - Następnie kod iteruje po wynikach, aby wydrukować wykryte obiekty, ich wskaźniki pewności i lokalizację na obrazie.
Wniosek
DETR to model głębokiego uczenia się do wykrywania obiektów, który wykorzystuje architekturę Transformer. Początkowo został zaprojektowany do zadań związanych z przetwarzaniem języka naturalnego (NLP) jako jego główny komponent pozwalający w unikalny i wysoce skuteczny sposób rozwiązać problem wykrywania obiektów.
DETR traktuje problem wykrywania obiektów inaczej niż tradycyjne systemy wykrywania obiektów, takie jak Faster R-CNN czy YOLO. Upraszcza proces wykrywania, usuwając wiele ręcznie zaprojektowanych komponentów, które kodują wcześniejszą wiedzę, takich jak kotwice przestrzenne lub niemaksymalne tłumienie.
Wykorzystuje ustaloną funkcję globalnej straty, która zmusza model do generowania unikalnych prognoz dla każdego obiektu poprzez dopasowywanie ich parami. Ta sztuczka pomaga DETR dokonywać dobrych przewidywań, którym możemy zaufać.