YOLO-NAS este apogeul modelelor de detectare a obiectelor din seria YOLO. Dar de ce este considerat cel mai bun?
După YOLOv8, există încă un nou și mai bun model de ultimă generație de detectare a obiectelor, YOLO-NAS. Este un algoritm de detectare a obiectelor dezvoltat de Deci AI pentru a aborda limitările modelelor anterioare YOLO (You Only Look Once).
Modelul este construit din AutoNAC, un motor de căutare a arhitecturii neuronale. Depășește viteza și performanța modelelor SOTA, care prezintă un salt mare în detectarea obiectelor prin îmbunătățirea compromisurilor de suport pentru acuratețe-latență și cuantificare.
Acest articol va discuta punctele forte și caracteristicile YOLO-NAS, explorând de ce este cel mai bun model de detectare a obiectelor din seria YOLO.
Înțelegerea modului în care funcționează YOLO-NAS
AutoNAC (Automated Neural Architecture Construction) de la Deci generează arhitectura YOLO-NAS. AutoNAC este un proces fără întreruperi care oferă o creștere a performanței rețelelor neuronale profunde existente.
Conducta AutoNAC ia o rețea neuronală profundă antrenată de utilizator ca intrare, un set de date și acces la un sistem de inferență. Rețeaua neuronală profundă antrenată de utilizator este apoi reproiectată folosind conducta. O arhitectură optimizată cu latență mai mică este apoi realizată fără a compromite acuratețea.
YOLO-NAS folosește RepVGG. RepVGG îl pune la dispoziție pentru optimizare post-antrenament prin re-parametrizare sau cuantizare post-training. Este un tip de arhitectură de rețea neuronală bazată pe VGG. Utilizează tehnici de regularizare concepute pentru a îmbunătăți capacitatea de generalizare a modelelor de învățare profundă.
Designul arhitecturii este mai eficient în viteză și memorie. RepVGG urmează un antrenament folosind o arhitectură cu mai multe ramuri pentru a obține o inferență mai rapidă. Acesta este apoi convertit într-o singură ramură folosind re-parametrizare.
Această caracteristică face YOLO-NAS foarte util pentru implementarea în producție. Acest lucru se datorează faptului că este posibil să antrenați și să optimizați modelul cu precizie completă pentru viteza de inferență și utilizarea memoriei.
Caracteristicile cheie ale YOLO-NAS
Caracteristicile cheie ale YOLO-NAS includ următoarele:
- Antrenament cuantizare-conștient: Modelul folosește QSP și QCI (module cuantizare-aware) pentru a reduce pierderea de precizie în timpul cuantizării post-antrenament prin combinarea re-parametrizării cuantizării pe 8 biți.
- Proiectare arhitecturală automată: AutoNAC, tehnologia proprie NAS a Deci, caută o arhitectură de model optimă care să integreze arhitecturile fundamentale ale modelelor YOLO pentru a veni cu un model optimizat.
- Tehnica de cuantizare hibridă: Metoda standard de cuantificare afectează întregul model. În schimb, tehnica de cuantizare hibridă cuantifică o secțiune a unui model pentru a echilibra latența și acuratețea modelului.
- Utilizați abordări unice pentru a pregăti modelul pentru antrenament folosind date etichetate automat. Modelul învață apoi din predicțiile sale și accesează cantități mari de date.
Analiză comparativă: YOLO-NAS vs alte modele YOLO
Mai jos este o comparație între diferitele modele din seria YOLO.
YOLO-NAS este mai bun decât modelele preexistente de detectare a obiectelor, dar vine cu dezavantajele sale. Iată o listă a beneficiilor și dezavantajelor YOLO-NAS:
Pro
- Este open-source.
- Este cu 10-20% mai rapid decât modelele preexistente YOLO.
- Este mai precis în comparație cu modelele YOLO preexistente.
- Utilizează o arhitectură mai bună, AutoNAC. Acest lucru stabilește un nou record în detectarea obiectelor, oferind cea mai bună acuratețe și performanță de compensare a latenței.
- Suport perfect pentru motoarele de inferență precum NVIDIA. Această caracteristică îl face un model pregătit pentru producție.
- Are o eficiență mai bună a memoriei și viteze de inferență crescute.
Contra
- Nu este încă stabil, deoarece tehnologia este încă nouă și nu a fost folosită în mod sălbatic în producție.
Implementarea YOLO-NAS
Vei folosi Google Colab pentru a scrie și a rula codurile din această implementare. O alternativă pentru Google Colab ar fi să creați un mediu virtual și utilizați un IDE pe mașina dvs. locală.
Modelul consumă foarte mult resurse. Asigurați-vă că aveți cel puțin 8 GB RAM înainte de a-l rula pe computer. Cu cât este mai mare dimensiunea videoclipului, cu atât folosește mai multă memorie.
Instalarea dependențelor
Instalați dependența YOLO-NAS, super-gradiente folosind comanda de mai jos:
pip install super-gradienti==3.1.2
După o instalare reușită, acum veți putea antrena modelul YOLO-NAS.
Training model
Pentru a antrena modelul, rulați blocul de cod de mai jos:
din super_gradienti.antrenament import modele
yolo_nas_l = models.get("yolo_nas_l", greutăți_preantrenate="coco")
Importați modelul de antrenament din biblioteca instalată SuperGradients în acest cod. Apoi utilizați greutățile modelului pre-antrenate din setul de date COCO.
Inferența modelului
Inferența modelului are aplicații potențiale pentru detectarea imaginilor, clasificare și sarcini de segmentare.
În acest caz, vă veți concentra pe sarcina de detectare a obiectelor pentru videoclipuri și imagini. Pentru a detecta un obiect dintr-o imagine, rulați blocul de cod de mai jos:
url = "img_path"
yolo_nas_l.predict (url, conf=0.25).spectacol()
Asigurați-vă că utilizați calea corectă către imaginea dvs. În acest caz, încărcați imaginea în mediul Google Colab, apoi copiați calea imaginii.
Rezultat așteptat:
Pentru a detecta obiecte dintr-un videoclip, rulați blocul de cod de mai jos:
import torță
input_video_path = „cale_spre_video”
output_video_path = „detectat.mp4”
dispozitiv = 'cuda'dacă torch.cuda.is_available() altfel"CPU"
yolo_nas_l.to (dispozitiv).predict (input_video_path).save (output_video_path)
La fel ca datele imaginii, încărcați videoclipul pe care doriți ca obiectele sale să fie detectate în mediul Google Colab și copiați calea către variabila video. Videoclipul prezis va fi accesibil din mediul Google Colab folosind numele detectat.mp4. Descărcați videoclipul pe computerul local înainte de a vă încheia sesiunea.
Rezultat așteptat:
YOLO-NAS acceptă, de asemenea, reglarea fină a modelului și instruirea pe date personalizate. Documentația este disponibilă pe Deci notebook de pornire de reglare fină.
Aplicații din lumea reală ale YOLO-NAS
Codul sursă al lui YOLO-NAS este accesibil sub Licența Apache 2.0, care este accesibilă pentru uz necomercial. Pentru uz comercial, modelul ar trebui să fie supus reantrenării de la zero pentru a obține greutăți personalizate.
Este un model versatil a cărui aplicare este posibilă în mai multe domenii, precum:
Vehicule autonome și robotică
YOLO-NAS poate îmbunătăți capacitățile de percepție ale vehiculelor autonome, permițându-le să detecteze și să urmărească obiectele mai rapid și mai precis în timp real. Această abilitate ajută la asigurarea siguranței rutiere și la o experiență de conducere lină.
Sisteme de Supraveghere și Securitate
Modelul poate oferi detectarea obiectelor rapidă, precisă și în timp real pentru supraveghere și securitate sisteme, care ajută la identificarea potențialelor amenințări sau activități suspecte, rezultând o securitate mai bună sisteme
Retail și managementul stocurilor
Modelul poate oferi capabilități rapide și precise de detectare a obiectelor care permit gestionarea eficientă și automată a stocurilor în timp real, urmărirea stocurilor și optimizarea raftului. Acest model ajută la reducerea costurilor de operare și la creșterea profiturilor.
Asistență medicală și imagistică medicală
În domeniul sănătății, YOLO-NAS este capabil să ajute la detectarea și analiza eficientă a anomaliilor bolii sau a zonelor specifice de interes. Modelul poate ajuta medicii să diagnosticheze cu exactitate bolile și să monitorizeze pacienții, îmbunătățind astfel sectorul sănătății.
YOLO-NAS Takeaway
YOLO-NAS este un nou model de detectare a obiectelor, pionierat într-un nou mod de a realiza detectarea obiectelor. Este mai bun decât modelele SOTA. Performanța sa la detectarea obiectelor este un salt mare pentru proiectele de viziune computerizată.