Objekterkennungsinferenz in Python mit YOLOv5 und PyTorch PlatoBlockchain Data Intelligence. Vertikale Suche. Ai.

Objekterkennungsinferenz in Python mit YOLOv5 und PyTorch

Einleitung

Die Objekterkennung ist ein großes Gebiet der Computer Vision und eine der wichtigeren Anwendungen der Computer Vision „in freier Wildbahn“. Auf der einen Seite kann es verwendet werden, um autonome Systeme zu bauen, die Agenten durch Umgebungen navigieren – seien es Roboter, die Aufgaben ausführen, oder selbstfahrende Autos, aber dies erfordert Schnittmengen mit anderen Feldern. Die Erkennung von Anomalien (z. B. fehlerhafte Produkte in einer Linie), die Lokalisierung von Objekten in Bildern, die Gesichtserkennung und verschiedene andere Anwendungen der Objekterkennung können jedoch durchgeführt werden, ohne andere Felder zu überschneiden.

Die Objekterkennung ist nicht so standardisiert wie die Bildklassifizierung, hauptsächlich weil die meisten neuen Entwicklungen typischerweise von einzelnen Forschern, Betreuern und Entwicklern durchgeführt werden und nicht von großen Bibliotheken und Frameworks. Es ist schwierig, die erforderlichen Hilfsskripte in ein Framework wie TensorFlow oder PyTorch zu packen und die API-Richtlinien einzuhalten, die die Entwicklung bisher geleitet haben.

Dies macht die Objekterkennung etwas komplexer, typischerweise ausführlicher (aber nicht immer) und weniger zugänglich als die Bildklassifizierung. Einer der Hauptvorteile eines Ökosystems besteht darin, dass Sie nicht nach nützlichen Informationen zu bewährten Verfahren, Tools und Nutzungsansätzen suchen müssen. Bei der Objekterkennung müssen die meisten Menschen viel mehr über die Landschaft des Feldes recherchieren, um einen guten Griff zu bekommen.

Zum Glück für die Massen – Ultralytics hat eine einfache, sehr leistungsfähige und schöne Objekterkennungs-API um ihre YOLOv5-Implementierung herum entwickelt.

In dieser kurzen Anleitung führen wir die Objekterkennung in Python mit YOLOv5 durch, das von Ultralytics in PyTorch erstellt wurde, und verwenden eine Reihe vortrainierter Gewichte, die auf MS COCO trainiert wurden.

YOlov5

YOLO (Du schaust nur einmal) ist eine Methodik sowie eine Familie von Modellen, die für die Objekterkennung erstellt wurden. Seit der Gründung im Jahr 2015 wurden YOLOv1, YOLOv2 (YOLO9000) und YOLOv3 von denselben Autoren vorgeschlagen – und die Deep-Learning-Community setzte sich in den folgenden Jahren mit Open-Source-Fortschritten fort.

YOLOv5 von Ultralytics ist die erste groß angelegte Implementierung von YOLO in PyTorch, was es zugänglicher als je zuvor machte, aber der Hauptgrund, warum YOLOv5 so Fuß gefasst hat, ist auch die wunderbar einfache und leistungsstarke API, die darum herum gebaut wurde. Das Projekt abstrahiert die unnötigen Details, ermöglicht jedoch Anpassbarkeit, praktisch alle verwendbaren Exportformate und verwendet erstaunliche Praktiken, die das gesamte Projekt sowohl effizient als auch so optimal wie möglich machen. Es ist wirklich ein Beispiel für die Schönheit der Implementierung von Open-Source-Software und wie sie die Welt, in der wir leben, antreibt.

Das Projekt bietet vortrainierte Gewichtungen auf MS COCO, einem Grunddatensatz zu Objekten im Kontext, der sowohl zum Benchmarking als auch zum Erstellen allgemeiner Objekterkennungssysteme verwendet werden kann – aber vor allem kann es verwendet werden, um allgemeines Wissen über Objekte im Kontext auf benutzerdefinierte zu übertragen Datensätze.

Objekterkennung mit YOLOv5

Bevor Sie fortfahren, vergewissern Sie sich, dass Sie dies getan haben torch und torchvision Eingerichtet:

! python -m pip install torch torchvision

YOLOv5 hat eine detaillierte, sachliche Dokumentation und eine wunderbar einfache API, wie auf dem Repo selbst und im folgenden Beispiel gezeigt:

import torch

model = torch.hub.load('ultralytics/yolov5', 'yolov5s')
img = 'https://i.ytimg.com/vi/q71MCWAEfL8/maxresdefault.jpg'  
results = model(img)
fig, ax = plt.subplots(figsize=(16, 12))
ax.imshow(results.render()[0])
plt.show()

Das zweite Argument der hub.load() Methode gibt die Gewichtungen an, die wir verwenden möchten. Indem Sie irgendwo zwischen wählen yolov5n zu yolov5l6 – wir laden die vortrainierten Gewichte der MS COCO ein. Für benutzerdefinierte Modelle:

model = torch.hub.load('ultralytics/yolov5', 'custom', path='path_to_weights.pt')

In jedem Fall – sobald Sie die Eingabe durch das Modell geleitet haben, enthält das zurückgegebene Objekt hilfreiche Methoden zum Interpretieren der Ergebnisse, und wir haben uns dafür entschieden render() them, was ein NumPy-Array zurückgibt, das wir in ein werfen können imshow() Anruf. Dies ergibt eine schön formatierte:

Ergebnisse als Dateien speichern

Sie können die Ergebnisse der Inferenz als Datei speichern, indem Sie die results.save() Verfahren:

results.save(save_dir='results')

Dadurch wird ein neues Verzeichnis erstellt, falls es noch nicht vorhanden ist, und dasselbe Bild, das wir gerade geplottet haben, als Datei gespeichert.

Objekte ausschneiden

Sie können die erkannten Objekte auch als einzelne Dateien ausschneiden. In unserem Fall können für jedes erkannte Etikett mehrere Bilder extrahiert werden. Das geht ganz einfach über die results.crop() Methode, die eine erstellt runs/detect/ Verzeichnis, mit expN/crops (wobei N für jeden Lauf zunimmt), in dem für jedes Etikett ein Verzeichnis mit beschnittenen Bildern erstellt wird:

results.crop()
Saved 1 image to runs/detect/exp2
Saved results to runs/detect/exp2

[{'box': [tensor(295.09409),
   tensor(277.03699),
   tensor(514.16113),
   tensor(494.83691)],
  'conf': tensor(0.25112),
  'cls': tensor(0.),
  'label': 'person 0.25',
  'im': array([[[167, 186, 165],
          [174, 184, 167],
          [173, 184, 164],

Sie können die Struktur der Ausgabedatei auch überprüfen mit:

Sehen Sie sich unseren praxisnahen, praktischen Leitfaden zum Erlernen von Git an, mit Best Practices, branchenweit akzeptierten Standards und einem mitgelieferten Spickzettel. Hören Sie auf, Git-Befehle zu googeln und tatsächlich in Verbindung, um es!

! ls runs/detect/exp2/crops


! ls runs/detect/exp2/crops

Objektzählung

Standardmäßig, wenn Sie eine Erkennung durchführen oder drucken results Objekt – Sie erhalten die Anzahl der Bilder, für die die Inferenz dafür durchgeführt wurde results Objekt (YOLOv5 funktioniert auch mit Stapeln von Bildern), seine Auflösung und die Anzahl der erkannten Labels:

print(results)

Das führt zu:

image 1/1: 720x1280 14 persons, 1 car, 3 buss, 6 traffic lights, 1 backpack, 1 umbrella, 1 handbag
Speed: 35.0ms pre-process, 256.2ms inference, 0.7ms NMS per image at shape (1, 3, 384, 640)

Inferenz mit Skripten

Alternativ können Sie das Erkennungsskript ausführen, detect.py, indem Sie das YOLOv5-Repository klonen:

$ git clone https://github.com/ultralytics/yolov5 
$ cd yolov5
$ pip install -r requirements.txt

Und dann läuft:

$ python detect.py --source img.jpg

Alternativ können Sie eine URL, eine Videodatei, einen Pfad zu einem Verzeichnis mit mehreren Dateien, einen Glob in einem Pfad, der nur mit bestimmten Dateien übereinstimmt, einen YouTube-Link oder einen anderen HTTP-Stream angeben. Die Ergebnisse werden in gespeichert runs/detect Verzeichnis.

Weiter gehen – Praktisches Deep Learning für Computer Vision

Ihre neugierige Natur macht Lust auf mehr? Wir empfehlen Ihnen, sich unsere anzuschauen Kurs: „Praxisnahes Deep Learning für Computer Vision mit Python“.

Objekterkennungsinferenz in Python mit YOLOv5 und PyTorch PlatoBlockchain Data Intelligence. Vertikale Suche. Ai.

Ein weiterer Computer Vision-Kurs?

Wir werden keine Klassifizierung von MNIST-Ziffern oder MNIST-Mode durchführen. Sie haben ihren Teil vor langer Zeit erfüllt. Zu viele Lernressourcen konzentrieren sich auf grundlegende Datensätze und grundlegende Architekturen, bevor fortgeschrittene Blackbox-Architekturen die Last der Leistung schultern.

Wir wollen uns konzentrieren Entmystifizierung, Praktikabilität, Verständnis, Intuition und echte Projekte. Möchte lernen wie du kannst einen Unterschied machen? Wir nehmen Sie mit auf eine Reise von der Art und Weise, wie unser Gehirn Bilder verarbeitet, über das Schreiben eines forschungstauglichen Deep-Learning-Klassifikators für Brustkrebs bis hin zu Deep-Learning-Netzwerken, die „halluzinieren“, Ihnen die Prinzipien und die Theorie durch praktische Arbeit beibringen und Sie mit dem ausstatten Know-how und Tools, um ein Experte für die Anwendung von Deep Learning zur Lösung von Computer Vision zu werden.

Was ist da drin?

  • Die ersten Prinzipien des Sehens und wie Computern das „Sehen“ beigebracht werden kann
  • Verschiedene Aufgaben und Anwendungen von Computer Vision
  • Das Handwerkszeug, das Ihnen die Arbeit erleichtert
  • Suchen, Erstellen und Verwenden von Datensätzen für Computer Vision
  • Die Theorie und Anwendung von Convolutional Neural Networks
  • Umgang mit Domänenverschiebung, Kookkurrenz und anderen Verzerrungen in Datensätzen
  • Übertragen Sie Lernen und nutzen Sie die Trainingszeit und Rechenressourcen anderer zu Ihrem Vorteil
  • Aufbau und Schulung eines hochmodernen Brustkrebsklassifikators
  • Wie man Mainstream-Ideen mit einer gesunden Portion Skepsis begegnet und die Auswirkungen weit verbreiteter Techniken versteht
  • Visualisierung des „Konzeptraums“ eines ConvNet mit t-SNE und PCA
  • Fallstudien darüber, wie Unternehmen Computer-Vision-Techniken einsetzen, um bessere Ergebnisse zu erzielen
  • Richtige Modellbewertung, Visualisierung des latenten Raums und Identifizierung der Aufmerksamkeit des Modells
  • Durchführen von Domänenrecherchen, Bearbeiten eigener Datensätze und Etablieren von Modelltests
  • Modernste Architekturen, die Weiterentwicklung von Ideen, was sie einzigartig macht und wie man sie umsetzt
  • KerasCV – eine WIP-Bibliothek zum Erstellen hochmoderner Pipelines und Modelle
  • Wie man Papiere parst, liest und selbst umsetzt
  • Modellauswahl je nach Anwendung
  • Erstellen einer End-to-End-Pipeline für maschinelles Lernen
  • Landschaft und Intuition zur Objekterkennung mit Faster R-CNNs, RetinaNets, SSDs und YOLO
  • Instanz- und semantische Segmentierung
  • Objekterkennung in Echtzeit mit YOLOv5
  • Training von YOLOv5-Objektdetektoren
  • Arbeiten mit Transformers unter Verwendung von KerasNLP (industriestarke WIP-Bibliothek)
  • Integrieren von Transformers in ConvNets zum Generieren von Bildunterschriften
  • DeepDream

Zusammenfassung

In dieser kurzen Anleitung haben wir uns angesehen, wie Sie mit YOLOv5, das mit PyTorch erstellt wurde, eine Objekterkennung durchführen können.

Zeitstempel:

Mehr von Stapelmissbrauch