Inhaltsverzeichnis:

Sipeed MaiX Bit OpenMV Demos - Computer Vision - Gunook
Sipeed MaiX Bit OpenMV Demos - Computer Vision - Gunook

Video: Sipeed MaiX Bit OpenMV Demos - Computer Vision - Gunook

Video: Sipeed MaiX Bit OpenMV Demos - Computer Vision - Gunook
Video: Unpacking and OpenMV Demos Sipeed MaiX Bit 2024, Juli
Anonim
Image
Image

Dies ist der zweite Artikel in Serie über Sipeed AI auf der Edge-Mikrocontroller-Plattform. Dieses Mal werde ich über MaiX Bit (Link zum Seeed Studio Shop) schreiben, ein kleineres, für Steckbretter geeignetes Entwicklungsboard. Die Spezifikationen sind denen von MaiX Dock, dem Board, das ich für das letzte Tutorial verwendet habe, sehr ähnlich, da sie den gleichen Chip verwenden, Kendryte K210.

Wir werden Micropython-Firmware verwenden, um einige OpenMV-Demos auszuprobieren. Hier ist die Beschreibung von der OpenMV-Homepage:

Das OpenMV-Projekt befasst sich mit der Entwicklung kostengünstiger, erweiterbarer, Python-basierter Machine Vision-Module und zielt darauf ab, das „Arduino of Machine Vision“zu werden. Python macht die Arbeit mit Machine Vision-Algorithmen viel einfacher. Die Methode find_blobs() im Code findet beispielsweise Farbblobs und gibt eine Liste von 8-wertigen Objekten zurück, die jeden gefundenen Farbblob darstellen. In Python ist das Durchlaufen der von find_blobs() zurückgegebenen Objektliste und das Zeichnen eines Rechtecks um jeden Farbklecks einfach in nur zwei Codezeilen möglich.

Obwohl MaiX Bit einen dedizierten neuronalen Netzwerkbeschleuniger bietet, kann es manchmal einfacher sein, einfach die hartcodierten OpenMV-Algorithmen zu verwenden, um die Arbeit zu erledigen oder sie nebeneinander zu verwenden.

Einige Anwendungsfälle, die mir in den Sinn kommen, sind:

1) Linienerkennung für Linienfolger-Bot

2) Ampelerkennung mit Kreis- und Farberkennung

3) Verwenden der Gesichtserkennung, um die Gesichter für die Gesichtserkennung zu finden (mit DNN)

Github-Repository für diesen Artikel

Schritt 1: Micropython-Firmware flashen

Mit MaiX-Bit verbinden
Mit MaiX-Bit verbinden

Zuerst müssen wir die Micropython-Firmware auf unser Board flashen. Eine vorkompilierte Binärdatei ist zusammen mit kflash.py (einem Flash-Dienstprogramm) im Github-Repository für diesen Artikel enthalten. Wenn Sie die Firmware aus dem Quellcode kompilieren möchten, laden Sie einfach den Quellcode von https://github.com/sipeed/MaixPy herunter, installieren Sie die Toolchain und kompilieren Sie den Quellcode in die Datei maixpy.bin. Detaillierte Bauanleitungen finden Sie hier.

Flashen Sie die Binärdatei mit

sudo python3 kflash.py kpu.bin

Nach erfolgreichem Flashen fahren Sie mit dem nächsten Schritt fort.

Schritt 2: Verbinden Sie sich mit MaiX Bit

Jetzt sollte unser MaiX Bit über eine serielle USB-Verbindung mit Baudrate 115200 zugänglich sein. Sie können Ihre Lieblingssoftware für die serielle Kommunikation verwenden oder nur Cat- und Echo-Befehle verwenden, was immer Ihren Anforderungen entspricht. Ich habe den Bildschirm für die serielle Kommunikation verwendet und finde es sehr praktisch.

Der Befehl zum Aufbau einer seriellen Kommunikationssitzung mit Bildschirm lautet

sudo-Bildschirm /dev/ttyUSB0 115200

wobei /dev/ttyUSB0 die Adresse Ihres Geräts ist.

Möglicherweise müssen Sie die Reset-Taste auf Ihrem Mikrocontroller drücken, um die Begrüßungsnachricht und die Eingabeaufforderung des Python-Interpreters anzuzeigen.

Schritt 3: Führen Sie die Demos aus

Jetzt können Sie auf den Kopiermodus zugreifen, indem Sie Strg+E drücken und die Democodes kopieren und einfügen. Um sie auszuführen, drücken Sie im Kopiermodus Strg+D.

Wenn Sie die Videos nicht aufnehmen möchten, müssen Sie die Videoaufzeichnungszeilen kommentieren. Andernfalls löst der Code eine Ausnahme aus, wenn keine SD-Karte eingelegt ist

Hier sind kurze Beschreibungen jeder Demo:

Kreise suchen - verwendet die Funktion find_circles von OpenMV. Erfordert weitere Anpassungen für Ihre spezifische Anwendung, insbesondere für den Schwellenwert (steuert, welche Kreise von der hough-Transformation erkannt werden. Es werden nur Kreise mit einer Größe größer oder gleich dem Schwellenwert zurückgegeben) und r_min-, r_max-Werte.

Rechtecke suchen - verwendet die Funktion find_rects von OpenMV. Sie können mit dem Schwellenwert herumspielen, aber der Wert, den ich in der Demo habe, funktioniert recht gut, um Rechtecke zu finden.

Gesichter finden, Augen finden - verwendet die Funktion find_features mit Haar Cascades, um Augen und Frontalgesichter im Bild zu erkennen. Sie können mit Schwellenwerten und Skalenwerten herumspielen, um den richtigen Kompromiss zwischen Geschwindigkeit und Genauigkeit zu erzielen.

Unendliche Linien finden - verwendet die Funktion find_lines, um alle unendlichen Linien im Bild mit der hough-Transformation zu finden.

Farbe erkennen - verwendet die Funktion get_statistics, um das Perzentilobjekt zu erhalten, und konvertiert dann die Mittelwerte des LAB-Tupels in das RGB-Wertetupel. Ich habe dieses Beispiel selbst geschrieben und es funktioniert ziemlich gut, aber denken Sie daran, dass die Ergebnisse der Farberkennung von den Umgebungslichtbedingungen beeinflusst werden.

Sie können viele weitere interessante Demos im OpenMV-Github-Repository finden! Sie sind größtenteils kompatibel mit MaiX Bit Micropython, das einzige, was Sie sich merken müssen, ist sensor.run(1) hinzuzufügen, nachdem Sie das Pixformat und die Bildgröße eingestellt haben.

Viel Spaß beim Experimentieren mit OpenMV-Code. Wenn Sie Fragen haben oder einige Ihrer interessanten Ergebnisse teilen möchten, zögern Sie nicht, mich auf Youtube oder LinkedIn zu erreichen. Entschuldigen Sie, ich werde Roboter bauen!

Empfohlen: