Tehnologia de detectare a obiectelor din viziunea computerizată este esențială pentru numeroase aplicații. Îl folosim în robotică, echipamente de supraveghere, automobile cu conducere autonomă și multe alte domenii. Prin urmare, ajungem să găsim și să recunoaștem anumite lucruri într-o imagine sau videoclip.
Una dintre cele mai cunoscute algoritmii de identificare a obiectelor este YOLO (You Only Look Once) set de modele. Aceste modele sunt create de Ultralytics LLC.
Cea mai recentă versiune a acestei serii este YOLOv5. Și, este cel mai rapid și mai precis model de identificare a obiectelor de pe piață. Capacitatea modelului de a se generaliza la date noi a fost mult îmbunătățită. De asemenea, conține multe caracteristici care îl fac să funcționeze mai bine decât iterațiile anterioare.
YOLOv5 este excelent pentru aplicații în timp real, deoarece poate procesa imagini cu o rată de până la 1000 de cadre pe secundă pe un singur GPU.
În acest articol, vom introduce YOLOv5 și vom trece peste detaliile domeniilor sale de aplicare.
Călătoria lui YOLO: de la YOLO la YOLOv5
Joseph Redmon și colab. a introdus inițial YOLO, un set de modele de identificare a obiectelor, în 2016. Modelul inițial YOLO ar putea identifica obiectele în timp real. Cu toate acestea, avea o precizie scăzută în comparație cu alte modele la acel moment.
Mai multe versiuni îmbunătățite de YOLO au fost lansate de-a lungul anilor. Și, în sfârșit, Ultralytics LLC a creat cea mai nouă ediție a seriei YOLO, YOLOv5.
YOLOv5 este cel mai precis și mai rapid model de identificare a obiectelor disponibil în prezent.
Caracteristici importante
Cutii de ancorare
YOLOv5 prezice casete de delimitare pentru obiectele dintr-o imagine folosind casete de ancorare. Modelul prezice care dintre multele casete predefinite cu diferite raporturi de aspect se potrivește cel mai bine cu elementul din imagine folosind casete de ancorare. Acestea sunt casete predefinite.
Și, ele permit lui YOLOv5 să recunoască și să găsească elemente dintr-o imagine cu acuratețe.
Mărirea datelor mozaice
La antrenament, YOLOv5 folosește o metodă cunoscută sub numele de mozaic marirea datelor. Pentru a dezvolta imagini noi de antrenament, modelul nostru combină aleatoriu petice din mai multe fotografii. Ca rezultat, modelul devine mai rezistent și mai de încredere. Prin urmare, ajunge să se generalizeze la date noi și să scadă supraadaptarea.
O conductă unică de antrenament
O conductă unică de antrenament care combină supravegherea și învățare nesupravegheată este folosit.
Astfel, modelul învață dintr-un eșantion mai mic și utilizează eficient intrarea neetichetată. Acest lucru sporește performanța modelului și sporește capacitatea acestuia de a se generaliza la noi intrări.
Straturi care sunt reziduale și nereziduale
Arhitectura YOLOv5 combină straturi care sunt reziduale și nereziduale. Permițând gradienților să curgă peste straturi, straturile reziduale ajută modelul să învețe caracteristici dificile. De asemenea, straturile nereziduale oferă modelului o înțelegere mai cuprinzătoare a imaginii de intrare. Ca rezultat, YOLOv5 poate funcționa mai precis și mai eficient.
Cum se utilizează YOLOv5
Instalare
Instalarea YOLOv5 poate fi finalizată rapid folosind pip. Pip este un manager de pachete Python. Procedurile generale pentru instalarea YOLOv5 sunt următoarele:
1- Instalați PyTorch: Deoarece YOLOv5 se bazează pe framework-ul PyTorch, mai întâi trebuie să instalați PyTorch.
pip install torch torchvision
2. Instalați CUDA: Trebuie să instalați CUDA dacă intenționați să rulați YOLOv5 pe un GPU.
3. Instalați YOLOv5: După configurarea PyTorch și CUDA, utilizați următoarea comandă pentru a descărca YOLOv5.
pip install yolov5
4-În urma instalării YOLOv5, trebuie să descărcați greutățile pre-antrenate. Greutățile pre-antrenate sunt disponibile în depozitul Ultralytics GitHub.
Accesați secțiunea „greutăți” a site-ului web derulând în jos. Puteți descărca greutăți pre-antrenate din lista pe care o găsiți aici.
5. Selectați greutățile care sunt deja antrenate și care se potrivesc cel mai bine cazului dvs. de utilizare. Setul de date sau versiunea specială YOLOv5 în care au fost învățate ponderile pot fi folosite pentru a restrânge lista.
6- După ce ați ales greutățile potrivite, alegeți greutatea făcând clic pe butonul „Descărcare” de lângă ea. Greutățile vor fi disponibile pentru descărcare ca. fișiere pt.
7- Transferați greutățile descărcate în director. Aici va funcționa scriptul de detectare.
8- În acest moment, puteți rula detectarea obiectelor pe fotografiile sau videoclipurile dvs. folosind greutățile pre-antrenate din scriptul dvs. de detectare.
Pregătiți datele
Trebuie să efectuați următoarele acțiuni pentru a pregăti datele pentru utilizare cu YOLOv5:
1. Adunați datele: primul pas este să colectați datele de imagine sau video de care aveți nevoie detectarea obiectelor. Lucrurile pe care doriți să le detectați ar trebui să fie prezente în fotografii sau videoclipuri.
2- Formatați datele: puteți doar să importați fotografii în scriptul dvs. dacă le utilizați. Trebuie să transformați un videoclip într-o serie de fotografii dacă intenționați să utilizați unul. Puteți extrage cadrele dintr-un film folosind o bibliotecă precum OpenCV.
import cv2
img = cv2.imread('path/to/image')
Cu biblioteca OpenCV, puteți folosi următoarea comandă pentru a transforma un videoclip într-o serie de imagini:
import cv2
cap = cv2.VideoCapture('path/to/video')
while True:
ret, frame = cap.read()
if not ret:
break
cv2.imshow('frame', frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
cap.release()
cv2.destroyAllWindows()
3. Etichetați datele: trebuie să etichetați datele dacă utilizați setul de date. Desenați casete de delimitare în jurul elementelor pe care doriți să le identificați în fiecare cadru al unei imagini. Este procesul de etichetare a datelor. Puteți folosi mai multe instrumente pentru a vă ajuta cu această operațiune, inclusiv LabelImg și RectLabel.
4- Trebuie să împărțiți datele în seturi de antrenament și de testare după ce le-ați etichetat. Acest lucru este crucial pentru a evalua cât de bine funcționează modelul dvs.
5. În cele din urmă, poate fi necesar să preprocesați datele înainte de antrenament sau testare. Acest lucru poate presupune scalarea imaginilor sau videoclipurilor, standardizarea valorilor pixelilor sau utilizarea metodelor de creștere a datelor.
După parcurgerea acestor pași, datele dvs. sunt gata.
Rulați scriptul de detectare
Iată o ilustrare a unui script de detectare care analizează o imagine și găsește obiecte.
import yolov5
import cv2
# Pre-trained weights should be loaded.
weights = 'path/to/weights.pt'
# Set the detection confidence level
conf_thres = 0.5
# Set the Non-Maxima Suppression (NMS) threshold
nms_thres = 0.5
# Create the detector object
detector = yolov5.YOLOv5(weights, conf_thres, nms_thres)
# Load the image
img = cv2.imread('path/to/image')
# Perform object detection
detections = detector.detect(img)
# Print the detections
for x1, y1, x2, y2, conf, cls_conf, cls_pred in detections:
print("Object:", classes[int(cls_pred)])
print("Confidence:", conf)
print("Bounding box:", (x1, y1, x2, y2))
Post procesare
Suprimarea non-maximă este una dintre cele mai frecvente tehnici de post-procesare utilizate în detectarea obiectelor (NMS). Folosim NMS pentru a elimina suprapunerile de delimitare pentru același obiect. Pentru a executa NMS pe detecții, putem folosi metoda cv2.dnn.NMSBoxes() a bibliotecii OpenCV.
Iată un exemplu de post-procesare a detecțiilor folosind NMS.
import cv2
# Perform Non-Maxima Suppression (NMS)
indici = cv2.dnn.NMSBoxes(detecții, confidențe, conf_thres, nms_thres)
Vizualizare
În cazul vizualizării, putem folosi din nou o bibliotecă precum OpenCV. Putem afișa casetele de delimitare din jurul obiectelor descoperite pe imaginea sau videoclipul sursă. Pentru a desena casetele de delimitare ale imaginii, utilizați metoda cv2.rectangle(). Iată cum să vizualizați detecțiile pe imaginea originală:
import cv2
# Draw the bounding boxes on the image
pentru I în indici:
i = i[0]
x1, y1, x2, y2 = detections[i][0], detections[i][1], detections[i][2], detections[i][3]
cv2.rectangle(img, (x1, y1), (x2, y2), (255, 0, 0), 2)
cv2.putText(img, classes[class_ids[i]], (x1, y1), cv2.FONT_HERSHEY_SIMPLEX, 1, (255, 255, 255), 2)
# Show the image
cv2.imshow("Object Detection", img)
cv2
aplicatii
YOLOv5 este un model puternic de identificare a obiectelor. Prin urmare, îl putem folosi în multe scenarii din lumea reală. Una dintre cele mai proeminente utilizări este în mașinile cu conducere autonomă. YOLOv5 poate identifica elemente în timp real, cum ar fi automobile și semafoare.
În sistemele de supraveghere, putem folosi YOLOv5 pentru a recunoaște și urmări obiecte în fluxurile video live. În plus, YOLOv5 poate fi un mare atu în robotică. Poate ajuta roboții să detecteze și să înțeleagă mediul înconjurător. Acest lucru este extrem de important pentru activități precum navigarea și manipularea.
YOLOv5 poate fi, de asemenea, utilizat în orice industrie care necesită detectarea obiectelor, cum ar fi comerțul cu amănuntul, sport, medical și securitate.
Concluzie
În cele din urmă, YOLOv5 este cea mai recentă și mai sofisticată versiune a familiei YOLO de detectarea obiectelor Modele
. De asemenea, este corect să spunem că este cel mai precis model de detectare a obiectelor disponibil. Datorită preciziei și vitezei sale ridicate, îl puteți alege în siguranță pentru proiectele dvs. de detectare a obiectelor.
Resky Agus
Fac un prim jurnal despre vehiculul de detectare cu yolov5 și acest web mă ajută să caut informații despre asta.
Sunt foarte interesat de AI.
dacă poți, am multe întrebări despre AI, poate mă poți ajuta
Multumesc