Modele și platforme AI
YOLOv9: Un salt în detectarea obiectelor în timp real
Detectarea obiectelor a cunoscut o evoluție rapidă în ultimii ani, datorită algoritmilor de învățare profundă precum 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 explora inovațiile care fac din YOLOv9 un nou standard de referință pentru detectarea obiectelor în timp real.
Un scurt ghid despre detectarea obiectelor
Înainte de a intra în detalii despre ce este nou în YOLOv9, să trecem în revistă cum funcționează detectarea obiectelor. Scopul detectării obiectelor este de a identifica și localiza obiecte dintr-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 precum MS COCO oferă mii de imagini etichetate pentru a antrena și evalua aceste modele.
Există două abordări principale pentru detectarea obiectelor:
- Detectorii cu două etape precum Faster R-CNN generează mai întâi propuneri de regiuni, apoi clasifică și rafinează granițele fiecărei regiuni. Ei tend să fie mai preciși, dar mai lenti.
- Detectorii cu o singură etapă precum YOLO aplică un model direct peste imaginea într-o singură trecere. Ei fac un compromis între acuratețe și timp de inferență foarte rapid.
YOLO a inițiat abordarea cu o singură etapă. Să vedem cum a evoluat de-a lungul mai multor versiuni pentru a îmbunătăți acuratețea și eficiența.
Revizuirea 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ă revizuire 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 cu două etape anterioare.
- 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 alte î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 în continuare performanța.
Deci, în rezumat, versiunile anterioare YOLO au atins acuratețe mai mare prin îmbunătățiri ale arhitecturii modelului, tehnicilor de antrenare și pre-antrenării. 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 a fi implementate.
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 supraveghere are nevoie să ruleze detectarea obiectelor pe fluxul său de video, utilizând hardware-ul încorporat. Telefoanele și alte dispozitive pentru consumatori au constrângeri foarte stricte de putere și temperatură.
Versiunile recente YOLO obțin acuratețe ridicată cu un număr mare de parametri și operații de multiplicare-adunare (FLOPs). Dar acest lucru se face cu prețul 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 din ce în ce mai mari crește și riscul de supraparametrizare și face mai greu să se generalizeze.
Deci, 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ă generalizată (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 avanposturi ajută la îmbunătățirea eficienței.
Mai eficientă arhitectură cu GELAN
Arhitectura modelului însuși este critică pentru a echilibra acuratețea împotriva vitezei și utilizării 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ă – Acestea agregă transformări de-a lungul mai multor ramuri ale rețelei pentru a captura caracteristici multi-scară în mod eficient.
- Blocuri computaționale – Blocurile CSPNet ajută la propagarea informației 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 dulce între performanță, parametri și viteză. Aceeași arhitectură modulară poate fi escaladată în sus sau în jos pe diferite dimensiuni de modele și hardware.
Experimentele au arătat că GELAN încadrează mai multă performanță în modele mai mici în comparație 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.
Deci, prin proiectarea unei arhitecturi parametrizate, optimizate în mod special pentru eficiență, GELAN permite modelelor să ruleze mai rapid și pe dispozitive cu resurse limitate. Următorul, vom vedea cum PGI le ajută să se 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 problemele de antrenare a modelelor mai mici, cauzate de informații de gradient nereabile.
Gradientii determină cât de mult sunt actualizați parametrii 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 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 degrada și de a cauza divergență pentru modelele mai ușoare.

YOLOv9: Învățarea a ceea ce vrei să înveți folosind 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 conexiuni reversibile înapoi la intrare, utilizând blocuri precum RevCols.
- Integrare multi-nivel a gradientului – Aceasta evită divergența de la diferitele ramuri laterale care interferează. Aceasta combină gradientii de la toate ramurile înainte de a le alimenta înapoi la modelul principal.
Prin generarea de gradienti mai fiabili, PGI îmbunătățește convergența și eficiența antrenării pentru toate dimensiunile de modele:
Experimentele au arătat că PGI a îmbunătățit acuratețea pentru toate configurațiile de modele, în special pentru cele 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, care a atins 55,6% mAP.
Deci, PGI permite modelelor mai mici și mai eficiente să se antreneze la niveluri de acuratețe mai înalte, anterior atinse doar de modelele supraparametrizate.
YOLOv9 stabilește un nou standard de referință pentru eficiență
Prin combinarea avansurilor arhitecturale ale GELAN cu îmbunătățirile de antrenare din PGI, YOLOv9 atinge o eficiență și o performanță fără precedent:
- În comparație 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 diferite dimensiuni de modele.
- YOLOv9 depășește alți detectoare în timp real precum YOLO-MS și RT-DETR în ceea ce privește eficiența parametrilor și FLOPs. Acesta 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 o acuratețe de 55,6% AP, datorită arhitecturilor mai eficiente.
Deci, prin abordarea eficienței la nivelul arhitecturii și al antrenării, YOLOv9 stabilește un nou standard de referință pentru maximizarea performanței în cadrul resurselor limitate.
GELAN – Arhitectură optimizată pentru eficiență
YOLOv9 introduce o nouă arhitectură numită Rețea de agregare eficientă generalizată (GELAN) care maximizează acuratețea în cadrul unui buget minim de parametri. Acesta 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 folosind Informație de gradient programabilă
https://arxiv.org/abs/2402.13616
Fondul CSPNet și ELAN
Versiunile recente YOLO, începând cu v5, au utilizat backbones bazate pe Rețeaua parțială transversală (CSPNet) pentru o eficiență îmbunătățită. CSPNet permite agregarea hartilor 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, care adesea duce la calcule redundante și supraparametrizare.
YOLOv7 a actualizat CSPNet la Rețeaua de agregare eficientă (ELAN), care a simplificat 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, spina dorsală utilizată î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 ramurilor principale versus agregatorului simplifică ajustarea utilizării resurselor.
- Performanță stabilă pe diferite configurații – GELAN menține acuratețea cu diferite tipuri de blocuri și adâncimi, permițând scalarea flexibilă.
Aceste schimbări fac din GELAN o spate puternică și 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, care necesită 35-40M parametri
Deci, GELAN oferă o spate optimizată pentru a scala YOLO pe diferite ținte de eficiență. Următorul, vom vedea cum PGI le ajută să se antreneze și mai bine.
PGI – Antrenament îmbunătățit pentru toate dimensiunile de modele
În timp ce alegerea arhitecturii afectează eficiența în timpul inferenței, procesul de antrenare influențează și utilizarea resurselor. YOLOv9 utilizează o tehnică nouă numită Informație de gradient programabilă (PGI) pentru a îmbunătăți antrenamentul pe diferite dimensiuni și complexități de modele.
Problema gradientilor nereabili
În timpul antrenării, o funcție de pierdere compară ieșirile modelului cu etichetele de referință ș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 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 de ramuri laterale auxiliare cu pierderi pentru a oferi gradienti mai curați. Dar aceasta adesea se degradează pentru modelele mai mici, cauzând interferență și divergență între diferitele ramuri.
Deci, avem nevoie de o modalitate de a oferi gradienti fiabili care să funcționeze pe toate dimensiunile de modele, în special pe cele mai mici.
Introducerea Informației de gradient programabilă (PGI)
Pentru a aborda gradientii nereabili, YOLOv9 propune Informație de gradient programabilă (PGI). PGI are două componente principale, proiectate pentru a îmbunătăți calitatea gradientului:
1. Ramuri auxiliare reversibile
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 gradientului
Un bloc de fuziune agregă gradientii de la toate ramurile înainte de a le alimenta înapoi la modelul principal. Acest lucru previne divergența de-a lungul ramurilor.
Prin generarea de gradienti mai fiabili, PGI îmbunătățește convergența și eficiența antrenării pentru toate dimensiunile de modele:
- Modele ușoare beneficiază de supervizarea profundă pe care nu o puteau utiliza anterior
- Modele mai mari primesc 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 de modele YOLOv9 față de GELAN de bază:
- +0,1-0,4% AP pentru YOLOv9-Small
- +0,5-0,6% AP pentru modelele YOLOv9 mai mari
Deci, gradientii programabili PGI permit atât modelelor mici, cât și celor mari să se antreneze mai eficient.
YOLOv9 stabilește un nou standard de referință pentru acuratețe
Prin combinarea îmbunătățirilor arhitecturale din GELAN și a avansurilor de antrenare din PGI, YOLOv9 atinge rezultate de referință noi pentru detectarea obiectelor în timp real.
Experimentele pe setul de date COCO arată că YOLOv9 depășește versiunile anterioare YOLO, precum și alți 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
În mod 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 de înaltă acuratețe în mai multe cazuri de utilizare din lumea reală.
Puncte cheie despre îmbunătățirile YOLOv9
Să rezumăm rapid câteva dintre principalele îmbunătățiri și inovații care permit performanța de referință a YOLOv9:
- Arhitectură GELAN optimizată – Îmbunătățește eficiența parametrilor prin blocuri de agregare flexibile. Permite scalarea modelelor pentru diferite ținte.
- Informație de gradient programabilă – Oferă gradienti fiabili prin conexiuni reversibile și fuziune. Îmbunătățește antrenamentul pe toate dimensiunile de modele.
- Mai mare 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ță mai eficientă.
- Rezultate superioare pe toate dimensiunile de modele – Stabilește un nou standard de referință pentru configurațiile de modele ușoare, medii și mari. Depășește modelele pre-antrenate grele.
- Aplicabilitate extinsă – O eficiență mai mare extinde cazurile de utilizare viabile, cum ar fi detectarea în timp real pe dispozitive cu margine.
Prin abordarea directă a acurateței, eficienței și aplicabilității, YOLOv9 avansează detectarea obiectelor pentru a satisface nevoi diverse din lumea reală. Îmbunătățirile oferă o bază puternică pentru inovația viitoare în această capacitate critică de vedere a computerului.












