Die Objekterkennungstechnologie von Computer Vision ist für zahlreiche Anwendungen unerlässlich. Wir verwenden es in der Robotik, Überwachungsausrüstung, selbstfahrenden Autos und vielen anderen Bereichen. Daher können wir bestimmte Dinge in einem Bild oder Video finden und erkennen.
Einer der bekanntesten Objektidentifikationsalgorithmen ist der YOLO (You Only Look Once) Reihe von Modellen. Diese Modelle werden erstellt von Ultralytics LLC.
Die neueste Version dieser Serie ist YOLOv5. Und es ist das schnellste und präziseste Objektidentifikationsmodell auf dem Markt. Die Fähigkeit des Modells, auf neue Daten zu generalisieren, wurde stark verbessert. Außerdem enthält es viele Funktionen, die es besser machen als frühere Iterationen.
YOLOv5 eignet sich hervorragend für Echtzeitanwendungen, da es Bilder mit einer Rate von bis zu 1000 Bildern pro Sekunde auf einer einzigen GPU verarbeiten kann.
In diesem Artikel stellen wir YOLOv5 vor und gehen auf die Anwendungsbereiche ein.
Reise von YOLO: Von YOLO zu YOLOv5
Joseph Redmonet al. führte ursprünglich 2016 das YOLO ein, eine Reihe von Objektidentifikationsmodellen. Das anfängliche YOLO-Modell konnte Objekte in Echtzeit identifizieren. Im Vergleich zu anderen Modellen dieser Zeit hatte es jedoch eine geringe Genauigkeit.
Im Laufe der Jahre wurden mehrere aktualisierte Versionen von YOLO veröffentlicht. Und schließlich hat Ultralytics LLC die neueste Ausgabe der YOLO-Serie, YOLOv5, erstellt.
YOLOv5 ist das genaueste und schnellste Objektidentifikationsmodell, das derzeit verfügbar ist.
Wichtige Funktionen
Ankerkästen
YOLOv5 sagt mithilfe von Ankerboxen Begrenzungsrahmen für Objekte in einem Bild voraus. Das Modell sagt mithilfe von Ankerboxen voraus, welche der vielen vordefinierten Boxen mit verschiedenen Seitenverhältnissen am besten zu dem Element im Bild passt. Dies sind vordefinierte Boxen.
Und sie ermöglichen es YOLOv5, Gegenstände in einem Bild genau zu erkennen und zu finden.
Mosaikdatenerweiterung
Beim Training verwendet YOLOv5 eine Methode, die als Mosaik bekannt ist Datenerweiterung. Um frische Trainingsbilder zu entwickeln, kombiniert unser Modell zufällig Patches aus mehreren Fotos. Dadurch wird das Modell belastbarer und zuverlässiger. Daher kann es auf neue Daten verallgemeinert und Überanpassung verringert werden.
Eine einzigartige Trainingspipeline
Eine einzigartige Trainingspipeline, die betreutes und überwachtes mischt unbeaufsichtigtes Lernen wird eingesetzt.
Somit lernt das Modell aus einer kleineren Stichprobe und nutzt unbeschriftete Eingaben effektiv. Dies steigert die Leistung des Modells und verbessert seine Fähigkeit, auf neue Eingaben zu generalisieren.
Schichten, die Reste und Nicht-Reste sind
Die Architektur von YOLOv5 kombiniert Schichten, die Residuen und Nicht-Residuen sind. Indem es Gradienten ermöglicht wird, über die Schichten zu fließen, unterstützen Restschichten das Modell beim Erlernen schwieriger Merkmale. Außerdem verleihen Nicht-Restschichten dem Modell ein umfassenderes Verständnis des Eingabebilds. Dadurch kann YOLOv5 präziser und effektiver arbeiten.
So verwenden Sie YOLOv5
Installation
Die Installation von YOLOv5 kann mit pip schnell abgeschlossen werden. Pip ist ein Python-Paketmanager. Die allgemeinen Verfahren zum Installieren von YOLOv5 sind wie folgt:
1- Installieren Sie PyTorch: Da YOLOv5 auf dem PyTorch-Framework basiert, müssen Sie zuerst PyTorch installieren.
pip install torch torchvision
2. Installieren Sie CUDA: Sie müssen CUDA installieren, wenn Sie beabsichtigen, YOLOv5 auf einer GPU auszuführen.
3. Installieren Sie YOLOv5: Verwenden Sie nach dem Einrichten von PyTorch und CUDA den folgenden Befehl, um YOLOv5 herunterzuladen.
pip install yolov5
4-Nach der Installation von YOLOv5 müssen Sie die vortrainierten Gewichte herunterladen. Die vortrainierten Gewichtungen sind im Ultralytics GitHub-Repository verfügbar.
Gehen Sie zum Abschnitt „Gewichte“ der Website, indem Sie nach unten scrollen. Sie können vortrainierte Gewichte aus der Liste herunterladen, die Sie hier finden.
5. Wählen Sie die bereits trainierten Gewichte aus, die am besten zu Ihrem Anwendungsfall passen. Der Datensatz oder die bestimmte YOLOv5-Version, in der die Gewichte gelernt wurden, kann verwendet werden, um die Liste einzugrenzen.
6- Nachdem Sie die richtigen Gewichte ausgewählt haben, wählen Sie das Gewicht aus, indem Sie auf die Schaltfläche „Herunterladen“ daneben klicken. Die Gewichte stehen als Download zur Verfügung. pt-Dateien.
7- Übertragen Sie die heruntergeladenen Gewichte in das Verzeichnis. Hier wird Ihr Erkennungsskript ausgeführt.
8- An diesem Punkt können Sie die Objekterkennung für Ihre Fotos oder Videos mit den vortrainierten Gewichten in Ihrem Erkennungsskript ausführen.
Bereiten Sie die Daten vor
Sie müssen die folgenden Maßnahmen ergreifen, um die Daten für die Verwendung mit YOLOv5 vorzubereiten:
1. Sammeln Sie die Daten: Der erste Schritt besteht darin, die Bild- oder Videodaten zu sammeln, die Sie benötigen Objekterkennung. Die Dinge, die Sie erkennen möchten, sollten in den Fotos oder Videos vorhanden sein.
2- Formatieren Sie die Daten: Sie können Fotos einfach in Ihr Skript importieren, wenn Sie sie verwenden. Sie müssen ein Video in eine Reihe von Fotos umwandeln, wenn Sie eines verwenden möchten. Sie können die Frames aus einem Film mit einer Bibliothek wie OpenCV extrahieren.
import cv2
img = cv2.imread('path/to/image')
Mit der OpenCV-Bibliothek können Sie den folgenden Befehl verwenden, um ein Video in eine Reihe von Bildern umzuwandeln:
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. Beschriften Sie die Daten: Sie müssen die Daten beschriften, wenn Sie Ihren Datensatz verwenden. Zeichnen Sie Begrenzungsrahmen um die Elemente, die Sie in jedem Frame eines Bildes identifizieren möchten. Es ist der Prozess der Kennzeichnung der Daten. Sie können mehrere Tools verwenden, um Sie bei diesem Vorgang zu unterstützen, einschließlich LabelImg und RectLabel.
4- Sie müssen die Daten in Trainings- und Testsets aufteilen, nachdem Sie sie markiert haben. Dies ist entscheidend, um zu beurteilen, wie gut Ihr Modell funktioniert.
5. Schließlich müssen Sie die Daten möglicherweise vor dem Training oder Testen vorverarbeiten. Dies kann die Skalierung der Bilder oder Videos, die Standardisierung der Pixelwerte oder der Einsatz von Methoden zur Datenaugmentation beinhalten.
Nach Abschluss dieser Schritte sind Ihre Daten bereit.
Führen Sie das Erkennungsskript aus
Hier ist eine Illustration eines Erkennungsskripts, das ein Bild analysiert und Objekte findet.
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))
Nachbearbeitung
Die nicht maximale Unterdrückung ist eine der häufigsten Nachbearbeitungstechniken, die bei der Objekterkennung (NMS) verwendet werden. Wir verwenden NMS, um überlappende Begrenzungsrahmen für dasselbe Objekt zu eliminieren. Um NMS auf die Erkennungen auszuführen, können wir die cv2.dnn.NMSBoxes()-Methode der OpenCV-Bibliothek verwenden.
Hier ist ein Beispiel für die Nachbearbeitung von Erkennungen mit NMS.
import cv2
# Perform Non-Maxima Suppression (NMS)
Indizes = cv2.dnn.NMSBoxes (Erkennungen, Konfidenzen, conf_thres, nms_thres)
Visualisierung
Im Fall der Visualisierung können wir wieder eine Bibliothek wie OpenCV verwenden. Wir können die Begrenzungsrahmen um die entdeckten Objekte auf dem Quellbild oder -video anzeigen. Um die Begrenzungsrahmen des Bildes zu zeichnen, verwenden Sie die Methode cv2.rectangle(). So zeigen Sie die Erkennungen auf dem Originalbild an:
cv2 importieren
# Draw the bounding boxes on the image
für I in Indizes:
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
Anwendungen
YOLOv5 ist ein starkes Objektidentifikationsmodell. Daher können wir es in vielen realen Szenarien nutzen. Eine der prominentesten Anwendungen sind selbstfahrende Autos. YOLOv5 kann Gegenstände wie Autos und Ampeln in Echtzeit identifizieren.
In Überwachungssystemen können wir YOLOv5 verwenden, um Objekte in Live-Videostreams zu erkennen und zu verfolgen. Darüber hinaus kann YOLOv5 ein großer Vorteil in der Robotik sein. Es kann Robotern helfen, ihre Umgebung zu erkennen und zu verstehen. Dies ist äußerst wichtig für Aktivitäten wie Navigation und Manipulation.
YOLOv5 kann auch in jeder Branche eingesetzt werden, die eine Objekterkennung erfordert, wie z. B. Einzelhandel, Sport, Medizin und Sicherheit.
Zusammenfassung
Schließlich ist YOLOv5 die neueste und fortschrittlichste Version der YOLO-Familie Objekterkennung für
. Es ist auch fair zu sagen, dass es das genaueste verfügbare Objekterkennungsmodell ist. Dank seiner hohen Genauigkeit und Geschwindigkeit können Sie es sicher für Ihre Objekterkennungsprojekte auswählen.
Reski Agus
Ich erstelle mit yolov5 ein erstes Tagebuch über Detektionsfahrzeuge und dieses Web hilft mir, Informationen darüber zu suchen.
Ich interessiere mich sehr für KI.
Wenn Sie können, habe ich viele Fragen zu KI. Vielleicht können Sie mir helfen
Vielen Dank