6

Mi piacerebbe creare un rilevatore di oggetti basato su un classificatore a cascata, l'unico problema è che le funzioni di LBP e Haar non sono invarianti di rotazione. La prima cosa che mi viene in mente è di ruotare il campione di allenamento da diverse angolazioni, ma dubito che il classificatore risultante avrebbe una buona qualità, inoltre, l'oggetto potrebbe avere proporzioni allungate. Esistono molti rilevatori di invarianti di rotazione, ad esempio, iPhone riconosce i volti in tempo reale in qualsiasi orientamento, quindi mi chiedo come ottengono questo risultato? Preferirei usare OpenCV per questo.Qual è la migliore soluzione per il rivelatore invariante di rotazione?

+2

Si consiglia ai rilevatori di invarianti di funzionalità google. Ci sono molti algoritmi ma dovrai trovare quello appropriato per la tua applicazione. Forse un buon punto di partenza è questo documento: epubs.surrey.ac.uk/726872/1/Tuytelaars-FGV-2008.pdf – Adi

+1

Non esiste la soluzione migliore per la visione artificiale. Il fatto che iPhone riconosca alcune funzionalità X è irrilevante, si tratta di un singolo dispositivo con caratteristiche note, che potrebbe anche avere ulteriori informazioni per ripristinare facilmente la rotazione. Inoltre, stai citando specificamente sul rilevamento del volto che è un argomento singolo ben studiato con comprovate buone soluzioni. Dal momento che non stai provando a fare il rilevamento del volto (secondo il tuo commento in qualche risposta), è semplicemente meglio non puntarlo nemmeno perché è un argomento completamente diverso. – mmgp

+1

Non penso che sia irrilevante perché alcune idee utilizzate nel rilevamento dei volti potrebbero essere utilizzabili per rilevare altri oggetti, almeno dovrei provarlo. A proposito, non vedo come la rotazione possa essere "ripristinata". Possiamo determinare l'orientamento di iPhone stesso utilizzando i dati dell'accelerometro, ma la rotazione del volto può essere diversa e funziona ancora. – lizarisk

risposta

1

Che dire qualche semplice soluzione ....

Object Detection using SURF

+0

Funziona troppo lentamente e instabile per i miei scopi (sto provando a rilevare un piccolo logo su una grande immagine). – lizarisk

+0

Se pensi che SURF sia lento, puoi usare invece ORB. Ma non aspettarti miracoli, devi fare il tuo lavoro per renderlo stabile. –

+0

ORB si comportava molto peggio di SURF e SIFT nei miei esperimenti. Come posso renderlo più stabile? – lizarisk

2

descrittori di Fourier sono invarianti di rotazione (e la traduzione, nonché il ridimensionamento invarianti); l'idea sarebbe quindi quella di addestrare qualsiasi classificatore con cui si confida sul risultato di Fourier Descrittore (PCA sul descrittore di Fourier, associato a un SVM sembra essere una scelta logica).

Vedi Fourier Descriptors (Wolfram)

+0

Il problema principale con i contorni è la mancanza di robustezza - sulle immagini con un po 'di rumore e sfondo potrebbe essere impossibile rilevarle correttamente (alcuni disturbi di sottofondo possono interferire con il contorno dell'oggetto, i contorni diversi possono fondersi in uno o più contorni in diverse parti, ecc.). Ma grazie per il grande descrittore! – lizarisk

5

Partenza quadro rilevamento di oggetti disponibili al https://github.com/nenadmarkus/pico.

Il framework consente di apprendere un rilevatore di oggetto personalizzato (ad esempio, per trovare frontali, facce verticali) e quindi utilizzarlo in fase di runtime per il rilevamento dell'invariant di rotazione.

Ciò si ottiene eseguendo la scansione dell'immagine con una versione ruotata del rilevatore di oggetti con un numero di orientamenti diversi. Si noti che questo può essere fatto senza riqualificazione a cascata o ricampionamento di immagini, e dovrebbe funzionare in tempo reale su macchine moderne (la demo di rilevamento del volto fornita lo fa).

I dettagli sono riportati nel documento disponibile allo http://arxiv.org/abs/1305.4537.

Problemi correlati