Existe-t-il des algorithmes de classification d'images qui ne sont pas des réseaux de neurones?


8

La classification des images consiste à attribuer l'un desnétiquettes précédemment connues pour une image donnée. Par exemple, vous savez que vous recevrez quelques photos et chaque image a exactement l'une des{cat,dog,car,stone}en elle. L'algorithme devrait dire ce que la photo montre.

L'ensemble de données de référence pour la classification des images est ImageNet ; surtout ton défi de reconnaissance visuelle à grande échelle (LSVRC) . Il a exactement 1000 classes et une énorme quantité de données d'entraînement (je pense qu'il existe une version sous-échantillonnée avec environ 250 images x 250 pixels, mais de nombreuses images semblent provenir de Flicker).

Ce défi est généralement résolu avec les CNN (ou d'autres réseaux de neurones).

Existe-t-il un article qui tente une approche qui n'utilise pas les réseaux de neurones dans LSVRC?

Pour clarifier la question: bien sûr, il existe d'autres algorithmes de classification comme kvoisins les plus proches ou SVM. Cependant, je doute qu'ils fonctionnent du tout pour autant de classes / autant de données. Au moins pourk-NNs je suis sûr que la prédiction serait extrêmement lente; pour les SVM, je suppose que l'ajustement et la prédiction seraient beaucoup trop lents (?).


Vous ne devriez pas "deviner" la vitesse d'entraînement et de prédiction d'un algorithme. vous devez faire vous-même un benchmark pour voir à quel point la formation est rapide sur votre propre ensemble de données. Une fois que vous avez construit le modèle (avec des problèmes tels que le sur-ajustement résolus), la prédiction est une autre étape.
Manu H

@ManuH Je sais que pour l'implémentation que j'ai utilisée, c'était trop lent pour kNN. Mais je peux seulement deviner qu'il s'agit d'un problème intrinsèque de l'algorithme, qui ne peut pas être résolu dans ce domaine problématique (par exemple par une forte réduction de la dimensionnalité). C'est la raison pour laquelle je demande des papiers: je veux savoir ce que les autres ont essayé.
Martin Thoma

Réponses:


4

Une partie du problème avec la réponse à cette question est qu'il y a en fait deux questions. La première:

Existe-t-il des algorithmes de classification d'images qui ne sont pas des réseaux de neurones?

Oui beaucoup. Mais maintenant, la question en fait:

Existe-t-il un article qui tente une approche qui n'utilise pas les réseaux de neurones dans LSVRC?

Dans votre question, vous excluez des méthodes telles que kNN et SVM en raison de la vitesse. Sac de mots est une méthode utilisée pour résoudre ce problème. MATLAB a une bonne démonstration ( http://www.mathworks.com/help/vision/examples/image-category-classification-using-bag-of-features.html ). Mais BoW intègre le clustering k-means, ce qui peut ne pas correspondre à vos besoins.

Il existe d'autres méthodes de classification d'images intéressantes telles que l'analyse de texture. L'AT est recherchée comme moyen de classer la malveillance de la maladie dans les images médicales (telles que les tumeurs). Voici un article couramment référencé: http://www.ncbi.nlm.nih.gov/pmc/articles/PMC2701316/

Voici un aperçu de la classification des images: http://www.tandfonline.com/doi/full/10.1080/01431160600746456


1

Vous pouvez utiliser n'importe quel algorithme capable de gérer la dimensionnalité de vos données, y compris SVM et K Nearest Neighbors. Les performances des meilleurs algorithmes implémentés sont presque les mêmes, acceptez pour CNN. La raison pour laquelle CNN est utilisé est qu'il est actuellement le leader en matière de précision, et ce depuis plusieurs années.


Vous répétez essentiellement ce que j'ai écrit dans ma question; ce n'est pas une réponse à ma question
Martin Thoma

Voici un de ces articles utilisant une variante de SVM. robotics.stanford.edu/~koller/Papers/Gao+Koller:ICCV11.pdf
John Yetter

0

Il existe de nombreux algorithmes qui peuvent être utilisés pour effectuer des classifications (beaucoup au point qu'il est difficile de les mentionner tous). Je vous suggère de consulter ce http://dlib.net/ml_guide.svg

Le choix de l'algorithme à utiliser est fonction du problème avec lequel vous travaillez, principalement: 1. Le nombre de classes 2. Le nombre d'échantillons 3. Les variations au sein des classes et les similitudes entre les classes 4. Le déséquilibre des données 5. La dimension de votre fonctionnalité Et de nombreux autres paramètres

En général, CNN est très populaire pour deux raisons: ils peuvent conduire à des performances élevées dans des problèmes très difficiles et ce sont des solutions générales dans le contexte dont vous avez besoin pour comprendre leurs architectures, les stratégies et les astuces pour effectuer la formation uniquement, après quoi vous ne le faites pas besoin de changer quoi que ce soit, pas de paramètres pour jouer avec.


Veuillez lire la question en gras dans le texte que j'ai écrit.
Martin Thoma
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.