Kompiuterinės vizijos objektų aptikimo technologija yra būtina daugeliui programų. Naudojame jį robotikoje, stebėjimo įrangoje, savaeigiuose automobiliuose ir daugelyje kitų sričių. Taigi mes galime rasti ir atpažinti tam tikrus dalykus paveikslėlyje ar vaizdo įraše.
Vienas žinomiausių objektų identifikavimo algoritmai yra YOLO (You Only Look Once) modelių rinkinys. Šiuos modelius sukūrė Ultralytics LLC.
Naujausia šios serijos versija yra YOLOv5. Ir tai greičiausias ir tiksliausias objektų identifikavimo modelis rinkoje. Modelio gebėjimas apibendrinti naujus duomenis buvo labai patobulintas. Be to, jame yra daug funkcijų, dėl kurių jis veikia geriau nei ankstesnės iteracijos.
YOLOv5 puikiai tinka realaus laiko programoms, nes gali apdoroti nuotraukas iki 1000 kadrų per sekundę greičiu viename GPU.
Šiame straipsnyje pristatysime YOLOv5 ir apžvelgsime jo taikymo sritis.
YOLO kelionė: iš YOLO į YOLOv5
Josephas Redmonas ir kt. iš pradžių 2016 m. pristatė YOLO – objektų identifikavimo modelių rinkinį. Pradinis YOLO modelis galėjo identifikuoti objektus realiuoju laiku. Tačiau, palyginti su kitais to meto modeliais, jo tikslumas buvo mažas.
Per daugelį metų buvo išleistos kelios atnaujintos YOLO versijos. Ir galiausiai Ultralytics LLC sukūrė naujausią YOLO serijos leidimą YOLOv5.
YOLOv5 yra tiksliausias ir greičiausias šiuo metu prieinamas objektų identifikavimo modelis.
Svarbios funkcijos
Inkaro dėžės
YOLOv5 numato vaizdo objektų ribojančius langelius naudodamas inkaro langelius. Modelis numato, kuris iš daugelio iš anksto nustatytų langelių su įvairiais formatais geriausiai atitinka paveikslėlyje esantį elementą, naudodamas inkaro dėžutes. Tai yra iš anksto nustatytos dėžutės.
Be to, jie leidžia YOLOv5 tiksliai atpažinti ir rasti elementus paveikslėlyje.
Mozaikos duomenų papildymas
Treniruotėse YOLOv5 naudojamas metodas, žinomas kaip mozaika duomenų papildymas. Norėdami sukurti naujas treniruočių nuotraukas, mūsų modelis atsitiktinai sujungia kelių nuotraukų lopinius. Dėl to modelis tampa atsparesnis ir patikimesnis. Taigi jis gali apibendrinti naujus duomenis ir sumažinti perteklinį pritaikymą.
Unikalus mokymo vamzdis
Unikalus mokymo vamzdynas, kuriame derinami prižiūrimi ir neprižiūrimas mokymasis yra naudojamas.
Taigi modelis mokosi iš mažesnės imties ir efektyviai naudoja nepažymėtą įvestį. Tai padidina modelio našumą ir padidina jo gebėjimą apibendrinti naujus įvestis.
Sluoksniai, kurie yra liekamieji ir neliekamieji
YOLOv5 architektūra sujungia sluoksnius, kurie yra liekamieji ir neliekamieji. Leisdami gradientams tekėti per sluoksnius, liekamieji sluoksniai padeda modeliui išmokti sudėtingų funkcijų. Be to, neliekamieji sluoksniai suteikia modeliui išsamesnį įvesties paveikslėlio suvokimą. Dėl to YOLOv5 gali veikti tiksliau ir efektyviau.
Kaip naudotis YOLOv5
montavimas
YOLOv5 diegimas gali būti greitai baigtas naudojant pip. Pip yra Python paketų tvarkyklė. Bendrosios YOLOv5 diegimo procedūros yra šios:
1. Įdiekite „PyTorch“: kadangi „YOLOv5“ yra pagrįsta „PyTorch“ sistema, pirmiausia turite įdiegti „PyTorch“.
pip install torch torchvision
2. Įdiekite CUDA: turite įdiegti CUDA, jei ketinate paleisti YOLOv5 GPU.
3. Įdiekite YOLOv5: nustatę PyTorch ir CUDA, naudokite šią komandą, kad atsisiųstumėte YOLOv5.
pip install yolov5
4-Įdiegę YOLOv5, turite atsisiųsti iš anksto paruoštus svorius. Iš anksto paruoštus svorius galima rasti „Ultralytics GitHub“ repo.
Eikite į svetainės „svorių“ dalį slinkdami žemyn. Galite atsisiųsti iš anksto paruoštus svorius iš sąrašo, kurį rasite čia.
5. Pasirinkite svorius, kurie jau yra treniruojami ir geriausiai atitinka jūsų naudojimo atvejį. Sąrašui susiaurinti gali būti naudojamas duomenų rinkinys arba konkreti YOLOv5 versija, kurios svoriai buvo išmokti.
6- Pasirinkę tinkamus svorius, pasirinkite svorį paspausdami šalia esantį mygtuką „Atsisiųsti“. Svorius bus galima atsisiųsti kaip. pt failus.
7- Perkelkite atsisiųstus svorius į katalogą. Čia veiks jūsų aptikimo scenarijus.
8- Šiuo metu galite paleisti objektų aptikimą nuotraukose ar vaizdo įrašuose naudodami aptikimo scenarijaus iš anksto paruoštus svarmenis.
Paruoškite duomenis
Turite atlikti šiuos veiksmus, kad duomenys būtų paruošti naudoti su YOLOv5:
1. Surinkite duomenis: pirmas žingsnis yra surinkti jums reikalingų nuotraukų arba vaizdo įrašų duomenis objekto aptikimas. Daiktai, kuriuos norite aptikti, turėtų būti nuotraukose ar vaizdo įrašuose.
2- Formatuokite duomenis: galite tiesiog importuoti nuotraukas į savo scenarijų, jei jas naudojate. Jei planuojate ją naudoti, vaizdo įrašą turite paversti nuotraukų serija. Galite išgauti kadrus iš filmo naudodami biblioteką, pvz., OpenCV.
import cv2
img = cv2.imread('path/to/image')
Naudodami OpenCV biblioteką galite naudoti šią komandą, kad vaizdo įrašą paverstumėte vaizdų serija:
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. Pažymėkite duomenis: jei naudojate duomenų rinkinį, turite pažymėti duomenis. Aplink elementus, kuriuos norite identifikuoti kiekviename vaizdo kadre, nubrėžkite ribojančius langelius. Tai yra duomenų ženklinimo procesas. Norėdami padėti atlikti šią operaciją, galite naudoti keletą įrankių, įskaitant LabelImg ir RectLabel.
4- Pažymėję duomenis turite padalyti į treniruočių ir testavimo rinkinius. Tai labai svarbu norint įvertinti, kaip gerai veikia jūsų modelis.
5. Galiausiai gali tekti iš anksto apdoroti duomenis prieš treniruojant ar testuojant. Tai gali apimti paveikslėlių ar vaizdo įrašų mastelio keitimą, pikselių reikšmių standartizavimą arba duomenų papildymo metodų naudojimą.
Atlikus šiuos veiksmus, jūsų duomenys yra paruošti.
Paleiskite aptikimo scenarijų
Čia yra aptikimo scenarijaus, kuris analizuoja paveikslėlį ir randa objektus, iliustracija.
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))
Po apdorojimo
Ne maksimalus slopinimas yra vienas iš dažniausiai naudojamų papildomo apdorojimo metodų, naudojamų objektų aptikimui (NMS). Naudojame NMS, kad pašalintume persidengiančius to paties objekto ribojančius langelius. Norėdami vykdyti aptikimų NMS, galime naudoti OpenCV bibliotekos metodą cv2.dnn.NMSBoxes().
Štai pavyzdys, kaip aptikimus apdoroti naudojant NMS.
import cv2
# Perform Non-Maxima Suppression (NMS)
indeksai = cv2.dnn.NMSBoxes(aptikimai, pasitikėjimas, conf_thres, nms_thres)
Vizualizacija
Vizualizacijos atveju vėl galime naudoti biblioteką, tokią kaip OpenCV. Galime rodyti ribojančius langelius aplink aptiktus objektus šaltinio paveikslėlyje ar vaizdo įraše. Norėdami nubrėžti vaizdo ribojančius langelius, naudokite cv2.rectangle() metodą. Štai kaip peržiūrėti aptikimus pradiniame vaizde:
importuoti cv2
# Draw the bounding boxes on the image
I indeksuose:
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
Programos
YOLOv5 yra stiprus objektų identifikavimo modelis. Taigi mes galime juo pasinaudoti daugelyje realaus pasaulio scenarijų. Vienas ryškiausių panaudojimo būdų yra savaeigiuose automobiliuose. YOLOv5 gali identifikuoti elementus realiuoju laiku, pvz., automobilius ir šviesoforus.
Stebėjimo sistemose galime naudoti YOLOv5 objektams atpažinti ir sekti tiesioginiuose vaizdo srautuose. Be to, YOLOv5 gali būti puikus robotikos pranašumas. Tai gali padėti robotams aptikti ir suprasti aplinką. Tai labai svarbu tokiai veiklai kaip navigacija ir manipuliavimas.
YOLOv5 taip pat gali būti naudojamas bet kurioje pramonės šakoje, kuriai reikalingas objektų aptikimas, pavyzdžiui, mažmeninės prekybos, sporto, medicinos ir saugumo srityse.
Išvada
Galiausiai, YOLOv5 yra naujausia ir moderniausia YOLO šeimos versija objekto aptikimas modeliai
. Be to, galima sakyti, kad tai yra tiksliausias objekto aptikimo modelis. Dėl didelio tikslumo ir greičio galite jį saugiai pasirinkti savo objektų aptikimo projektams.
Resky Agus
Su yolov5 darau pirmąjį žurnalą apie aptikimo transporto priemonę ir šis žiniatinklis padeda ieškoti informacijos apie tai.
Mane labai domina AI.
Jei galite, aš turiu daug klausimų apie AI, galbūt galite man padėti
Ačiū