Esistono algoritmi di classificazione delle immagini che non sono reti neurali?


8

La classificazione delle immagini è il compito di assegnare uno deinetichette precedentemente note per una determinata immagine. Ad esempio, sai che ti verranno fornite un paio di foto e ogni singola immagine ne ha esattamente una{cat,dog,car,stone}dentro. L'algoritmo dovrebbe dire cosa mostra la foto.

Il set di dati di riferimento per la classificazione delle immagini è ImageNet ; in particolare la tua sfida al riconoscimento visivo su larga scala (LSVRC) . Ha esattamente 1000 classi e un'enorme quantità di dati di allenamento (penso che esista una versione sotto campionata con immagini di circa 250 x 250 pixel, ma molte immagini sembrano provenire da Flicker).

Questa sfida è in genere risolta con CNN (o altre reti neurali).

Esiste un documento che tenta un approccio che non utilizza reti neurali in LSVRC?

Per chiarire la domanda: ovviamente, ci sono altri algoritmi di classificazione come kvicini o SVM più vicini. Tuttavia, dubito che funzionino affatto per così tante classi / così tanti dati. Almeno perk-NNs sono sicuro che la previsione sarebbe estremamente lenta; per gli SVM suppongo che sia l'adattamento che la previsione sarebbero molto lenti (?).


Non si dovrebbe "indovinare" l'allenamento e la velocità di previsione di un algoritmo. dovresti fare benchmark da solo per vedere quanto è veloce l'allenamento nel tuo set di dati. Una volta che il modello è stato creato (con problemi come l'overfitting risolto), la previsione è un altro passo.
Manu H

@ManuH So che per l'implementazione che ho usato era troppo lento per kNN. Ma posso solo immaginare che si tratti di un problema intrinseco dell'algoritmo, che non può essere risolto in questo ambito problematico (ad es. Con una forte riduzione della dimensionalità). Questo è il motivo per cui chiedo documenti: voglio sapere cosa hanno provato gli altri.
Martin Thoma,

Risposte:


4

Parte del problema con la risposta a questa domanda è che in realtà ci sono due domande. Il primo:

Esistono algoritmi di classificazione delle immagini che non sono reti neurali?

Sì, un sacco. Ma ora la vera domanda:

Esiste un documento che tenta un approccio che non utilizza reti neurali in LSVRC?

Nella tua domanda, escludi metodi come kNN e SVM a causa della velocità. Bag of Words è un metodo utilizzato per risolvere questo problema. MATLAB ha una buona dimostrazione ( http://www.mathworks.com/help/vision/examples/image-category-classification-using-bag-of-features.html ). Ma BoW incorpora il clustering k-mean, quindi potrebbe non essere adatto alle tue esigenze.

Esistono altri metodi di classificazione delle immagini interessanti come l'analisi delle trame. L'AT sta studiando come un modo per classificare la malevolenza della malattia nelle immagini mediche (come i tumori). Ecco un documento di riferimento comune: http://www.ncbi.nlm.nih.gov/pmc/articles/PMC2701316/

Ecco una panoramica della classificazione delle immagini: http://www.tandfonline.com/doi/full/10.1080/01431160600746456


1

Puoi utilizzare qualsiasi algoritmo in grado di gestire la dimensionalità dei tuoi dati, inclusi SVM e K vicini più vicini. Le prestazioni dei migliori algoritmi implementati sono quasi le stesse, accetta la CNN. Il motivo per cui viene utilizzata la CNN è perché è attualmente il leader per quanto riguarda l'accuratezza, ed è stato per diversi anni.


In pratica stai ripetendo quello che ho scritto nella mia domanda; questa non è una risposta alla mia domanda
Martin Thoma il

Ecco uno di questi documenti usando una variante di SVM. robotics.stanford.edu/~koller/Papers/Gao+Koller:ICCV11.pdf
John Yetter

0

Esistono molti algoritmi che possono essere utilizzati per eseguire le classificazioni (molti al punto che è difficile menzionarli tutti) Ti consiglio di dare un'occhiata a questo http://dlib.net/ml_guide.svg

Prendere la decisione con quale algoritmo usare dipende dal problema con cui si sta lavorando, principalmente: 1. Il numero di classi 2. Il numero di campioni 3. Le variazioni all'interno delle classi e le somiglianze tra le classi 4. Squilibrio dei dati 5. La dimensione della tua funzione e molti altri parametri

In generale, la CNN è molto popolare per due motivi: possono portare a prestazioni elevate in problemi molto impegnativi e sono soluzioni generali nel contesto in cui è necessario comprendere le loro architetture le strategie e i trucchi per eseguire solo la formazione, dopo di che non si è necessario modificare qualsiasi cosa, nessun parametro con cui giocare.


Si prega di leggere la domanda in grassetto nel testo che ho scritto.
Martin Thoma,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.