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)
Formazione SVM con descrittori di maiale di dimensioni variabili di immagini di allenamento (MATLAB)
risposta
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:
- Ritaglia il patch 256x256 attorno al centro.
- Ridimensiona l'immagine a 256x256 scartando le proporzioni originali.
- 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.
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.
Qualche idea su come affrontare il problema tranne la riduzione della dimensionalità? –
Grazie old-ufo, è stato molto utile. Ci proverò ora. –