web-dev-qa-db-fra.com

détection de forme - TensorFlow

J'essaie de former un modèle pour détecter les formes de base comme Cercle, Carré, Rectangle, etc. à l'aide de Tensorflow. Quel serait le meilleur ensemble de données d'entrée? Pour charger directement les formes ou trouver le bord de l'image à l'aide d'OpenCV et ne charger que l'image Edge. 

Nous pouvons aussi détecter des formes en utilisant OpenCV. Quel serait l'avantage supplémentaire d'utiliser Machine Learning?.

Exemples d'images fournies pour la formation du modèle.

 Circle Detected using OpenCV  Square detection

7
OpenCV User

Je recommanderais de commencer par ce guide pour la classification et non la détection d'objet: https://codelabs.developers.google.com/codelabs/tensorflow-for-poets/#0

La classification correspond à une étiquette unique pour une image (99% carré, 1% cercle). La détection d'objet sert à la classification de plusieurs objets dans l'image (x_min = 3, y_min = 8, x_max = 20, y_max30, 99% du carré). Votre cas ressemble plus à un problème de classement.

Vous n'avez pas besoin de l'installation complète de Docker comme indiqué dans le guide. Si vous avez Python 3.6 sur votre système, vous pouvez simplement effectuer les opérations suivantes:

pip install tensorflow

Et puis sautez à "4. Récupérer les images"

Comme je devais l'essayer moi-même, j'ai téléchargé les 100 premières images de carrés et de cercles de Google avec l'add-on "Image de téléchargement par lots de fatkun" sur le Chrome Web Store.

Lors de mes 10 premiers tests, la précision est comprise entre 92,0% (0,992 ..) et 99,58%. Si vos exemples sont plus uniformes que de nombreuses images différentes de Google, vous obtiendrez probablement de meilleurs résultats.

3
Punnerud

Vous souhaiterez peut-être vérifier la détection d'objectif dans tensorflow. https://github.com/tensorflow/models/tree/master/object_detection

Il existe un modèle pré-formé ici http://download.tensorflow.org/models/object_detection/ssd_mobilenet_v1_coco_11_06_2017.tar.gz

L’utilisation des réseaux de neurones pour la détection présente un avantage potentiel: elle permet de réduire le nombre de cycles de calcul à calculer. Ceci est utile sur les appareils mobiles. Par exemple - la transformation de Hough https://en.wikipedia.org/wiki/Hough_transform est trop chère à calculer/mais si un réseau de neurones convolutionnel était utilisé à la place - davantage de possibilités s'ouvrent pour le traitement d'images en temps réel.

Pour réellement former un nouveau modèle - voir ici https://www.tensorflow.org/tutorials/deep_cnn

1
johndpope