2014-05-13 9 views
5

Sto cercando di utilizzare HoG + SVM per classificare gli oggetti in diverse categorie. Il problema è che la dimensione delle immagini di allenamento è diversa. Quindi, i descrittori HoG risultanti hanno lunghezze variabili. Ho estratto le caratteristiche da tutte le immagini di addestramento in una cella. Ogni elemento i della cella è un vettore di descrittori HoG per l'immagine i nel set di dati. La mia domanda è: come posso renderlo compatibile per la formazione del classificatore SVM (usando la funzione svmtrain)?Formazione SVM con descrittori di maiale di dimensioni variabili di immagini di allenamento (MATLAB)

risposta

7

Come lejlot ha correttamente menzionato, SVM non può essere addestrato con vettori di lunghezza variabile.

È possibile normalizzare la dimensione dell'immagine a una, ovvero 256x256. Ci sono 3 possibilità per fare questo:

  1. Ritaglia il patch 256x256 attorno al centro.
  2. Ridimensiona l'immagine a 256x256 scartando le proporzioni originali.
  3. Ridimensiona l'immagine a 256xM dove M < 256 - preservando le proporzioni originali. Aggiunge strisce grigie a sinistra e a destra (o superiore e inferiore) per riempire l'immagine su 256x256.

Tutte le varianti sono utilizzate da diversi autori e devi controllare quale si adatta meglio al tuo compito.

+0

Grazie old-ufo, è stato molto utile. Ci proverò ora. –

3

SVM non può essere addestrato con vettori di lunghezza variabile. Devi usare una sorta di trasformazione che mapperà i tuoi dati in una rappresentazione a lunghezza costante. Ad esempio, è possibile eseguire tecniche di riduzione della dimensionalità ben note.

+0

Qualche idea su come affrontare il problema tranne la riduzione della dimensionalità? –

Problemi correlati