stomp YOLOv9: een sprong in realtime objectdetectie - Unite.AI
Verbind je met ons

Artificial Intelligence

YOLOv9: een sprong in realtime objectdetectie

mm

gepubliceerd

 on

Objectdetectie heeft de afgelopen jaren een snelle vooruitgang doorgemaakt dankzij diepgaand leren algoritmen zoals YOLO (You Only Look Once). De nieuwste iteratie, YOLOv9, brengt grote verbeteringen op het gebied van nauwkeurigheid, efficiëntie en toepasbaarheid ten opzichte van eerdere versies. In dit bericht duiken we in de innovaties die YOLOv9 tot een nieuwe state-of-the-art voor realtime objectdetectie maken.

Een korte introductie over objectdetectie

Voordat we ingaan op wat er nieuw is met YOLOv9, laten we kort bekijken hoe objectdetectie werkt. Het doel van objectdetectie is het identificeren en lokaliseren van objecten binnen een afbeelding, zoals auto's, mensen of dieren. Het is een belangrijke mogelijkheid voor toepassingen zoals zelfrijdende auto's, bewakingssystemen en het zoeken naar afbeeldingen.

De detector neemt een afbeelding als invoer en voert selectiekaders rond gedetecteerde objecten uit, elk met een bijbehorend klasselabel. Populaire datasets zoals MS COCO bieden duizenden gelabelde afbeeldingen om deze modellen te trainen en evalueren.

Er zijn twee hoofdbenaderingen voor objectdetectie:

  • Tweetrapsdetectoren zoals Faster R-CNN genereert eerst regiovoorstellen en classificeert en verfijnt vervolgens de grenzen van elke regio. Ze zijn doorgaans nauwkeuriger, maar langzamer.
  • Eentrapsdetectoren zoals YOLO pas je een model in één keer rechtstreeks op de afbeelding toe. Ze ruilen enige nauwkeurigheid in voor zeer snelle inferentietijden.

YOLO was een pionier in de eenfasige aanpak. Laten we eens kijken hoe het zich in meerdere versies heeft ontwikkeld om de nauwkeurigheid en efficiëntie te verbeteren.

Overzicht van eerdere YOLO-versies

De YOLO-modellenfamilie (You Only Look Once) loopt voorop op het gebied van snelle objectdetectie sinds de originele versie in 2016 werd gepubliceerd. Hier is een kort overzicht van hoe YOLO zich in meerdere iteraties heeft ontwikkeld:

  • YOLOv1 stelde een uniform model voor om begrenzingsvakken en klassenkansen rechtstreeks in één keer op basis van volledige afbeeldingen te voorspellen. Dit maakte hem extreem snel in vergelijking met eerdere tweetrapsmodellen.
  • YOLOv2 verbeterd ten opzichte van het origineel door batchnormalisatie te gebruiken voor betere stabiliteit, dozen op verschillende schalen en beeldverhoudingen te verankeren om meerdere formaten te detecteren, en een verscheidenheid aan andere optimalisaties.
  • YOLOv3 heeft een nieuwe functie-extractor toegevoegd genaamd Darknet-53 met meer lagen en snelkoppelingen ertussen, waardoor de nauwkeurigheid verder wordt verbeterd.
  • YOLOv4 combineerde ideeën van andere objectdetectoren en segmentatiemodellen om de nauwkeurigheid nog verder te verhogen en tegelijkertijd snelle gevolgtrekkingen te behouden.
  • YOLOv5 YOLOv4 volledig herschreven in PyTorch en een nieuwe feature-extractie-backbone toegevoegd genaamd CSPDarknet, samen met verschillende andere verbeteringen.
  • YOLOv6 bleef de architectuur en het trainingsproces optimaliseren, met modellen die vooraf waren getraind op grote externe datasets om de prestaties verder te verbeteren.

Samenvattend bereikten eerdere YOLO-versies een hogere nauwkeurigheid door verbeteringen in de modelarchitectuur, trainingstechnieken en pre-training. Maar naarmate modellen groter en complexer worden, beginnen snelheid en efficiëntie eronder te lijden.

De behoefte aan betere efficiëntie

Veel applicaties vereisen dat objectdetectie in realtime kan worden uitgevoerd op apparaten met beperkte computerbronnen. Naarmate modellen groter en rekenintensiever worden, wordt het onpraktisch om ze in te zetten.

Een zelfrijdende auto moet bijvoorbeeld objecten met hoge framesnelheden detecteren met behulp van processors in het voertuig. Een beveiligingscamera moet objectdetectie uitvoeren op zijn videofeed binnen zijn eigen ingebouwde hardware. Telefoons en andere consumentenapparaten hebben zeer strenge stroom- en thermische beperkingen.

Recente YOLO-versies verkrijgen een hoge nauwkeurigheid met een groot aantal parameters en multiply-add-bewerkingen (FLOP's). Maar dit gaat ten koste van de snelheid, grootte en energie-efficiëntie.

YOLOv5-L heeft bijvoorbeeld meer dan 100 miljard FLOP's nodig om één enkel beeld van 1280×1280 te verwerken. Dit is te traag voor veel real-time gebruiksscenario's. De trend van steeds grotere modellen vergroot ook het risico op overfitting en maakt het moeilijker om te generaliseren.

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

YOLOv9 – Betere nauwkeurigheid met minder middelen

De onderzoekers achter YOLOv9 concentreerden zich op het verbeteren van de efficiëntie om realtime prestaties op een breder scala aan apparaten te bereiken. Ze introduceerden twee belangrijke innovaties:

  1. Een nieuwe modelarchitectuur genaamd Algemeen Efficiënt Laag Aggregatie Netwerk (GELAN) dat de nauwkeurigheid maximaliseert terwijl parameters en FLOP's worden geminimaliseerd.
  2. Een trainingstechniek genaamd Programmeerbare gradiëntinformatie (PGI) dat zorgt voor betrouwbaardere leergradiënten, vooral voor kleinere modellen.

Laten we eens kijken hoe elk van deze verbeteringen de efficiëntie helpt verbeteren.

Efficiëntere architectuur met GELAN

De modelarchitectuur zelf is van cruciaal belang voor het balanceren van nauwkeurigheid tegen snelheid en resourcegebruik tijdens gevolgtrekking. Het neurale netwerk heeft voldoende diepte en breedte nodig om relevante kenmerken uit de invoerbeelden vast te leggen. Maar te veel lagen of filters leiden tot trage en opgeblazen modellen.

De auteurs hebben GELAN specifiek ontworpen om de maximale nauwkeurigheid uit de kleinst mogelijke architectuur te halen.

GELAN gebruikt twee op elkaar gestapelde hoofdbouwstenen:

  • Efficiënte laagaggregatieblokken – Deze geaggregeerde transformaties over meerdere netwerktakken om functies op meerdere schaal efficiënt vast te leggen.
  • Computationele blokken – CSPNet-blokken helpen informatie over verschillende lagen te verspreiden. Elk blok kan worden vervangen op basis van rekenbeperkingen.

Door deze blokken zorgvuldig te balanceren en te combineren, vindt GELAN een goede balans tussen prestaties, parameters en snelheid. Dezelfde modulaire architectuur kan omhoog of omlaag worden geschaald over modellen en hardware van verschillende groottes.

Experimenten hebben aangetoond dat GELAN meer prestaties in kleinere modellen past vergeleken met eerdere YOLO-architecturen. GELAN-Small met 7M-parameters presteerde bijvoorbeeld beter dan de 11M-parameter YOLOv7-Nano. En GELAN-Medium met 20M-parameters presteert vergelijkbaar met YOLOv7-mediummodellen die 35-40M-parameters vereisen.

Door een geparametriseerde architectuur te ontwerpen die specifiek is geoptimaliseerd voor efficiëntie, zorgt GELAN ervoor dat modellen sneller kunnen draaien en op apparaten met meer middelen. Vervolgens zullen we zien hoe PGI hen ook helpt beter te trainen.

Beter trainen met programmeerbare gradiëntinformatie (PGI)

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

Verlopen bepalen hoeveel de gewichten van een model tijdens de training worden bijgewerkt. Luidruchtige of misleidende gradiënten leiden tot slechte convergentie. Dit probleem wordt duidelijker voor kleinere netwerken.

De techniek van diepgaand toezicht lost dit op door extra zijtakken met verliezen te introduceren om een ​​beter gradiëntsignaal door het netwerk te verspreiden. Maar het heeft de neiging kapot te gaan en divergentie te veroorzaken voor kleinere lichtgewicht modellen.

YOLOv9: Leren wat je wilt leren met behulp van programmeerbare gradiëntinformatie

YOLOv9: leren wat u wilt leren met behulp van programmeerbare gradiëntinformatie https://arxiv.org/abs/2402.13616

Om deze beperking te overwinnen introduceert YOLOv9 Programmeerbare gradiëntinformatie (PGI). BGA bestaat uit twee hoofdcomponenten:

  • Extra omkeerbare takken – Deze zorgen voor schonere gradiënten door omkeerbare verbindingen met de ingang te behouden met behulp van blokken zoals RevCols.
  • Gradiëntintegratie op meerdere niveaus – Dit vermijdt divergentie van verschillende zijtakken die interfereren. Het combineert gradiënten van alle takken voordat het wordt teruggekoppeld naar het hoofdmodel.

Door betrouwbaardere gradiënten te genereren, helpt PGI kleinere modellen net zo effectief te trainen als grotere:

Experimenten toonden aan dat PGI de nauwkeurigheid verbeterde bij alle modelgroottes, vooral bij kleinere configuraties. Het verhoogde bijvoorbeeld de AP-scores van YOLOv9-Small met 0.1-0.4% ten opzichte van de basislijn GELAN-Small. De winst was zelfs nog groter voor diepere modellen zoals YOLOv9-E met een mAP van 55.6%.

Met PGI kunnen kleinere, efficiënte modellen dus worden getraind naar hogere nauwkeurigheidsniveaus die voorheen alleen konden worden bereikt door overgeparametriseerde modellen.

YOLOv9 zorgt voor een nieuwe state-of-the-art op het gebied van efficiëntie

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

  • Vergeleken met eerdere YOLO-versies verkrijgt YOLOv9 betere nauwkeurigheid met 10-15% minder parameters en 25% minder berekeningen. Dit brengt grote verbeteringen in snelheid en mogelijkheden met zich mee voor alle modelgroottes.
  • YOLOv9 overtreft andere real-time detectoren zoals YOLO-MS en RT-DETR in termen van parameterefficiëntie en FLOP's. Er zijn veel minder middelen nodig om een ​​bepaald prestatieniveau te bereiken.
  • Kleinere YOLOv9-modellen verslaan zelfs grotere, vooraf getrainde modellen zoals RT-DETR-X. Ondanks gebruik 36% minder parameters, YOLOv9-E bereikt beter 55.6% AP door efficiëntere architecturen.

Door de efficiëntie op architectuur- en trainingsniveau aan te pakken, zet YOLOv9 een nieuwe state-of-the-art voor het maximaliseren van de prestaties binnen beperkte middelen.

GELAN – Geoptimaliseerde architectuur voor efficiëntie

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

https://arxiv.org/abs/2402.13616

YOLOv9: Leren wat je wilt leren met behulp van programmeerbare gradiëntinformatie
https://arxiv.org/abs/2402.13616

Achtergrondinformatie over CSPNet en ELAN

Recente YOLO-versies sinds v5 maken gebruik van backbones op basis van Cross-Stage Partial Network (CSPNet) voor verbeterde efficiëntie. Met CSPNet kunnen featuremaps worden geaggregeerd over parallelle netwerkvertakkingen, terwijl er minimale overhead wordt toegevoegd:

Dit is efficiënter dan alleen het serieel stapelen van lagen, wat vaak leidt tot redundante berekeningen en overparameterisering.

YOLOv7 heeft CSPNet geüpgraded naar Efficient Layer Aggregation Network (ELAN), wat de blokstructuur vereenvoudigde:

ELAN verwijderde snelkoppelingen tussen lagen ten gunste van een aggregatieknooppunt aan de uitgang. Dit verbeterde de parameter- en FLOP-efficiëntie verder.

ELAN generaliseren voor flexibele efficiëntie

De auteurs generaliseerden ELAN nog verder om te creëren GELAN, de ruggengraat die wordt gebruikt in YOLOv9. GELAN heeft belangrijke wijzigingen aangebracht om de flexibiliteit en efficiëntie te verbeteren:

  • Verwisselbare rekenblokken – Vorige ELAN had vaste convolutionele lagen. GELAN maakt het mogelijk om elk rekenblok zoals ResNets of CSPNet te vervangen, waardoor meer architecturale opties worden geboden.
  • Diepte-gewijze parametrisering – Afzonderlijke blokdiepten voor hoofdvertakking versus aggregatorvertakking vereenvoudigen het afstemmen van het resourcegebruik.
  • Stabiele prestaties in alle configuraties – GELAN behoudt de nauwkeurigheid met verschillende bloktypen en dieptes, waardoor flexibele schaling mogelijk is.

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

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

  • GELAN-Small met 7M-parameters verslaat de 7M-parameters van YOLOv11-Nano
  • GELAN-Medium kwam overeen met zwaardere YOLOv7 medium-modellen

GELAN biedt dus een geoptimaliseerde ruggengraat om YOLO op te schalen over verschillende efficiëntiedoelstellingen. Vervolgens zullen we zien hoe PGI hen helpt beter te trainen.

PGI – Verbeterde training voor alle modelgroottes

Hoewel architectuurkeuzes van invloed zijn op de efficiëntie op het moment van inferentie, heeft het trainingsproces ook invloed op het gebruik van modelresources. YOLOv9 maakt gebruik van een nieuwe techniek genaamd Programmable Gradient Information (PGI) om de training voor verschillende modelgroottes en complexiteiten te verbeteren.

Het probleem van onbetrouwbare gradiënten

Tijdens de training vergelijkt een verliesfunctie de modeluitvoer met ground-truth-labels en berekent een foutgradiënt om parameters bij te werken. Lawaaierige of misleidende hellingen leiden tot slechte convergentie en efficiëntie.

Zeer diepe netwerken verergeren dit door de informatieknelpunt – gradiënten uit diepe lagen worden verstoord door verloren of gecomprimeerde signalen.

Diep toezicht helpt door extra zijtakken met verliezen te introduceren om schonere hellingen te verkrijgen. Maar het vaak kapot voor kleinere modellen, waardoor interferentie en divergentie tussen verschillende takken ontstaat.

We hebben dus een manier nodig om betrouwbare gradiënten te bieden die werken bij alle modelgroottes, vooral de kleinere.

Introductie van programmeerbare gradiëntinformatie (PGI)

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

1. Extra omkeerbare takken

Extra vestigingen bieden omkeerbare verbindingen terug naar de invoer met behulp van blokken zoals RevCols. Hierdoor blijven zuivere gradiënten behouden en wordt het informatieknelpunt vermeden.

2. Gradiëntintegratie op meerdere niveaus

Een fusieblok verzamelt gradiënten van alle takken voordat deze worden teruggekoppeld naar het hoofdmodel. Dit voorkomt divergentie tussen takken.

Door betrouwbaardere gradiënten te genereren, verbetert PGI de convergentie en efficiëntie van training bij alle modelgroottes:

  • Lichtgewicht modellen profiteren van diepgaand toezicht dat ze voorheen niet konden gebruiken
  • Grotere modellen krijg schonere gradiënten die een betere generalisatie mogelijk maken

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

  • +0.1-0.4% AP voor YOLOv9-Small
  • +0.5-0.6% AP voor grotere YOLOv9-modellen

Dankzij de programmeerbare gradiënten van PGI kunnen grote en kleine modellen efficiënter trainen.

YOLOv9 zorgt voor een nieuwe, ultramoderne nauwkeurigheid

Door architecturale verbeteringen van GELAN en trainingsverbeteringen van PGI te combineren, behaalt YOLOv9 nieuwe state-of-the-art resultaten voor real-time objectdetectie.

Experimenten met de COCO-dataset laten zien dat YOLOv9 eerdere YOLO-versies, evenals andere realtime detectoren zoals YOLO-MS, overtreft in nauwkeurigheid en efficiëntie:

Enkele belangrijke hoogtepunten:

  • YOLOv9-Small overtreft YOLO-MS-Small met 10% minder parameters en berekeningen
  • YOLOv9-Medium komt overeen met zwaardere YOLOv7-modellen die minder dan de helft van de bronnen gebruiken
  • YOLOv9-Large presteert beter dan YOLOv8-X met 15% minder parameters en 25% minder FLOP's

Opmerkelijk genoeg overtreffen kleinere YOLOv9-modellen zelfs de zwaardere modellen van andere detectoren die gebruik maken van voortraining zoals RT-DETR-X. Ondanks 4x minder parameters presteert YOLOv9-E beter dan RT-DETR-X wat betreft nauwkeurigheid.

Deze resultaten demonstreren de superieure efficiëntie van YOLOv9. De verbeteringen maken objectdetectie met hoge nauwkeurigheid mogelijk in meer realistische gebruikssituaties.

Belangrijkste punten over YOLOv9-upgrades

Laten we kort enkele van de belangrijkste upgrades en innovaties samenvatten die de nieuwe, ultramoderne prestaties van YOLOv9 mogelijk maken:

  • GELAN geoptimaliseerde architectuur – Verbetert de parameterefficiëntie door flexibele aggregatieblokken. Maakt schaalmodellen voor verschillende doelen mogelijk.
  • Programmeerbare gradiëntinformatie – Biedt betrouwbare gradiënten door omkeerbare verbindingen en fusie. Verbetert de training voor alle modelgroottes.
  • Grotere nauwkeurigheid met minder middelen – Reduceert parameters en berekeningen met 10-15% ten opzichte van YOLOv8 met betere nauwkeurigheid. Maakt efficiëntere gevolgtrekkingen mogelijk.
  • Superieure resultaten bij alle modelgroottes – Stelt nieuwe state-of-the-art in voor lichtgewicht, middelgrote en grote modelconfiguraties. Presteert beter dan zwaar vooraf getrainde modellen.
  • Uitgebreide toepasbaarheid – Hogere efficiëntie verbreedt haalbare gebruiksscenario's, zoals realtime detectie op edge-apparaten.

Door direct aandacht te besteden aan nauwkeurigheid, efficiëntie en toepasbaarheid, brengt YOLOv9 de objectdetectie vooruit om tegemoet te komen aan diverse behoeften in de echte wereld. De upgrades bieden een sterke basis voor toekomstige innovatie op het gebied van deze cruciale computervisiemogelijkheden.

De afgelopen vijf jaar heb ik me verdiept in de fascinerende wereld van Machine Learning en Deep Learning. Door mijn passie en expertise heb ik bijgedragen aan meer dan 50 verschillende software engineering projecten, met een bijzondere focus op AI/ML. Mijn voortdurende nieuwsgierigheid heeft me ook aangetrokken tot Natural Language Processing, een gebied dat ik graag verder wil verkennen.