Technologische Neuigkeiten, Bewertungen und Tipps!

Auto- und Pooldetektor mit Monk AI – Auf dem Weg zur KI

Hinweis: Der folgende Artikel hilft Ihnen dabei: Auto- und Pooldetektor mit Monk AI – Auf dem Weg zur KI

Computer Vision

Über das Projekt

Der Schwerpunkt dieses Projekts liegt auf der Erkennung von Autos und Pools anhand von Satellitenbildern CornerNet[1]. Die Objekterkennung durch völlig neue Programmierung durchzuführen, kann für jemanden, der sich auf diesem Gebiet nicht besonders gut auskennt, schwierig und mühsam sein. Mit Monk AI lässt sich dies auf scheinbar einfachere Weise bewerkstelligen. Verwendung der Mönchs-KI [2]kann man mit sehr wenigen Codezeilen verschiedene Computer-Vision-Aufgaben wie die Objekterkennung erledigen. Dieses Projekt kann dazu beitragen, ein besseres Verständnis des MonkAI-Toolkits zu erlangen. In diesem Blog werde ich einige Einblicke in MonkAI geben und wie es verwendet werden kann, um den Prozess der Objekterkennung zu vereinfachen und andere Computer-Vision-Anwendungen zu erstellen.

Anleitung verfügbar unter GitHub.

Funktionen von Monk AI

  • Eine Low-Code-Programmierumgebung.
  • Mit MonkAI kann man mit einer gemeinsamen Syntax auf PyTorch, MXNet, Keras, TensorFlow usw. zugreifen.
  • Für Wettbewerbs- und Hackathon-Teilnehmer: Die problemlose Einrichtung macht das Prototyping schneller und einfacher

Der Datensatz

Für dieses Projekt werden Satellitenbilder verwendet, um das Modell auf die Erkennung von Autos und Pools zu trainieren. Anmerkungen werden im VOC-Format gespeichert. Der Datensatz enthält 3748 Zugbilder und 2703 Testbilder. Der Datensatz ist auf Kaggle verfügbar.

CornerNet

CornerNet, ein neuer Ansatz zur Objekterkennung, bei dem man einen Objektbegrenzungsrahmen als Paar von Schlüsselpunkten, der oberen linken Ecke und der unteren rechten Ecke, mithilfe eines einzelnen neuronalen Faltungsnetzwerks erkennen kann. Durch die Erkennung von Objekten als gepaarte Schlüsselpunkte ist es möglich, die Notwendigkeit zu eliminieren, eine Reihe von Ankerkästen zu entwerfen, die bisher üblicherweise in einstufigen Detektoren verwendet wurden.

Inhaltsverzeichnis

  1. Installationsanleitung
  2. Verwenden Sie ein bereits trainiertes Modell
  3. Trainieren Sie einen benutzerdefinierten Detektor

— Konvertierung von Anmerkungen (VOC zu COCO über MONK)

– Ausbildung

4. Inferenzmodell

1. Installationsanweisungen

Hier verwenden wir Google Colab für das Training, da es eine CUDA-GPU bereitstellt. Man kann aber auch ein lokales Gerät oder ein Kaggle-Notebook verwenden. Jetzt richten wir das MonkAI-Toolkit und die Abhängigkeiten vom Colab ein.

2. Verwenden Sie ein bereits trainiertes Modell

Monk hilft dabei, die Erkennungsergebnisse zu verstehen, indem es ein vorab trainiertes Modell verwendet, um unsere Anwendung zu demonstrieren.

Herunterladen des vorab trainierten Modells.

Entpacken Sie den Ordner

Der Ordner obj_satellite_car_pool_trained enthält die vorab trainierte Modelldatei und einige Testbilder.

Einrichten eines Detektors

Aus einem bestimmten Ordner verwenden wir eine Gewichtsdatei (obj_satellite_car_pool_trained/CornerNet_Saccade_final-1000.pkl).

Aus dem entpackten Ordner verwenden wir einige Bilder für Rückschlusszwecke.

Schlussfolgerung-1

Schlussfolgerung-2

3. Trainieren Sie einen benutzerdefinierten Detektor

Wir verwenden einen Datensatz von Kaggle, daher müssen wir die Kaggle-API auf Colab installieren.

Bitte befolgen Sie die folgenden Schritte, um Kaggle-Daten herunterzuladen und in Google Colab zu verwenden[4]:

  1. Gehen Sie zu Ihrem Konto, scrollen Sie zum API-Bereich und klicken Sie auf API-Token ablaufen lassen um vorherige Token zu entfernen
  2. Klicke auf Erstellen Sie ein neues API-Token– Die Datei kaggle.json wird auf Ihren Computer heruntergeladen.
  3. Gehen Sie zu Ihrer Google Colab-Projektdatei und führen Sie die folgenden Befehle aus:

Zeit, Ihren Datensatz herunterzuladen

Gehen Sie zu dem Datensatz, den Sie auf Kaggle herunterladen möchten, und kopieren Sie den von Kaggle bereitgestellten API-Befehl. Das sollte wie folgt aussehen:

Um ein Modell mit Cornernet-Saccade zu trainieren, sollte die Annotation im COCO-Format vorliegen, wir haben die Annotation jedoch im VOC-Format. Daher müssen wir das VOC-Format über das MONK-Format in das COCO-Format konvertieren. Detaillierten Code dazu finden Sie auf Github

VOC-Format (Datensatzverzeichnisstruktur)

Mönch-Format

COCO-Format (Gewünschte Anmerkungen)

Anmerkungskonvertierung

Detaillierten Code dazu finden Sie auf Github

Ausbildung

Mit Monk AI können wir eine gleichzeitige Pipeline erstellen, eine Modellauswahl durchführen und Hyperparameter einfach festlegen

  1. Abhängigkeiten importieren
  2. Detektorpfad einstellen
  3. Legen Sie den Datensatz- und Anmerkungspfad fest
  4. Modell auswählen (hier verwenden wir CornerNet_Saccade)
  5. Hyperparameter festlegen (Lernrate 0,00025, Gesamtiterationen 10000)

6. Schließen Sie nun die Einrichtung für das Training ab. Hier laden wir Anmerkungen in den Speicher, gefolgt von der Indexerstellung und dem Laden des Modells.

7. Jetzt beginnen wir mit unserer Ausbildung als

Jetzt können wir hier alle Hyperparametereinstellungen sehen. Die Gesamtzahl der verfügbaren Parameter für das Training beträgt 116849063. Es ist immer eine bewährte Methode, die Daten während jeder Iteration zu mischen, damit wir die Indizes der Datensätze mischen.

Die Gewichtungsdatei wird sowohl als Zwischen- als auch als Enddatei in „cache/nnet/CornerNet_Saccade/“ gespeichert.

4. Schlussfolgerung

Es ähnelt dem vorab trainierten Modell, aber jetzt verwenden wir unser eigenes trainiertes Modell, sodass der Modellpfad anders ist.

  1. Detektorpfad einstellen
  2. Klassen definieren.

3. Legen Sie den Pfad des trainierten Modells fest.

4. Stellen Sie einige Testbilder zum Testen bereit.

Testbild-1

Testbild-2

Der Schwellenwert für mehrere Versuche und Irrtümer ist auf 0,3 festgelegt

Bei einem Schwellenwert von weniger als 0,3 werden mehrere Detektorboxen beobachtet, und bei einem Schwellenwert über 0,3 ist es für einen Detektor schwierig, ein Auto zu erkennen.

Da wir Satellitenbilder verwendet haben, ist die Größe des Autos in Pixeln viel kleiner als die des Pools. Für Pools stehen weitere Funktionen zur Verfügung

Abschluss

Zusammenfassend lässt sich sagen, dass unsere Aufgabe in sehr wenigen Codezeilen erledigt wurde. Wir haben in diesem Artikel nur eine Pipeline demonstriert, aber Monk AI verfügt über insgesamt sieben solcher Pipelines von GluonCV bis YOLOv3. Alles in allem ist Monk AI eine großartige Bibliothek, die die Arbeit mit solchen Computer-Vision-Aufgaben ziemlich einfach macht.

Der gesamte in diesem Artikel gezeigte Code befindet sich in diesem Colab-Notizbuch.

Viele weitere Beispiele zur Erkennung und Segmentierung finden Sie im Anwendungsmodell Zoo.

Danke fürs Lesen! Ich hoffe, Sie finden diesen Artikel informativ und nützlich. Teilen Sie Ihr Feedback im Kommentarbereich!

Verweise

  1. CornerNet-https://arxiv.org/abs/1808.01244
  2. Mönch-KI – https://github.com/Tessellate-Imaging/Monk_Object_Detection
  3. Kaggle-Datensatz – https://www.kaggle.com/kbhartiya83/swimming-pool-and-car-detection
  4. Laden Sie den Kaggle-Datensatz auf Google Colab herunter – https://www.kaggle.com/general/74235

Car and Pool Detector Using Monk AI wurde ursprünglich in Towards AI – Multidisciplinary Science Journal auf Medium veröffentlicht, wo die Leute das Gespräch fortsetzen, indem sie diese Geschichte hervorheben und darauf reagieren.

Veröffentlicht über Towards AI