Modely a platformy AI

YOLOv9: Skok v reálném čase objektové detekce

mm
Přidejte Unite.AI mezi své preferované zdroje na Google

Objektová detekce prošla rychlým pokrokem v posledních letech díky algoritmům hlubokého učení jako YOLO (You Only Look Once). Nejnovější iterace, YOLOv9, přináší významná zlepšení.accuracy, efektivity a použitelnosti oproti předchozím verzím. V tomto příspěvku se podíváme na inovace, které činí YOLOv9 novým stavem umění pro detekci objektů v reálném čase.

Rychlý úvod do objektové detekce

Než se ponoříme do toho, co je nové u YOLOv9, stručně si připomeňme, jak objektová detekce funguje. Cílem objektové detekce je identifikovat a lokalizovat objekty uvnitř obrazu, jako jsou auta, lidé nebo zvířata. Je to klíčová schopnost pro aplikace, jako jsou autonomní vozidla, systémy dohledu a vyhledávání obrázků.

Detektor bere obraz jako vstup a výstupem jsou hranice kolem detekovaných objektů, každý s přidruženým štítkem třídy. Populární datové sady, jako je MS COCO, poskytují tisíce označených obrázků pro trénování a vyhodnocení těchto modelů.

Existují dva hlavní přístupy k objektové detekci:

  • Dvěfázové detektory jako Faster R-CNN nejprve generují regionální návrhy, pak klasifikují a upravují hranice každého regionu. Tendenci být přesnější, ale pomalejší.
  • Jednofázové detektory jako YOLO aplikují model přímo na obraz v jednom průchodu. Obchodují určitou přesnost za velmi rychlé časy inference.

YOLO zavedl jednofázový přístup. Podíváme se, jak se vyvinul přes multiple verze, aby zlepšil přesnost a efektivitu.

Přehled předchozích verzí YOLO

Rodina modelů YOLO (You Only Look Once) je na špici rychlé objektové detekce od původní verze z roku 2016. Zde je rychlý přehled, jak YOLO prošlo přes multiple iterace:

  • YOLOv1 navrhl sjednocený model pro předpověď hranic a pravděpodobností tříd přímo z plných obrázků v jednom průchodu. To jej činilo extrémně rychlým ve srovnání s předchozími dvoufázovými modely.
  • YOLOv2 vylepšil původní verzi pomocí batch normalizace pro lepší stabilitu, kotvení boxů na různých škálách a poměrech stran pro detekci různých velikostí a řadu dalších optimalizací.
  • YOLOv3 přidal nový extraktor funkcí zvaný Darknet-53 s více vrstvami a zkratkami mezi nimi, dále zlepšující přesnost.
  • YOLOv4 kombinoval nápady z jiných detektorů objektů a modelů segmentace, aby ještě více zvýšil přesnost, zatímco stále udržoval rychlé časy inference.
  • YOLOv5 kompletně přepsal YOLOv4 v PyTorch a přidal nový extraktor funkcí zvaný CSPDarknet spolu s několika dalšími vylepšeními.
  • YOLOv6 pokračoval v optimalizaci architektury a procesu trénování, s modely předtrénovanými na velkých externích datech, aby dále zvýšil výkon.

Takže shrneme-li, předchozí verze YOLO dosáhly vyšší přesnosti prostřednictvím zlepšení architektury modelu, technik trénování a předtrénování. Ale jak modely rostou a stávají se složitějšími, rychlost a efektivita začínají trpět.

Potřebujeme lepší efektivitu

Mnohé aplikace vyžadují, aby objektová detekce běžela v reálném čase na zařízeních s omezenými výpočetními zdroji. Jak modely rostou a stávají se výpočetně náročnějšími, stávají se nepoužitelnými pro nasazení.

Například autonomní vozidlo potřebuje detekovat objekty na vysokých snímcích pomocí procesorů uvnitř vozidla. Bezpečnostní kamera potřebuje spustit detekci objektů na svém videoproudu uvnitř své vestavěné hardwarové části. Telefony a další spotřební zařízení mají velmi přísné omezení výkonu a tepelné limity.

Poslední verze YOLO dosahují vysoké přesnosti s velkým počtem parametrů a operací (FLOPs). Ale to stojí za cenu rychlosti, velikosti a energetické efektivnosti.

Například YOLOv5-L vyžaduje přes 100 miliard FLOPs pro zpracování jediného 1280×1280 obrázku. To je příliš pomalé pro mnoho reálných aplikací. Trend stále větších modelů také zvyšuje riziko přeučení a činí generalizaci obtížnější.

Takže abychom rozšířili použitelnost objektové detekce, potřebujeme způsoby, jak zlepšit efektivitu – získat lepší přesnost s méně parametry a výpočty. Podíváme se na techniky používané v YOLOv9, aby tato výzva byla zvládnuta.

YOLOv9 – Lepší přesnost s méně zdroji

Výzkumníci za YOLOv9 se zaměřili na zlepšení efektivnosti, aby dosáhli výkonu v reálném čase napříč širším spektrem zařízení. Představili dvě klíčové inovace:

  1. Novou architekturu modelu zvanou General Efficient Layer Aggregation Network (GELAN), která maximalizuje přesnost, zatímco minimalizuje parametry a FLOPs.
  2. Trénovací techniku zvanou Programmable Gradient Information (PGI), která poskytuje spolehlivější gradienty, zejména pro menší modely.

Podíváme se, jak každá z těchto inovací pomáhá zlepšit efektivitu.

Více efektivnější architektura s GELAN

Architektura modelu sama o sobě je kritická pro vyvážení přesnosti proti rychlosti a použití zdrojů během inference. Neuronová síť potřebuje dostatečnou hloubku a šířku, aby zachytila relevantní funkce z vstupních obrázků. Ale příliš mnoho vrstev nebo filtrů vede k pomalým a nafouknutým modelům.

Autoři navrhli GELAN speciálně, aby vymačkali maximum přesnosti z nejmenší možné architektury.

GELAN používá dva hlavní stavební bloky navrstvené spolu:

  • Účinné bloky agregace vrstev – Tyto agregují transformace napříč více větvemi sítě, aby zachytily multi-škálové funkce efektivně.
  • Computační bloky – CSPNet bloky pomáhají propagovat informace napříč vrstvami. Libovolný blok může být nahrazen na základě výpočetních omezení.

Péčlivě vyvážením a kombinováním těchto bloků GELAN dosahuje sladkého místa mezi výkonem, parametry a rychlostí. Stejná modulární architektura může být škálována nahoru nebo dolů napříč různými velikostmi modelů a hardwaru.

Experimenty ukázaly, že GELAN vtlačuje více výkonu do menších modelů ve srovnání s předchozími architekturami YOLO. Například GELAN-Small s 7M parametry překonal YOLOv7-Nano s 11M parametry. A GELAN-Medium s 20M parametry dosáhl stejné úrovně jako YOLOv7 střední modely vyžadující 35-40M parametry.

Takže navržením parametrizované architektury speciálně optimalizované pro efektivitu GELAN umožňuje modelům běžet rychleji a na více zařízení s omezenými zdroji. Další budeme vidět, jak PGI pomáhá jim trénovat lépe.

Lepší trénování s Programmable Gradient Information (PGI)

Trénování modelu je stejně důležité pro maximalizaci přesnosti s omezenými zdroji. Autoři YOLOv9 identifikovali problémy s trénováním menších modelů způsobené nespolehlivými gradienty.

Gradienty určují, kolik se váhy modelu aktualizují během trénování. Hlučné nebo zavádějící gradienty vedou k špatné konvergenci. Tento problém se stává více výrazným pro menší sítě.

Technika hluboké supervize řeší toto, zavádějící další postranní větve s ztrátami, aby propagovala lepší gradientní signál skrze síť. Ale tendenci rozpadat se a způsobovat divergence pro menší lehké modely.

YOLOv9: Učení toho, co chcete se naučit pomocí Programmable Gradient Information

YOLOv9: Učení toho, co chcete se naučit pomocí Programmable Gradient Information https://arxiv.org/abs/2402.13616

Abyste překonali toto omezení, YOLOv9 zavádí Programmable Gradient Information (PGI). PGI má dvě hlavní komponenty:

  • Pomocné reverzibilní větve – Tyto poskytují čistější gradienty, udržují reverzibilní spojení se vstupem pomocí bloků jako RevCols.
  • Multi-úrovní integrace gradientů – Toto vyhýbá se divergenci z různých postranních větví, které interferují. Kombinuje gradienty ze všech větví, než je vrátí zpět do hlavního modelu.

Generováním spolehlivějších gradientů PGI pomáhá menším modelům trénovat stejně účinně jako větší:

Experimenty ukázaly, že PGI zlepšil přesnost napříč všemi velikostmi modelů, zejména menších konfigurací. Například to zvýšilo skóre AP YOLOv9-Small o 0,1-0,4% oproti základnímu GELAN-Small. Zisky byly ještě významnější pro hlubší modely, jako je YOLOv9-E na 55,6% mAP.

Takže PGI umožňuje menším, efektivním modelům trénovat na vyšší úrovně přesnosti, dříve dosažitelné pouze přeučením modelů.

YOLOv9 nastavuje nový stav umění pro efektivitu

Kombinací architektonických pokroků z GELAN a trénovacích vylepšení z PGI YOLOv9 dosahuje bezprecedentní efektivnosti a výkonu:

  • Ve srovnání s předchozími verzemi YOLO YOLOv9 dosahuje lepší přesnosti s 10-15% méně parametry a 25% méně výpočty. To přináší významná zlepšení rychlosti a schopností napříč velikostmi modelů.
  • YOLOv9 překonává ostatní detektory v reálném čase, jako YOLO-MS a RT-DETR, z hlediska parametrické efektivnosti a FLOPs. Vyžaduje mnohem méně zdrojů, aby dosáhl stejné úrovně výkonu.
  • Menší modely YOLOv9 dokonce překonávají větší předtrénované modely, jako RT-DETR-X. Přes použití 36% méně parametrů YOLOv9-E dosahuje lepší 55,6% AP díky efektivnější architektuře.

Takže řešením efektivnosti na úrovni architektury a trénování YOLOv9 nastavuje nový stav umění pro maximalizaci výkonu v rámci omezených zdrojů.

GELAN – Optimalizovaná architektura pro efektivitu

YOLOv9 představuje novou architekturu zvanou General Efficient Layer Aggregation Network (GELAN), která maximalizuje přesnost v rámci minimálního parametrického rozpočtu. Vznikla na základě předchozích modelů YOLO, ale optimalizovala různé komponenty speciálně pro efektivitu.

https://arxiv.org/abs/2402.13616

YOLOv9: Učení toho, co chcete se naučit pomocí Programmable Gradient Information https://arxiv.org/abs/2402.13616

Pozadí CSPNet a ELAN

Poslední verze YOLO od verze 5 využívají backbony založené na Cross-Stage Partial Network (CSPNet) pro zlepšení efektivnosti. CSPNet umožňuje agregovat funkce napříč paralelními větvemi sítě, zatímco přidává minimální režii:

To je efektivnější než jednoduše skládat vrstvy sériově, což často vede k redundanci výpočtů a přeučení.

YOLOv7 vylepšil CSPNet na Efficient Layer Aggregation Network (ELAN), který zjednodušil strukturu bloků:

ELAN odstranil zkratkové spojení mezi vrstvami ve prospěch agregovaného uzlu na výstupu. To dále zlepšilo parametrickou a FLOPs efektivitu.

Generalizace ELAN pro flexibilní efektivitu

Autoři zobecnili ELAN ještě dále, aby vytvořili GELAN, který je používán v YOLOv9. GELAN provedl klíčové úpravy, aby zlepšil flexibilitu a efektivitu:

  • Výměnné computační bloky – Předchozí ELAN měl pevné konvoluční vrstvy. GELAN umožňuje nahradit libovolný computační blok, jako jsou ResNety nebo CSPNet, poskytující více architektonických možností.
  • Hloubkové parametrizace – Samostatné blokové hloubky pro hlavní větev vs. agregátorovou větev zjednodušují jemné ladění použití zdrojů.
  • Stabilní výkon napříč konfiguracemi – GELAN udržuje přesnost s různými typy bloků a hloubkami, umožňující flexibilní škálování.

Tyto změny činí GELAN silnou, ale konfigurovatelnou architekturou pro maximalizaci efektivnosti:

Experimenty ukázaly, že modely GELAN konzistentně překonávají předchozí architektury YOLO z hlediska přesnosti na parametr:

  • GELAN-Small s 7M parametry překonal YOLOv7-Nano s 11M parametry
  • GELAN-Medium odpovídal těžším YOLOv7 středním modelům

Takže GELAN poskytuje optimalizovanou architekturu pro škálování YOLO napříč různými cíli efektivnosti. Další uvidíme, jak PGI pomáhá jim trénovat lépe.

PGI – Vylepšené trénování pro všechny velikosti modelů

Zatímco výběr architektury ovlivňuje efektivitu během inference, proces trénování také ovlivňuje použití zdrojů modelu. YOLOv9 využívá novou techniku zvanou Programmable Gradient Information (PGI), aby zlepšil trénování napříč různými velikostmi a složitostmi modelů.

Problém nespolehlivých gradientů

Během trénování funkce ztráty porovnávají výstupy modelu s označenými daty a počítají chybový gradient pro aktualizaci parametrů. Hlučné nebo zavádějící gradienty vedou k špatné konvergenci a efektivitě.

Velmi hluboké sítě zhoršují tento problém prostřednictvím informačního úžinu – gradienty z hlubokých vrstev jsou poškozeny ztracenými nebo komprimovanými signály.

Hluboká supervize pomáhá, zavádějící pomocné postranní větve se ztrátami, aby poskytovala čistější gradienty. Ale často rozpadá se u menších modelů, způsobující interference a divergence mezi různými větvemi.

Takže potřebujeme způsob, jak poskytnout spolehlivé gradienty, které fungují napříč všemi velikostmi modelů, zejména menšími.

Představení Programmable Gradient Information (PGI)

Abyste řešili problém nespolehlivých gradientů, YOLOv9 navrhuje Programmable Gradient Information (PGI). PGI má dvě hlavní komponenty navržené pro zlepšení kvality gradientů:

1. Pomocné reverzibilní větve

Dodané větve poskytují reverzibilní spojení zpět k vstupu pomocí bloků jako RevCols. To udržuje čisté gradienty, vyhýbaje se informačnímu úžinu.

2. Multi-úrovní integrace gradientů

Fúzní blok agreguje gradienty ze všech větví, než je vrátí zpět do hlavního modelu. To brání divergenci napříč větvemi.

Generováním spolehlivějších gradientů PGI zlepšuje konvergenci trénování a efektivitu napříč všemi velikostmi modelů:

  • Lehké modely profitují z hluboké supervize, kterou nemohly dříve použít
  • Větší modely získávají čistější gradienty, umožňující lepší generalizaci

Experimenty ukázaly, že PGI zvýšil přesnost pro malé i velké konfigurace YOLOv9 oproti základnímu GELAN:

  • +0,1-0,4% AP pro YOLOv9-Small
  • +0,5-0,6% AP pro větší modely YOLOv9

Takže PGI s programovatelnými gradienty umožňuje modelům všech velikostí trénovat efektivněji.

YOLOv9 nastavuje nový stav umění pro přesnost

Kombinací architektonických zlepšení z GELAN a trénovacích vylepšení z PGI YOLOv9 dosahuje nového stavu umění pro detekci objektů v reálném čase.

Experimenty na datové sadě COCO ukazují, že YOLOv9 překonává předchozí verze YOLO, stejně jako ostatní detektory v reálném čase, jako YOLO-MS, z hlediska přesnosti a efektivnosti:

Některé klíčové body:

  • YOLOv9-Small překonává YOLO-MS-Small s 10% méně parametry a výpočty
  • YOLOv9-Medium odpovídá těžším YOLOv7 modelům, využívajících méně než polovinu zdrojů
  • YOLOv9-Large překonává YOLOv8-X s 15% méně parametry a 25% méně FLOPs

Zajímavé je, že menší modely YOLOv9 dokonce překonávají větší modely z jiných detektorů, které využívají předtrénování, jako RT-DETR-X. Přes použití 4x méně parametrů YOLOv9-E překonává RT-DETR-X z hlediska přesnosti.

Tyto výsledky demonstrují výjimečnou efektivitu YOLOv9. Zlepšení umožňují vysokopřesnostní detekci objektů v mnoha reálných případech.

Klíčové závěry o vylepšeních YOLOv9

Rychle zopakujme některé klíčové vylepšení a inovace, které umožňují YOLOv9 dosáhnout nového stavu umění:

  • Optimalizovaná architektura GELAN – Zlepšuje parametrickou efektivitu prostřednictvím flexibilních agregovaných bloků. Umožňuje škálování modelů pro různé cíle.
  • Programmable gradient information – Poskytuje spolehlivé gradienty prostřednictvím reverzibilních spojení a fúze. Zlepšuje trénování napříč všemi velikostmi modelů.
  • Větší přesnost s méně zdroji – Snížení parametrů a výpočtů o 10-15% oproti YOLOv8 s lepší přesností. Umožňuje efektivnější inference.
  • Lepší výsledky napříč všemi velikostmi modelů – Nastavuje nový stav umění pro lehké, střední a velké konfigurace modelů. Překonává silně předtrénované modely.
  • Rozšířená použitelnost – Vyšší efektivita rozšiřuje použitelnost do více reálných případů, jako je detekce v reálném čase na hraničních zařízeních.

Právě řešením přesnosti, efektivnosti a použitelnosti YOLOv9 posouvá detekci objektů vpřed, aby splňovala rozmanité reálné potřeby. Vylepšení poskytují silný základ pro budoucí inovace v této kritické schopnosti počítačového vidění.

Já pět let se ponořím do fascinujícího světa strojového učení a hlubokého učení. Mé vášně a odborné znalosti mě vedly k tomu, abych se podílel na více než 50 různých projektech softwarového inženýrství, se zvláštním zaměřením na AI/ML. Mé pokračující zvědavosti mě také přivedly k přirozenému jazykovému zpracování, oblasti, kterou jsem ochoten prozkoumat dále.