De objectdetectietechnologie van Computer Vision is essentieel voor tal van toepassingen. We gebruiken het in robotica, bewakingsapparatuur, zelfrijdende auto's en nog veel meer gebieden. Daarom kunnen we bepaalde dingen in een foto of video vinden en herkennen.
Een van de meest bekende objectidentificatie-algoritmen is de YOLO (You Only Look Once) reeks modellen. Deze modellen zijn gemaakt door Ultralytics LLC.
De meest recente versie van deze serie is YOLOv5. En het is het snelste en meest nauwkeurige objectidentificatiemodel op de markt. Het vermogen van het model om te generaliseren naar nieuwe gegevens is sterk verbeterd. Het bevat ook veel functies waardoor het beter presteert dan eerdere iteraties.
YOLOv5 is geweldig voor real-time toepassingen omdat het beelden kan verwerken met een snelheid van maximaal 1000 frames per seconde op een enkele GPU.
In dit artikel introduceren we YOLOv5 en bespreken we de details van de toepassingsgebieden.
Reis van YOLO: Van YOLO naar YOLOv5
Joseph Redmon et al. introduceerde oorspronkelijk de YOLO, een reeks objectidentificatiemodellen, in 2016. Het oorspronkelijke YOLO-model kon objecten in realtime identificeren. Het had echter een lage nauwkeurigheid in vergelijking met andere modellen in die tijd.
Door de jaren heen zijn er verschillende verbeterde versies van YOLO uitgebracht. En tot slot creëerde Ultralytics LLC de nieuwste editie van de YOLO-serie, YOLOv5.
YOLOv5 is het meest nauwkeurige en snelste objectidentificatiemodel dat momenteel beschikbaar is.
Belangrijke mogelijkheden
Anker dozen
YOLOv5 voorspelt begrenzingskaders voor objecten in een afbeelding met behulp van ankerkaders. Het model voorspelt welke van de vele vooraf gedefinieerde vakken met verschillende beeldverhoudingen het beste overeenkomt met het item in de afbeelding met behulp van ankervakken. Dit zijn voorgedefinieerde vakken.
En ze stellen YOLOv5 in staat om items in een afbeelding nauwkeurig te herkennen en te vinden.
Mozaïek gegevensvergroting
Bij het trainen gebruikt YOLOv5 een methode die bekend staat als mozaïek gegevensvergroting. Om nieuwe trainingsfoto's te ontwikkelen, combineert ons model willekeurig patches van verschillende foto's. Als gevolg hiervan wordt het model veerkrachtiger en betrouwbaarder. Daarom kan het generaliseren naar nieuwe gegevens en overfitting verminderen.
Een unieke trainingspijplijn
Een unieke trainingspijplijn die begeleide en zonder toezicht leren is gebruikt.
Het model leert dus van een kleinere steekproef en maakt effectief gebruik van niet-gelabelde invoer. Dit verbetert de prestaties van het model en vergroot het vermogen om te generaliseren naar nieuwe inputs.
Lagen die overblijvend en niet-overblijvend zijn
De architectuur van YOLOv5 combineert lagen die residuaal en niet-residu zijn. Door gradiënten over de lagen te laten stromen, helpen restlagen het model bij het leren van moeilijke kenmerken. Ook geven niet-resterende lagen het model een beter begrip van het invoerbeeld. Hierdoor kan YOLOv5 nauwkeuriger en effectiever werken.
Hoe YOLOv5 te gebruiken
Installatie
De installatie van YOLOv5 kan snel worden voltooid met behulp van pip. Pip is een Python-pakketbeheerder. De algemene procedures voor het installeren van YOLOv5 zijn als volgt:
1- Installeer PyTorch: Omdat YOLOv5 is gebaseerd op het PyTorch-framework, moet u eerst PyTorch installeren.
pip install torch torchvision
2. Installeer CUDA: U moet CUDA installeren als u van plan bent YOLOv5 op een GPU uit te voeren.
3. Installeer YOLOv5: gebruik na het instellen van PyTorch en CUDA de volgende opdracht om YOLOv5 te downloaden.
pip install yolov5
4-Na de installatie van YOLOv5 moet u de vooraf getrainde gewichten downloaden. De vooraf getrainde gewichten zijn beschikbaar in de Ultralytics GitHub-repo.
Ga naar het gedeelte "gewichten" van de website door naar beneden te scrollen. U kunt voorgetrainde gewichten downloaden uit de lijst die u hier kunt vinden.
5. Selecteer de gewichten die al zijn getraind en die het beste bij uw gebruik passen. De dataset of de specifieke YOLOv5-versie waarvan de gewichten zijn geleerd, kan worden gebruikt om de lijst te verfijnen.
6- Nadat u de juiste gewichten heeft gekozen, kiest u het gewicht door op de knop "Downloaden" ernaast te klikken. De gewichten zullen beschikbaar zijn om te downloaden als. pt-bestanden.
7- Breng de gedownloade gewichten over naar de map. Dit is waar uw detectiescript zal werken.
8- Op dit punt kunt u objectdetectie uitvoeren op uw foto's of video's met behulp van de vooraf getrainde gewichten in uw detectiescript.
Bereid de gegevens voor
U moet de volgende acties ondernemen om de gegevens gereed te maken voor gebruik met YOLOv5:
1. Verzamel de gegevens: de eerste stap is het verzamelen van de foto- of videogegevens die u nodig heeft object detectie. De dingen die u wilt detecteren, moeten aanwezig zijn op de foto's of video's.
2- Formatteer de gegevens: u kunt gewoon foto's in uw script importeren als u ze gebruikt. U moet een video omzetten in een reeks foto's als u van plan bent er een te gebruiken. U kunt de frames uit een film extraheren met behulp van een bibliotheek zoals OpenCV.
import cv2
img = cv2.imread('path/to/image')
Met de OpenCV-bibliotheek kunt u de volgende opdracht gebruiken om een video om te zetten in een reeks afbeeldingen:
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. Label de data: U moet de data labelen als u uw dataset gebruikt. Begrenzingskaders tekenen rond de items die u in elk frame van een afbeelding wilt identificeren. Het is het proces van het labelen van de gegevens. U kunt verschillende hulpmiddelen gebruiken om u bij deze bewerking te helpen, waaronder LabelImg en RectLabel.
4- U moet de gegevens verdelen in trainings- en testsets nadat u deze hebt getagd. Dit is cruciaal om te beoordelen hoe goed uw model presteert.
5. Ten slotte moet u de gegevens mogelijk voorbewerken voordat u gaat trainen of testen. Dit kan inhouden het schalen van de foto's of video's, het standaardiseren van de pixelwaarden of het gebruik van methoden voor gegevensvergroting.
Na het doorlopen van deze stappen zijn uw gegevens klaar.
Voer het detectiescript uit
Hier is een illustratie van een detectiescript dat een afbeelding analyseert en objecten vindt.
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))
Nabewerking
Niet-maximale onderdrukking is een van de meest voorkomende nabewerkingstechnieken die worden gebruikt bij objectdetectie (NMS). We gebruiken NMS om overlappende begrenzingsvakken voor hetzelfde object te verwijderen. Om NMS op de detecties uit te voeren, kunnen we de methode cv2.dnn.NMSBoxes() van de OpenCV-bibliotheek gebruiken.
Hier is een voorbeeld van hoe u detecties kunt nabewerken met behulp van NMS.
import cv2
# Perform Non-Maxima Suppression (NMS)
indices = cv2.dnn.NMSBoxes(detecties, betrouwbaarheid, conf_thres, nms_thres)
Visualisatie
In het geval van visualisatie kunnen we weer gebruik maken van een bibliotheek zoals OpenCV. We kunnen de begrenzingskaders rond de ontdekte objecten weergeven op de bronafbeelding of -video. Gebruik de methode cv2.rectangle() om de begrenzingsvakken van de afbeelding te tekenen. Zo kunt u de detecties op de originele afbeelding bekijken:
importeer cv2
# Draw the bounding boxes on the image
voor I in indexen:
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
Toepassingen
YOLOv5 is een sterk objectidentificatiemodel. Daarom kunnen we er in veel real-world scenario's gebruik van maken. Een van de meest prominente toepassingen is in zelfrijdende auto's. YOLOv5 kan items in realtime identificeren, zoals auto's en verkeerslichten.
In bewakingssystemen kunnen we YOLOv5 gebruiken om objecten in live videostreams te herkennen en te volgen. Bovendien kan YOLOv5 een grote troef zijn in robotica. Het kan robots helpen hun omgeving te detecteren en te begrijpen. Dit is uiterst belangrijk voor activiteiten zoals navigatie en manipulatie.
YOLOv5 kan ook worden gebruikt in elke branche die objectdetectie vereist, zoals detailhandel, sport, medische zorg en beveiliging.
Conclusie
Ten slotte is YOLOv5 de meest recente en geavanceerde versie van de YOLO-familie van object detectie modellen
. Het is ook redelijk om te zeggen dat dit het meest nauwkeurige objectdetectiemodel is dat beschikbaar is. Dankzij de hoge nauwkeurigheid en snelheid kunt u het veilig kiezen voor uw objectdetectieprojecten.
Reski Agus
Ik maak een eerste dagboek over detectievoertuig met yolov5 en dit web helpt me om informatie daarover te zoeken.
Ik ben erg geïnteresseerd in AI.
als je kunt, heb ik veel vragen over AI, misschien kun je me helpen
Danku