2012-01-02 6 views
17

Sto usando opencv_haartraining per la prima volta, utilizzando OpenCV 2.3.1 su Mac OS X Lion.OpenCV 2.3.1: come dire se haartraining è bloccato o ancora lavorando (sull'esempio TINY)

Sto provando ad allenare un esempio molto rapido. Sto usando solo 23 esempi positivi e 45 esempi negativi. Eppure opencv_haartraining ha utilizzato il 100% di un core del mio Macbook Air 2010 per almeno 30 ore!

Qui ci sono i file rilevanti:

Il file vec è stato prodotto seguendo questo tutorial http://note.sonots.com/SciSoftware/haartraining.html, utilizzando il programma che l'autore mergevec per unire i file vec prodotte individualmente da createsamples.

L'uscita del opencv_haartraining era:

Data dir name: /Users/jon/Tabletop/haartraining_test_1/results 
Vec file name: /Users/jon/Tabletop/haartraining_test_1/vec_positive_samples/vec_positive_samples.vec 
BG file name: /var/folders/85/96xv8qxx5ssc7ndg50s5lp480000gn/T/tmpZ2bASi.txt, is a vecfile: no 
Num pos: 115 
Num neg: 45 
Num stages: 20 
Num splits: 2 (tree as weak classifier) 
Mem: 200 MB 
Symmetric: TRUE 
Min hit rate: 0.995000 
Max false alarm rate: 0.500000 
Weight trimming: 0.950000 
Equal weights: FALSE 
Mode: BASIC 
Width: 20 
Height: 20 
Applied boosting algorithm: GAB 
Error (valid only for Discrete and Real AdaBoost): misclass 
Max number of splits in tree cascade: 0 
Min number of positive samples per cluster: 500 
Required leaf false alarm rate: 9.53674e-07 

Tree Classifier 
Stage 
+---+ 
| 0| 
+---+ 


Number of features used : 41910 

Parent node: NULL 

*** 1 cluster *** 
POS: 115 115 1.000000 
NEG: 45 1 
BACKGROUND PROCESSING TIME: 0.00 
Precalculation time: 0.00 
+----+----+-+---------+---------+---------+---------+ 
| N |%SMP|F| ST.THR | HR | FA | EXP. ERR| 
+----+----+-+---------+---------+---------+---------+ 
| 1|100%|-| 0.910420| 1.000000| 0.044444| 0.012500| 
+----+----+-+---------+---------+---------+---------+ 
Stage training time: 2.00 
Number of used features: 2 

Parent node: NULL 
Chosen number of splits: 0 

Total number of splits: 0 

Tree Classifier 
Stage 
+---+ 
| 0| 
+---+ 

    0 


Parent node: 0 

*** 1 cluster *** 
POS: 115 115 1.000000 
NEG: 45 0.283019 
BACKGROUND PROCESSING TIME: 0.00 
Precalculation time: 0.00 
+----+----+-+---------+---------+---------+---------+ 
| N |%SMP|F| ST.THR | HR | FA | EXP. ERR| 
+----+----+-+---------+---------+---------+---------+ 
| 1|100%|-|-0.965048| 1.000000| 1.000000| 0.018750| 
+----+----+-+---------+---------+---------+---------+ 
| 2|100%|+|-0.903213| 1.000000| 0.288889| 0.025000| 
+----+----+-+---------+---------+---------+---------+ 
Stage training time: 3.00 
Number of used features: 4 

Parent node: 0 
Chosen number of splits: 0 

Total number of splits: 0 

Tree Classifier 
Stage 
+---+---+ 
| 0| 1| 
+---+---+ 

    0---1 


Parent node: 1 

*** 1 cluster *** 
POS: 115 115 1.000000 
NEG: 45 0.338346 
BACKGROUND PROCESSING TIME: 0.00 
Precalculation time: 0.00 
+----+----+-+---------+---------+---------+---------+ 
| N |%SMP|F| ST.THR | HR | FA | EXP. ERR| 
+----+----+-+---------+---------+---------+---------+ 
| 1|100%|-|-0.961620| 1.000000| 1.000000| 0.043750| 
+----+----+-+---------+---------+---------+---------+ 
| 2|100%|+|-0.660077| 1.000000| 0.622222| 0.043750| 
+----+----+-+---------+---------+---------+---------+ 
| 3| 88%|-| 0.142538| 1.000000| 0.044444| 0.012500| 
+----+----+-+---------+---------+---------+---------+ 
Stage training time: 4.00 
Number of used features: 6 

Parent node: 1 
Chosen number of splits: 0 

Total number of splits: 0 

Tree Classifier 
Stage 
+---+---+---+ 
| 0| 1| 2| 
+---+---+---+ 

    0---1---2 


Parent node: 2 

*** 1 cluster *** 
POS: 115 115 1.000000 
NEG: 45 0.145631 
BACKGROUND PROCESSING TIME: 0.00 
Precalculation time: 0.00 
+----+----+-+---------+---------+---------+---------+ 
| N |%SMP|F| ST.THR | HR | FA | EXP. ERR| 
+----+----+-+---------+---------+---------+---------+ 
| 1|100%|-|-0.975839| 1.000000| 0.777778| 0.025000| 
+----+----+-+---------+---------+---------+---------+ 
| 2|100%|+|-0.904803| 1.000000| 0.244444| 0.037500| 
+----+----+-+---------+---------+---------+---------+ 
Stage training time: 3.00 
Number of used features: 4 

Parent node: 2 
Chosen number of splits: 0 

Total number of splits: 0 

Tree Classifier 
Stage 
+---+---+---+---+ 
| 0| 1| 2| 3| 
+---+---+---+---+ 

    0---1---2---3 


Parent node: 3 

*** 1 cluster *** 
POS: 115 115 1.000000 
NEG: 45 0.0293926 
BACKGROUND PROCESSING TIME: 0.00 
Precalculation time: 0.00 
+----+----+-+---------+---------+---------+---------+ 
| N |%SMP|F| ST.THR | HR | FA | EXP. ERR| 
+----+----+-+---------+---------+---------+---------+ 
| 1|100%|-|-0.981092| 1.000000| 1.000000| 0.031250| 
+----+----+-+---------+---------+---------+---------+ 
| 2| 91%|+|-0.820519| 1.000000| 0.333333| 0.031250| 
+----+----+-+---------+---------+---------+---------+ 
Stage training time: 3.00 
Number of used features: 4 

Parent node: 3 
Chosen number of splits: 0 

Total number of splits: 0 

Tree Classifier 
Stage 
+---+---+---+---+---+ 
| 0| 1| 2| 3| 4| 
+---+---+---+---+---+ 

    0---1---2---3---4 


Parent node: 4 

*** 1 cluster *** 
POS: 115 115 1.000000 
NEG: 45 0.0244965 
BACKGROUND PROCESSING TIME: 0.00 
Precalculation time: 0.00 
+----+----+-+---------+---------+---------+---------+ 
| N |%SMP|F| ST.THR | HR | FA | EXP. ERR| 
+----+----+-+---------+---------+---------+---------+ 
| 1|100%|-|-0.964250| 1.000000| 1.000000| 0.025000| 
+----+----+-+---------+---------+---------+---------+ 
| 2|100%|+|-1.801320| 1.000000| 1.000000| 0.025000| 
+----+----+-+---------+---------+---------+---------+ 
| 3| 88%|-|-0.938272| 1.000000| 0.177778| 0.006250| 
+----+----+-+---------+---------+---------+---------+ 
Stage training time: 4.00 
Number of used features: 6 

Parent node: 4 
Chosen number of splits: 0 

Total number of splits: 0 

Tree Classifier 
Stage 
+---+---+---+---+---+---+ 
| 0| 1| 2| 3| 4| 5| 
+---+---+---+---+---+---+ 

    0---1---2---3---4---5 


Parent node: 5 

*** 1 cluster *** 
POS: 115 115 1.000000 
NEG: 45 0.0100245 
BACKGROUND PROCESSING TIME: 0.00 
Precalculation time: 0.00 
+----+----+-+---------+---------+---------+---------+ 
| N |%SMP|F| ST.THR | HR | FA | EXP. ERR| 
+----+----+-+---------+---------+---------+---------+ 
| 1|100%|-|-0.975839| 1.000000| 1.000000| 0.037500| 
+----+----+-+---------+---------+---------+---------+ 
| 2|100%|+|-0.109149| 1.000000| 0.133333| 0.037500| 
+----+----+-+---------+---------+---------+---------+ 
Stage training time: 3.00 
Number of used features: 4 

Parent node: 5 
Chosen number of splits: 0 

Total number of splits: 0 

Tree Classifier 
Stage 
+---+---+---+---+---+---+---+ 
| 0| 1| 2| 3| 4| 5| 6| 
+---+---+---+---+---+---+---+ 

    0---1---2---3---4---5---6 


Parent node: 6 

*** 1 cluster *** 
POS: 115 115 1.000000 
NEG: 45 0.00587774 
BACKGROUND PROCESSING TIME: 0.00 
Precalculation time: 0.00 
+----+----+-+---------+---------+---------+---------+ 
| N |%SMP|F| ST.THR | HR | FA | EXP. ERR| 
+----+----+-+---------+---------+---------+---------+ 
| 1|100%|-|-0.870814| 1.000000| 0.800000| 0.050000| 
+----+----+-+---------+---------+---------+---------+ 
| 2|100%|+|-0.437010| 1.000000| 0.200000| 0.050000| 
+----+----+-+---------+---------+---------+---------+ 
Stage training time: 3.00 
Number of used features: 4 

Parent node: 6 
Chosen number of splits: 0 

Total number of splits: 0 

Tree Classifier 
Stage 
+---+---+---+---+---+---+---+---+ 
| 0| 1| 2| 3| 4| 5| 6| 7| 
+---+---+---+---+---+---+---+---+ 

    0---1---2---3---4---5---6---7 


Parent node: 7 

*** 1 cluster *** 
POS: 115 115 1.000000 
NEG: 45 0.00269655 
BACKGROUND PROCESSING TIME: 0.00 
Precalculation time: 0.00 
+----+----+-+---------+---------+---------+---------+ 
| N |%SMP|F| ST.THR | HR | FA | EXP. ERR| 
+----+----+-+---------+---------+---------+---------+ 
| 1|100%|-|-0.825750| 1.000000| 1.000000| 0.087500| 
+----+----+-+---------+---------+---------+---------+ 
| 2| 89%|+|-1.098274| 1.000000| 0.911111| 0.093750| 
+----+----+-+---------+---------+---------+---------+ 
| 3| 99%|-|-0.387003| 1.000000| 0.222222| 0.050000| 
+----+----+-+---------+---------+---------+---------+ 
Stage training time: 5.00 
Number of used features: 6 

Parent node: 7 
Chosen number of splits: 0 

Total number of splits: 0 

Tree Classifier 
Stage 
+---+---+---+---+---+---+---+---+---+ 
| 0| 1| 2| 3| 4| 5| 6| 7| 8| 
+---+---+---+---+---+---+---+---+---+ 

    0---1---2---3---4---5---6---7---8 


Parent node: 8 

*** 1 cluster *** 
POS: 115 115 1.000000 
NEG: 45 0.000656714 
BACKGROUND PROCESSING TIME: 0.00 
Precalculation time: 0.00 
+----+----+-+---------+---------+---------+---------+ 
| N |%SMP|F| ST.THR | HR | FA | EXP. ERR| 
+----+----+-+---------+---------+---------+---------+ 
| 1|100%|-|-0.780975| 1.000000| 1.000000| 0.125000| 
+----+----+-+---------+---------+---------+---------+ 
| 2|100%|+|-1.143491| 1.000000| 0.866667| 0.125000| 
+----+----+-+---------+---------+---------+---------+ 
| 3|100%|-|-1.267461| 1.000000| 0.355556| 0.037500| 
+----+----+-+---------+---------+---------+---------+ 
Stage training time: 5.00 
Number of used features: 6 

Parent node: 8 
Chosen number of splits: 0 

Total number of splits: 0 

Tree Classifier 
Stage 
+---+---+---+---+---+---+---+---+---+---+ 
| 0| 1| 2| 3| 4| 5| 6| 7| 8| 9| 
+---+---+---+---+---+---+---+---+---+---+ 

    0---1---2---3---4---5---6---7---8---9 


Parent node: 9 

*** 1 cluster *** 
POS: 115 115 1.000000 
NEG: 45 0.000245695 
BACKGROUND PROCESSING TIME: 1.00 
Precalculation time: 0.00 
+----+----+-+---------+---------+---------+---------+ 
| N |%SMP|F| ST.THR | HR | FA | EXP. ERR| 
+----+----+-+---------+---------+---------+---------+ 
| 1|100%|-|-0.982759| 1.000000| 1.000000| 0.006250| 
+----+----+-+---------+---------+---------+---------+ 
| 2|100%|+| 0.017238| 1.000000| 0.000000| 0.000000| 
+----+----+-+---------+---------+---------+---------+ 
Stage training time: 2.00 
Number of used features: 4 

Parent node: 9 
Chosen number of splits: 0 

Total number of splits: 0 

Tree Classifier 
Stage 
+---+---+---+---+---+---+---+---+---+---+---+ 
| 0| 1| 2| 3| 4| 5| 6| 7| 8| 9| 10| 
+---+---+---+---+---+---+---+---+---+---+---+ 

    0---1---2---3---4---5---6---7---8---9--10 


Parent node: 10 

*** 1 cluster *** 
POS: 115 115 1.000000 

Tutto di questa uscita è stato prodotto nei primi 5 minuti della corsa. Dopo aver prodotto questa uscita, ha continuato a funzionare con il 100% di un core per 30 ore (finora) senza ulteriore output.

La mia domanda è: come faccio a sapere se haartraining si è schiantato in questo caso particolare, e più in generale, qualcuno sa come modificare cvhaartraining.cpp in modo da emettere periodicamente lo stato? Grazie mille!

(Domande correlate, sia senza risposte:

)

+0

Sembra che mi sia appeso. Ho usato opencv_haartraining su ~ 1000 positivo, ~ 1000 negativo e ci vuole solo un giorno. Ma non ucciderlo ancora, farò dei test sulla mia macchina Linux e ti risponderò su questo. –

+0

Già ucciso, mi dispiace (ero preoccupato per la temperatura che stavo sottoponendo anche alla batteria del mio Macbook e mi ero logorato il ventilatore). Ma lo eseguirò sullo stesso o su dati simili in modo che possiamo avere un processo a cui collegarci. – AlcubierreDrive

+0

Hai avuto più fortuna con la tua seconda manche? –

risposta

4

C'è anche filo simile sul Gruppo tecnologico OpenCV Yahoo con un codice di michael_p_horton per fornire un feedback aggiuntivo per determinare se il codice è entrato in un ciclo infinito: tech.groups.yahoo.com/group/OpenCV/message/45080

Per riassumere il thread menzionato, ci sono due punti in cui l'haartraining può scatenarsi.

Il primo è facile da rilevare controllando l'uscita: è necessario aumentare la frequenza cardiaca (velocità di risposta) e FA (falso allarme) per diminuire. Se ciò non accade, l'allenamento è entrato in un ciclo infinito.

Tuttavia, il problema riscontrato, secondo la risposta di maxenglander, è un ciclo infinito nello icvGetHaarTrainingDataFromBG. Per verificare questo è necessario scavare nel codice cvhaartraining.cpp e aggiungere qualche output di debug.

citare la risposta da gruppi di Yahoo, è necessario modificare il icvGetHaarTrainingDataFromBG implementazione in un modo seguente (cercare la cascata-eval() di linea e quindi aggiungere il codice CV_VERBOSE):

icvGetAuxImages(&img, &sum, &tilted, &sqsum, normfactor); 
if(cascade->eval(cascade, sumdata, tilteddata, *normfactor) != 0.0F) 
    break; 

/* Display progress on negative image selection */ 
#ifdef CV_VERBOSE 
if(thread_consumed_count % 1000 == 0) 
{ 
    fprintf(stderr, "%3d%%, %d negatives of %d required, %d images 
    tested\r", (int) (100.0 * (i - first)/count), (i-first), count, 
    thread_consumed_count); 
    fflush(stderr); 
} 
#endif /* CV_VERBOSE */ 

Se questo inizia a visualizzare messaggi come "0%, 0 negativi di 972 richiesti, 10000000 immagini testate" hai inserito un ciclo infinito.

Un'ultima nota: con OpenCV 2.4 il codice pertinente è nella funzione icvGetHaarTrainingData.

4

da guardare haartraining/cvhaartraining.cpp, sembra che il processo era in questa riga prima di annullato:

negcount = icvGetHaarTrainingDataFromBG(training_data, poscount, nneg, 
    (CvIntHaarClassifier*) tcc, &false_alarm, bg_vecfile ? bgfilename : NULL); 

È possibile eseguire il drill down nelle funzioni chiamate da icvGetHaarTrainingDataFromBG, aggiungere printf e ricompilare. Ho anche eseguito il blocco delle mie sessioni di allenamento (sto utilizzando opencv_traincascade) e vorrei vedere solo dove le cose si bloccano. Potrei provare a spruzzare le frasi printf in traincascade/traincascade.cpp per capire perché le mie esecuzioni sono sospese.

Max

+0

Sei arrivato da qualche parte con questo? Anche le mie esecuzioni sono sospese. – Robert

1

problema è con il vostro positive.txt e il file positive.vec. (Non negativo)

rendere sicuro che positive.txt/positivo.dat file contiene 115 campioni positivi

cioè Num pos: 115

Nota:!

npos = numero di immagini positive

npos = numero di campioni in tutte le immagini positive

Se si dispone di più oggetti in un'immagine singola, il relativo file descrittivo positive.txt deve contenere più voci.

Sarà utile se pubblichi qui l'output positive.txt e createsamples.exe.

2

Guardando la descrizione di haartraining, a trovare il valore predefinito di

-minpos <min_number_of_positive_samples_per_cluster = 500> 

Dal momento che hai solo 115 campioni positivi, questo potrebbe essere il vostro problema ... Forse non è stato specificato questo parametro, e questo sta facendo sì che l'allenamento non finisca mai. Prova a impostarlo su 75

haartraining <your params> -minpos 75 

Solo una mia idea, non verificata. Per favore fatemi sapere i vostri risultati

1

Per ora dalla mia esperienza ho concluso:

Se congelare nell'intestazione tabella o in una tabella come questa

*** 1 cluster *** 
POS: 11342 11342 1.000000 
NEG: 1102 1 
BACKGROUND PROCESSING TIME: 0.03 
Precalculation time: 1.92 
+----+----+-+---------+---------+---------+---------+ 
| N |%SMP|F| ST.THR | HR | FA | EXP. ERR| 
+----+----+-+---------+---------+---------+---------+ 

è ancora in esecuzione ma se congelare in "grappolo" testo come questo

*** 1 cluster *** 
POS: 11342 11342 1.000000 

può appendere

La fonte si blocca potrebbe essere il vostro immagini positive è di diverso o le immagini negative ha caratteristiche simili quindi è difficile classificarli

pre-elaborare le immagini positive prima prima dell'allenamento

Problemi correlati