Objekterkennung und Instanzsegmentierung in Python mit Detectron2 PlatoBlockchain Data Intelligence. Vertikale Suche. Ai.

Objekterkennung und Instanzsegmentierung in Python mit Detectron2

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.

Dadurch wird 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 viel mehr Recherchen über die Landschaft des Feldes anstellen, um einen guten Griff zu bekommen.

Detectron2 von Meta AI – Instanzsegmentierung und Objekterkennung

Detektor2 ist das Open-Source-Objekterkennungs-, Segmentierungs- und Posenschätzungspaket von Meta AI (ehemals FAIR – Facebook AI Research) – alles in einem. Bei einem Eingabebild kann es die Beschriftungen, Begrenzungsrahmen, Konfidenzwerte, Masken und Skelette von Objekten zurückgeben. Dies ist auf der Seite des Repositorys gut dargestellt:

Es soll als Bibliothek dienen, auf der Sie Forschungsprojekte aufbauen können. Es bietet ein Modell Zoo wobei die meisten Implementierungen neben RetinaNet auf Mask R-CNN und R-CNNs im Allgemeinen beruhen. Sie haben auch eine ziemlich anständige Dokumentation. Lassen Sie uns ein beispielhaftes Inferenzskript ausführen!

Lassen Sie uns zuerst die Abhängigkeiten installieren:

$ pip install pyyaml==5.1
$ pip install 'git+https://github.com/facebookresearch/detectron2.git'

Als Nächstes importieren wir die Detectron2-Dienstprogramme – hier kommt das Wissen über Framework-Domänen ins Spiel. Sie können einen Detektor mit dem konstruieren DefaultPredictor Klasse, indem ein Konfigurationsobjekt übergeben wird, das sie einrichtet. Das Visualizer bietet Unterstützung bei der Visualisierung von Ergebnissen. MetadataCatalog und DatasetCatalog gehören zur Daten-API von Detectron2 und bieten Informationen zu integrierten Datensätzen sowie deren Metadaten.

Lassen Sie uns die Klassen und Funktionen importieren, die wir verwenden werden:

import torch, detectron2
from detectron2.utils.logger import setup_logger
setup_logger()

from detectron2 import model_zoo
from detectron2.engine import DefaultPredictor
from detectron2.config import get_cfg
from detectron2.utils.visualizer import Visualizer
from detectron2.data import MetadataCatalog, DatasetCatalog

Die richtigen requests, laden wir ein Bild herunter und speichern es auf unserem lokalen Laufwerk:

import matplotlib.pyplot as plt
import requests
response = requests.get('http://images.cocodataset.org/val2017/000000439715.jpg')
open("input.jpg", "wb").write(response.content)
    
im = cv2.imread("./input.jpg")
fig, ax = plt.subplots(figsize=(18, 8))
ax.imshow(cv2.cvtColor(im, cv2.COLOR_BGR2RGB))

Das führt zu:

Objekterkennung und Instanzsegmentierung in Python mit Detectron2 PlatoBlockchain Data Intelligence. Vertikale Suche. Ai.

Jetzt laden wir die Konfiguration und führen bei Bedarf Änderungen durch (die Modelle laufen standardmäßig auf GPU, wenn Sie also keine GPU haben, sollten Sie das Gerät in der Konfiguration auf „CPU“ setzen):

cfg = get_cfg()

cfg.merge_from_file(model_zoo.get_config_file("COCO-InstanceSegmentation/mask_rcnn_R_50_FPN_3x.yaml"))
cfg.MODEL.ROI_HEADS.SCORE_THRESH_TEST = 0.5
cfg.MODEL.WEIGHTS = model_zoo.get_checkpoint_url("COCO-InstanceSegmentation/mask_rcnn_R_50_FPN_3x.yaml")


Hier geben wir an, welches Modell wir ausführen möchten model_zoo. Wir haben ein Instanzsegmentierungsmodell importiert, das auf der Mask R-CNN-Architektur und mit einem ResNet50-Backbone basiert. Je nachdem, was Sie erreichen möchten (Keypoint-Erkennung, Instanzsegmentierung, panoptische Segmentierung oder Objekterkennung), laden Sie das entsprechende Modell ein.

Schließlich können wir damit einen Prädiktor konstruieren cfg und führen Sie es auf den Eingängen aus! Das Visualizer class wird verwendet, um Vorhersagen für das Bild zu zeichnen (in diesem Fall segmentierte Instanzen, Klassen und Begrenzungsrahmen:

predictor = DefaultPredictor(cfg)
outputs = predictor(im)

v = Visualizer(im[:, :, ::-1], MetadataCatalog.get(cfg.DATASETS.TRAIN[0]), scale=1.2)
out = v.draw_instance_predictions(outputs["instances"].to("cpu"))
fig, ax = plt.subplots(figsize=(18, 8))
ax.imshow(out.get_image()[:, :, ::-1])

Daraus ergibt sich schließlich:

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!

Objekterkennung und Instanzsegmentierung in Python mit Detectron2 PlatoBlockchain Data Intelligence. Vertikale Suche. Ai.

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“.

Objekterkennung und Instanzsegmentierung in Python mit Detectron2 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

Die Instanzsegmentierung geht einen Schritt über die semantische Segmentierung hinaus und notiert den qualitativen Unterschied zwischen einzelnen Instanzen einer Klasse (Person 1, Person 2 usw.) und nicht nur, ob sie zu einer Klasse gehören. In gewisser Weise – es ist eine Klassifizierung auf Pixelebene.

In dieser kurzen Anleitung haben wir einen kurzen Blick darauf geworfen, wie Detectron2 die Instanzsegmentierung und Objekterkennung über ihre API mithilfe eines Mask R-CNN einfach und zugänglich macht.

Zeitstempel:

Mehr von Stapelmissbrauch