Computer visions objektdetekteringsteknik är avgörande för många applikationer. Vi använder det inom robotik, övervakningsutrustning, självkörande bilar och många fler områden. Därför får vi hitta och känna igen vissa saker i en bild eller video.
En av de mest kända objektidentifieringsalgoritmer är YOLO (Du ser bara en gång) uppsättning modeller. Dessa modeller är skapade av Ultralytics LLC.
Den senaste versionen av denna serie är YOLOv5. Och det är den snabbaste och mest exakta objektidentifieringsmodellen på marknaden. Modellens förmåga att generalisera till nya data har förbättrats avsevärt. Dessutom innehåller den många funktioner som gör att den presterar bättre än tidigare iterationer.
YOLOv5 är utmärkt för realtidsapplikationer eftersom den kan bearbeta bilder med en hastighet på upp till 1000 bilder per sekund på en enda GPU.
I den här artikeln kommer vi att introducera YOLOv5 och gå igenom detaljerna för dess användningsområden.
YOLOs resa: Från YOLO till YOLOv5
Joseph Redmon et al. ursprungligen introducerade YOLO, en uppsättning objektidentifieringsmodeller, 2016. Den initiala YOLO-modellen kunde identifiera objekt i realtid. Den hade dock en låg noggrannhet jämfört med andra modeller på den tiden.
Flera uppgraderade versioner av YOLO släpptes under åren. Och slutligen skapade Ultralytics LLC den senaste utgåvan av YOLO-serien, YOLOv5.
YOLOv5 är den mest exakta och snabbaste objektidentifieringsmodellen som finns tillgänglig för närvarande.
Viktiga funktioner
Ankarlådor
YOLOv5 förutsäger begränsningsrutor för objekt i en bild med hjälp av ankarrutor. Modellen förutsäger vilken av många fördefinierade rutor med olika bildförhållanden som bäst matchar objektet på bilden med hjälp av ankarlådor. Dessa är fördefinierade rutor.
Och de gör det möjligt för YOLOv5 att känna igen och hitta föremål i en bild med noggrannhet.
Mosaikdataökning
Vid träning använder YOLOv5 en metod som kallas mosaik dataförstärkning. För att utveckla färska träningsbilder kombinerar vår modell slumpmässigt lappar av flera bilder. Som ett resultat blir modellen mer motståndskraftig och pålitlig. Därför kommer det att generaliseras till nya data och minska överanpassningen.
En unik träningspipeline
En unik träningspipeline som blandar övervakad och oövervakat lärande är använd.
Således lär modellen av ett mindre urval och utnyttjar omärkt input effektivt. Detta ökar modellens prestanda och förbättrar dess förmåga att generalisera till nya input.
Lager som är kvarvarande och icke-rester
YOLOv5:s arkitektur kombinerar lager som är kvarvarande och icke-rester. Genom att tillåta gradienter att flöda över lagren, hjälper kvarvarande lager modellen att lära sig svåra funktioner. Även icke-resterande lager ger modellen ett mer omfattande grepp om ingångsbilden. Som ett resultat kan YOLOv5 fungera mer exakt och effektivt.
Hur man använder YOLOv5
Installation
YOLOv5-installationen kan slutföras snabbt med pip. Pip är en Python-pakethanterare. De allmänna procedurerna för att installera YOLOv5 är följande:
1- Installera PyTorch: Eftersom YOLOv5 är baserat på PyTorch-ramverket måste du först installera PyTorch.
pip install torch torchvision
2. Installera CUDA: Du måste installera CUDA om du tänker köra YOLOv5 på en GPU.
3. Installera YOLOv5: Efter att ha ställt in PyTorch och CUDA, använd följande kommando för att ladda ner YOLOv5.
pip install yolov5
4-Efter installationen av YOLOv5 måste du ladda ner de förtränade vikterna. De förtränade vikterna finns i Ultralytics GitHub-repo.
Gå till "vikter"-delen av webbplatsen genom att scrolla ner. Du kan ladda ner förtränade vikter från listan som du hittar här.
5. Välj de vikter som redan är tränade och som bäst passar ditt användningsfall. Datauppsättningen eller den särskilda YOLOv5-version som vikterna lärdes in kan användas för att begränsa listan.
6- Efter att ha valt rätt vikter, välj vikten genom att klicka på knappen "Ladda ner" bredvid den. Vikterna kommer att finnas tillgängliga för nedladdning som. pt-filer.
7- Överför de nedladdade vikterna till katalogen. Det är här ditt upptäcktsskript kommer att fungera.
8- Vid det här laget kan du köra objektdetektering på dina foton eller videor med hjälp av de förtränade vikterna i ditt upptäcktsskript.
Förbered data
Du måste vidta följande åtgärder för att göra data redo för användning med YOLOv5:
1. Samla data: Det första steget är att samla in bild- eller videodata du behöver för objektdetektering. De saker du vill upptäcka bör finnas i bilderna eller videorna.
2- Formatera data: Du kan bara importera foton till ditt skript om du använder dem. Du måste förvandla en video till en serie bilder om du planerar att använda en. Du kan extrahera ramarna från en film med hjälp av ett bibliotek som OpenCV.
import cv2
img = cv2.imread('path/to/image')
Med OpenCV-biblioteket kan du använda följande kommando för att förvandla en video till en serie bilder:
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. Märk data: Du måste märka data om du använder din datauppsättning. Rita begränsningsrutor runt objekten du vill identifiera i varje ram i en bild. Det är processen att märka data. Du kan använda flera verktyg för att hjälpa dig med denna operation, inklusive LabelImg och RectLabel.
4- Du måste dela upp data i tränings- och testset efter att du har taggat den. Detta är avgörande för att bedöma hur väl din modell presterar.
5. Slutligen kan du behöva förbearbeta data innan träning eller testning. Detta kan innebära att skala bilder eller videor, standardisera pixelvärdena eller använda metoder för dataökning.
När du har slutfört dessa steg är din data redo.
Kör detektionsskriptet
Här är en illustration av ett upptäcktsskript som analyserar en bild och hittar föremål.
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))
Efterbehandling
Icke-maximal undertryckning är en av de vanligaste efterbehandlingsteknikerna som används vid objektdetektering (NMS). Vi använder NMS för att eliminera överlappande begränsningsrutor för samma objekt. För att köra NMS på detekteringarna kan vi använda OpenCV-bibliotekets cv2.dnn.NMSBoxes()-metod.
Här är ett exempel på hur man efterbearbetar upptäckter med NMS.
import cv2
# Perform Non-Maxima Suppression (NMS)
index = cv2.dnn.NMSBoxes(detektioner, konfidenser, conf_thres, nms_thres)
Visualisering
När det gäller visualisering kan vi återigen använda ett bibliotek som OpenCV. Vi kan visa begränsningsrutorna runt de upptäckta objekten på källbilden eller videon. Använd metoden cv2.rectangle() för att rita bildens begränsningsrutor. Så här visar du upptäckterna på originalbilden:
importera cv2
# Draw the bounding boxes on the image
för I i index:
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
Applikationer
YOLOv5 är en stark objektidentifieringsmodell. Därför kan vi använda det i många verkliga scenarier. En av de mest framträdande användningsområdena är i självkörande bilar. YOLOv5 kan identifiera föremål i realtid som bilar och trafikljus.
I övervakningssystem kan vi använda YOLOv5 för att känna igen och spåra objekt i livevideoströmmar. Dessutom kan YOLOv5 vara en stor tillgång inom robotik. Det kan hjälpa robotar att upptäcka och förstå sin omgivning. Detta är extremt viktigt för aktiviteter som navigering och manipulation.
YOLOv5 kan också användas i alla branscher som kräver objektdetektering, såsom detaljhandel, sport, medicin och säkerhet.
Slutsats
Slutligen är YOLOv5 den senaste och sofistikerade versionen av YOLO-familjen av objektdetektering modeller
. Det är också rimligt att säga att det är den mest exakta objektdetekteringsmodellen som finns. Tack vare dess höga noggrannhet och hastighet kan du säkert välja den för dina objektdetekteringsprojekt.
Resky Agus
Jag gör en första journal om detektionsfordon med yolov5 och den här webben hjälper mig att söka information om det.
Jag är väldigt intresserad av AI.
om du kan har jag många frågor om AI kanske du kan hjälpa mig
Tack