Recycling-Sortierroboter mit Google Coral
Wussten Sie, dass die durchschnittliche Kontaminationsrate in Gemeinden und Unternehmen bis zu 25 % beträgt? Das bedeutet, dass jedes vierte weggeworfene Recyclingstück nicht recycelt wird. Dies wird durch menschliches Versagen in Recyclingzentren verursacht. Traditionell sortieren Arbeiter den Müll je nach Material in verschiedene Behälter. Menschen machen zwangsläufig Fehler und sortieren den Müll nicht richtig, was zu Kontaminationen führt. Da Umweltverschmutzung und Klimawandel in der heutigen Gesellschaft noch wichtiger werden, leistet Recycling einen großen Beitrag zum Schutz unseres Planeten. Durch den Einsatz von Robotern zum Sortieren von Müll werden die Kontaminationsraten drastisch gesenkt, ganz zu schweigen von viel billiger und nachhaltiger. Um dieses Problem zu lösen, habe ich einen Recycling-Sortierroboter entwickelt, der mithilfe von maschinellem Lernen zwischen verschiedenen Recyclingmaterialien sortiert.
Demo:
Code:
Bitte klonen Sie mein GitHub-Repository, um dieser Anleitung zu folgen.
Schritt 1, Daten abrufen:
Um das Objekterkennungsmodell zu trainieren, das verschiedene Recyclingmaterialien erkennen und erkennen kann, habe ich das Trashnet-Dataset verwendet, das 2527 Bilder enthält:
- 501 Glas
- 594-Papier
- 403 Karton
- 482 Kunststoff
- 410 Metall
- 137 Papierkorb
Hier ist ein Beispielbild:
Dieser Datensatz ist sehr klein, um ein Objekterkennungsmodell zu trainieren. Es gibt nur etwa 100 Bilder von Müll, die zu wenig sind, um ein genaues Modell zu trainieren, also habe ich beschlossen, es wegzulassen.
Sie können diesen Google Drive-Ordner verwenden, um das Dataset herunterzuladen. Stellen Sie sicher, dass Sie die Datei dataset-resized.zip herunterladen. Es enthält den Satz von Bildern, deren Größe bereits auf eine kleinere Größe geändert wurde, um ein schnelleres Training zu ermöglichen. Wenn Sie die Größe der Rohbilder nach Ihren Wünschen ändern möchten, können Sie die Datei dataset-original.zip herunterladen.
Schritt 2, Beschriften der Bilder:
Als nächstes müssen wir mehrere Bilder verschiedener Recyclingmaterialien beschriften, damit wir das Objekterkennungsmodell trainieren können. Dazu habe ich labelImg verwendet, eine kostenlose Software, mit der Sie Objektbegrenzungsrahmen in Bildern beschriften können.
Beschriften Sie jedes Bild mit dem richtigen Etikett. In dieser Anleitung erfahren Sie, wie. Stellen Sie sicher, dass jeder Begrenzungsrahmen so nah wie möglich am Rand jedes Objekts liegt, um sicherzustellen, dass das Erkennungsmodell so genau wie möglich ist. Speichern Sie alle .xml-Dateien in einem Ordner.
So beschriften Sie Ihre Bilder:
Dies ist eine sehr mühsame und betäubende Erfahrung. Zum Glück für dich habe ich bereits alle Bilder für dich beschriftet! Sie finden es hier.
Schritt 3, Training:
In Bezug auf die Schulung habe ich mich für Transfer-Learning mit Tensorflow entschieden. Dies ermöglicht es uns, ein einigermaßen genaues Modell ohne große Datenmengen zu trainieren.
Es gibt mehrere Möglichkeiten, wie wir dies tun können. Wir können dies auf unserem lokalen Desktop-Computer in der Cloud tun. Das Training auf unserem lokalen Computer dauert sehr lange, je nachdem, wie leistungsstark Ihr Computer ist und ob Sie über eine leistungsstarke GPU verfügen. Dies ist meiner Meinung nach wahrscheinlich der einfachste Weg, aber auch mit der Kehrseite der Geschwindigkeit.
Beim Transferlernen sind einige wichtige Dinge zu beachten. Sie müssen sicherstellen, dass das vortrainierte Modell, das Sie für das Training verwenden, mit der Coral Edge TPU kompatibel ist. Hier finden Sie kompatible Modelle. Ich habe das Modell MobileNet SSD v2 (COCO) verwendet. Fühlen Sie sich frei, auch mit anderen zu experimentieren.
Um auf Ihrem lokalen Computer zu trainieren, würde ich empfehlen, das Tutorial von Google oder das Tutorial von EdjeElectronics zu befolgen, wenn es unter Windows 10 ausgeführt wird. Ich persönlich habe EdjeElectroncs Tutorial getestet und bin auf meinem Desktop erfolgreich. Ich kann nicht bestätigen, ob das Tutorial von Google funktioniert, aber es würde mich überraschen, wenn es nicht funktioniert.
Um in der Cloud zu trainieren, können Sie AWS oder GCP verwenden. Ich habe diese Anleitung gefunden, die Sie ausprobieren können. Es verwendet die Cloud-TPUs von Google, die Ihr Objekterkennungsmodell superschnell trainieren können. Sie können auch AWS verwenden.
Egal, ob Sie auf Ihrem lokalen Computer oder in der Cloud trainieren, Sie sollten am Ende ein trainiertes Tensorflow-Modell haben.
Schritt 4, Kompilieren des trainierten Modells:
Damit Ihr trainiertes Modell mit der Coral Edge TPU funktioniert, müssen Sie es kompilieren.
Hier ist ein Diagramm für den Arbeitsablauf:
Nach dem Training müssen Sie es als eingefrorenes Diagramm (.pb-Datei) speichern. Anschließend müssen Sie es in ein Tensorflow Lite-Modell konvertieren. Beachten Sie, wie es „Quantisierung nach dem Training“ heißt. Wenn Sie beim Transferlernen die kompatiblen vortrainierten Modelle verwendet haben, müssen Sie dies nicht tun. Sehen Sie sich hier die vollständige Dokumentation zur Kompatibilität an.
Beim Tensorflow Lite-Modell müssen Sie es zu einem Edge-TPU-Modell kompilieren. Weitere Informationen dazu finden Sie hier.
Recycle-Erkennungsmodell:
Wenn Sie sich das mühsame Trainieren, Konvertieren und Kompilieren des Objekterkennungsmodells ersparen möchten, sehen Sie sich hier mein Modell zur Wiederverwendungserkennung an.
Schritt 5, Modell bereitstellen:
Der nächste Schritt besteht darin, den Raspberry Pi (RPI) und die Edge TPU einzurichten, um das trainierte Objekterkennungsmodell auszuführen.
Richten Sie zuerst den RPI mithilfe dieser Anleitung ein.
Richten Sie als Nächstes die Edge-TPU gemäß dieser Anleitung ein.
Schließen Sie schließlich das RPI-Kameramodul an den Himbeer-Pi an.
Sie sind jetzt bereit, Ihr Objekterkennungsmodell zu testen!
Wenn Sie mein Repository bereits geklont haben, sollten Sie zum RPI-Verzeichnis navigieren und die Datei test_detection.py ausführen:
python test_detection.py --model recycle_ssd_mobilenet_v2_quantized_300x300_coco_2019_01_03/detect_edgetpu.tflite --labels recycle_ssd_mobilenet_v2_quantized_300x300_coco_2019_01_03/labels.txt
Ein kleines Fenster sollte sich öffnen und wenn Sie eine Plastikwasserflasche oder ein anderes Recyclingmaterial einsetzen, sollte es wie folgt erkannt werden:
Drücken Sie den Buchstaben „q“ auf Ihrer Tastatur, um das Programm zu beenden.
Schritt 6, Bau des Roboterarms:
Der Roboterarm ist ein 3D-gedruckter Arm, den ich hier gefunden habe. Folgen Sie einfach dem Tutorial zum Einrichten.
So ist mein Arm geworden:
Stellen Sie sicher, dass Sie die Servo-Pins mit den entsprechenden Arduino-I / O-Pins in meinem Code verbinden. Schließen Sie die Servos von unten nach oben am Arm in dieser Reihenfolge an:3, 11, 10, 9, 6, 5. Wenn Sie sie nicht in dieser Reihenfolge anschließen, bewegt sich der Arm das falsche Servo!
Testen Sie, ob es funktioniert, indem Sie zum Arduino-Verzeichnis navigieren und die Datei basicMovement.ino ausführen. Dies greift einfach einen Gegenstand, den Sie vor dem Arm platzieren, und lässt ihn dahinter fallen.
Schritt 7, Verbindung von RPI und Roboterarm:
Wir müssen zuerst das Kameramodul an der Unterseite der Klaue montieren:
Versuchen Sie, die Kamera so gerade wie möglich auszurichten, um Fehler beim Erfassen des erkannten Recyclingmaterials zu minimieren. Sie müssen das lange Flachbandkabel des Kameramoduls verwenden, wie in der Materialliste angegeben.
Als nächstes müssen Sie die Datei "roboticArm.ino" auf das Arduino-Board hochladen.
Schließlich müssen wir nur noch ein USB-Kabel zwischen dem USB-Port des RPI und dem USB-Port des Arduino anschließen. Dadurch können sie seriell kommunizieren. Folgen Sie dieser Anleitung zur Einrichtung.
Schritt 8, Letzter Feinschliff:
Dieser Schritt ist völlig optional, aber ich möchte alle meine Komponenten in eine nette kleine Projektbox packen.
So sieht es aus:
Quelle:Recycling-Sortierroboter mit Google Coral
Herstellungsprozess
- Modelleisenbahn
- Python/MicroPython Sensor Logger mit Google Tabellen
- Ein mobiler Roboter mit visueller Hindernisvermeidung
- Webgesteuerter Raspberry Pi-Roboter mit Video
- Desinfektionsroboter mit UV-Licht
- Hindernisse vermeiden Roboter mit Servomotor
- Steuerung eines Roomba-Roboters mit Arduino und Android-Gerät
- Sprachgesteuerte Bluetooth-Geräte mit OK Google
- PID-Steuerung eines Robotergreifers in Matlab / Simulink
- Drehzentrum mit Roboterarm ausgestattet