Existem algoritmos de classificação de imagens que não são redes neurais?

8

A classificação da imagem é a tarefa de atribuir um dos rótulos conhecidos anteriormente a uma determinada imagem. Por exemplo, você sabe que receberá duas fotos e cada imagem contém exatamente uma de . O algoritmo deve dizer o que a foto mostra.n{cat,dog,car,stone}

O conjunto de dados de referência para classificação de imagem é ImageNet ; especialmente o desafio de reconhecimento visual em larga escala (LSVRC) . Ele tem exatamente 1000 aulas e uma enorme quantidade de dados de treinamento (acho que há uma versão reduzida com cerca de 250px x 250px imagens, mas muitas imagens parecem ser do Flicker).

Esse desafio geralmente é resolvido com CNNs (ou outras redes neurais).

Existe algum artigo que tente uma abordagem que não use redes neurais no LSVRC?

Para esclarecer a pergunta: Claro, existem outros algoritmos de classificação como vizinhos mais próximos ou SVMs. No entanto, duvido que funcionem para tantas classes / tantos dados. Pelo menos para -NNs, tenho certeza de que a previsão seria extremamente lenta; para SVMs, acho que tanto o ajuste quanto a previsão seriam muito lentos (?).kk

Martin Thoma
fonte
Você não deve "adivinhar" a velocidade de treinamento e previsão de um algoritmo. você deve fazer um benchmark sozinho para ver a rapidez com que o treinamento é realizado em seu próprio conjunto de dados. Depois de modelar a construção (com problemas como sobreajuste resolvidos), a previsão é outra etapa.
Manu H
@ManuH Eu sei que para a implementação eu usei era muito lento para o kNN. Mas posso apenas supor que este é um problema intrínseco do algoritmo, que não pode ser resolvido nesse domínio do problema (por exemplo, por redução de dimensionalidade pesada). É por isso que peço documentos: quero saber o que os outros tentaram.
Martin Thoma

Respostas:

4

Parte do problema de responder a essa pergunta é que, na verdade, existem duas perguntas. O primeiro:

Existem algoritmos de classificação de imagens que não são redes neurais?

Sim, muitos. Mas agora a pergunta realmente:

Existe algum artigo que tente uma abordagem que não use redes neurais no LSVRC?

Na sua pergunta, você descarta métodos como kNN e SVM devido à velocidade. Bag of Words é um método usado para resolver esse problema. O MATLAB tem uma boa demonstração ( http://www.mathworks.com/help/vision/examples/image-category-classification-using-bag-of-features.html ). Mas o BoW incorpora o agrupamento k-means, para que não atenda às suas necessidades.

Existem outros métodos interessantes de classificação de imagens, como análise de textura. A AT está sendo pesquisada como uma maneira de classificar a malevolência da doença em imagens médicas (como tumores). Aqui está um documento comumente referenciado: http://www.ncbi.nlm.nih.gov/pmc/articles/PMC2701316/

Aqui está uma visão geral da classificação de imagens: http://www.tandfonline.com/doi/full/10.1080/01431160600746456

Hobbes
fonte
1

Você pode usar qualquer algoritmo capaz de lidar com a dimensionalidade de seus dados, incluindo SVM e K vizinhos mais próximos. O desempenho dos melhores algoritmos implementados é praticamente o mesmo, aceito pela CNN. A razão pela qual a CNN é usada é porque atualmente é líder em precisão e existe há vários anos.

John Yetter
fonte
Você está basicamente repetindo o que escrevi na minha pergunta; esta não é uma resposta à minha pergunta
Martin Thoma
Aqui está um desses documentos usando uma variante do SVM. robotics.stanford.edu/~koller/Papers/Gao+Koller:ICCV11.pdf
John Yetter
0

Existem muitos algoritmos que podem ser usados ​​para realizar classificações (muitas a ponto de dificultar a menção de todas). Sugiro que você dê uma olhada neste http://dlib.net/ml_guide.svg

A decisão de qual algoritmo usar é uma função do problema com o qual você está trabalhando, principalmente: 1. O número de classes 2. O número de amostras 3. As variações nas classes e as semelhanças entre as classes 4. Desequilíbrio de dados 5. A dimensão do seu recurso E muitos outros parâmetros

Em geral, a CNN é muito popular por dois motivos: eles podem levar a um alto desempenho em problemas muito desafiadores e são soluções gerais no contexto em que você precisa entender as arquiteturas e estratégias de truques para executar apenas o treinamento. Depois disso, você não precisa mudar qualquer coisa, sem parâmetros para brincar.

Bashar Haddad
fonte
Por favor, leia a pergunta em negrito no texto que escrevi.
Martin Thoma