Kunstig intelligens

YOLOv9: Et spring i realtid objektgenkendelse

mm

Objektgenkendelse har oplevet en hurtig udvikling i de seneste år takket være dyb læring algoritmer som YOLO (You Only Look Once). Den seneste iteration, YOLOv9, bringer store forbedringer i nøjagtighed, effektivitet og anvendelighed i forhold til tidligere versioner. I denne artikel vil vi dykke ned i de innovationer, der gør YOLOv9 til en ny standard for realtid objektgenkendelse.

En hurtig introduktion til objektgenkendelse

Før vi dykker ned i, hvad der er nyt i YOLOv9, lad os kort gennemgå, hvordan objektgenkendelse fungerer. Målet med objektgenkendelse er at identificere og lokalisere objekter inden for et billede, som biler, mennesker eller dyr. Det er en nøglefunktion for applikationer som selvstyrende biler, overvågningsystemer og billedsøgning.

Detektoreren tager et billede som input og udgangspunkt og giver output i form af begrænsningsbokse omkring detekterede objekter, hver med en tilhørende klasseetikette. Populære datasæt som MS COCO giver tusinder af mærkede billeder til at træne og evaluere disse modeller.

Der er to hovedtilgange til objektgenkendelse:

  • To-trins detektorer som Faster R-CNN genererer først regionforslag, derefter klassificerer og forfiner grænserne for hver region. De tenderer til at være mere nøjagtige, men langsommere.
  • Enkelt-trins detektorer som YOLO anvender en model direkte over billedet i en enkelt passering. De handler en vis nøjagtighed for meget hurtig inferens tid.

YOLO var pioner inden for den enkelt-trins tilgang. Lad os se, hvordan det har udviklet sig over flere versioner for at forbedre nøjagtighed og effektivitet.

Gennemgang af tidligere YOLO-versioner

YOLO (You Only Look Once) familien af modeller har været i forkanten af hurtig objektgenkendelse siden den originale version blev offentliggjort i 2016. Her er en kort gennemgang af, hvordan YOLO har udviklet sig over flere iterationer:

  • YOLOv1 foreslog en samlet model til at forudsige begrænsningsbokse og klasse sandsynligheder direkte fra fulde billeder i en enkelt passering. Dette gjorde det ekstremt hurtigt i forhold til tidligere to-trins modeller.
  • YOLOv2 forbedrede den originale ved at bruge batch normalisering for bedre stabilitet, ankering af bokse i forskellige skalaer og aspektforhold til at detektere multiple størrelser, og en række andre optimeringer.
  • YOLOv3 tilføjede en ny funktionsekstraktor kaldet Darknet-53 med flere lag og genveje mellem dem, hvilket yderligere forbedrede nøjagtigheden.
  • YOLOv4 kombinerede ideer fra andre objekt detektorer og segmenteringsmodeller for at skubbe nøjagtigheden endnu højere, mens den stadig opretholdt hurtig inferens.
  • YOLOv5 skrev YOLOv4 fuldstændigt om i PyTorch og tilføjede en ny funktionsekstraktions backbone kaldet CSPDarknet sammen med flere andre forbedringer.
  • YOLOv6 fortsatte med at optimere arkitekturen og træningsprocessen, med modeller forudtrænet på store eksterne datasæt for at øge ydeevnen yderligere.

Så for at samme op, tidligere YOLO-versioner opnåede højere nøjagtighed gennem forbedringer af modelarkitektur, træningsteknikker og forudtræning. Men som modeller bliver større og mere komplekse, begynder hastighed og effektivitet at lide.

Behovet for bedre effektivitet

Mange applikationer kræver objektgenkendelse til at køre i realtid på enheder med begrænsede beregningsressourcer. Som modeller bliver større og mere beregningsintensive, bliver de upraktiske at udvikle.

For eksempel har en selvstyrende bil brug for at detektere objekter i høje billedfrekvenser ved hjælp af processorer inde i køretøjet. Et overvågningskamera har brug for at køre objektgenkendelse på sin videostrøm inden for dens egen indbyggede hardware. Mobiltelefoner og andre forbrugerenheder har meget stramme effekt- og termiske begrænsninger.

Senere YOLO-versioner opnår høj nøjagtighed med store antal parametre og multiplikations-additionsoperationer (FLOPs). Men dette sker på bekostning af hastighed, størrelse og effekt effektivitet.

For eksempel kræver YOLOv5-L over 100 milliarder FLOPs for at behandle et enkelt 1280×1280 billede. Dette er for langsomt for mange realtidsscenarier. Trenden med stadig større modeller øger også risikoen for overtilpasning og gør det sværere at generalisere.

Så for at udvide anvendeligheden af objektgenkendelse, har vi brug for måder at forbedre effektiviteten – at opnå bedre nøjagtighed med færre parametre og beregninger. Lad os se på de teknikker, der er brugt i YOLOv9 for at tackle denne udfordring.

YOLOv9 – Bedre nøjagtighed med færre ressourcer

Forskerne bag YOLOv9 fokuserede på at forbedre effektiviteten for at opnå realtid-ydeevne på en bredere vifte af enheder. De introducerede to nøgleinnovationer:

  1. En ny modelarkitektur kaldet General Efficient Layer Aggregation Network (GELAN), der maksimerer nøjagtighed, mens den minimiserer parametre og FLOPs.
  2. En træningsteknik kaldet Programmable Gradient Information (PGI), der giver mere pålidelige læringsgradients, især for små modeller.

Lad os se, hvordan hver af disse fremskridt hjælper med at forbedre effektiviteten.

Flere effektive arkitekturer med GELAN

Modelarkitekturen selv er afgørende for at balancere nøjagtighed mod hastighed og ressourceforbrug under inferens. Neuronalnetværket har brug for nok dybde og bredde til at fange relevante funktioner fra inputbillederne. Men for mange lag eller filtre fører til langsomme og opblæste modeller.

Forfatterne designede GELAN specifikt for at presse maksimal nøjagtighed ud af den mindst mulige arkitektur.

GELAN bruger to hovedbyggeklodser stablet sammen:

  • Effektive lagaggregationsblokke – Disse aggregere transformationer på tværs af multiple netværksgrene for at fange multifunktionelle funktioner effektivt.
  • Beregningblokke – CSPNet-blokke hjælper med at propagere information på tværs af lag. Ethvert blok kan erstattes baseret på beregningsbegrænsninger.

Ved at balancere og kombinere disse blokke rammer GELAN et sødt punkt mellem ydeevne, parametre og hastighed. Den samme modulære arkitektur kan skaleres op eller ned på tværs af forskellige modelstørrelser og hardware.

Eksperimenter viste, at GELAN fik mere ydeevne ind i mindre modeller i forhold til tidligere YOLO-arkitekturer. For eksempel overgik GELAN-Small med 7M parametre YOLOv7-Nano med 11M parametre. Og GELAN-Medium med 20M parametre opnåede den samme ydeevne som YOLOv7 medium-modeller, der kræver 35-40M parametre.

Så ved at designe en parameteriseret arkitektur specifikt optimeret for effektivitet, giver GELAN mulighed for, at modeller kan køre hurtigere og på mere ressourcebegrænsede enheder. Næste skridt er at se, hvordan PGI hjælper med at træne bedre.

Bedre træning med Programmable Gradient Information (PGI)

Modeltræning er lige så vigtig for at maksimere nøjagtighed med begrænsede ressourcer. YOLOv9-forfatterne identificerede problemer med træning af små modeller forårsaget af upålidelige gradientinformationer.

Gradients bestemmer, hvor meget en models vægte opdateres under træning. Støjende eller misvisende gradients fører til dårlig konvergens. Dette problem bliver mere udtalt for små netværk.

Teknikken med dyb overvågning adresserer dette ved at introducere ekstra sidegrene med tab for at propagere bedre gradient signal gennem netværket. Men det tenderer til at bryde sammen og forårsage divergens for små, letvægtige modeller.

YOLOv9: Lær, hvad du vil lære, ved hjælp af Programmable Gradient Information

YOLOv9: Lær, hvad du vil lære, ved hjælp af Programmable Gradient Information https://arxiv.org/abs/2402.13616

For at overvinde denne begrænsning introducerer YOLOv9 Programmable Gradient Information (PGI). PGI har to hovedkomponenter:

  • Hjælpe-reversible grene – Disse giver renere gradients ved at opretholde reversible forbindelser tilbage til input ved hjælp af blokke som RevCols.
  • Multi-niveau gradient integration – Dette undgår divergens fra forskellige sidegrene, der interfererer. Det kombinerer gradients fra alle grene, før det føres tilbage til hovedmodellen.

Ved at generere mere pålidelige gradients hjælper PGI med at træne bedre:

Eksperimenter viste, at PGI forbedrede nøjagtigheden over alle modelstørrelser, især små konfigurationer. For eksempel øgede det AP-scoren for YOLOv9-Small med 0,1-0,4% over baseline GELAN-Small. Gevinsten var endnu mere betydelig for dybere modeller som YOLOv9-E på 55,6% mAP.

Så PGI giver mulighed for, at små, effektive modeller kan trænes til højere nøjagtighedsniveauer, som tidligere kun var opnåelige med over-parametrerede modeller.

YOLOv9 sætter ny standard for effektivitet

Ved at kombinere arkitektoniske fremskridt fra GELAN med træningsforbedringer fra PGI, opnår YOLOv9 en hidtil uset effektivitet og ydeevne:

  • I forhold til tidligere YOLO-versioner opnår YOLOv9 bedre nøjagtighed med 10-15% færre parametre og 25% færre beregninger. Dette bringer store forbedringer i hastighed og kapacitet på tværs af modelstørrelser.
  • YOLOv9 overgår andre realtid-detektorer som YOLO-MS og RT-DETR i terms of parameter-effektivitet og FLOPs. Det kræver langt færre ressourcer for at nå et givent ydeevneniveau.
  • Små YOLOv9-modeller overgår endda større forudtrænede modeller som RT-DETR-X. Trods brug af 36% færre parametre opnår YOLOv9-E bedre 55,6% AP.

Så ved at adresse effektivitet på både arkitektur- og træningsniveau, sætter YOLOv9 en ny standard for at maksimere ydeevne inden for begrænsede ressourcer.

GELAN – Optimeret arkitektur for effektivitet

YOLOv9 introducerer en ny arkitektur kaldet General Efficient Layer Aggregation Network (GELAN), der maksimerer nøjagtighed inden for en minimum parameterbudget. Det bygger på tidligere YOLO-modeller, men optimerer de forskellige komponenter specifikt for effektivitet.

https://arxiv.org/abs/2402.13616

YOLOv9: Lær, hvad du vil lære, ved hjælp af Programmable Gradient Information https://arxiv.org/abs/2402.13616

Baggrund på CSPNet og ELAN

Senere YOLO-versioner siden v5 har brugt backbones baseret på Cross-Stage Partial Network (CSPNet) for forbedret effektivitet. CSPNet giver mulighed for, at funktioner kan aggregere på tværs af parallele netværksgrene, mens det tilføjer minimalt overhead:

Dette er mere effektivt end blot at stable lag på hinanden, hvilket ofte fører til redundant beregning og over-parametrisering.

YOLOv7 opgraderede CSPNet til Efficient Layer Aggregation Network (ELAN), der forenkler blokstrukturen:

ELAN fjernede genvejforbindelser mellem lag til fordel for en aggregationsnode i output. Dette forbedrede yderligere parameter- og FLOPs-effektivitet.

Generalisering af ELAN for fleksibel effektivitet

Forfatterne generaliserede ELAN yderligere for at skabe GELAN, backbonen brugt i YOLOv9. GELAN gjorde nøgleændringer for at forbedre fleksibilitet og effektivitet:

  • Erstattelige beregningsblokke – Tidligere ELAN havde faste convolutionelle lag. GELAN giver mulighed for at erstatte enhver beregningsblok som ResNets eller CSPNet, hvilket giver flere arkitektoniske muligheder.
  • Dybsparametrisering – Separate blokdybder for hovedgren vs. aggregatorgren forenkler finjustering af ressourceforbrug.
  • Stabil ydeevne på tværs af konfigurationer – GELAN opretholder nøjagtighed med forskellige bloktyper og dybder, hvilket giver mulighed for fleksibel skalerbarhed.

Disse ændringer giver GELAN en stærk, men konfigurerbar backbone for at maksimere effektivitet:

I eksperimenter opnåede GELAN-modeller konsekvent bedre nøjagtighed per parameter end tidligere YOLO-arkitekturer:

  • GELAN-Small med 7M parametre overgik YOLOv7-Nano med 11M parametre
  • GELAN-Medium opnåede den samme ydeevne som tungere YOLOv7 medium-modeller

Så GELAN giver en optimeret backbone for at skalerer YOLO på tværs af forskellige effektivitetsmål. Næste skridt er at se, hvordan PGI hjælper med at træne bedre.

PGI – Forbedret træning for alle modelstørrelser

Selvom arkitekturvalg påvirker effektivitet under inferens, påvirker træningsprocessen også modelressourceforbrug. YOLOv9 bruger en ny teknik kaldet Programmable Gradient Information (PGI) for at forbedre træning på tværs af forskellige modelstørrelser og kompleksiteter.

Problemet med upålidelige gradients

Under træning sammenligner en tabfunktion modeloutput med ground truth-etiketter og beregner en fejlgradient for at opdatere parametre. Støjende eller misvisende gradients fører til dårlig konvergens og effektivitet.

Meget dybe netværk forværres af informationssmug – gradients fra dybe lag er korrumperet af tabte eller komprimerede signaler.

Dyb overvågning hjælper ved at introducere hjælpe-sidegrene med tab for at give renere gradients. Men det bryder ofte sammen for små modeller, hvilket fører til interference og divergens mellem forskellige grene.

Så vi har brug for en måde at give pålidelige gradients på, der fungerer på tværs af alle modelstørrelser, især små.

Introduktion til Programmable Gradient Information (PGI)

For at adresse upålidelige gradients foreslår YOLOv9 Programmable Gradient Information (PGI). PGI har to hovedkomponenter designet til at forbedre gradientkvalitet:

1. Hjælpe-reversible grene

Ekstra grene giver reversible forbindelser tilbage til input ved hjælp af blokke som RevCols. Dette opretholder rene gradients og undgår informationssmug.

2. Multi-niveau gradient integration

En fusionsblok kombinerer gradients fra alle grene, før det føres tilbage til hovedmodellen. Dette forhindrer divergens på tværs af grene.

Ved at generere mere pålidelige gradients forbedrer PGI træningskonvergens og effektivitet på tværs af alle modelstørrelser:

  • Letvægtsmodeller drager fordel af dyb overvågning, de tidligere ikke kunne bruge
  • Større modeller får renere gradients, hvilket giver bedre generalisering

Eksperimenter viste, at PGI forbedrede nøjagtigheden for både små og store YOLOv9-konfigurationer over baseline GELAN:

  • +0,1-0,4% AP for YOLOv9-Small
  • +0,5-0,6% AP for større YOLOv9-modeller

Så PGI’s programmerbare gradients giver mulighed for, at modeller, både store og små, kan trænes mere effektivt.

YOLOv9 sætter ny standard for nøjagtighed

Ved at kombinere arkitektoniske forbedringer fra GELAN med træningsforbedringer fra PGI, opnår YOLOv9 en ny standard for realtid objektgenkendelse.

Eksperimenter på COCO-datasættet viser, at YOLOv9 overgår tidligere YOLO-versioner samt andre realtid-detektorer som YOLO-MS i både nøjagtighed og effektivitet:

Nogle nøglehøjdepunkter:

  • YOLOv9-Small overgår YOLO-MS-Small med 10% færre parametre og beregninger
  • YOLOv9-Medium matcher tungere YOLOv7-modeller ved at bruge mindre end halvdelen af ressourcerne
  • YOLOv9-Large overgår YOLOv8-X med 15% færre parametre og 25% færre FLOPs

Bemærkelsesværdigt overgår små YOLOv9-modeller endda tungere modeller fra andre detektorer, der bruger forudtræning som RT-DETR-X. Trods 4 gange færre parametre overgår YOLOv9-E RT-DETR-X i nøjagtighed.

Disse resultater demonstrerer YOLOv9’s overlegne effektivitet. Forbedringerne giver mulighed for høj-nøjagtigheds objektgenkendelse i flere realverdensscenarioer.

Nøglepunkter om YOLOv9-opgraderinger

Lad os hurtigt gennemgå nogle af de nøgleopgraderinger og innovationer, der giver YOLOv9’s nye standard for ydeevne:

  • GELAN-optimeret arkitektur – Forbedrer parameter-effektivitet gennem fleksible aggregationsblokke. Giver mulighed for at skalerer modeller til forskellige mål.
  • Programmerbar gradientinformation – Giver pålidelige gradients gennem reversible forbindelser og fusion. Forbedrer træning på tværs af modelstørrelser.
  • Bedre nøjagtighed med færre ressourcer – Reducerer parametre og beregninger med 10-15% i forhold til YOLOv8 med bedre nøjagtighed. Giver mulighed for mere effektiv inferens.
  • Overlegen resultater på tværs af modelstørrelser – Sætter ny standard for letvægts-, medium- og stor-modelkonfigurationer. Overgår tungt forudtrænede modeller.
  • Udvidet anvendelighed – Højere effektivitet udvider anvendelige scenarier, som realtid-detektion på edge-enheder.

Ved at adresse nøjagtighed, effektivitet og anvendelighed direkte flytter YOLOv9 objektgenkendelse fremad for at møde diverse realverdensbehov. Opgraderingerne giver en stærk grundlag for fremtidig innovation i denne kritiske computer vision-kapacitet.

Jeg har brugt de sidste fem år på at dykke ned i den fascinerende verden af Machine Learning og Deep Learning. Min passion og ekspertise har ført mig til at bidrage til over 50 forskellige software-ingeniørprojekter, med en særlig fokus på AI/ML. Min fortsatte nysgerrighed har også ført mig mod Natural Language Processing, et felt jeg er ivrig efter at udforske yderligere.