Inteligență artificială
YOLOv9: Un salt în detectarea în timp real a obiectelor
Detectarea obiectelor a cunoscut o avansare rapidă în ultimii ani, datorită algoritmilor de învățare profundă, cum ar fi YOLO (You Only Look Once). Ultima iterație, YOLOv9, aduce îmbunătățiri majore în ceea ce privește acuratețea, eficiența și aplicabilitatea, față de versiunile anterioare. În acest articol, vom analiza inovațiile care fac din YOLOv9 un nou standard pentru detectarea în timp real a obiectelor.
O scurtă introducere în detectarea obiectelor
Înainte de a intra în detalii despre ce este nou în YOLOv9, să facem o scurtă recapitulare a modului în care funcționează detectarea obiectelor. Scopul detectării obiectelor este de a identifica și localiza obiecte într-o imagine, cum ar fi mașini, oameni sau animale. Este o capacitate cheie pentru aplicații precum mașinile autonome, sistemele de supraveghere și căutarea de imagini.
Detectorul ia o imagine ca intrare și produce cutii de delimitare în jurul obiectelor detectate, fiecare cu o etichetă de clasă asociată. Seturile de date populare, cum ar fi MS COCO, oferă mii de imagini etichetate pentru a antrena și evalua aceste modele.
Există două abordări principale pentru detectarea obiectelor:
- Detectoarele în două etape cum ar fi Faster R-CNN, generează mai întâi propuneri de regiuni, apoi clasifică și rafinează granițele fiecărei regiuni. Tind să fie mai precise, dar mai lente.
- Detectoarele într-o singură etapă cum ar fi YOLO, aplică un model direct peste imaginea într-o singură trecere. Fac un compromis între acuratețe și timp de inferență foarte rapid.
YOLO a inițiat abordarea într-o singură etapă. Să vedem cum a evoluat de-a lungul mai multor versiuni pentru a îmbunătăți acuratețea și eficiența.
Recapitulare a versiunilor anterioare YOLO
Familia de modele YOLO (You Only Look Once) a fost în fruntea detectării rapide a obiectelor de la publicarea primei versiuni în 2016. Iată o scurtă prezentare a modului în care YOLO a progresat de-a lungul mai multor iterații:
- YOLOv1 a propus un model unitar pentru a prezice cutii de delimitare și probabilități de clasă direct din imagini complete într-o singură trecere. Acest lucru l-a făcut extrem de rapid în comparație cu modelele anterioare în două etape.
- YOLOv2 a îmbunătățit versiunea originală prin utilizarea normalizării batch pentru o stabilitate mai bună, ancorarea cutiilor la diverse scară și raport de aspect pentru a detecta dimensiuni multiple, și o varietate de alte optimizări.
- YOLOv3 a adăugat un nou extractor de caracteristici numit Darknet-53, cu mai multe straturi și scurtături între ele, îmbunătățind în continuare acuratețea.
- YOLOv4 a combinat idei din alte detectoare de obiecte și modele de segmentare pentru a împinge acuratețea și mai sus, menținând în același timp inferența rapidă.
- YOLOv5 a rescris complet YOLOv4 în PyTorch și a adăugat un nou extractor de caracteristici numit CSPDarknet, împreună cu mai multe îmbunătățiri.
- YOLOv6 a continuat să optimizeze arhitectura și procesul de antrenare, cu modele pre-antrenate pe seturi de date externe mari pentru a îmbunătăți performanța.
Prin urmare, versiunile anterioare YOLO au atins o acuratețe mai ridicată prin îmbunătățiri ale arhitecturii modelului, tehnicilor de antrenare și pre-antrenare. Dar pe măsură ce modelele devin mai mari și mai complexe, viteza și eficiența încep să sufere.
Nevoia de o mai bună eficiență
Multe aplicații necesită detectarea obiectelor să ruleze în timp real pe dispozitive cu resurse de calcul limitate. Pe măsură ce modelele devin mai mari și mai complexe, ele devin impracticabile pentru implementare.
De exemplu, o mașină autonomă are nevoie să detecteze obiecte la rate de cadre ridicate, utilizând procesoare din interiorul vehiculului. O cameră de securitate are nevoie să ruleze detectarea obiectelor pe fluxul de video, utilizând hardware-ul încorporat. Telefoanele și alte dispozitive pentru consumatori au constrângeri stricte de putere și termice.
Versiunile recente YOLO obțin o acuratețe ridicată cu un număr mare de parametri și operații de multiplicare-adunare (FLOPs). Dar acest lucru se face cu costul vitezei, dimensiunii și eficienței energetice.
De exemplu, YOLOv5-L necesită peste 100 de miliarde de FLOPs pentru a procesa o singură imagine de 1280×1280. Acest lucru este prea lent pentru multe cazuri de utilizare în timp real. Tendința de a avea modele tot mai mari crește și riscul de supraparametrizare și face mai greu să se generalizeze.
Prin urmare, pentru a extinde aplicabilitatea detectării obiectelor, avem nevoie de modalități de a îmbunătăți eficiența – de a obține o mai bună acuratețe cu mai puțini parametri și calcule. Să vedem tehnicile utilizate în YOLOv9 pentru a aborda această provocare.
YOLOv9 – Mai bună acuratețe cu mai puține resurse
Cercetătorii din spatele YOLOv9 s-au concentrat pe îmbunătățirea eficienței pentru a atinge performanța în timp real pe o gamă mai largă de dispozitive. Ei au introdus două inovații cheie:
- O nouă arhitectură de model numită Rețea de agregare eficientă generală (GELAN) care maximizează acuratețea, minimizând parametrii și FLOPs.
- O tehnică de antrenare numită Informație de gradient programabilă (PGI) care oferă gradienti de învățare mai fiabili, în special pentru modele mai mici.
Să vedem cum fiecare dintre aceste avanțări ajută la îmbunătățirea eficienței.
Arhitectură mai eficientă cu GELAN
Arhitectura modelului în sine este critică pentru a echilibra acuratețea cu viteza și utilizarea resurselor în timpul inferenței. Rețeaua neurală are nevoie de suficientă adâncime și lățime pentru a captura caracteristici relevante din imaginile de intrare. Dar prea multe straturi sau filtre conduc la modele lente și umflate.
Autorii au proiectat GELAN în mod special pentru a stoarce maximum de acuratețe din cea mai mică arhitectură posibilă.
GELAN utilizează două blocuri principale, stivuite împreună:
- Blocuri de agregare eficientă a straturilor – Acestea agregă transformări de-a lungul mai multor ramuri ale rețelei pentru a captura caracteristici multi-scală în mod eficient.
- Blocuri computaționale – Blocurile CSPNet ajută la propagarea informațiilor de-a lungul straturilor. Orice bloc poate fi înlocuit în funcție de constrângerile de calcul.
Prin echilibrarea și combinarea atentă a acestor blocuri, GELAN atinge un punct optim între performanță, parametri și viteză. Aceeași arhitectură modulară poate fi escaladată în sus sau în jos pe dispozitive cu hardware diferit.
Experimentele au arătat că GELAN încorporează mai multă performanță în modele mai mici, comparativ cu arhitecturile YOLO anterioare. De exemplu, GELAN-Small cu 7M parametri a depășit YOLOv7-Nano cu 11M parametri. Și GELAN-Medium cu 20M parametri a performant la fel ca modelele YOLOv7 medii, care necesită 35-40M parametri.
Prin urmare, prin proiectarea unei arhitecturi parametrizate, special optimizate pentru eficiență, GELAN permite modelelor să ruleze mai rapid și pe dispozitive cu resurse limitate. Următorul, vom vedea cum PGI le ajută să antreneze și mai bine.
Antrenament mai bun cu Informație de gradient programabilă (PGI)
Antrenamentul modelului este la fel de important pentru a maximiza acuratețea cu resurse limitate. Autorii YOLOv9 au identificat probleme la antrenarea modelelor mai mici, cauzate de informații de gradient nefiabile.
Gradientii determină cât de mult sunt actualizați greutățile modelului în timpul antrenării. Gradientii zgomotoși sau înșelători duc la o convergență slabă. Această problemă devine mai pronunțată pentru rețelele neurale mai mici.
Tehnica de supervizare profundă abordează acest lucru prin introducerea de ramuri laterale suplimentare cu pierderi pentru a propaga un semnal de gradient mai bun prin rețea. Dar aceasta are tendința de a se deteriora și de a cauza divergență pentru modelele mai ușoare.

YOLOv9: Învățarea a ceea ce vrei să înveți utilizând Informație de gradient programabilă https://arxiv.org/abs/2402.13616
Pentru a depăși această limitare, YOLOv9 introduce Informație de gradient programabilă (PGI). PGI are două componente principale:
- Ramuri reversibile auxiliare – Acestea oferă gradienti mai curați prin menținerea unor conexiuni reversibile la intrare, utilizând blocuri precum RevCols.
- Integrare multi-nivel a gradientilor – Aceasta evită divergența din cauza interferenței dintre diferitele ramuri laterale. Aceasta combină gradientii de la toate ramurile înainte de a le alimenta înapoi la modelul principal.
Prin generarea unor gradienti mai fiabili, PGI ajută la antrenarea modelelor mai mici la acuratețe mai ridicată:
Experimentele au arătat că PGI a îmbunătățit acuratețea pe toate dimensiunile modelului, în special pentru configurațiile mai mici. De exemplu, a crescut scorurile AP ale YOLOv9-Small cu 0,1-0,4% față de GELAN-Small de bază. Îmbunătățirile au fost și mai semnificative pentru modelele mai adânci, cum ar fi YOLOv9-E, la 55,6% mAP.
Prin urmare, PGI permite modelelor mai mici și eficiente să se antreneze la niveluri de acuratețe mai ridicate, anterior atinse doar de modele supraparametrizate.
YOLOv9 stabilește un nou standard pentru eficiență
Prin combinarea avansurilor arhitecturale ale GELAN cu îmbunătățirile de antrenare din PGI, YOLOv9 atinge o eficiență și performanță fără precedent:
- Comparativ cu versiunile anterioare YOLO, YOLOv9 obține o mai bună acuratețe cu 10-15% mai puțini parametri și 25% mai puține calcule. Acest lucru aduce îmbunătățiri majore în viteză și capacitate pe dimensiuni de model.
- YOLOv9 depășește alți detectoare în timp real, cum ar fi YOLO-MS și RT-DETR, în ceea ce privește eficiența parametrilor și FLOPs. Necesită mult mai puține resurse pentru a atinge un anumit nivel de performanță.
- Modelele YOLOv9 mai mici chiar depășesc modelele mai mari pre-antrenate, cum ar fi RT-DETR-X. În ciuda utilizării a 36% mai puțini parametri, YOLOv9-E atinge 55,6% AP prin arhitecturi mai eficiente.
Prin urmare, prin abordarea eficienței la nivelul arhitecturii și antrenării, YOLOv9 stabilește un nou standard pentru maximizarea performanței în cadrul resurselor limitate.
GELAN – Arhitectură optimizată pentru eficiență
YOLOv9 introduce o nouă arhitectură numită Rețea de agregare eficientă generală (GELAN) care maximizează acuratețea într-un buget minim de parametri. Se bazează pe modelele YOLO anterioare, dar optimizează diversele componente în mod special pentru eficiență.

YOLOv9: Învățarea a ceea ce vrei să înveți utilizând Informație de gradient programabilă
https://arxiv.org/abs/2402.13616
Fondul CSPNet și ELAN
Versiunile recente YOLO, începând cu v5, au utilizat rețele bazate pe Cross-Stage Partial Network (CSPNet) pentru o eficiență îmbunătățită. CSPNet permite agregarea hărților de caracteristici de-a lungul ramurilor paralele ale rețelei, adăugând un minim de suprasarcină:
Acest lucru este mai eficient decât simpla stivuire a straturilor în serie, ceea ce duce adesea la calcule redundante și supraparametrizare.
YOLOv7 a actualizat CSPNet la Efficient Layer Aggregation Network (ELAN), simplificând structura blocului:
ELAN a eliminat conexiunile shortcut între straturi în favoarea unui nod de agregare la ieșire. Acest lucru a îmbunătățit și mai mult eficiența parametrilor și FLOPs.
Generalizarea ELAN pentru eficiență flexibilă
Autorii au generalizat și mai mult ELAN pentru a crea GELAN, spatele folosit în YOLOv9. GELAN a făcut modificări cheie pentru a îmbunătăți flexibilitatea și eficiența:
- Blocuri computaționale interschimbabile – ELAN anterior avea straturi convoluționale fixe. GELAN permite înlocuirea oricărui bloc computațional, cum ar fi ResNets sau CSPNet, oferind mai multe opțiuni arhitecturale.
- Parametrizarea în adâncime – Adâncimile separate ale blocurilor pentru ramura principală versus ramura de agregare simplifică ajustarea utilizării resurselor.
- Performanță stabilă pe configurații – GELAN menține acuratețea cu diferite tipuri de blocuri și adâncimi, permițând o escaladare flexibilă.
Aceste modificări fac din GELAN o arhitectură puternică, dar configurabilă pentru maximizarea eficienței:
În experimente, modelele GELAN au depășit constant arhitecturile YOLO anterioare în ceea ce privește acuratețea pe parametri:
- GELAN-Small cu 7M parametri a depășit YOLOv7-Nano cu 11M parametri
- GELAN-Medium a egalat modelele YOLOv7 medii
Prin urmare, GELAN oferă un spate optimizat pentru a scala YOLO pe diverse ținte de eficiență. Următorul, vom vedea cum PGI le ajută să antreneze și mai bine.
PGI – Antrenament îmbunătățit pentru toate dimensiunile modelului
În timp ce alegerea arhitecturii afectează eficiența în timpul inferenței, procesul de antrenare afectează și utilizarea resurselor. YOLOv9 utilizează o nouă tehnică numită Informație de gradient programabilă (PGI) pentru a îmbunătăți antrenamentul pe diverse dimensiuni și complexități ale modelului.
Problema gradientilor nefiabili
În timpul antrenării, o funcție de pierdere compară ieșirile modelului cu etichetele de ground truth și calculează un gradient de eroare pentru a actualiza parametrii. Gradientii zgomotoși sau înșelători duc la o convergență slabă și eficiență.
Rețelele neurale foarte adânci exacerbează acest lucru prin gâtuirea informației – gradientii de la straturile adânci sunt corupți de semnalele pierdute sau comprimate.
Supervizarea profundă ajută prin introducerea unor ramuri laterale auxiliare cu pierderi pentru a oferi gradienti mai curați. Dar aceasta adesea se deteriorează pentru modelele mai mici, cauzând interferență și divergență între diferitele ramuri.
Prin urmare, avem nevoie de o modalitate de a oferi gradienti fiabili care să funcționeze pe toate dimensiunile modelului, în special pentru cele mai mici.
Introducerea Informației de gradient programabilă (PGI)
Pentru a aborda gradientii nefiabili, YOLOv9 propune Informație de gradient programabilă (PGI). PGI are două componente principale, proiectate pentru a îmbunătăți calitatea gradientilor:
1. Ramuri reversibile auxiliare
Ramuri suplimentare oferă conexiuni reversibile înapoi la intrare, utilizând blocuri precum RevCols. Acest lucru menține gradienti curați, evitând gâtuirea informației.
2. Integrare multi-nivel a gradientilor
Un bloc de fuziune agregă gradientii de la toate ramurile înainte de a-i alimenta înapoi la modelul principal. Acest lucru previne divergența între ramuri.
Prin generarea unor gradienti mai fiabili, PGI îmbunătățește convergența și eficiența antrenării pe toate dimensiunile modelului:
- Modele ușoare beneficiază de supervizarea profundă pe care nu o puteau utiliza anterior
- Modele mai mari obțin gradienti mai curați, permițând o mai bună generalizare
Experimentele au arătat că PGI a îmbunătățit acuratețea pentru configurațiile mici și mari ale YOLOv9, față de GELAN de bază:
- +0,1-0,4% AP pentru YOLOv9-Small
- +0,5-0,6% AP pentru modelele YOLOv9 mai mari
Prin urmare, PGI permite modelelor, mari și mici, să se antreneze mai eficient.
YOLOv9 stabilește un nou standard de acuratețe
Prin combinarea îmbunătățirilor arhitecturale ale GELAN cu cele de antrenare ale PGI, YOLOv9 atinge rezultate noi fără precedent pentru detectarea în timp real a obiectelor.
Experimentele pe setul de date COCO arată că YOLOv9 depășește versiunile anterioare YOLO, precum și alte detectoare în timp real, cum ar fi YOLO-MS, în ceea ce privește acuratețea și eficiența:
Câteva puncte cheie:
- YOLOv9-Small depășește YOLO-MS-Small cu 10% mai puțini parametri și calcule
- YOLOv9-Medium egalizează modelele YOLOv7 mai grele, utilizând mai puțin de jumătate din resurse
- YOLOv9-Large depășește YOLOv8-X cu 15% mai puțini parametri și 25% mai puține FLOPs
Remarcabil, modelele YOLOv9 mai mici chiar depășesc modelele mai grele de la alți detectoare care utilizează pre-antrenare, cum ar fi RT-DETR-X. În ciuda utilizării a 4 ori mai puțini parametri, YOLOv9-E depășește RT-DETR-X în ceea ce privește acuratețea.
Aceste rezultate demonstrează eficiența superioară a YOLOv9. Îmbunătățirile permit detectarea obiectelor cu acuratețe ridicată în mai multe cazuri de utilizare din lumea reală.
Puncte cheie despre actualizările YOLOv9
Să recapitulăm rapid câteva dintre principalele actualizări și inovații care permit performanța fără precedent a YOLOv9:
- Arhitectură GELAN optimizată – Îmbunătățește eficiența parametrilor prin blocuri de agregare flexibile. Permite escaladarea modelelor pentru diverse ținte.
- Informație de gradient programabilă – Oferă gradienti fiabili prin conexiuni reversibile și fuziune. Îmbunătățește antrenamentul pe toate dimensiunile modelului.
- Mai bună acuratețe cu mai puține resurse – Reduce parametrii și calculele cu 10-15% față de YOLOv8, cu o acuratețe mai bună. Permite inferențe mai eficiente.
- Rezultate superioare pe toate dimensiunile modelului – Stabilește un nou standard pentru configurațiile ușoare, medii și mari. Depășește modele pre-antrenate mai grele.
- Aplificabilitate extinsă – O eficiență mai ridicată extinde cazurile de utilizare viabile, cum ar fi detectarea în timp real pe dispozitive edge.
Prin abordarea directă a acurateței, eficienței și aplicabilității, YOLOv9 avansează detectarea obiectelor pentru a satisface nevoi diverse din lumea reală. Actualizările oferă o bază solidă pentru inovații viitoare în această capacitate critică de vedere computerizată.


