Dans ma classe, je dois créer une application à l'aide de deux classificateurs pour décider si un objet dans une image est un exemple de phylum porifera (seaponge) ou un autre objet.
Cependant, je suis complètement perdu en ce qui concerne les techniques d'extraction de fonctionnalités en python. Mon conseiller m'a convaincu d'utiliser des images non couvertes en classe.
Quelqu'un peut-il m'orienter vers une documentation ou une lecture significative ou suggérer des méthodes à considérer?
python
feature-extraction
image-recognition
Jeremy Barnes
la source
la source
Réponses:
En images, certaines techniques fréquemment utilisées pour l'extraction de fonctionnalités sont la binarisation et le flou
Binarisation: convertit le tableau d'images en 1 et 0. Cela se fait lors de la conversion de l'image en image 2D. Même la mise à l'échelle des gris peut également être utilisée. Il vous donne une matrice numérique de l'image. Les niveaux de gris prennent beaucoup moins d'espace lorsqu'ils sont stockés sur le disque.
Voici comment vous le faites en Python:
Exemple d'image:
Maintenant, convertissez en niveaux de gris:
vous renverra cette image:
Et la matrice peut être vue en exécutant ceci:
Le tableau ressemblerait à ceci:
Maintenant, utilisez un tracé d'histogramme et / ou un tracé de contour pour voir les caractéristiques de l'image:
Cela vous rendrait une intrigue qui ressemble à ceci:
Flou: l' algorithme de flou prend la moyenne pondérée des pixels voisins pour incorporer la couleur environnante dans chaque pixel. Il améliore mieux les contours et aide à mieux comprendre les caractéristiques et leur importance.
Et voici comment vous le faites en Python:
Et l'image floue est:
Voici donc quelques façons de réaliser l'ingénierie des fonctionnalités. Et pour les méthodes avancées, vous devez comprendre les bases de la vision par ordinateur et des réseaux de neurones, ainsi que les différents types de filtres et leur signification et les mathématiques derrière eux.
la source
Ce grand tutoriel couvre les bases des neuraltworks convolutionnels, qui atteignent actuellement des performances de pointe dans la plupart des tâches de vision:
http://deeplearning.net/tutorial/lenet.html
Il existe un certain nombre d'options pour les CNN en python, y compris Theano et les bibliothèques construites dessus (j'ai trouvé que les keras étaient faciles à utiliser).
Si vous préférez éviter l'apprentissage en profondeur, vous pouvez vous pencher sur OpenCV, qui peut apprendre de nombreux autres types de fonctionnalités, des cascades de Haar en ligne et des fonctionnalités SIFT.
http://opencv-python-tutroals.readthedocs.org/en/latest/py_tutorials/py_feature2d/py_table_of_contents_feature2d/py_table_of_contents_feature2d.html
la source
Comme Jeremy Barnes et Jamesmf l'ont dit, vous pouvez utiliser n'importe quel algorithme d'apprentissage automatique pour résoudre le problème. Ils sont puissants et pourraient identifier automatiquement les fonctionnalités. Vous avez juste besoin de fournir à l'algorithme les données d'entraînement correctes. Puisqu'il est nécessaire de travailler sur des images, les réseaux de neurones à convolution seront une meilleure option pour vous.
Ceci est un bon tutoriel pour en savoir plus sur le réseau de neurones à convolution. Vous pouvez également télécharger le code et changer en fonction de la définition de votre problème. Mais vous devez apprendre python et la bibliothèque theano pour le traitement et vous obtiendrez de bons tutoriels pour cela aussi
http://deeplearning.net/tutorial/lenet.html
la source