[PYTHON] Mask RCNN Object Measurement Package (mesurez le diamètre de l'objet avec Mask RCNN)

À propos de ce package ROS, j'ai fait quelque chose comme ça

À l'aide d'un capteur RGBD tel que RealSense, l'apprentissage en profondeur est utilisé pour distinguer et déduire plusieurs objets arbitraires, et calculer les diamètres maximum et minimum qui passent par le centre de gravité de l'image. Le résultat peut être obtenu sous forme de rubrique ROS (mrcnn / result). https://github.com/moriitkys/mrcnn_measurement Si vous le trouvez utile, veuillez utiliser LGTM.

Voici comment mesurer la taille du pois mange-tout. J'ai également appris les boulons et les journaux ci-dessous par moi-même. Veuillez vous reporter ici (https://github.com/matterport/Mask_RCNN) pour la méthode d'apprentissage. (J'écrirai un article de commentaire si demandé) De plus, rosbag of snap pea peut être téléchargé avec mrcnn_measurement. snappeas1_short2.gif

Un état de mesure des boulons. bolt1_short2.gif

Mesure du bois brut (bûche). C'est tellement nombreux qu'il est difficile de l'exécuter en temps réel. maruta_measure_2.png

Enfin, il peut également être exécuté avec du coco. coco1_short2.gif

La vitesse d'exécution est grandement affectée par la vitesse d'estimation de Mask RCNN (environ 0,2 s par estimation dans mon environnement d'exécution), donc l'amélioration du grabbo ou la création du backbone pour mobile (mobilenet etc.) améliorera les performances en temps réel. .. Notez que le temps requis pour la mesure du diamètre augmente à mesure que le nombre d'objets augmente.

Utilisation Comment utiliser

S'il y a un capteur

# 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

Test avec rosbag si aucun capteur

# 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 est un exemple de programme qui lit et affiche le contenu de la rubrique mrcnn / result. S'il n'y a qu'un seul objet, il est facile à comprendre, et il est facile d'écrire dans csv etc. (Ce paquet recommande la mesure d'un objet en premier lieu). --scripts / mrcnn_measurement peut avoir besoin d'être exécutable. (Dans ce répertoire, chmod + x mrcnn_measurement, etc.) --Lorsque vous exécutez le fichier sh, le fichier h5 et rosbag sont téléchargés. Puisqu'il fait plusieurs centaines de Go, il peut être nécessaire d'attendre un certain temps en fonction de l'environnement de communication.

Commentaire grossier Commentaire grossier sur le contenu

1, recevez des sujets RVB et profondeur de RealSense (message_filter). 2, Estimation d'objet de l'image RVB par Mask RCNN (ResNet). 3, exécutez le produit Adamar des arêtes (mask_i_xy_edges) de l'image de masque générée en devinant et le produit adamar du tableau de mesure de diamètre (self.array_lines) créé au moment de l'initialisation de la classe au centre de gravité du masque, calculez le diamètre de l'objet à chaque angle, diamètre_points Ajouter à. 4, trouvez le diamètre maximum max (diamètre_points) et le diamètre minimum min (point_diamètre) qui passent par le centre de gravité de l'objet, et calculez géométriquement le diamètre réel de l'objet à partir du paramètre de caméra fx de RealSense et de la profondeur moyenne de la partie du masque (hors valeurs aberrantes). Calcul. 5, visualisation.

Erreur d'erreur

J'étudie actuellement, mais c'est lié à la qualité de l'apprentissage, il vaudrait donc mieux penser qu'il y aura une erreur d'environ 10%. Si c'est un cercle comme un journal, il peut être plus précis.

Tâche de tâche

Pour réduire les erreurs de mesure. Réduisez le temps requis pour la mesure du diamètre (en particulier l'instruction for pour chaque retour sur investissement du masque est un goulot d'étranglement).

Travail futur

Le commentaire sera amélioré. ** Cet article sera mis à jour **.

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 )

référence

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

Auteur de cet article

moriitkys Takayoshi Morii Faites un robot. Je suis intéressé par l'IA / la robotique / les graphismes 3D. Récemment, j'ai réfléchi à la façon de gagner de l'argent et je prévois de fabriquer du matériel avec cet argent. (Qualification Challenge E) Qualification / Certification: test G, test d'analyse des données de certification d'ingénieur Python, test d'implémentation AI grade A, TOEIC: 810 (2019/01/13)

Recommended Posts

Mask RCNN Object Measurement Package (mesurez le diamètre de l'objet avec Mask RCNN)
Extraire la couleur de l'objet dans l'image avec le clustering Mask R-CNN et K-Means
Flux de création de votre propre package avec setup.py avec python
Ajouter des attributs d'objets de classe avec une instruction for
Gérez le numéro de version du package de requirements.txt avec pip-tools
J'ai essayé d'interpoler le masque R-CNN avec un flux optique