Ang teknolohiya sa pagtuklas ng bagay ng computer vision ay mahalaga para sa maraming aplikasyon. Ginagamit namin ito sa robotics, surveillance equipment, self-driving na sasakyan, at marami pang lugar. Kaya naman, mahahanap at makikilala natin ang ilang bagay sa isang larawan o video.
Isa sa pinaka kilalang tao Ang mga algorithm ng pagkakakilanlan ng bagay ay ang YOLO (Minsan Ka Lang Tumingin) set of models. Ang mga modelong ito ay nilikha ng Ultralytics LLC.
Ang pinakabagong bersyon ng seryeng ito ay YOLOv5. At, ito ang pinakamabilis at pinakatumpak na modelo ng pagkakakilanlan ng bagay sa merkado. Ang kapasidad ng modelo na mag-generalize sa bagong data ay lubos na napabuti. Gayundin, naglalaman ito ng maraming feature na nagpapahusay sa pagganap nito kaysa sa mga naunang pag-ulit.
Ang YOLOv5 ay mahusay para sa mga real-time na application dahil maaari itong magproseso ng mga larawan sa bilis na hanggang 1000 mga frame bawat segundo sa isang GPU.
Sa artikulong ito, ipapakilala namin ang YOLOv5 at tatalakayin ang mga detalye ng mga lugar ng aplikasyon nito.
Paglalakbay ng YOLO: Mula sa YOLO hanggang YOLOv5
Joseph Redmon et al. orihinal na ipinakilala ang YOLO, isang hanay ng mga modelo ng pagkakakilanlan ng bagay, noong 2016. Ang unang modelo ng YOLO ay maaaring tumukoy ng mga bagay sa real time. Gayunpaman, ito ay may mababang katumpakan kung ihahambing sa iba pang mga modelo noong panahong iyon.
Ilang mga na-upgrade na bersyon ng YOLO ang inilabas sa buong taon. At sa wakas, nilikha ng Ultralytics LLC ang pinakabagong edisyon ng serye ng YOLO, ang YOLOv5.
Ang YOLOv5 ay ang pinakatumpak at pinakamabilis na modelo ng pagkakakilanlan ng bagay na kasalukuyang magagamit.
Mahalagang Tampok
Mga Kahon ng Anchor
Ang YOLOv5 ay hinuhulaan ang mga bounding box para sa mga bagay sa isang imahe gamit ang mga anchor box. Hinuhulaan ng modelo kung alin sa maraming paunang natukoy na mga kahon na may iba't ibang mga aspect ratio ang pinakamahusay na tumutugma sa item sa larawan gamit ang mga anchor box. Ito ay mga paunang natukoy na mga kahon.
At, binibigyang-daan nila ang YOLOv5 na makilala at mahanap ang mga item sa isang larawan nang may katumpakan.
Mosaic data augmentation
Kapag nagsasanay, gumagamit ang YOLOv5 ng isang paraan na kilala bilang mosaic pagdaragdag ng data. Upang bumuo ng mga sariwang larawan ng pagsasanay, random na pinagsasama ng aming modelo ang mga patch ng ilang larawan. Bilang isang resulta, ang modelo ay nagiging mas nababanat at maaasahan. Kaya naman, nagagawa nitong gawing pangkalahatan sa bagong data at bawasan ang overfitting.
Isang Natatanging Pipeline ng Pagsasanay
Isang natatanging pipeline ng pagsasanay na pinaghahalo ang pinangangasiwaan at hindi pinangangasiwaang pag-aaral Ginagamit.
Kaya, natututo ang modelo mula sa isang mas maliit na sample at epektibong gumagamit ng walang label na input. Pinapalakas nito ang pagganap ng modelo at pinahuhusay nito ang kapasidad nitong mag-generalize sa mga bagong input.
Mga layer na nalalabi at hindi nalalabi
Pinagsasama ng arkitektura ng YOLOv5 ang mga layer na nalalabi at hindi nalalabi. Sa pamamagitan ng pagpapahintulot sa mga gradient na dumaloy sa mga layer, tinutulungan ng mga natitirang layer ang modelo sa pag-aaral ng mahihirap na feature. Gayundin, ang mga non-residual na layer ay nagbibigay sa modelo ng isang mas komprehensibong pag-unawa sa input na larawan. Bilang resulta, ang YOLOv5 ay maaaring gumana nang mas tumpak at epektibo.
Paano Gamitin ang YOLOv5
instalasyon
Maaaring makumpleto nang mabilis ang pag-install ng YOLOv5 gamit ang pip. Ang Pip ay isang Python package manager. Ang mga pangkalahatang pamamaraan para sa pag-install ng YOLOv5 ay ang mga sumusunod:
1- I-install ang PyTorch: Dahil ang YOLOv5 ay batay sa PyTorch framework, kailangan mo munang i-install ang PyTorch.
pip install torch torchvision
2. I-install ang CUDA: Dapat mong i-install ang CUDA kung balak mong patakbuhin ang YOLOv5 sa isang GPU.
3. I-install ang YOLOv5: Pagkatapos i-set up ang PyTorch at CUDA, gamitin ang sumusunod na command upang i-download ang YOLOv5.
pip install yolov5
4-Kasunod ng pag-install ng YOLOv5, dapat mong i-download ang mga paunang sinanay na timbang. Ang mga pre-trained na timbang ay available sa Ultralytics GitHub repo.
Pumunta sa "mga timbang" na bahagi ng website sa pamamagitan ng pag-scroll pababa. Maaari kang mag-download ng mga pre-trained na timbang mula sa listahang makikita mo dito.
5. Piliin ang mga timbang na sanay na at pinakaangkop sa iyong use case. Ang dataset o ang partikular na bersyon ng YOLOv5 na natutunan sa mga timbang ay maaaring gamitin upang paliitin ang listahan.
6- Pagkatapos piliin ang tamang mga timbang, piliin ang timbang sa pamamagitan ng pag-click sa pindutang "I-download" sa tabi nito. Ang mga timbang ay magagamit para sa pag-download bilang. pt file.
7- Ilipat ang na-download na mga timbang sa direktoryo. Dito gagana ang iyong detection script.
8- Sa puntong ito, maaari kang magpatakbo ng object detection sa iyong mga larawan o video gamit ang mga paunang sinanay na timbang sa iyong detection script.
Ihanda ang Data
Dapat mong gawin ang mga sumusunod na aksyon upang maihanda ang data para sa paggamit sa YOLOv5:
1. Ipunin ang data: Ang unang hakbang ay ipunin ang data ng larawan o video na kakailanganin mo pagtuklas ng bagay. Ang mga bagay na gusto mong makita ay dapat na nasa mga larawan o video.
2- I-format ang data: Maaari ka lamang mag-import ng mga larawan sa iyong script kung ginagamit mo ang mga ito. Dapat mong gawing serye ng mga larawan ang isang video kung plano mong gumamit ng isa. Maaari mong kunin ang mga frame mula sa isang pelikula gamit ang isang library tulad ng OpenCV.
import cv2
img = cv2.imread('path/to/image')
Gamit ang OpenCV library, maaari mong gamitin ang sumusunod na command upang gawing serye ng mga imahe ang isang video:
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. Lagyan ng label ang data: Dapat mong lagyan ng label ang data kung ginagamit mo ang iyong dataset. Pagguhit ng mga bounding box sa paligid ng mga item na nais mong tukuyin sa bawat frame ng isang imahe. Ito ay ang proseso ng pag-label ng data. Maaari kang gumamit ng ilang tool upang tulungan ka sa operasyong ito, kabilang ang LabelImg at RectLabel.
4- Dapat mong hatiin ang data sa mga set ng pagsasanay at pagsubok pagkatapos mong mai-tag ito. Ito ay mahalaga para sa pagtatasa kung gaano kahusay ang pagganap ng iyong modelo.
5. Sa wakas, maaaring kailanganin mong i-preprocess ang data bago ang pagsasanay o pagsubok. Maaaring kailanganin nito ang pag-scale ng mga larawan o video, pag-standardize ng mga halaga ng pixel, o paggamit ng mga paraan para sa pagpapalaki ng data.
Pagkatapos makumpleto ang mga hakbang na ito, handa na ang iyong data.
Patakbuhin ang detection script
Narito ang isang paglalarawan ng isang script ng pagtuklas na nagsusuri ng isang larawan at naghahanap ng mga bagay.
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 processing
Ang hindi maximum na pagsugpo ay isa sa mga pinaka-madalas na pamamaraan sa post-processing na ginagamit sa object detection (NMS). Gumagamit kami ng NMS para alisin ang magkakapatong na mga bounding box para sa parehong bagay. Upang maisagawa ang NMS sa mga detection, maaari naming gamitin ang cv2.dnn.NMSBoxes() na pamamaraan ng OpenCV library.
Narito ang isang halimbawa kung paano i-post-process ang mga detection gamit ang NMS.
import cv2
# Perform Non-Maxima Suppression (NMS)
mga indeks = cv2.dnn.NMSBoxes(mga pagtuklas, kumpiyansa, conf_thres, nms_thres)
Paggunita
Sa kaso ng visualization, maaari tayong gumamit muli ng library tulad ng OpenCV. Maaari naming ipakita ang mga bounding box sa paligid ng mga natuklasang bagay sa pinagmulang larawan o video. Upang iguhit ang mga bounding box ng larawan, gamitin ang cv2.rectangle() method. Narito kung paano tingnan ang mga pagtuklas sa orihinal na larawan:
import cv2
# Draw the bounding boxes on the image
para ako sa mga indeks:
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
aplikasyon
Ang YOLOv5 ay isang malakas na modelo ng pagkakakilanlan ng bagay. Kaya naman, magagamit natin ito sa maraming totoong sitwasyon sa mundo. Ang isa sa mga pinakatanyag na gamit ay sa mga self-driving na kotse. Maaaring tukuyin ng YOLOv5 ang mga item sa real-time gaya ng mga sasakyan at traffic light.
Sa mga surveillance system, magagamit namin ang YOLOv5 para kilalanin at subaybayan ang mga bagay sa mga live na video stream. Higit pa rito, ang YOLOv5 ay maaaring maging isang mahusay na asset sa robotics. Makakatulong ito sa mga robot na makita at maunawaan ang kanilang kapaligiran. Napakahalaga nito para sa mga aktibidad tulad ng pag-navigate at pagmamanipula.
Ang YOLOv5 ay maaari ding gamitin sa anumang industriya na nangangailangan ng pagtuklas ng bagay, gaya ng tingian, palakasan, medikal, at seguridad.
Konklusyon
Sa wakas, ang YOLOv5 ay ang pinakabago at sopistikadong bersyon ng pamilya ng YOLO ng pagtuklas ng bagay modelo
. Gayundin, makatarungang sabihin na ito ang pinakatumpak na modelo ng pagtuklas ng bagay na magagamit. Salamat sa mataas na katumpakan at bilis nito, maaari mong ligtas na piliin ito para sa iyong mga proyekto sa pagtuklas ng bagay.
Resky Agus
Gumawa ako ng unang journal tungkol sa detection vehicle gamit ang yolov5 at ang web na ito ay tumulong sa akin na maghanap ng impormasyon tungkol doon.
Interesado ako sa AI.
kung kaya mo marami akong tanong tungkol sa AI baka matulungan mo ako
Salamat