Համակարգչային տեսողության օբյեկտների հայտնաբերման տեխնոլոգիան էական նշանակություն ունի բազմաթիվ ծրագրերի համար: Մենք այն օգտագործում ենք ռոբոտաշինության, հսկողության սարքավորումների, ինքնակառավարվող մեքենաների և շատ այլ ոլորտներում: Այսպիսով, մենք կարող ենք գտնել և ճանաչել որոշ բաներ նկարում կամ տեսանյութում:
Ամենահայտնիներից մեկը օբյեկտի նույնականացման ալգորիթմը YOLO-ն է (You Only Look One) մոդելների հավաքածու: Այս մոդելները ստեղծվել են Ուլտրալիտիկս ՍՊԸ.
Այս շարքի ամենավերջին տարբերակը YOLOv5-ն է: Եվ դա շուկայում օբյեկտների նույնականացման ամենաարագ և ճշգրիտ մոդելն է: Նոր տվյալներին ընդհանրացնելու մոդելի կարողությունը զգալիորեն բարելավվել է: Բացի այդ, այն պարունակում է բազմաթիվ առանձնահատկություններ, որոնք ստիպում են այն ավելի լավ գործել, քան նախկին կրկնությունները:
YOLOv5-ը հիանալի է իրական ժամանակի հավելվածների համար, քանի որ այն կարող է մշակել նկարներ մինչև 1000 կադր/վրկ արագությամբ մեկ GPU-ով:
Այս հոդվածում մենք կներկայացնենք YOLOv5-ը և կանդրադառնանք դրա կիրառման ոլորտների մանրամասներին:
YOLO-ի ճանապարհորդությունը. YOLO-ից մինչև YOLOv5
Ջոզեֆ Ռեդմոնը և այլք: ի սկզբանե ներկայացրել է YOLO-ը՝ օբյեկտների նույնականացման մոդելների հավաքածուն, 2016 թվականին: Նախնական YOLO մոդելը կարող էր իրական ժամանակում հայտնաբերել օբյեկտները: Այնուամենայնիվ, այն ուներ ցածր ճշգրտություն այն ժամանակվա մյուս մոդելների համեմատությամբ:
Տարիների ընթացքում թողարկվել են YOLO-ի մի քանի արդիականացված տարբերակներ: Եվ վերջապես, Ultralytics ՍՊԸ-ն ստեղծեց YOLO շարքի նորագույն թողարկումը՝ YOLOv5:
YOLOv5-ը ներկայումս առկա օբյեկտների նույնականացման առավել ճշգրիտ և ամենաարագ մոդելն է:
Կարեւոր առանձնահատկություններ
Խարիսխ տուփեր
YOLOv5-ը կանխատեսում է պատկերի օբյեկտների սահմանափակող տուփեր՝ օգտագործելով խարիսխ տուփերը: Մոդելը կանխատեսում է, թե տարբեր չափերի հարաբերակցությամբ նախապես սահմանված բազմաթիվ տուփերից որն է լավագույնս համապատասխանում նկարի տարրին՝ օգտագործելով խարիսխ տուփերը: Սրանք նախապես սահմանված տուփեր են:
Եվ նրանք հնարավորություն են տալիս YOLOv5-ին ճշգրիտ ճանաչել և գտնել նկարի տարրերը:
Մոզաիկայի տվյալների ավելացում
Վերապատրաստման ժամանակ YOLOv5-ն օգտագործում է մեթոդ, որը հայտնի է որպես խճանկար տվյալների ավելացում. Թարմ վերապատրաստման նկարներ մշակելու համար մեր մոդելը պատահականորեն միավորում է մի քանի լուսանկարների կարկատաններ: Արդյունքում մոդելը դառնում է ավելի ճկուն և հուսալի: Հետևաբար, այն պետք է ընդհանրանա նոր տվյալներին և նվազեցնի գերհամապատասխանությունը:
Եզակի ուսումնական խողովակաշար
Եզակի ուսումնական խողովակաշար, որը խառնում է վերահսկվող և չվերահսկվող ուսուցում է օգտագործվում.
Այսպիսով, մոդելը սովորում է ավելի փոքր նմուշից և արդյունավետորեն օգտագործում է չպիտակավորված մուտքագրումը: Սա բարձրացնում է մոդելի արդյունավետությունը և մեծացնում է նոր մուտքերի ընդհանրացման կարողությունը:
Շերտեր, որոնք մնացորդային են և ոչ մնացորդային
YOLOv5-ի ճարտարապետությունը միավորում է շերտերը, որոնք մնացորդային և ոչ մնացորդային են: Թույլ տալով գրադիենտներին հոսել շերտերի միջով, մնացորդային շերտերն օգնում են մոդելին սովորել դժվար հատկանիշները: Բացի այդ, ոչ մնացորդային շերտերը մոդելին ապահովում են մուտքային պատկերի ավելի ամբողջական պատկերացում: Արդյունքում, YOLOv5-ը կարող է գործել ավելի ճշգրիտ և արդյունավետ:
Ինչպես օգտագործել YOLOv5
տեղակայում
YOLOv5-ի տեղադրումը կարող է արագ ավարտվել pip-ի միջոցով: Pip-ը Python փաթեթների կառավարիչ է: YOLOv5-ի տեղադրման ընդհանուր ընթացակարգերը հետևյալն են.
1- Տեղադրեք PyTorch. Քանի որ YOLOv5-ը հիմնված է PyTorch շրջանակի վրա, նախ պետք է տեղադրել PyTorch-ը:
pip install torch torchvision
2. Տեղադրեք CUDA. Դուք պետք է տեղադրեք CUDA, եթե մտադիր եք YOLOv5-ը գործարկել GPU-ով:
3. Տեղադրեք YOLOv5. PyTorch-ը և CUDA-ն կարգավորելուց հետո օգտագործեք հետևյալ հրամանը՝ YOLOv5-ը ներբեռնելու համար:
pip install yolov5
4-YOLOv5-ի տեղադրումից հետո դուք պետք է ներբեռնեք նախապես պատրաստված կշիռները: Նախապես պատրաստված կշիռները հասանելի են Ultralytics GitHub ռեպո-ում:
Անցեք կայքի «կշիռներ» մաս՝ ոլորելով ներքև: Դուք կարող եք ներբեռնել նախապես մարզված կշիռները ցանկից, որը կարող եք գտնել այստեղ:
5. Ընտրեք այն կշիռները, որոնք արդեն մարզված են և լավագույնս համապատասխանում են ձեր գործածությանը: Տվյալների հավաքածուն կամ YOLOv5-ի հատուկ տարբերակը, որը սովորել են կշիռները, կարող են օգտագործվել ցանկը նեղացնելու համար:
6- Պատշաճ կշիռները ընտրելուց հետո ընտրեք քաշը՝ սեղմելով դրա կողքին գտնվող «Ներբեռնում» կոճակը: Կշիռները հասանելի կլինեն ներբեռնման համար որպես. pt ֆայլեր.
7- Ներբեռնված կշիռները փոխանցեք գրացուցակ: Այստեղ կգործի ձեր հայտնաբերման սկրիպտը:
8- Այս պահին դուք կարող եք գործարկել օբյեկտների հայտնաբերումը ձեր լուսանկարների կամ տեսանյութերի վրա՝ օգտագործելով ձեր հայտնաբերման սցենարի նախապես պատրաստված կշիռները:
Պատրաստեք Տվյալները
Դուք պետք է կատարեք հետևյալ գործողությունները՝ YOLOv5-ի հետ տվյալների օգտագործման համար պատրաստ ստանալու համար.
1. Հավաքեք տվյալները. առաջին քայլը ձեզ անհրաժեշտ նկարների կամ տեսանյութերի տվյալները հավաքելն է օբյեկտների հայտնաբերում. Այն, ինչ ցանկանում եք հայտնաբերել, պետք է ներկա լինեն լուսանկարներում կամ տեսանյութերում:
2- Ձևաչափեք տվյալները. դուք պարզապես կարող եք նկարներ ներմուծել ձեր սցենարի մեջ, եթե դրանք օգտագործում եք: Դուք պետք է տեսանյութը վերածեք ֆոտոշարքի, եթե նախատեսում եք օգտագործել այն: Դուք կարող եք հանել շրջանակները ֆիլմից՝ օգտագործելով OpenCV-ի նման գրադարանը:
import cv2
img = cv2.imread('path/to/image')
OpenCV գրադարանի միջոցով դուք կարող եք օգտագործել հետևյալ հրամանը՝ տեսանյութը մի շարք պատկերների վերածելու համար.
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. Նշեք տվյալները. դուք պետք է նշեք տվյալները, եթե օգտագործում եք ձեր տվյալների բազան: Պատկերի յուրաքանչյուր շրջանակում գծելով սահմանափակող տուփեր այն տարրերի շուրջ, որոնք ցանկանում եք նույնականացնել: Դա տվյալների պիտակավորման գործընթացն է: Դուք կարող եք օգտագործել մի քանի գործիքներ, որոնք կօգնեն ձեզ այս գործողության մեջ, ներառյալ LabelImg-ը և RectLabel-ը:
4- Տվյալները պետք է բաժանեք վերապատրաստման և թեստավորման խմբերի այն պիտակելուց հետո: Սա շատ կարևոր է ձեր մոդելի արդյունավետությունը գնահատելու համար:
5. Վերջապես, հնարավոր է, որ ձեզ անհրաժեշտ լինի նախապես մշակել տվյալները նախքան վերապատրաստումը կամ փորձարկումը: Սա կարող է հանգեցնել նկարների կամ տեսանյութերի մասշտաբավորման, պիքսելների արժեքների ստանդարտացման կամ տվյալների մեծացման մեթոդների կիրառմանը:
Այս քայլերն ավարտելուց հետո ձեր տվյալները պատրաստ են:
Գործարկեք հայտնաբերման սցենարը
Ահա հայտնաբերման սցենարի նկարազարդում, որը վերլուծում է նկարը և գտնում առարկաներ:
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))
Հետամշակումը
Ոչ առավելագույն ճնշումը օբյեկտների հայտնաբերման (NMS) մեջ օգտագործվող հետմշակման ամենահաճախ հանդիպող մեթոդներից մեկն է: Մենք օգտագործում ենք NMS՝ նույն օբյեկտի համար համընկնող սահմանափակող տուփերը վերացնելու համար: Հայտնաբերումների վրա NMS գործարկելու համար մենք կարող ենք օգտագործել OpenCV գրադարանի cv2.dnn.NMSBoxes() մեթոդը:
Ահա NMS-ի միջոցով հայտնաբերումները հետընթաց մշակելու օրինակ:
import cv2
# Perform Non-Maxima Suppression (NMS)
ինդեքսներ = cv2.dnn.NMSboxes (հայտնաբերումներ, վստահություն, conf_thres, nms_thres)
Visualization
Վիզուալիզացիայի դեպքում մենք կարող ենք կրկին օգտագործել OpenCV-ի նման գրադարան: Մենք կարող ենք հայտնաբերված օբյեկտների շուրջ սահմանող տուփերը ցուցադրել սկզբնաղբյուր նկարի կամ տեսանյութի վրա: Պատկերի սահմանափակող տուփերը նկարելու համար օգտագործեք cv2.rectangle() մեթոդը: Ահա, թե ինչպես կարելի է դիտել բնօրինակ պատկերի հայտնաբերումները.
ներմուծել cv2
# Draw the bounding boxes on the image
I-ի համար ինդեքսներում.
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
Ծրագրեր
YOLOv5-ը օբյեկտների նույնականացման ուժեղ մոդել է: Հետևաբար, մենք կարող ենք օգտագործել այն իրական աշխարհի բազմաթիվ սցենարներում: Ամենաակնառու կիրառություններից մեկը ինքնակառավարվող մեքենաներում է: YOLOv5-ը կարող է իրական ժամանակում նույնականացնել իրերը, ինչպիսիք են ավտոմեքենաները և լուսացույցները:
Հսկողության համակարգերում մենք կարող ենք օգտագործել YOLOv5՝ կենդանի տեսահոսքերում օբյեկտները ճանաչելու և հետևելու համար: Ավելին, YOLOv5-ը կարող է մեծ առավելություն լինել ռոբոտաշինության մեջ: Այն կարող է օգնել ռոբոտներին հայտնաբերել և հասկանալ իրենց շրջապատը: Սա չափազանց կարևոր է նավարկության և մանիպուլյացիայի նման գործողությունների համար:
YOLOv5-ը կարող է օգտագործվել նաև ցանկացած ոլորտում, որը պահանջում է օբյեկտների հայտնաբերում, ինչպիսիք են մանրածախ առևտուրը, սպորտը, բժշկական և անվտանգությունը:
Եզրափակում
Վերջապես, YOLOv5-ը YOLO ընտանիքի ամենավերջին և բարդ տարբերակն է օբյեկտների հայտնաբերում մոդելները
. Նաև, արդարացի է ասել, որ այն առկա օբյեկտների հայտնաբերման առավել ճշգրիտ մոդելն է: Բարձր ճշգրտության և արագության շնորհիվ դուք կարող եք ապահով ընտրել այն ձեր օբյեկտների հայտնաբերման նախագծերի համար:
Ռեսկի Ագուս
Ես պատրաստում եմ առաջին ամսագիրը yolov5-ով մեքենայի հայտնաբերման մասին, և այս վեբն ինձ օգնում է տեղեկություններ որոնել դրա մասին:
Ինձ շատ է հետաքրքրում AI-ն:
Եթե կարող եք, ես շատ հարցեր ունեմ AI-ի մասին, գուցե դուք կարող եք օգնել ինձ
Շնորհակալություն