[PYTHON] Mask RCNN Objektmesspaket (Messen Sie den Objektdurchmesser mit Mask RCNN)

Über dieses ROS-Paket habe ich so etwas gemacht

Mit einem RGBD-Sensor wie RealSense unterscheidet und leitet Deep Learning mehrere beliebige Objekte und berechnet die maximalen und minimalen Durchmesser, die durch den Schwerpunkt des Bildes verlaufen. Das Ergebnis kann als ROS-Thema (mrcnn / result) abgerufen werden. https://github.com/moriitkys/mrcnn_measurement Wenn Sie es hilfreich finden, verwenden Sie bitte LGTM.

So messen Sie die Größe der Erbse. Ich habe auch die unten gezeigten Schrauben und Protokolle selbst gelernt. Die Lernmethode finden Sie hier (https://github.com/matterport/Mask_RCNN). (Ich werde auf Anfrage einen Kommentarartikel schreiben.) Mit mrcnn_measurement kann auch ein Rosensack mit Erbsen heruntergeladen werden. snappeas1_short2.gif

Ein Zustand der Schraubenmessung. bolt1_short2.gif

Messung von Rohholz (log). Dies ist so zahlreich, dass es schwierig ist, es in Echtzeit auszuführen. maruta_measure_2.png

Schließlich kann es auch mit Coco ausgeführt werden. coco1_short2.gif

Die Ausführungsgeschwindigkeit wird stark von der Schätzgeschwindigkeit von Mask RCNN beeinflusst (ca. 0,2 s pro Schätzung in meiner Ausführungsumgebung). Wenn Sie also das Grabbo verbessern oder das Backbone für Mobilgeräte (Mobilet usw.) erstellen, wird die Echtzeitleistung verbessert. .. Beachten Sie, dass die für die Durchmessermessung erforderliche Zeit mit zunehmender Anzahl von Objekten zunimmt.

Verwendung Wie zu verwenden

Wenn es einen Sensor gibt

# 0, Download h5 & rosbag data  <= First time only
sh download_files.sh  # in this package directory
cd ~/catkin_ws
catkin_make
# 1, Turn on RealSnese D435
roslaunch realsense2_camera rs_aligned_depth.launch
# 2, Start mrcnn_measurement
roslaunch mrcnn_measurement mrcnn_measurement.launch

Mit Rosensack testen, wenn kein Sensor vorhanden ist

# 0, Download h5 & rosbag data  <= First time only
sh download_files.sh  # in this package directory
cd ~/catkin_ws
catkin_make
# 1, Start rosbag & mrcnn_measurement
roslaunch mrcnn_measurement mrcnn_measurement_rosbag.launch

--scripts / print_result.py ist ein Beispielprogramm, das den Inhalt des Themas mrcnn / result liest und anzeigt. Wenn es nur ein Objekt gibt, ist es leicht zu verstehen und es ist leicht, in CSV usw. zu schreiben. (In diesem Paket wird empfohlen, zunächst ein Objekt zu messen.) --scripts / mrcnn_measurement muss möglicherweise ausführbar sein. (In diesem Verzeichnis chmod + x mrcnn_measurement usw.)

Grober Kommentar Grober Kommentar zum Inhalt

1, Empfangen Sie RGB- und Tiefen-Themen von RealSense (message_filter). 2, Objektschätzung des RGB-Bildes durch Maske RCNN (ResNet). 3, Führen Sie das Adamar-Produkt der Kanten (mask_i_xy_edges) des durch Erraten erzeugten Maskenbildes und das Adamar-Produkt des zum Zeitpunkt der Klasseninitialisierung am Maskenschwerpunkt erstellten Durchmessermessungsarrays (self.array_lines) aus und berechnen Sie den Objektdurchmesser bei jedem Winkel, Durchmesserpunkte Anhängen. 4, Finden Sie den maximalen Durchmesser max (Durchmesserpunkte) und den minimalen Durchmesser min (Durchmesserpunkte), die durch den Schwerpunkt des Objekts verlaufen, und berechnen Sie den tatsächlichen Durchmesser des Objekts geometrisch aus dem Kameraparameter fx von RealSense und dem Tiefenmittelwert (ohne Ausreißer) des Maskenteils. Berechnung. 5, Visualisierung.

Fehler Fehler

Ich untersuche derzeit, aber es hängt mit der Qualität des Lernens zusammen, daher ist es möglicherweise besser zu glauben, dass ein Fehler von etwa 10% auftritt. Wenn es sich um einen Kreis wie ein Protokoll handelt, ist er möglicherweise genauer.

Aufgabe Aufgabe

Um Messfehler zu reduzieren. Reduzieren Sie die für die Durchmessermessung erforderliche Zeit (insbesondere die for-Anweisung für jeden ROI der Maske ist ein Engpass).

Zukünftige Arbeit

Der Kommentar wird erweitert. ** Dieser Artikel wird aktualisiert **.

Requirements ros kinetic h5py==2.7.0 Keras==2.1.3 scikit-image==0.13.0 scikit-learn==0.19.1 scipy==0.19.1 tensorflow-gpu==1.4.0 GTX1060, cudnn==6.0, CUDA==8.0 realsense2_camera ( http://wiki.ros.org/realsense2_camera )

Referenz

http://wiki.ros.org/ja/ROS/Tutorials/WritingPublisherSubscriber%28python%29 http://wiki.ros.org/realsense2_camera https://github.com/matterport/Mask_RCNN https://qiita.com/_akio/items/5469913fce7fdf0c732a

Autor dieses Artikels

moriitkys Takayoshi Morii Mach einen Roboter. Ich interessiere mich für KI / Robotik / 3D-Grafik. Vor kurzem habe ich darüber nachgedacht, wie ich Geld verdienen kann, und ich plane, mit diesem Geld Hardware zu verdienen. (Challenge E Qualifikation) Qualifikation / Zertifizierung: G-Test, Python-Ingenieur-Zertifizierungsdatenanalyse-Test, AI-Implementierungstest A-Note, TOEIC: 810 (2019/01/13)

Recommended Posts

Mask RCNN Objektmesspaket (Messen Sie den Objektdurchmesser mit Mask RCNN)
Extrahieren Sie die Farbe des Objekts im Bild mit Mask R-CNN und K-Means Clustering
Ablauf beim Erstellen eines eigenen Pakets mit setup.py mit Python
Fügen Sie Attribute von Klassenobjekten mit einer for-Anweisung hinzu
Verwalten Sie die Paketversionsnummer von require.txt mit pip-tools
Ich habe versucht, Mask R-CNN mit Optical Flow zu interpolieren