Artificiell intelligens
YOLOv9: Ett stort steg för objektdetektion i realtid
Objektdetektion har sett en snabb utveckling under de senaste åren tack vare djupinlärningsalgoritmer som YOLO (You Only Look Once). Den senaste versionen, YOLOv9, bringar stora förbättringar i noggrannhet, effektivitet och tillämpbarhet jämfört med tidigare versioner. I den här artikeln kommer vi att dyka in i innovationerna som gör YOLOv9 till en ny standard för objektdetektion i realtid.
En snabb introduktion till objektdetektion
Innan vi går in på vad som är nytt med YOLOv9, låt oss kort gå igenom hur objektdetektion fungerar. Målet med objektdetektion är att identifiera och lokalisera objekt inom en bild, som till exempel bilar, människor eller djur. Det är en viktig funktion för tillämpningar som självkörande bilar, övervakningssystem och bildsökning.
Detektorn tar en bild som indata och producerar utgående begränsningsrutor runt upptäckta objekt, var och en med en associerad klassetikett. Populära dataset som MS COCO tillhandahåller tusentals etiketterade bilder för att träna och utvärdera dessa modeller.
Det finns två huvudsakliga tillvägagångssätt för objektdetektion:
- Tvåstegsdetektorer som Faster R-CNN genererar först regionsförslag, sedan klassificerar och finjusterar gränserna för varje region. De tenderar att vara mer exakta men långsammare.
- Enstegsdetektorer som YOLO applicerar en modell direkt över bilden i ett enda steg. De handlar om någon exakthet för mycket snabb inferenstid.
YOLO banade väg för enstegstillvägagångssättet. Låt oss se hur det har utvecklats över flera versioner för att förbättra noggrannhet och effektivitet.
Översikt av tidigare YOLO-versioner
YOLO-familjen av modeller har varit i framkant av snabb objektdetektion sedan den ursprungliga versionen publicerades 2016. Här är en kort översikt av hur YOLO har utvecklats över flera iterationer:
- YOLOv1 föreslog en enhetlig modell för att förutsäga begränsningsrutor och klasssannolikheter direkt från fulla bilder i ett enda steg. Detta gjorde det extremt snabbt jämfört med tidigare tvåstegsmodeller.
- YOLOv2 förbättrade den ursprungliga versionen genom att använda batchnormalisering för bättre stabilitet, ankare rutor i olika skalor och aspekter för att upptäcka flera storlekar, och en mängd andra optimeringar.
- YOLOv3 lade till en ny funktionsextraherare som kallades Darknet-53 med fler lager och genvägar mellan dem, vilket ytterligare förbättrade noggrannheten.
- YOLOv4 kombinerade idéer från andra objektdetektorer och segmenteringsmodeller för att driva noggrannheten ännu högre medan den fortfarande upprätthöll snabb inferens.
- YOLOv5 skrev om YOLOv4 fullständigt i PyTorch och lade till en ny funktionsextraheringsryggrad som kallades CSPDarknet tillsammans med flera andra förbättringar.
- YOLOv6 fortsatte att optimera arkitekturen och träningsprocessen, med modeller förtränade på stora externa dataset för att ytterligare förbättra prestandan.
Så för att sammanfatta, tidigare YOLO-versioner uppnådde högre noggrannhet genom förbättringar av modellarkitektur, träningsmetoder och förträning. Men när modellerna blir större och mer komplexa börjar hastighet och effektivitet att lida.
Behovet av bättre effektivitet
Många tillämpningar kräver att objektdetektion körs i realtid på enheter med begränsade beräkningsresurser. När modellerna blir större och mer beräkningsintensiva blir de opraktiska att distribuera.
Till exempel behöver en självkörande bil upptäcka objekt i höga bildfrekvenser med hjälp av processorer i fordonet. En säkerhetskamera behöver köra objektdetektion på sin videoström inom den egna inbyggda hårdvaran. Mobiltelefoner och andra konsumentenheter har mycket stränga effekt- och termiska begränsningar.
Senaste YOLO-versioner uppnår hög noggrannhet med stora antal parametrar och multiplikations-additionsoperationer (FLOPs). Men detta sker på bekostnad av hastighet, storlek och effekt- och effektivitet.
Till exempel kräver YOLOv5-L över 100 miljarder FLOPs för att bearbeta en enda 1280×1280-bild. Detta är för långsamt för många realtidsanvändningsfall. Trenden med allt större modeller ökar också risken för överanpassning och gör det svårare att generalisera.
Så för att utöka tillämpbarheten av objektdetektion behöver vi sätt att förbättra effektiviteten – att få bättre noggrannhet med färre parametrar och beräkningar. Låt oss se på de tekniker som används i YOLOv9 för att tackla denna utmaning.
YOLOv9 – Bättre noggrannhet med färre resurser
Forskarna bakom YOLOv9 fokuserade på att förbättra effektiviteten för att uppnå realtidsprestanda över en bredare range av enheter. De introducerade två nyckelinnovationer:
- En ny modellarkitektur som kallas General Efficient Layer Aggregation Network (GELAN) som maximerar noggrannhet medan den minimerar parametrar och FLOPs.
- En träningsmetod som kallas Programmerbar Gradient Information (PGI) som tillhandahåller mer tillförlitlig inlärningsgradient, särskilt för mindre modeller.
Låt oss se hur var och en av dessa framsteg hjälper till att förbättra effektiviteten.
Mer effektiv arkitektur med GELAN
Modellarkitekturen i sig är avgörande för att balansera noggrannhet mot hastighet och resursanvändning under inferens. Det neurala nätverket behöver tillräcklig djup och bredd för att fånga relevanta funktioner från inmatningsbilderna. Men för många lager eller filter leder till långsamma och svullna modeller.
Författarna utformade GELAN specifikt för att pressa ut maximal noggrannhet ur den minsta möjliga arkitekturen.
GELAN använder två huvudsakliga byggblock som staplas ihop:
- Effektiva lageraggregeringsblock – Dessa aggregerar transformationer över flera nätverksgrenar för att fånga multi-skalfunktioner effektivt.
- Beräkningsblock – CSPNet-block hjälper till att sprida information över lager. Varje block kan ersättas baserat på beräkningsbegränsningar.
Genom att noggrant balansera och kombinera dessa block träffar GELAN en söt fläck mellan prestanda, parametrar och hastighet. Samma modulära arkitektur kan skalas upp eller ner över olika modellstorlekar och hårdvarukonfigurationer.
Experiment visade att GELAN passar mer prestanda in i mindre modeller jämfört med tidigare YOLO-arkitekturer. Till exempel överträffade GELAN-Small med 7M parametrar YOLOv7-Nano med 11M parametrar. Och GELAN-Medium med 20M parametrar presterade på samma nivå som YOLOv7-mediummodeller som krävde 35-40M parametrar.
Så genom att utforma en parameteriserad arkitektur som är specifikt optimerad för effektivitet, tillåter GELAN modeller att köras snabbare och på mer resursbegränsade enheter. Nästa steg är att se hur PGI hjälper dem att träna bättre också.
Bättre träning med Programmerbar Gradient Information (PGI)
Modellträning är lika viktig för att maximera noggrannhet med begränsade resurser. YOLOv9-författarna identifierade problem med att träna mindre modeller orsakade av otillförlitlig gradientinformation.
Gradients bestämmer hur mycket en modells vikter uppdateras under träning. Bullriga eller vilseledande grader leder till dålig konvergens. Detta problem blir mer uttalat för mindre nätverk.
Tekniken med djup tillsyn adresserar detta genom att införa ytterligare sidogrenar med förluster för att sprida bättre gradientinformation genom nätverket. Men den tenderar att bryta samman och orsaka divergens för mindre, lätta modeller.

YOLOv9: Lära vad du vill lära med Programmerbar Gradient Information https://arxiv.org/abs/2402.13616
För att övervinna denna begränsning introducerar YOLOv9 Programmerbar Gradient Information (PGI). PGI har två huvudsakliga komponenter:
- Hjälpbara reversibla grenar – Dessa tillhandahåller renare grader genom att upprätthålla reversibla anslutningar till inmatningen med hjälp av block som RevCols.
- Multinivågradientintegration – Detta undviker divergens från olika sidogrenar som stör varandra. Det kombinerar grader från alla grenar innan det matar tillbaka till huvudmodellen.
Genom att generera mer tillförlitliga grader hjälper PGI till att förbättra träningskonvergens och effektivitet över alla modellstorlekar:
Experiment visade att PGI förbättrade noggrannheten för små och stora YOLOv9-konfigurationer över baslinjen GELAN:
- +0,1-0,4% AP för YOLOv9-Small
- +0,5-0,6% AP för större YOLOv9-modeller
Så PGI:s programmerbara grader möjliggör att modeller, både stora och små, tränas mer effektivt.
YOLOv9 sätter ny standard för effektivitet
Genom att kombinera arkitektoniska förbättringar från GELAN och träningsförbättringar från PGI uppnår YOLOv9 en ny standard för effektivitet:
- Jämfört med tidigare YOLO-versioner uppnår YOLOv9 bättre noggrannhet med 10-15% färre parametrar och 25% färre beräkningar. Detta leder till betydande förbättringar i hastighet och kapacitet över modellstorlekar.
- YOLOv9 överträffar andra realtidsdetektorer som YOLO-MS och RT-DETR när det gäller parameter- och FLOPs-effektivitet. Det kräver betydligt färre resurser för att nå en given prestandanivå.
- Mindre YOLOv9-modeller slår till och med större förtränade modeller som RT-DETR-X. Trots att de använder 36% färre parametrar uppnår YOLOv9-E bättre 55,6% AP genom mer effektiva arkitekturer.
Så genom att adressera effektivitet på både arkitektonisk och träningsnivå sätter YOLOv9 en ny standard för att maximera prestanda inom begränsade resurser.
GELAN – Optimerad arkitektur för effektivitet
YOLOv9 introducerar en ny arkitektur som kallas General Efficient Layer Aggregation Network (GELAN) som maximerar noggrannhet inom en minimal parameterbudget. Det bygger på tidigare YOLO-modeller men optimerar de olika komponenterna specifikt för effektivitet.

YOLOv9: Lära vad du vill lära med Programmerbar Gradient Information https://arxiv.org/abs/2402.13616
Bakgrund på CSPNet och ELAN
Senaste YOLO-versioner sedan v5 har använt ryggraden baserad på Cross-Stage Partial Network (CSPNet) för förbättrad effektivitet. CSPNet tillåter funktioner att aggregeras över parallella nätverksgrenar med minimal överhuvudbörda:
Detta är mer effektivt än att bara stapla lager i serie, vilket ofta leder till redundant beräkning och överparameterisering.
YOLOv7 uppgraderade CSPNet till Efficient Layer Aggregation Network (ELAN), som förenklade blockstrukturen:
ELAN avlägsnade genvägsanslutningar mellan lager till förmån för en aggregeringsnod i utgången. Detta förbättrade ytterligare parameter- och FLOPs-effektivitet.
Generalisering av ELAN för flexibel effektivitet
Författarna generaliserade ELAN ytterligare för att skapa GELAN, ryggraden som används i YOLOv9. GELAN gjorde viktiga ändringar för att förbättra flexibilitet och effektivitet:
- Utbytbara beräkningsblock – Tidigare ELAN hade fasta konvolutionslager. GELAN tillåter att ersätta vilket beräkningsblock som helst, som ResNets eller CSPNet, vilket ger fler arkitektoniska alternativ.
- Djupparametrisering – Separata blockdjup för huvudgrenen vs aggregeringsgrenen förenklar finjustering av resursanvändning.
- Stabil prestanda över konfigurationer – GELAN upprätthåller noggrannhet med olika blocktyper och djup, vilket tillåter flexibel skalning.
Dessa ändringar gör GELAN till en stark men konfigurerbar rygg för att maximera effektivitet:
I experiment presterade GELAN-modeller konsekvent bättre än tidigare YOLO-arkitekturer i noggrannhet per parameter:
- GELAN-Small med 7M parametrar slog YOLOv7-Nano med 11M parametrar
- GELAN-Medium matchade tyngre YOLOv7-mediummodeller
Så GELAN tillhandahåller en optimerad rygg för att skala YOLO över olika effektivitetsmål. Nästa steg är att se hur PGI hjälper dem att träna bättre.
PGI – Förbättrad träning för alla modellstorlekar
Medan arkitekturval påverkar effektivitet under inferenstid, påverkar träningsprocessen också modellens resursanvändning. YOLOv9 använder en ny teknik som kallas Programmerbar Gradient Information (PGI) för att förbättra träning över olika modellstorlekar och komplexiteter.
Problemet med otillförlitliga grader
Under träning beräknar en förlustfunktion modellens utgångar mot grundtruthetiketter och beräknar en felgradient för att uppdatera parametrar. Bullriga eller vilseledande grader leder till dålig konvergens och effektivitet.
Mycket djupa nätverk förvärrar detta genom informationsflaskhalsen – grader från djupa lager är korrupta av förlorade eller komprimerade signaler.
Djup tillsyn hjälper genom att införa ytterligare sidogrenar med förluster för att tillhandahålla renare grader. Men det bryter ofta samman för mindre modeller, orsakande interferens och divergens mellan olika grenar.
Så vi behöver ett sätt att tillhandahålla tillförlitliga grader som fungerar över alla modellstorlekar, särskilt mindre.
Introduktion av Programmerbar Gradient Information (PGI)
För att adressera otillförlitliga grader föreslår YOLOv9 Programmerbar Gradient Information (PGI). PGI har två huvudsakliga komponenter utformade för att förbättra gradientkvalitet:
1. Hjälpbara reversibla grenar
Ytterligare grenar tillhandahåller reversibla anslutningar tillbaka till inmatningen med hjälp av block som RevCols. Detta upprätthåller rena grader och undviker informationsflaskhalsen.
2. Multinivågradientintegration
En fusionsblock aggregerar grader från alla grenar innan det matar tillbaka till huvudmodellen. Detta förhindrar divergens över grenar.
Genom att generera mer tillförlitliga grader förbättrar PGI träningskonvergens och effektivitet över alla modellstorlekar:
- Lätta modeller drar nytta av djup tillsyn som de inte kunde använda tidigare
- Större modeller får renare grader som möjliggör bättre generalisering
Experiment visade att PGI förbättrade noggrannheten för små och stora YOLOv9-konfigurationer över baslinjen GELAN:
- +0,1-0,4% AP för YOLOv9-Small
- +0,5-0,6% AP för större YOLOv9-modeller
Så PGI:s programmerbara grader möjliggör att modeller, både stora och små, tränas mer effektivt.
YOLOv9 sätter ny standard för noggrannhet
Genom att kombinera arkitektoniska förbättringar från GELAN och träningsförbättringar från PGI uppnår YOLOv9 en ny standard för noggrannhet:
Experiment på COCO-dataset visar att YOLOv9 överträffar tidigare YOLO-versioner, samt andra realtidsdetektorer som YOLO-MS, i noggrannhet och effektivitet:
Några viktiga höjdpunkter:
- YOLOv9-Small överträffar YOLO-MS-Small med 10% färre parametrar och beräkningar
- YOLOv9-Medium matchar tyngre YOLOv7-modeller med mindre än hälften av resurserna
- YOLOv9-Large överträffar YOLOv8-X med 15% färre parametrar och 25% färre FLOPs
Förbluffande nog överträffar till och med mindre YOLOv9-modeller tyngre modeller från andra detektorer som använder förträning, som RT-DETR-X. Trots att de använder 4 gånger färre parametrar överträffar YOLOv9-E RT-DETR-X i noggrannhet.
Dessa resultat demonstrerar YOLOv9:s överlägsna effektivitet. Förbättringarna möjliggör högnoggrann objektdetektion i fler realistiska användningsfall.
Viktiga slutsatser om YOLOv9-uppdateringar
Låt oss snabbt sammanfatta några av de viktigaste uppdateringarna och innovationerna som möjliggör YOLOv9:s nya standardprestanda:
- GELAN-arkitektur – Förbättrar parameter-effektivitet genom flexibla aggregeringsblock. Tillåter skalning av modeller för olika mål.
- Programmerbar gradientinformation – Tillhandahåller tillförlitliga grader genom reversibla anslutningar och fusion. Förbättrar träning över modellstorlekar.
- Ökad noggrannhet med färre resurser – Minskar parametrar och beräkningar med 10-15% jämfört med YOLOv8 med bättre noggrannhet. Möjliggör mer effektiv inferens.
- Överlägsen prestanda över modellstorlekar – Sätter ny standard för lätta, medelstora och stora modellkonfigurationer. Överträffar tungt förtränade modeller.
- Utvidgad tillämpbarhet – Högre effektivitet utvidgar giltiga användningsfall, som realtidsdetektion på edge-enheter.
Genom att direkt adressera noggrannhet, effektivitet och tillämpbarhet flyttar YOLOv9 objektdetektion framåt för att möta olika realistiska behov. Uppdateringarna tillhandahåller en stark grund för framtida innovation inom denna kritiska datorseende-funktion.












