AI-modellen en platforms

YOLOv9: Een sprong voorwaarts in real-time objectdetectie

mm
Voeg Unite.AI toe aan je voorkeursbronnen op Google

Objectdetectie heeft in recente jaren een snelle vooruitgang geboekt dankzij diepe leer-algoritmes zoals YOLO (You Only Look Once). De laatste iteratie, YOLOv9, brengt belangrijke verbeteringen in nauwkeurigheid, efficiëntie en toepasbaarheid ten opzichte van eerdere versies. In dit artikel duiken we in de innovaties die YOLOv9 tot een nieuwe standaard zetten voor real-time objectdetectie.

Een korte inleiding over objectdetectie

Voordat we ingaan op wat er nieuw is met YOLOv9, laten we eerst even kijken hoe objectdetectie werkt. Het doel van objectdetectie is om objecten binnen een afbeelding te identificeren en te lokaliseren, zoals auto’s, mensen of dieren. Het is een belangrijke capaciteit voor toepassingen zoals zelfrijdende auto’s, bewakingsystemen en afbeeldingszoekopdrachten.

De detector neemt een afbeelding als invoer en produceert begrenzingsvakken rondom gedetecteerde objecten, elk met een bijbehorend klasse-label. Populaire datasets zoals MS COCO bieden duizenden gelabelde afbeeldingen om deze modellen te trainen en te evalueren.

Er zijn twee belangrijke benaderingen voor objectdetectie:

  • Twee-stapsdetectoren zoals Faster R-CNN genereren eerst regiovoorstellen, classificeren en verfijnen vervolgens de grenzen van elke regio. Ze zijn over het algemeen nauwkeuriger, maar langzamer.
  • Enkele-stapsdetectoren zoals YOLO passen een model rechtstreeks over de afbeelding toe in één pas. Ze offeren enige nauwkeurigheid op voor zeer snelle inferentietijden.

YOLO was een pionier op het gebied van de enkele-stapsbenadering. Laten we kijken hoe het is geëvolueerd over meerdere versies om nauwkeurigheid en efficiëntie te verbeteren.

Overzicht van eerdere YOLO-versies

De YOLO-familie van modellen staat al sinds de publicatie van de originele versie in 2016 aan de voorzijde van snelle objectdetectie. Hieronder volgt een korte overzicht van hoe YOLO is geëvolueerd over meerdere iteraties:

  • YOLOv1 stelde een uniform model voor om begrenzingsvakken en klasse-waarschijnlijkheden rechtstreeks uit volledige afbeeldingen in één pas te voorspellen. Dit maakte het extreem snel in vergelijking met eerdere twee-stapsmodellen.
  • YOLOv2 verbeterde de originele versie door batch-normalisatie te gebruiken voor betere stabiliteit, ankerdozen op verschillende schalen en aspectverhoudingen om meerdere maten te detecteren, en diverse andere optimalisaties.
  • YOLOv3 voegde een nieuwe functie-extractor toe genaamd Darknet-53 met meer lagen en shortcuts tussen hen, waardoor de nauwkeurigheid verder verbeterde.
  • YOLOv4 combineerde ideeën uit andere objectdetectoren en segmentatiemodellen om de nauwkeurigheid nog verder te verhogen, terwijl het nog steeds snelle inferentie behield.
  • YOLOv5 herschreef YOLOv4 volledig in PyTorch en voegde een nieuwe functie-extractie-backbone toe genaamd CSPDarknet, evenals diverse andere verbeteringen.
  • YOLOv6 zette de optimalisatie van de architectuur en het trainingsproces voort, met modellen die vooraf getraind waren op grote externe datasets om de prestaties verder te verbeteren.

Dus om samen te vatten, eerdere YOLO-versies bereikten hogere nauwkeurigheid door verbeteringen in modelarchitectuur, trainingsmethoden en vooraf trainen. Maar naarmate modellen groter en complexer worden, beginnen snelheid en efficiëntie te lijden.

De noodzaak voor betere efficiëntie

Veel toepassingen vereisen objectdetectie die in real-time draait op apparaten met beperkte rekenbronnen. Naarmate modellen groter en rekenintensiever worden, worden ze onpraktisch om in te zetten.

Bijvoorbeeld, een zelfrijdende auto moet objecten detecteren op hoge frame-snelheden met behulp van processors in het voertuig. Een beveiligingscamera moet objectdetectie uitvoeren op de video-feed binnen de ingebouwde hardware. Telefoons en andere consumentenapparaten hebben zeer strakke vermogens- en thermische beperkingen.

Recente YOLO-versies behalen hoge nauwkeurigheid met een groot aantal parameters en vermenigvuldigings- en optellingen (FLOPs). Maar dit gaat ten koste van snelheid, grootte en vermogens-efficiëntie.

Bijvoorbeeld, YOLOv5-L vereist meer dan 100 miljard FLOPs om één 1280×1280-afbeelding te verwerken. Dit is te langzaam voor veel real-time use-cases. De trend van steeds grotere modellen verhoogt ook het risico op overfitting en maakt het moeilijker om te generaliseren.

Dus om de toepasbaarheid van objectdetectie uit te breiden, hebben we manieren nodig om efficiëntie te verbeteren – betere nauwkeurigheid met minder parameters en berekeningen. Laten we kijken naar de technieken die in YOLOv9 worden gebruikt om deze uitdaging aan te pakken.

YOLOv9 – Betere nauwkeurigheid met minder bronnen

De onderzoekers achter YOLOv9 richtten zich op het verbeteren van de efficiëntie om real-time prestaties te bereiken op een bredere range van apparaten. Zij introduceerden twee belangrijke innovaties:

  1. Een nieuw modelarchitectuur genaamd General Efficient Layer Aggregation Network (GELAN) die de nauwkeurigheid maximaliseert terwijl het het aantal parameters en FLOPs minimaliseert.
  2. Een trainingsmethode genaamd Programmable Gradient Information (PGI) die betrouwbaardere leergradiënten biedt, vooral voor kleinere modellen.

Laten we kijken hoe elke van deze verbeteringen de efficiëntie helpt te verbeteren.

Meer efficiënte architectuur met GELAN

De modelarchitectuur zelf is cruciaal voor het balanceren van nauwkeurigheid tegenover snelheid en bronnen tijdens inferentie. Het neurale netwerk moet voldoende diepte en breedte hebben om relevante functies uit de invoer-afbeeldingen te extraheren. Maar te veel lagen of filters leiden tot langzame en opgeblazen modellen.

De auteurs ontwierpen GELAN specifiek om de maximale nauwkeurigheid uit het kleinste mogelijke architectuur te halen.

GELAN gebruikt twee belangrijke bouwstenen die op elkaar zijn gestapeld:

  • Efficiënte laag-aggregatieblokken – Deze aggregaten transformaties over meerdere netwerkbranches om multi-schaal-functies efficiënt te detecteren.
  • Computatie-blokken – CSPNet-blokken helpen informatie over lagen te propageren. Elk blok kan worden vervangen op basis van rekenbeperkingen.

Door zorgvuldig te balanceren en combineren van deze blokken, bereikt GELAN een zoet punt tussen prestaties, parameters en snelheid. Dezelfde modulaire architectuur kan worden geschaald omhoog of omlaag over verschillende modelgroottes en hardware.

Experimenten toonden aan dat GELAN meer prestaties in kleinere modellen past in vergelijking met eerdere YOLO-architecturen. Bijvoorbeeld, GELAN-Small met 7M parameters overtrof YOLOv7-Nano met 11M parameters. En GELAN-Medium met 20M parameters presteerde op hetzelfde niveau als YOLOv7 medium-modellen met 35-40M parameters.

Dus door een parameterized-architectuur te ontwerpen die specifiek is geoptimaliseerd voor efficiëntie, stelt GELAN modellen in staat om sneller en op meer bronnen-beperkte apparaten te draaien. Vervolgens gaan we zien hoe PGI hen helpt om beter te trainen.

Beter trainen met Programmable Gradient Information (PGI)

Modeltrainen is net zo belangrijk om de nauwkeurigheid te maximaliseren met beperkte bronnen. De YOLOv9-auteurs identificeerden problemen bij het trainen van kleinere modellen veroorzaakt door onbetrouwbare gradiëntinformatie.

Gradiënten bepalen hoeveel een modelgewicht wordt bijgewerkt tijdens het trainen. Ruis- of misleidende gradiënten leiden tot slechte convergentie. Dit probleem wordt verergerd voor kleinere netwerken.

De techniek van diepe supervisie adresseert dit door extra zij-branches met verliezen in te voeren om een betere gradiëntsignaal door het netwerk te propageren. Maar het neigt ertoe om af te breken en te divergeren voor kleinere lichtgewicht-modellen.

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

Om deze beperking te overwinnen, introduceert YOLOv9 Programmable Gradient Information (PGI). PGI heeft twee belangrijke componenten:

  • Hulp-reversible branches – Deze bieden schone gradiënten door reversible verbindingen terug naar de invoer te behouden met behulp van blokken zoals RevCols.
  • Multi-level gradiënt-integratie – Een fusie-blok agregereert gradiënten van alle branches voordat het terugvoert naar het hoofdmodel.

Door betrouwbaardere gradiënten te genereren, helpt PGI het trainen en de efficiëntie te verbeteren:

Experimenten toonden aan dat PGI de nauwkeurigheid verbeterde voor alle modelgroottes, vooral kleinere configuraties.

YOLOv9 zet een nieuwe standaard voor efficiëntie

Door de architecturale verbeteringen van GELAN te combineren met de trainingsverbeteringen van PGI, bereikt YOLOv9 ongekende efficiëntie en prestaties:

  • In vergelijking met eerdere YOLO-versies, behaalt YOLOv9 beter nauwkeurigheid met 10-15% minder parameters en 25% minder berekeningen. Dit leidt tot belangrijke verbeteringen in snelheid en capaciteit over modelgroottes.
  • YOLOv9 overtreft andere real-time detectors zoals YOLO-MS en RT-DETR in termen van parameter-efficiëntie en FLOPs. Het vereist veel minder bronnen om een bepaald prestatieniveau te bereiken.
  • Kleinere YOLOv9-modellen overtreffen zelfs grotere vooraf getrainde modellen zoals RT-DETR-X. Ondanks het gebruik van 36% minder parameters, bereikt YOLOv9-E beter 55,6% AP door efficiëntere architectuur.

Dus door efficiëntie aan te pakken op zowel architectuur- als trainingsniveau, zet YOLOv9 een nieuwe standaard voor het maximaliseren van prestaties binnen beperkte bronnen.

GELAN – Geoptimaliseerde architectuur voor efficiëntie

YOLOv9 introduceert een nieuwe architectuur genaamd General Efficient Layer Aggregation Network (GELAN) die de nauwkeurigheid maximaliseert binnen een minimum parameter-budget. Het bouwt voort op eerdere YOLO-modellen, maar optimaliseert de verschillende componenten specifiek voor efficiëntie.

https://arxiv.org/abs/2402.13616

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

Achtergrond over CSPNet en ELAN

Recente YOLO-versies sinds v5 hebben backbones gebaseerd op Cross-Stage Partial Network (CSPNet) gebruikt voor verbeterde efficiëntie. CSPNet stelt functiekaarten in staat om te worden geaggregeerd over parallelle netwerkbranches terwijl minimale overhead wordt toegevoegd:

Dit is efficiënter dan het simpelweg stapelen van lagen, wat vaak leidt tot redundantieberekeningen en over-parameterisatie.

YOLOv7 verbeterde CSPNet tot Efficient Layer Aggregation Network (ELAN), die de blokstructuur vereenvoudigde:

ELAN verwijderde shortcut-verbindingen tussen lagen ten gunste van een aggregatieknooppunt aan de uitvoer. Dit verbeterde parameter- en FLOPs-efficiëntie verder.

Generaliseren van ELAN voor flexibele efficiëntie

De auteurs generaliseerden ELAN verder om GELAN te creëren, de backbone die in YOLOv9 wordt gebruikt. GELAN maakte enkele belangrijke aanpassingen om flexibiliteit en efficiëntie te verbeteren:

  • Interchangeable computatie-blokken – Eerdere ELAN had vaste convolutie-lagen. GELAN stelt in staat om elk computatie-blok te vervangen, zoals ResNets of CSPNet, waardoor meer architecturale opties beschikbaar zijn.
  • Diepte-wijs parameterisatie – Afzonderlijke blokdiepten voor de hoofdbranch versus de aggregator-branch vereenvoudigen het fine-tunen van bronnen.
  • Stabiele prestaties over configuraties – GELAN behoudt nauwkeurigheid met verschillende bloktypen en -diepten, waardoor flexibele schaling mogelijk is.

Deze veranderingen maken GELAN een sterke maar configureerbare backbone voor het maximaliseren van efficiëntie:

In experimenten presteerden GELAN-modellen consistent beter in nauwkeurigheid per parameter dan eerdere YOLO-architecturen:

  • GELAN-Small met 7M parameters overtrof YOLOv7-Nano met 11M parameters
  • GELAN-Medium presteerde op hetzelfde niveau als zwaardere YOLOv7 medium-modellen

Dus GELAN biedt een geoptimaliseerde backbone om YOLO over verschillende efficiëntiedoelen te schalen. Vervolgens gaan we zien hoe PGI hen helpt om beter te trainen.

PGI – Verbeterd trainen voor alle modelgroottes

Terwijl architectuurkeuzes de efficiëntie tijdens inferentie beïnvloeden, heeft het trainingsproces ook invloed op modelbronnen. YOLOv9 gebruikt een nieuwe techniek genaamd Programmable Gradient Information (PGI) om het trainen te verbeteren over verschillende modelgroottes en complexiteiten.

Het probleem van onbetrouwbare gradiënten

Tijdens het trainen berekent een verliesfunctie de fout tussen modeluitvoer en grondwaarheidslabels en berekent een gradiëntfout om parameters bij te werken. Ruis- of misleidende gradiënten leiden tot slechte convergentie en efficiëntie.

Zeer diepe netwerken verergeren dit door de informatie-bottleneck – gradiënten van diepe lagen worden gecorrumpeerd door verloren of gecomprimeerde signalen.

Diepe supervisie helpt door extra zij-branches met verliezen in te voeren om schone gradiënten te bieden. Maar het breekt vaak af voor kleinere modellen, waardoor interferentie en divergentie tussen verschillende branches optreden.

Dus we hebben een manier nodig om betrouwbare gradiënten te bieden die werkt voor alle modelgroottes, vooral kleinere.

Introductie van Programmable Gradient Information (PGI)

Om onbetrouwbare gradiënten aan te pakken, stelt YOLOv9 Programmable Gradient Information (PGI) voor. PGI heeft twee belangrijke componenten ontworpen om gradiëntkwaliteit te verbeteren:

1. Hulp-reversible branches

Extra branches bieden reversible verbindingen terug naar de invoer met behulp van blokken zoals RevCols. Dit behoudt schone gradiënten en voorkomt de informatie-bottleneck.

2. Multi-level gradiënt-integratie

Een fusie-blok agregereert gradiënten van alle branches voordat het terugvoert naar het hoofdmodel. Dit voorkomt divergentie tussen branches.

Door betrouwbaardere gradiënten te genereren, verbetert PGI het trainen en de efficiëntie:

  • Lichtgewicht modellen profiteren van diepe supervisie die ze eerder niet konden gebruiken
  • Grotere modellen krijgen schone gradiënten waardoor ze beter generaliseren

Experimenten toonden aan dat PGI de nauwkeurigheid verbeterde voor kleine en grote YOLOv9-configuraties ten opzichte van de baseline GELAN:

  • +0,1-0,4% AP voor YOLOv9-Small
  • +0,5-0,6% AP voor grotere YOLOv9-modellen

Dus PGI’s programmeerbare gradiënten stellen modellen in staat om efficiënter te trainen.

YOLOv9 zet een nieuwe standaard voor nauwkeurigheid

Door de architecturale verbeteringen van GELAN te combineren met de trainingsverbeteringen van PGI, bereikt YOLOv9 een nieuwe standaard voor real-time objectdetectie.

Experimenten op de COCO-dataset laten zien dat YOLOv9 eerdere YOLO-versies en andere real-time detectors zoals YOLO-MS overtreft in nauwkeurigheid en efficiëntie:

Enkele belangrijke highlights:

  • YOLOv9-Small overtreft YOLO-MS-Small met 10% minder parameters en berekeningen
  • YOLOv9-Medium presteert op hetzelfde niveau als zwaardere YOLOv7-modellen met minder dan de helft van de bronnen
  • YOLOv9-Large overtreft YOLOv8-X met 15% minder parameters en 25% minder FLOPs

Opmerkelijk overtreffen kleinere YOLOv9-modellen zelfs zwaardere modellen van andere detectors die voorafgetrainde modellen gebruiken zoals RT-DETR-X. Ondanks 4 keer minder parameters, overtreft YOLOv9-E RT-DETR-X in nauwkeurigheid.

Deze resultaten demonstreren de superieure efficiëntie van YOLOv9. De verbeteringen stellen hoge-nauwkeurigheidsobjectdetectie in staat in meer real-world use-cases.

Belangrijke punten over YOLOv9-upgrades

Laten we snel samenvatten enkele van de belangrijkste upgrades en innovaties die YOLOv9’s nieuwe standaardprestaties mogelijk maken:

  • GELAN-geoptimaliseerde architectuur – Verbeterde parameter-efficiëntie door flexibele aggregatie-blokken. Stelt modellen in staat om te schalen voor verschillende doelen.
  • Programmable Gradient Information – Biedt betrouwbare gradiënten door reversible verbindingen en fusie. Verbeterd trainen over modelgroottes.
  • Grotere nauwkeurigheid met minder bronnen – Vermindert parameters en berekeningen met 10-15% ten opzichte van YOLOv8 met betere nauwkeurigheid. Mogelijk maakt het efficiëntere inferentie.
  • Superieure resultaten over modelgroottes – Zet een nieuwe standaard voor lichtgewicht-, medium- en grote modelconfiguraties. Overtreft zwaar voorafgetrainde modellen.
  • Uitgebreide toepasbaarheid – Hogere efficiëntie breidt bruikbare use-cases uit, zoals real-time detectie op edge-apparaten.

Door nauwkeurigheid, efficiëntie en toepasbaarheid rechtstreeks aan te pakken, zet YOLOv9 objectdetectie vooruit om diverse real-world behoeften te vervullen. De upgrades bieden een sterke basis voor toekomstige innovatie in deze kritieke computer vision-capaciteit.

Ik heb de afgelopen vijf jaar doorgebracht met het onderdompelen van mezelf in de fascinerende wereld van Machine Learning en Deep Learning. Mijn passie en expertise hebben me geleid om bij te dragen aan meer dan 50 diverse software-engineeringprojecten, met een bijzondere focus op AI/ML. Mijn voortdurende nieuwsgierigheid heeft me ook aangetrokken tot Natural Language Processing, een vakgebied dat ik graag verder wil verkennen.