Modele i platformy AI

YOLOv9: Skok w wykrywaniu obiektów w czasie rzeczywistym

mm
Dodaj Unite.AI do preferowanych źródeł w Google

Wykrywanie obiektów odnotowało gwałtowny postęp w ostatnich latach dzięki algorytmom głębokiego uczenia, takim jak YOLO (You Only Look Once). Najnowsza wersja, YOLOv9, przynosi znaczne udoskonalenia w zakresie dokładności, wydajności i zastosowania w porównaniu z poprzednimi wersjami. W tym poście zagłębimy się w innowacje, które sprawiają, że YOLOv9 jest nowym stanem sztuki w wykrywaniu obiektów w czasie rzeczywistym.

Szybki przewodnik po wykrywaniu obiektów

Przed omówieniem nowości w YOLOv9, krótko przypomnijmy, jak działa wykrywanie obiektów. Celem wykrywania obiektów jest identyfikacja i lokalizacja obiektów w obrębie obrazu, takich jak samochody, ludzie lub zwierzęta. Jest to kluczowa funkcjonalność dla aplikacji takich jak samochody autonomiczne, systemy nadzoru i wyszukiwanie obrazów.

Detektor otrzymuje obraz jako dane wejściowe i generuje prostokąty ograniczające wykryte obiekty, każdy z przypisaną etykietą klasy. Popularne zestawy danych, takie jak MS COCO, zapewniają tysiące oznaczonych obrazów do trenowania i oceny tych modeli.

Istnieją dwa główne podejścia do wykrywania obiektów:

  • Detektory dwuetapowe, takie jak Faster R-CNN, najpierw generują propozycje regionów, a następnie klasyfikują i udoskonalają granice każdego regionu. Są one zazwyczaj bardziej dokładne, ale wolniejsze.
  • Detektory jednowarstwowe, takie jak YOLO, stosują model bezpośrednio na obrazie w jednej przejściu. Zazwyczaj dokładność jest mniejsza, ale czasy inferencji są znacznie szybsze.

YOLO zapoczątkował podejście jednowarstwowe. Zobaczmy, jak ewoluował on w kolejnych wersjach, aby poprawić dokładność i wydajność.

Przegląd poprzednich wersji YOLO

Rodzina modeli YOLO była na czele szybkiego wykrywania obiektów od momentu opublikowania pierwszej wersji w 2016 roku. Oto krótki przegląd, jak YOLO ewoluował w kolejnych iteracjach:

  • YOLOv1 zaproponował zunifikowany model do przewidywania prostokątów ograniczających i prawdopodobieństw klas bezpośrednio z pełnych obrazów w jednej przejściu. To sprawiło, że był on niezwykle szybki w porównaniu z poprzednimi modelami dwuetapowymi.
  • YOLOv2 poprawił oryginalny model, stosując normalizację wsadową dla lepszej stabilności, kotwicząc pudełka w różnych skalach i stosunkach, aby wykryć różne rozmiary, oraz szereg innych optymalizacji.
  • YOLOv3 dodał nowy ekstraktor cech o nazwie Darknet-53 z większą liczbą warstw i skrótów między nimi, co dalej poprawiło dokładność.
  • YOLOv4 połączył pomysły z innych detektorów obiektów i modeli segmentacji, aby jeszcze bardziej poprawić dokładność, jednocześnie utrzymując szybkie czasy inferencji.
  • YOLOv5 całkowicie przepisał YOLOv4 w PyTorch i dodał nowy ekstraktor cech o nazwie CSPDarknet wraz z kilkoma innymi udoskonaleniami.
  • YOLOv6 kontynuował optymalizację architektury i procesu trenowania, z modelami wstępnie trenowanymi na dużych zewnętrznych zestawach danych, aby dalej poprawić wydajność.

Podsumowując, poprzednie wersje YOLO osiągały większą dokładność poprzez udoskonalenia architektury modelu, technik trenowania i wstępnego trenowania. Jednakże, im modele są większe i bardziej złożone, tym bardziej cierpi na to szybkość i wydajność.

Potrzeba lepszej wydajności

Wiele aplikacji wymaga, aby wykrywanie obiektów działo się w czasie rzeczywistym na urządzeniach z ograniczonymi zasobami obliczeniowymi. Im modele są większe i bardziej obliczeniowo intensywne, tym mniej praktyczne jest ich wdrożenie.

Na przykład, samochód autonomiczny musi wykrywać obiekty z wysoką częstotliwością klatek, używając procesorów wewnątrz pojazdu. Kamera bezpieczeństwa musi uruchamiać wykrywanie obiektów na swoim strumieniu wideo w ramach własnego sprzętu wbudowanego. Telefony i inne urządzenia konsumenckie mają bardzo ścisłe ograniczenia mocy i termiczne.

Ostatnie wersje YOLO osiągają wysoką dokładność z dużą liczbą parametrów i operacji mnożenia-dodawania (FLOPs). Jednakże, to odbywa się kosztem szybkości, rozmiaru i wydajności mocy.

Na przykład, YOLOv5-L wymaga ponad 100 miliardów FLOPs, aby przetworzyć jeden obraz o rozdzielczości 1280×1280. To jest zbyt wolno dla wielu przypadków użycia w czasie rzeczywistym. Trend coraz większych modeli zwiększa również ryzyko przeuczenia i utrudnia generalizację.

Aby więc rozszerzyć zastosowanie wykrywania obiektów, musimy znaleźć sposoby na poprawę wydajności – osiąganie lepszej dokładności z mniejszą liczbą parametrów i obliczeń. Zobaczmy, jakie techniki zostały zastosowane w YOLOv9, aby pokonać ten wyzwanie.

YOLOv9 – lepsza dokładność z mniejszymi zasobami

Badacze za YOLOv9 skupili się na poprawie wydajności, aby osiągnąć wydajność w czasie rzeczywistym na szerszym zakresie urządzeń. Wprowadzili dwie kluczowe innowacje:

  1. Nową architekturę modelu o nazwie General Efficient Layer Aggregation Network (GELAN), która maksymalizuje dokładność, minimalizując parametry i FLOPs.
  2. Technikę trenowania o nazwie Programmable Gradient Information (PGI), która zapewnia bardziej niezawodne gradienty, szczególnie dla mniejszych modeli.

Zobaczmy, jak każde z tych udoskonalenia pomaga poprawić wydajność.

Bardziej wydajna architektura z GELAN

Architektura modelu jest kluczowa dla balansowania dokładności z szybkością i użyciem zasobów podczas inferencji. Sieć neuronowa musi mieć wystarczającą głębokość i szerokość, aby przechwycić istotne cechy z obrazów wejściowych. Jednakże, zbyt wiele warstw lub filtrów prowadzi do wolnych i rozdętych modeli.

Autorzy zaprojektowali GELAN specjalnie, aby wykręcić maksymalną dokładność z najmniejszej możliwej architektury.

GELAN wykorzystuje dwa główne bloki budulcowe ułożone razem:

  • Bloki agregacji warstw – agregują one transformacje w różnych gałęziach sieci, aby przechwycić cechy wieloskalowe w wydajny sposób.
  • Bloki obliczeniowe – bloki CSPNet pomagają propagować informacje przez warstwy. Każdy blok może być zastąpiony w zależności od ograniczeń obliczeniowych.

Dokładnie balansując i łącząc te bloki, GELAN osiąga punkt równowagi między wydajnością, parametrami i szybkością. Ta sama modułowa architektura może być skalowana w górę lub w dół na różne rozmiary modeli i sprzętu.

Eksperymenty pokazały, że GELAN wpasowuje więcej wydajności w mniejsze modele w porównaniu z poprzednimi architekturami YOLO. Na przykład, GELAN-Small z 7 milionami parametrów przewyższył YOLOv7-Nano z 11 milionami parametrów. GELAN-Medium z 20 milionami parametrów osiągnął wyniki porównywalne do modeli YOLOv7-średnich, wymagających 35-40 milionów parametrów.

Zatem, projektując architekturę parametryzowaną specjalnie zoptymalizowaną pod kątem wydajności, GELAN pozwala modelom działać szybciej i na bardziej ograniczonych zasobowo urządzeniach. Następnie zobaczmy, jak PGI pomaga im trenować lepiej.

Lepsze trenowanie z Programmable Gradient Information (PGI)

Trenowanie modelu jest równie ważne, aby maksymalizować dokładność z ograniczonymi zasobami. Autorzy YOLOv9 zidentyfikowali problemy z trenowaniem mniejszych modeli spowodowane niezawodnymi informacjami gradientów.

Gradienty określają, o ile są aktualizowane wagi modelu podczas trenowania. Szumione lub mylące gradienty prowadzą do słabej zbieżności. Problem ten staje się bardziej zauważalny dla mniejszych sieci.

Technika głębokiej nadzoru rozwiązuje to, wprowadzając dodatkowe boczne gałęzie z stratami, aby propagować lepszy sygnał gradientu przez sieć. Jednak tendencja do rozpadu i powodowania rozbieżności dla mniejszych, lekkich modeli.

YOLOv9: Learning What You Want to Learn Using Programmable Gradient Information

YOLOv9: Learning What You Want to Learn Using Programmable Gradient Information https://arxiv.org/abs/2402.13616

Aby pokonać to ograniczenie, YOLOv9 wprowadza Programmable Gradient Information (PGI). PGI składa się z dwóch głównych składników:

  • Boczne gałęzie odwracalne – zapewniają one czystsze gradienty, utrzymując odwracalne połączenia z wejściem, używając bloków takich jak RevCols.
  • Wielopoziomowa integracja gradientów – unika rozbieżności, łącząc gradienty ze wszystkich gałęzi przed wprowadzeniem ich z powrotem do głównego modelu.

Generując bardziej niezawodne gradienty, PGI pomaga mniejszym modelom trenować równie efektywnie, jak większe:

Eksperymenty pokazały, że PGI poprawił dokładność we wszystkich rozmiarach modeli, szczególnie w mniejszych konfiguracjach. Na przykład, zwiększył wyniki AP o 0,1-0,4% dla YOLOv9-Small w porównaniu z modelem GELAN-Small. Zyski były jeszcze bardziej znaczące dla głębszych modeli, takich jak YOLOv9-E, osiągających 55,6% mAP.

Zatem PGI umożliwia mniejszym, wydajnym modelom trenować do wyższych poziomów dokładności, które wcześniej były osiągalne tylko przez przecenione modele.

YOLOv9 ustanawia nowy stan sztuki dla wydajności

Łącząc architektoniczne udoskonalenia GELAN z udoskonaleniami trenowania z PGI, YOLOv9 osiąga bezprecedensową wydajność i wydajność:

  • W porównaniu z poprzednimi wersjami YOLO, YOLOv9 osiąga lepszą dokładność z 10-15% mniejszą liczbą parametrów i 25% mniejszymi obliczeniami. To przynosi znaczne udoskonalenia w szybkości i możliwościach na różnych rozmiarach modeli.
  • YOLOv9 przewyższa inne detektory w czasie rzeczywistym, takie jak YOLO-MS i RT-DETR, pod względem wydajności parametrów i FLOPs. Wymaga znacznie mniej zasobów, aby osiągnąć dany poziom wydajności.
  • Mniejsze modele YOLOv9 nawet biją większe wstępnie wytrenowane modele, takie jak RT-DETR-X. Pomimo użycia 36% mniejszej liczby parametrów, YOLOv9-E osiąga lepsze 55,6% AP, dzięki bardziej wydajnej architekturze.

Zatem, rozwiązując problem wydajności na poziomie architektury i trenowania, YOLOv9 ustanawia nowy stan sztuki w maksymalizowaniu wydajności w ramach ograniczonych zasobów.

GELAN – zoptymalizowana architektura dla wydajności

YOLOv9 wprowadza nową architekturę o nazwie General Efficient Layer Aggregation Network (GELAN), która maksymalizuje dokładność w ramach minimalnego budżetu parametrów. Buduje on na podstawie poprzednich modeli YOLO, ale optymalizuje różne komponenty specjalnie dla wydajności.

https://arxiv.org/abs/2402.13616

YOLOv9: Learning What You Want to Learn Using Programmable Gradient Information
https://arxiv.org/abs/2402.13616

Tło CSPNet i ELAN

Ostatnie wersje YOLO od wersji 5 wykorzystywały trzon CSPNet (Cross-Stage Partial Network) w celu poprawy wydajności. CSPNet pozwala na agregację map cech w różnych gałęziach sieci, dodając minimalny nakład:

To jest bardziej efektywne niż proste stapianie warstw w seriach, co często prowadzi do redundantnych obliczeń i nadmiaru parametrów.

YOLOv7 ulepszył CSPNet do Efficient Layer Aggregation Network (ELAN), który uprościł strukturę bloku:

ELAN usunął połączenia skrótowe między warstwami na rzecz węzła agregacji na wyjściu. To dalej poprawiło wydajność parametrów i FLOPs.

Uogólnienie ELAN dla elastycznej wydajności

Autorzy uogólnili ELAN, tworząc GELAN, trzon wykorzystywany w YOLOv9. GELAN wprowadził kluczowe modyfikacje, aby poprawić elastyczność i wydajność:

  • Zamienne bloki obliczeniowe – poprzedni ELAN miał stałe warstwy konwolucyjne. GELAN pozwala na zastąpienie dowolnym blokiem obliczeniowym, takim jak ResNets lub CSPNet, zapewniając więcej opcji architektonicznych.
  • Parametryzacja głębokości – oddzielne głębokości bloków dla głównej gałęzi a gałęzi agregującej upraszczają dostosowywanie użycia zasobów.
  • Stabilne wyniki w różnych konfiguracjach – GELAN utrzymuje dokładność z różnymi typami bloków i głębokościami, umożliwiając elastyczne skalowanie.

Te zmiany czynią GELAN silnym, ale konfigurowalnym trzonem dla maksymalizowania wydajności:

W eksperymentach modele GELAN konsekwentnie przewyższały poprzednie architektury YOLO pod względem dokładności na parametr:

  • GELAN-Small z 7 milionami parametrów bije YOLOv7-Nano z 11 milionami parametrów
  • GELAN-Medium dorównuje cięższym modelom YOLOv7-średnim

Zatem GELAN zapewnia zoptymalizowany trzon do skalowania YOLO na różne cele wydajności. Następnie zobaczmy, jak PGI pomaga im trenować lepiej.

PGI – udoskonalone trenowanie dla wszystkich rozmiarów modeli

Podczas gdy wybór architektury wpływa na wydajność podczas inferencji, proces trenowania również wpływa na użycie zasobów. YOLOv9 wykorzystuje nową technikę o nazwie Programmable Gradient Information (PGI), aby poprawić trenowanie na różnych rozmiarach i złożonościach modeli.

Problem niezawodnych gradientów

Podczas trenowania, funkcja straty porównuje wyjścia modelu z etykietami rzeczywistymi i oblicza gradient błędu, aby zaktualizować parametry. Szumione lub mylące gradienty prowadzą do słabej zbieżności i wydajności.

Bardzo głębokie sieci nasilają ten problem przez wąskie gardło informacyjne – gradienty z głębokich warstw są skażone utraconymi lub skompresowanymi sygnałami.

Głęboki nadzór pomaga, wprowadzając dodatkowe boczne gałęzie ze stratami, aby zapewnić czystsze gradienty. Jednak często rozpadają się one dla mniejszych modeli, powodując interferencję i rozbieżność między różnymi gałęziami.

Zatem potrzebujemy sposobu, aby zapewnić niezawodne gradienty, które działają we wszystkich rozmiarach modeli, szczególnie mniejszych.

Wprowadzenie Programmable Gradient Information (PGI)

Aby rozwiązać problem niezawodnych gradientów, YOLOv9 proponuje Programmable Gradient Information (PGI). PGI składa się z dwóch głównych składników, zaprojektowanych, aby poprawić jakość gradientów:

1. Boczne gałęzie odwracalne

Dodatkowe gałęzie zapewniają odwracalne połączenia z powrotem do wejścia, używając bloków takich jak RevCols. To utrzymuje czyste gradienty, unikając wąskiego gardła informacyjnego.

2. Wielopoziomowa integracja gradientów

Blok fuzji łączy gradienty ze wszystkich gałęzi przed wprowadzeniem ich z powrotem do głównego modelu. To zapobiega rozbieżności między gałęziami.

Generując bardziej niezawodne gradienty, PGI poprawia zbieżność trenowania i wydajność we wszystkich rozmiarach modeli:

  • Modele lekkie korzystają z głębokiego nadzoru, którego wcześniej nie mogły wykorzystać
  • Większe modele otrzymują czystsze gradienty, umożliwiając lepszą generalizację

Eksperymenty pokazały, że PGI poprawił dokładność dla małych i dużych konfiguracji YOLOv9 w porównaniu z modelem GELAN:

  • +0,1-0,4% AP dla YOLOv9-Small
  • +0,5-0,6% AP dla większych modeli YOLOv9

Zatem PGI umożliwia modelom dużym i małym trenować się bardziej efektywnie.

YOLOv9 ustanawia nowy stan sztuki dla dokładności

Łącząc architektoniczne udoskonalenia GELAN z udoskonaleniami trenowania PGI, YOLOv9 osiąga nowy stan sztuki w wykrywaniu obiektów w czasie rzeczywistym.

Eksperymenty na zestawie danych COCO pokazują, że YOLOv9 przewyższa poprzednie wersje YOLO, a także inne detektory w czasie rzeczywistym, takie jak YOLO-MS, pod względem dokładności i wydajności:

Oto kilka kluczowych wyróżnień:

  • YOLOv9-Small przewyższa YOLO-MS-Small z 10% mniejszą liczbą parametrów i obliczeń
  • YOLOv9-Medium dorównuje cięższym modelom YOLOv7, używając mniej niż połowę zasobów
  • YOLOv9-Large bije YOLOv8-X z 15% mniejszą liczbą parametrów i 25% mniejszymi FLOPs

Zaskakująco, mniejsze modele YOLOv9 nawet biją cięższe modele innych detektorów, które wykorzystują wstępne trenowanie, takie jak RT-DETR-X. Pomimo 4-krotnie mniejszej liczby parametrów, YOLOv9-E bije RT-DETR-X pod względem dokładności.

Te wyniki demonstrują wyższą wydajność YOLOv9. Udoskonalenia umożliwiają wykrywanie obiektów o wysokiej dokładności w większej liczbie przypadków użycia.

Kluczowe wnioski dotyczące ulepszeń YOLOv9

Podsumujmy niektóre z kluczowych ulepszeń i innowacji, które umożliwiają nowy stan sztuki YOLOv9:

  • Zoptymalizowana architektura GELAN – poprawia wydajność parametrów przez elastyczne bloki agregacji. Pozwala na skalowanie modeli dla różnych celów.
  • Programmable Gradient Information – zapewnia niezawodne gradienty przez odwracalne połączenia i fuzję. Poprawia trenowanie na wszystkich rozmiarach modeli.
  • Większa dokładność z mniejszymi zasobami – redukuje parametry i obliczenia o 10-15% w porównaniu z YOLOv8, przy lepszej dokładności. Umożliwia bardziej efektywną inferencję.
  • Lepsze wyniki we wszystkich rozmiarach modeli – ustanawia nowy stan sztuki dla lekkich, średnich i dużych konfiguracji modeli. Przewyższa ciężko wstępnie wytrenowane modele.
  • Szerokie zastosowanie – wyższa wydajność rozszerza zakres przypadków użycia, takich jak wykrywanie w czasie rzeczywistym na urządzeniach brzegowych.

Poprzez bezpośrednie rozwiązanie problemów dokładności, wydajności i zastosowania, YOLOv9 przesuwa wykrywanie obiektów do przodu, aby spełnić różnorodne potrzeby świata rzeczywistego. Ulepszenia tworzą solidną podstawę dla przyszłej innowacji w tej krytycznej funkcjonalności widzenia komputerowego.

Przez ostatnie pięć lat zanurzałem się w fascynującym świecie Machine Learning i Deep Learning. Moja pasja i ekspertyza doprowadziły mnie do udziału w ponad 50 różnorodnych projektach inżynierii oprogramowania, ze szczególnym uwzględnieniem AI/ML. Moja nieustanna ciekawość również skierowała mnie w stronę Natural Language Processing, dziedziny, którą chcę dalej eksplorować.