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
- Installationsanleitung
- Verwenden Sie ein bereits trainiertes Modell
- 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]:
- Gehen Sie zu Ihrem Konto, scrollen Sie zum API-Bereich und klicken Sie auf API-Token ablaufen lassen um vorherige Token zu entfernen
- Klicke auf Erstellen Sie ein neues API-Token– Die Datei kaggle.json wird auf Ihren Computer heruntergeladen.
- 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
- Abhängigkeiten importieren
- Detektorpfad einstellen
- Legen Sie den Datensatz- und Anmerkungspfad fest
- Modell auswählen (hier verwenden wir CornerNet_Saccade)
- 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.
- Detektorpfad einstellen
- 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
- CornerNet-https://arxiv.org/abs/1808.01244
- Mönch-KI – https://github.com/Tessellate-Imaging/Monk_Object_Detection
- Kaggle-Datensatz – https://www.kaggle.com/kbhartiya83/swimming-pool-and-car-detection
- 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