Algoritmo ungherese - Esempio
Algoritmo ungherese - Esempio
Algoritmo ungherese - Esempio
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
DIPARTIMENTO<br />
DI INGEGNERIA<br />
DELL’INFORMAZIONE<br />
L6 Visual Tracking<br />
Corso di Visione Artificiale<br />
Ing. Matteo Panciroli<br />
ANNO ACCADEMICO 2011-2012<br />
giovedì 10 novembre 11
Assegnamento<br />
·Progettare e sviluppare un’applicazione che<br />
permetta l’inseguimento di oggetti “rigidi” e<br />
“colorati” (opzionale) la memorizzazione<br />
del percorso per statistiche offline<br />
·Nome applicazione: Matricola_Cognome<br />
·Il problema è diviso in 3 LIVELLI<br />
·Tool utilizzabili per analisi off-line:<br />
gnuplot(open source), matlab<br />
01/12/2010<br />
giovedì 10 novembre 11<br />
Matteo Panciroli<br />
2
Visual Tracking<br />
01/12/2010<br />
giovedì 10 novembre 11<br />
Matteo Panciroli<br />
3
Assegnamento Input<br />
·Video di oggetti colorati (Rosse, Verdi, Blu e<br />
Giallo) su sfondo BIANCO<br />
·i filmati possono essere convertiti in<br />
sequenze di immagini e viceversa<br />
ffmpeg -i foo.avi -r 1 -s WxH -f image2 foo-%06d.ppm<br />
ffmpeg -f image2 -i foo-%06d.jpeg -r 12 -s WxH foo.avi<br />
·I filmati si trovano nella cartella in cui si<br />
dovrà caricare l’assegnamento<br />
01/12/2010<br />
giovedì 10 novembre 11<br />
Matteo Panciroli<br />
4
Assegnamento -Level 1<br />
·TASK:<br />
·inseguire un<br />
solo oggetto nella scena.<br />
·associazione possibile<br />
predizione<br />
·associazione con<br />
anche senza<br />
predizione (filtri predittori)<br />
5<br />
01/12/2010<br />
giovedì 10 novembre 11<br />
Matteo Panciroli
Visual Tracking<br />
·Concetto base<br />
6<br />
DETECT<br />
Then<br />
TRACK<br />
T0<br />
T1<br />
T2<br />
VIDEO<br />
Frame 0 Frame 1 Frame 2<br />
01/12/2010<br />
giovedì 10 novembre 11<br />
Matteo Panciroli
Visual Tracking - design<br />
T0<br />
T1<br />
T2<br />
DETECT<br />
VIDEO<br />
01/12/2010<br />
giovedì 10 novembre 11<br />
Matteo Panciroli<br />
7
Visual Tracking - design<br />
T0<br />
T1<br />
T2<br />
DETECT<br />
VIDEO<br />
??<br />
??<br />
??<br />
??<br />
01/12/2010<br />
giovedì 10 novembre 11<br />
Matteo Panciroli<br />
8
Visual Tracking - design<br />
T0<br />
T1<br />
T2<br />
VIDEO<br />
DETECT<br />
??<br />
??<br />
??<br />
??<br />
TRACK<br />
Hystory?<br />
01/12/2010<br />
giovedì 10 novembre 11<br />
Matteo Panciroli<br />
9
Visual Tracking<br />
T0<br />
T1<br />
T2<br />
VIDEO<br />
DETECT<br />
??<br />
??<br />
??<br />
??<br />
TRACK<br />
1<br />
2<br />
01/12/2010<br />
giovedì 10 novembre 11<br />
Matteo Panciroli<br />
10
Visual Tracking<br />
T0<br />
T1<br />
T2<br />
VIDEO<br />
DETECT<br />
??<br />
??<br />
??<br />
??<br />
TRACK<br />
1 1 1<br />
2 2<br />
01/12/2010<br />
giovedì 10 novembre 11<br />
Matteo Panciroli<br />
11
Visual Tracking - OD<br />
·Identificazione<br />
·selezione degli oggetti di interesse<br />
·considerare le features dell’oggetto in<br />
esame:<br />
area<br />
centro di massa<br />
· colore<br />
12<br />
01/12/2010<br />
giovedì 10 novembre 11<br />
Matteo Panciroli
Visual Tracking - OD Hints<br />
·Il Background è Bianco! (RGB: 255,255,255)<br />
·estrarre una componente significa<br />
valutarne la dominanza rispetto agli altri<br />
RED GREEN BLUE BIANCO<br />
01/12/2010<br />
giovedì 10 novembre 11<br />
Matteo Panciroli<br />
13
Visual Tracking - OD<br />
·Associazione mediante<br />
1<br />
??<br />
1<br />
a<br />
b<br />
2<br />
2<br />
a<br />
b<br />
1 2<br />
10 20<br />
40 5<br />
1<br />
2<br />
diverse tecniche<br />
14<br />
T0<br />
T1<br />
a<br />
b<br />
a<br />
b<br />
1 2<br />
0 10<br />
35 0<br />
1<br />
2<br />
T0<br />
T1<br />
a<br />
b<br />
01/12/2010<br />
giovedì 10 novembre 11<br />
Matteo Panciroli
<strong>Algoritmo</strong> <strong>ungherese</strong><br />
· L’algoritmo<br />
· Questi<br />
<strong>ungherese</strong>, modifica progressivamente una<br />
matrice C dei costi tramite somme e sottrazioni di costanti<br />
sulle righe e sulle colonne.<br />
aggiornamenti della matrice dei costi vengono fatti<br />
in modo tale da garantire sempre costi non negativi e<br />
cercando contemporaneamente di aumentare gli elementi<br />
nulli (e conseguentemente gli accoppiamenti di costo nullo)<br />
sino a raggiungere la soluzione ottima, consistente appunto<br />
in n accoppiamenti di costo nullo.<br />
01/12/2010<br />
giovedì 10 novembre 11<br />
Matteo Panciroli<br />
15
<strong>Algoritmo</strong> <strong>ungherese</strong><br />
1. Analizzare la matrice C per trovare il valore minimo di<br />
ciascuna riga e sottrarre tale valore ad ogni elemento della<br />
riga: in questo modo si aggiorna la matrice C il cui<br />
generico elemento vale ora:<br />
cij =cij −mincij i=1,...,n. j<br />
2. Analizzare la matrice C per trovare il valore minimo di<br />
ciascuna colonna e sottrarre tale valore ad ogni elemento<br />
della colonna: in questo modo si aggiorna nuovamente la<br />
matrice C il cui generico elemento vale ora<br />
cij =cij −mincij j=1,...,n.<br />
01/12/2010<br />
giovedì 10 novembre 11<br />
Matteo Panciroli<br />
16
<strong>Algoritmo</strong> <strong>ungherese</strong><br />
3. Sia dato il grafo bipartito B = (N1, N2, A), in cui N1 e N2<br />
corrispondono rispettivamente alle righe ed alle colonne<br />
della matrice C e A sia formato dall’insieme di coppie (i,j)<br />
tali che cij = 0. Verificare, con l’algoritmo per la ricerca del<br />
massimo matching, se esiste un matching completo, ossia<br />
se ci sono n accoppiamenti di costo nullo, uno per ogni<br />
riga e per ogni colonna, sulla matrice C. Se è così, STOP.<br />
4. Applicare alla matrice C la procedura U (updating) per<br />
aggiornarla e tornare al passo 3.<br />
01/12/2010<br />
giovedì 10 novembre 11<br />
Matteo Panciroli<br />
17
<strong>Algoritmo</strong> <strong>ungherese</strong> - U<br />
1. Considerare la matrice C reinizializzata, ossia con tutte le righe e le colonne non barrate.<br />
2. Etichettare tutte le righe che non sono state accoppiate dall’algoritmo per la ricerca del<br />
massimo matching.<br />
3. Etichettare le colonne che hanno degli 0 in corrispondenza delle righe etichettate.<br />
4. Etichettare le righe che sono state accoppiate, dall’algoritmo per la ricerca del massimo<br />
matching, con le colonne etichettate.<br />
5. Ripetere i passi 2 e 3 finché non ci sono più righe o colonne da etichettare.<br />
6. Barrare ogni riga non etichettata ed ogni colonna etichettata.<br />
7. Trovare il minimo tra gli elementi non barrati della matrice ed indicarlo con<br />
8. Sottrarre il valore agli elementi non barrati ed aggiungere a quelli barrati sia per<br />
riga che per colonna.<br />
9. La matrice così ottenuta è la nuova matrice C.<br />
10. Si noti che alla fine del passo 5, se tutto è stato eseguito correttamente, ogni zero deve<br />
essere barrato e la somma del numero di righe e di colonne barrate deve essere pari al<br />
numero degli accoppiamenti ottenuti dall’algoritmo per la ricerca del massimo matching.<br />
01/12/2010<br />
giovedì 10 novembre 11<br />
Matteo Panciroli<br />
18
<strong>Algoritmo</strong> <strong>ungherese</strong> - <strong>Esempio</strong><br />
Si risolva il problema di assegnamento caratterizzato dalla<br />
seguente matrice dei costi<br />
1 2 3 4<br />
A<br />
B<br />
C<br />
D<br />
1 8 5 2<br />
4 7 7 5<br />
3 5 4 2<br />
3 1 6 3<br />
Applichiamo i passi dell’algoritmo <strong>ungherese</strong><br />
01/12/2010<br />
giovedì 10 novembre 11<br />
Matteo Panciroli<br />
19
<strong>Algoritmo</strong> <strong>ungherese</strong> - <strong>Esempio</strong><br />
1.<br />
2.<br />
A<br />
B<br />
C<br />
D<br />
1 2 3 4<br />
0 7 4 1<br />
0 3 3 1<br />
1 3 2 0<br />
2 0 5 2<br />
A<br />
B<br />
C<br />
D<br />
1 2 3 4<br />
0 7 2 1<br />
0 3 1 1<br />
1 3 0 0<br />
2 0 3 2<br />
01/12/2010<br />
giovedì 10 novembre 11<br />
Matteo Panciroli<br />
20
<strong>Algoritmo</strong> <strong>ungherese</strong> - <strong>Esempio</strong><br />
3. Ricerca del massimo matching<br />
A<br />
1<br />
B<br />
2<br />
A<br />
1 2 3 4<br />
0 7 2 1<br />
B<br />
0 3 1 1<br />
C<br />
3<br />
C<br />
1 3 0 0<br />
D<br />
2 0 3 2<br />
D<br />
4<br />
01/12/2010<br />
giovedì 10 novembre 11<br />
Matteo Panciroli<br />
21
<strong>Algoritmo</strong> <strong>ungherese</strong> - <strong>Esempio</strong><br />
4. Visto che il matching non è completo, ossia la soluzione<br />
non è ottima, applichiamo la procedura U per aggiornare la<br />
matrice<br />
*<br />
1 2 3 4<br />
*<br />
*<br />
A<br />
B<br />
C<br />
D<br />
0 7 2 1<br />
0 3 1 1<br />
1 3 0 0<br />
2 0 3 2<br />
01/12/2010<br />
giovedì 10 novembre 11<br />
Matteo Panciroli<br />
22
<strong>Algoritmo</strong> <strong>ungherese</strong> - <strong>Esempio</strong><br />
5. La matrice aggiornata è la seguente<br />
1 2 3 4<br />
A<br />
B<br />
C<br />
D<br />
0 6 1 0<br />
0 2 0 0<br />
2 3 0 0<br />
3 0 3 2<br />
01/12/2010<br />
giovedì 10 novembre 11<br />
Matteo Panciroli<br />
23
<strong>Algoritmo</strong> <strong>ungherese</strong> - <strong>Esempio</strong><br />
6. Ricerca del massimo matching<br />
A<br />
1<br />
B<br />
2<br />
A<br />
1 2 3 4<br />
0 6 1 0<br />
C<br />
3<br />
B<br />
C<br />
0 2 0 0<br />
2 3 0 0<br />
D<br />
4<br />
D<br />
3 0 3 2<br />
La soluzione è ottima (matching completo) ed è data dagli<br />
accoppiamenti A-1,B-3, C-4, D-2, mentre il valore della<br />
funzione obiettivo è 11<br />
01/12/2010<br />
giovedì 10 novembre 11<br />
Matteo Panciroli<br />
24
Assegnamento - Vincoli<br />
·Consideriamo una memoria del passato di<br />
pochi frame (N.B.: dipendenza con FPS)<br />
·Con/Senza predizione (usualmente con)<br />
·si eredita l’ID dall’oggetto passato più vicino<br />
T0<br />
T1<br />
T2<br />
VIDEO<br />
T-1 T-2 T-1<br />
01/12/2010<br />
giovedì 10 novembre 11<br />
Matteo Panciroli<br />
25
Assegnamento -Level 2<br />
·multi objects: inseguimento di più oggetti<br />
anche diversi<br />
·gestione delle associazioni<br />
·è necessario considerare come descrittore il<br />
percorso<br />
?<br />
P1<br />
P1, P2<br />
?<br />
P2<br />
01/12/2010<br />
giovedì 10 novembre 11<br />
Matteo Panciroli<br />
26
Assegnamento - Level 3<br />
·ghosts: gestire le occlusioni parziali o totali<br />
mediante una lista di “ghost” ovvero oggetti<br />
temporaneamente scomparsi<br />
P1<br />
P2<br />
SBAGLIATO<br />
P1<br />
P1<br />
GIUSTO<br />
01/12/2010<br />
giovedì 10 novembre 11<br />
Matteo Panciroli<br />
P1 - Ghost<br />
27
Visual Tracking - ghost<br />
T0<br />
T1<br />
T2<br />
DETECT<br />
VIDEO<br />
01/12/2010<br />
giovedì 10 novembre 11<br />
Matteo Panciroli<br />
28
Visual Tracking - ghost<br />
T0<br />
T1<br />
T2<br />
DETECT<br />
VIDEO<br />
??<br />
??<br />
??<br />
??<br />
01/12/2010<br />
giovedì 10 novembre 11<br />
Matteo Panciroli<br />
29
Visual Tracking - ghost<br />
T0<br />
T1<br />
T2<br />
VIDEO<br />
DETECT<br />
??<br />
??<br />
??<br />
??<br />
TRACK<br />
1<br />
2<br />
1<br />
1<br />
2 - ghost 1 - ghost<br />
01/12/2010<br />
giovedì 10 novembre 11<br />
Matteo Panciroli<br />
30
Visual Tracking - ghost<br />
si memorizzano i ghosts (oggetti scomparsi) per un futuro<br />
matching<br />
??<br />
1 - ghost ??<br />
01/12/2010<br />
giovedì 10 novembre 11<br />
Matteo Panciroli<br />
31
Visual Tracking - ghost<br />
si memorizzano i ghost (oggetti scomparsi) per un futuro<br />
matching<br />
A<br />
1<br />
B<br />
A<br />
B<br />
2<br />
1<br />
2<br />
4<br />
3<br />
C<br />
3<br />
4<br />
3<br />
D<br />
4<br />
01/12/2010<br />
giovedì 10 novembre 11<br />
Matteo Panciroli<br />
32
Assegnamento Output<br />
·Immagine input RGB (immagine di output)<br />
·3 immagini binarizzate dei 3 canali R,G e B<br />
·sovrapporre all’output l’OD con informazioni<br />
di id, age<br />
·(OPZIONALE) files di log:<br />
·per ogni pallina generare un file<br />
con lo storico del suo passaggio<br />
attraverso lo schermo<br />
01/12/2010<br />
giovedì 10 novembre 11<br />
Matteo Panciroli<br />
33