11.07.2014 Views

Algoritmo ungherese - Esempio

Algoritmo ungherese - Esempio

Algoritmo ungherese - Esempio

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!