Annotazioni automatiche per la videosorveglianza: l

Transcript

Annotazioni automatiche per la videosorveglianza: l
Università degli Studi di Modena e
Reggio Emilia
Facoltà di Ingegneria di Modena
Corso di Laurea Specialistica in Ingegneria Informatica
Annotazioni automatiche
per la videosorveglianza:
l'ambiente Visor
Relatore
Ch.ma Prof. Rita Cucchiara
Correlatore
Dott. Ing. Roberto Vezzani
Tesi di Laurea di
Alessandro Pelliciari
Anno Accademico 2006/2007
Indice
Introduzione
1
2
Lavori Correlati
11
1.1
Video Repository e Datasets . . . . . . . . . . . . . . . . . . . . . . .
11
1.2
Progetti realizzati . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
14
1.2.1
VACE
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
15
1.2.2
PETS Metrics . . . . . . . . . . . . . . . . . . . . . . . . . . .
18
1.2.3
ETISEO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
22
1.2.4
ODViS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
26
1.2.5
CAViAR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
29
Il framework ViSOR
33
2.1
Visione Generale
2.2
L'annotazione di video
. . . . . . . . . . . . . . . . . . . . . . . . . .
35
2.3
Ground Truth . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
36
2.3.1
39
2.4
2.5
3
7
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Gli errori umani . . . . . . . . . . . . . . . . . . . . . . . . . .
Livello semantico: ViSOR
33
. . . . . . . . . . . . . . . . . . . . . . . .
41
2.4.1
Obiettivi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
41
2.4.2
Denizione dell'ontologia . . . . . . . . . . . . . . . . . . . . .
43
Livello sintattico: ViPER . . . . . . . . . . . . . . . . . . . . . . . . .
47
2.5.1
Perchè utilizzare ViPER
. . . . . . . . . . . . . . . . . . . . .
47
2.5.2
Strumenti di interazione con il formato . . . . . . . . . . . . .
49
2.5.3
Schema generale del formato . . . . . . . . . . . . . . . . . . .
49
Metriche di valutazione
53
3.1
54
I livelli semantici
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3
4
4
5
INDICE
3.2
Pixel-Based
3.3
3.4
54
Frame-Based
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
57
Object-Based
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
59
Video Content Analysis
67
4.1
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
68
4.1.1
Descrizione del sistema . . . . . . . . . . . . . . . . . . . . . .
68
4.1.2
Principali caratteristiche . . . . . . . . . . . . . . . . . . . . .
70
Il sistema Sakbot
Architettura sviluppata
73
5.1
Gestione degli Eventi . . . . . . . . . . . . . . . . . . . . . . . . . . .
73
5.2
Da Sakbot a Visor
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
74
5.2.1
Punto di vista temporale: Sakbot . . . . . . . . . . . . . . . .
75
5.2.2
Punto di vista ad oggetti: Visor . . . . . . . . . . . . . . . . .
76
5.2.3
Approcci possibili . . . . . . . . . . . . . . . . . . . . . . . . .
77
5.3
Descrizione della struttura creata
5.4
Caratteristiche dell'architettura
5.5
5.6
5.7
6
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
78
. . . . . . . . . . . . . . . . . . . . .
81
Esempi di applicazione . . . . . . . . . . . . . . . . . . . . . . . . . .
82
5.5.1
Baricentro e bounding box . . . . . . . . . . . . . . . . . . . .
82
5.5.2
Un buon compromesso: l'ellisse
. . . . . . . . . . . . . . . . .
84
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
85
5.6.1
Dettagli implementativi di Sakbot . . . . . . . . . . . . . . . .
85
5.6.2
Modulo realizzato . . . . . . . . . . . . . . . . . . . . . . . . .
86
5.6.3
Interfaccia graca . . . . . . . . . . . . . . . . . . . . . . . . .
87
5.6.4
Classi astratte: ereditarietà e polimorsmo . . . . . . . . . . .
89
5.6.5
Utilità del polimorsmo all'interno dell'architettura . . . . . .
91
5.6.6
Libreria TinyXML
. . . . . . . . . . . . . . . . . . . . . . . .
92
5.6.7
Acquisizione e riorganizzazione logistica dei dati . . . . . . . .
94
5.6.8
Esportazione dei dati . . . . . . . . . . . . . . . . . . . . . . .
97
Implementazione
Risultati sperimentali . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
Un esempio di valutazione con ViPER-PE
103
6.1
ViPER-PE: descrizione ed obiettivi
6.2
Object Analysis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
6.2.1
. . . . . . . . . . . . . . . . . . . 104
Detection (level = 1) . . . . . . . . . . . . . . . . . . . . . . . 106
INDICE
6.3
5
6.2.2
Localization (level = 2) . . . . . . . . . . . . . . . . . . . . . . 106
6.2.3
Statistical Comparison (level = 3) . . . . . . . . . . . . . . . . 106
6.2.4
Target Matching
. . . . . . . . . . . . . . . . . . . . . . . . . 106
Framewise Analysis . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
6.3.1
Metriche di valutazione . . . . . . . . . . . . . . . . . . . . . . 107
6.4
Il le Properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
6.5
Il le Evaluation Parameters . . . . . . . . . . . . . . . . . . . . . . 109
6.6
File di output . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
6.7
Test realizzati . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
Conclusioni
119
Elenco delle gure
121
A Calcolo dell'ellisse
123
Bibliograa
127
Introduzione
La videosorveglianza è ormai entrata a far parte del viver comune e di molte applicazioni del settore industriale.
La possibilità di osservare e capire cosa accade
all'interno della scena rivoluziona l'idea di controllo e di prevenzione in numerosi
campi, da quello della sicurezza in luoghi pubblici (aeroporti, uci, banche..)
a
quello del monitoraggio della viabilità su autostrade e incroci ed a molti altri. Dal
lato prettamente tecnico, il tema della videosorveglianza include una serie di attività
che riguardano la visione articiale, che vanno dalla basilare elaborazione dell'immagine (applicazioni di ltri, segmentazione, labelling, edge detection,. . . ) a tecniche
più avanzate (come object detection, segmentazione del moto, pattern recognition,
feature extraction . . . ).
Uno degli obiettivi nali è il tracking di oggetti, fase alla quale segue l'analisi
(identicazione, riconoscimento, rilevamento della postura) ed inne l'utilizzo delle
informazioni estratte in base al contesto e alle modalità previste (come inferenze
sul comportamento, classicazione, controllo). L'attività di tracking in particolare
consiste nell'inseguimento di un oggetto d'interesse all'interno di una sequenza di
frame attraverso l'object detection (l'individuazione degli oggetti).
Perciò, nel dominio della videosorveglianza, l'object detection e il tracking sono
di centrale importanza per ogni moderno sistema di elaborazione video e di analisi
comportamentale; da più di un decennio a questa parte, molti algoritmi sono stati
proposti al ne di risolvere il problema della scene understanding. Il livello di comprensione varia largamente dalla sola individuazione degli oggetti in movimento al
monitoraggio tramite camere multiple, no alla comprensione degli eventi che accadono all'interno della scena. Più in dettaglio, esempi di applicazioni aascinanti
da realizzare potrebbero essere il monitoraggio di metropolitane, il riconoscimento
di ingorghi sulle strade, l'identicazione di oggetti lasciati per terra e di persone in
atteggiamenti sospetti.
7
8
Introduzione
I sistemi di videosorveglianza automatici costituiscono una rete di sensori video
che osservano gli oggetti (e le persone) in movimento in un dato ambiente alla
ricerca di pattern che rappresentano attività normali/anormali, eventi di interesse,
e altri obiettivi specici. Un ruolo vitale immaginato per questi sistemi è il loro uso
come strumento attivo per la prevenzione del crimine, il rinforzamento delle leggi
e il controllo delle true e degli scambi illegali, come quelli per la droga; ciò è in
netto contrasto con la maggior parte dei sistemi esistenti nel mondo reale, utilizzati
principalmente come strumento forense per investigazioni dopo il fatto.
La videosorveglianza automatizzata è attraente perché promette di rimpiazzare
la costosa opzione umana nel monitoraggio delle telecamere, ma questa promessa
può facilmente trasformarsi in un'arma a doppio taglio se il rendimento del sistema
non è al livello desiderato. In generale, questo livello di prestazioni tende ad essere
molto elevato, se corrisposto alla preparazione di un operatore umano che dispone
di tutta la conoscenza naturale di cui il calcolatore è privo.
Inoltre, il problema di ottenere un tracking e un'object detection nel complesso
robusti diventa ancora più dicile da arontare se si considera il requisito che i sistemi di videosorveglianza devono operare per tutti i periodi del giorno e in condizioni
climatiche che si modicano continuamente. Questa situazione di alta aspettativa
nei confronti del sistema e il requisito stringente appena visto permettono un margine di errore minimo sulle prestazioni di questi sistemi. E' quindi naturale chiedersi se
ci sono progressi quanticabili nella forma di un sistema di videosorveglianza robusto e di grado commerciale come risultato delle ricerche passate e presenti in questa
direzione: la
valutazione delle prestazioni di un sistema di videosorveglianza sta
assumendo perciò sempre più importanza.
A parte i test funzionali, ci sono molte altre ragioni per valutare le prestazioni
dei sistemi e degli algoritmi che riguardano la videosorveglianza: interesse scientico, misurazione del miglioramento durante lo sviluppo, benchmarking con la concorrenza, propositi commerciali e inne requisiti legali/regolatori. Tuttavia, molta
letteratura che descrive questi algoritmi non riesce a dare una misura obiettiva della
qualità dei risultati. Per esempio, per gli algoritmi di compressione video il criterio
è di minimizzare la dierenza assoluta tra i risultati decodicati e gli originali con il
PSNR come metrica standard. Purtroppo per gli algoritmi sulla videosorveglianza
non esiste un criterio standard. Qualche metrica di valutazione è già stata proposta in letteratura, ma al più copre solo una parte limitata del completo insieme di
Introduzione
9
metodi e algoritmi.
Sfortunatamente la valutazione delle prestazioni è di per sé molto dicoltosa, e
inoltre spesso richiede la creazione di strumenti specici e la generazione del ground
truth.
Il ground truth è quell'insieme di annotazioni e misurazioni che vengono
considerate come reali che servono per validare o vericare altre misurazioni o annotazioni, spesso derivanti da analisi automatiche.
Quasi sempre esso è generato
manualmente, richiedendo tempi rilevanti, e in più può utilizzare dati e metriche
speciche solo per un certo algoritmo, diventando quindi statisticamente non corretto. Spesso inoltre contiene risultati troppo specici per permetterne un confronto
con altri algoritmi.
Anche possedendo le metriche, la stessa base su cui si compie l'elaborazione
rappresenta un problema da arontare.
All'interno dei video le situazioni sono
molteplici, con dierenti gradi di dicoltà.
La soluzione di avere un set di video
comune è stata puntualizzata ma è carente dal punto di vista pratico.
ViSOR
1
è un repository online di video realizzato dal laboratorio ImageLab del-
l'Università di Modena e Reggio Emilia che mira a colmare queste lacune, cercando
di essere un portale per collezionare video e valutazioni di algoritmi, in cui la
comunità possa confrontare i propri risultati tramite un formato di annotazione
aperto, comune ed espandibile dalla stessa. ViSOR fa parte del progetto europeo
VIDIVIDEO, il cui obiettivo è la ricerca semantica sui video.
Inoltre, lo stesso
laboratorio ha sviluppato un sistema di videosorveglianza, denominato Sakbot, per
l'analisi del traco e della comprensione degli eventi all'interno di una scena tramite
le operazioni dettagliate sopra.
Nell'ambito che concerne ViSOR, in questo progetto verrà sviluppata un'architettura per permettere la generazione di annotazioni automatiche dalle informazioni
che Sakbot elabora nei video processati, attraverso l'acquisizione, la riorganizzazione e l'esportazione di questi dati.
Lo scopo è duplice:
da una parte, fornire
annotazioni automatiche a basso livello (come una semplice segmentazione) per permettere un'astrazione maggiore sulla valutazione (ad esempio sulla classicazione);
dall'altra, creare un architettura in grado di permettere la valutazione obiettiva di
algoritmi presenti e futuri del sistema Sakbot, fornendo le annotazioni nel formato
comune di ViSOR e acconsentendo così la sua importazione nel framework online.
1 http://imagelab.ing.unimore.it/visor/
Capitolo 1
Lavori Correlati
Intorno alla performance evaluation dei sistemi di tracking ed object detection sono
stati realizzati diversi progetti con l'obiettivo di denire ed utilizzare un approccio
comune ed eciente.
1.1
Video Repository e Datasets
La prima condizione fondamentale e imprescindibile per la valutazione di algoritmi
appartenenti all'ambito della videosorveglianza è la base di dati su cui si lavora.
Malgrado sia inevitabile che i ricercatori tendano a stimare le performance dei
propri algoritmi su set di dati generati localmente, il vantaggio di compiere dei test
su sequenze video appropriate e largamente disponibili ore un'importante opportunità per il benchmarking ; per abilitare un benchmarking appropriato con altri
algoritmi, l'idea è di valutare gli stessi con un set di video standard.
Le condizioni naturali che minano la robustezza e l'attendibilità degli algoritmi di
tracking e detection sono varie:
1. le condizioni del tempo - vento, pioggia e neve hanno un eetto drammatico
sull'aspetto della scena sotto osservazione;
2. le variazioni di luminosità che occorrono come conseguenza della rotazione del
sole - la luce del sole diretta contro condizioni di cielo coperto; le luci articiali
11
12
Lavori Correlati
e notturne (come ad esempio le luci ai lati delle strade, oppure i fanali delle
auto);
3. i moti irrilevanti che possono essere generati da un'ampia varietà di sorgenti
dierenti: dipendenti dal vento (piante, bandiere), ombre (di persone e nuvole), superci riesse (pozzanghere sulla strada, nestre) e superci trasparenti
(nestre).
Molte di queste condizioni hanno un impatto diverso l'una dall'altra - ad esempio, la neve che cade può essere individuata dall'algoritmo di analisi del moto; i
livelli medi di luminosità della scena possono crescere signicativamente perché la
neve ha un alto coeciente di riessione; il movimento di oggetti attraverso la
neve può lasciare tracce visibili che con il conseguente disgelo potrebbero generare
pozzanghere sul terreno, anch'esse con un alto coeciente di riessione.
Si possono facilmente identicare le condizioni ideali di un'immagine per il
detection e il tracking, che sono spesso usate dai ricercatori per dimostrare l'ecacia
dei loro algoritmi - una tranquilla e asciutta giornata, ben illuminata ma a cielo
coperto - che evita molte delle problematiche associate alle condizioni descritte sopra.
In più, per provvedere ad una valutazione più adabile, i video selezionati devono invocare il sistema VCA
1
nella maniera giusta. Questi video devono essere
rappresentativi e contenere sia lo scenario tipico che lo scenario nel caso peggiore.
A parte i contenuti del video, anche le caratteristiche dell'immagine, la risoluzione
e il frame rate hanno impatto sulle performance del VCA.
Per queste ragioni, molti test set di dati video sono disponibili pubblicamente
attraverso Internet. Una visione d'insieme di questi set è data nella tabella 1.1, dove
è presente ed evidenziato ViSOR. Esistono anche sequenze non pubbliche (come la
MPEG-4 Hallway sequence ), ma a causa del loro ristretto accesso ed utilizzo, sono
meno utili per scopi di valutazione.
Per valutare la piena varianza dei dati in input, è necessario avere molte sequenze
di test. Considerare una completa rappresentazione in ingresso richiederebbe una
performance evaluation esosa in termini di tempo e con ampi requisiti di storage
1 sistema VCA: sistema di
video content analysis, si veda il cap. 4
1.1 Video Repository e Datasets
13
Figura 1.1: Datasets Video disponibili pubblicamente
per i dati video. L'ammontare di dati necessari per la valutazione è dipendente dal
livello desiderato di importanza statistica del test.
Un'ulteriore proprietà dei set di dati risiede nella complessità e nella varietà
delle sde percettive presenti nella sequenza. Per esempio, una sequenza video su
una strada comprenderà più oggetti che si muovono ad un'alta velocità, mentre una
sequenza di parcheggi contiene solo un piccolo numero di oggetti che si muovono ad
una velocità limitata.
14
Lavori Correlati
La complessità del dataset può quindi essere caratterizzata da vari tipi di meccanismo: il livello delle interazioni dei soggetti, la frequenza e la complessità delle
occlusioni dinamiche, il periodo di tempo in cui i soggetti rimangono dietro a occlusioni statiche e la distinguibilità degli stessi, per citarne alcuni. Solo assicurandosi
che il dataset contenga un raggio di sde percettive sucientemente ricco e diversicato è possibile testare adeguatamente un algoritmo di tracking.
Per esempio, una sequenza video acquisita sotto condizioni ideali di immagine che
contiene solo un oggetto chiaramente distinto ad un istante particolare non è da
considerarsi un risultato convincente per quanto riguarda un reale sistema di sorveglianza. Quel dataset sarà appropriato per la calibrazione e il training del sistema,
ma non lo è per una valutazione delle performance oggettiva.
E' quindi assolutamente necessaria una distinzione fra l'ammontare di dati usato
per lo sviluppo e quello usato per la valutazione, visto che la valutazione sul set di
dati dello sviluppo darebbe ovviamente risultati non attendibili. Inoltre, per orire
una valutazione adabile e un breve ciclo di sviluppo dell'algoritmo, il set di dati
per la valutazione è tipicamente molto più grande del training set.
A anco dei video che si basano su scene di vita reale, anche video sintetici
possono essere utilizzati per valutare algoritmi di visione articiale [1]. Tipicamente, la quantità di realismo di queste sequenze è limitata: tuttavia, il processo di
annotazione GT è estremamente semplicato.
1.2
Progetti realizzati
L'incredibile importanza acquistata dalla performance evaluation degli algoritmi di
tracking, object detection ed event analysis ha portato i ricercatori ad incontrarsi
per discutere di eventuali soluzioni ed a dedicare conferenze ad essa. In congiunzione con l'IEEE Face and Gesture Recognition Conference, a Grenoble il 31 Marzo
2000 si è tenuto il primo workshop sulla valutazione delle performance, denominato
Performance Evaluation of Tracking and Surveillance (PETS).
Questa conferenza è stata realizzata proprio perché la crescita nello sviluppo del
1.2 Progetti realizzati
15
campo della videosorveglianza non ha avuto come complementare la sistematica valutazione delle prestazioni delle tecniche implementate. Specialmente, era dicile
fare confronti tra algoritmi pubblicati in letteratura se erano stati testati su dierenti datasets sotto condizioni completamente diverse.
Lo scopo di PETS era di
permettere ai ricercatori di testare i propri algoritmi e presentare i propri risultati
2
sullo stesso dataset appositamente reso disponibile. Dal 2000, altri 7 PETS
3
PETS)
(e VS-
workshop si sono tenuti in collaborazione con le conferenze più famose, con
periodicità annuale.
Recentemente, c'è stato un aumento di attività addizionali che mirano ad orire
ulteriore supporto e integrazione per la valutazione delle perfomance nel contesto
della videosorveglianza: da progetti che mirano ad assistere il ricercatore nella ricerca del ground truth, a framework che intendono integrare gli algoritmi da testare
al loro interno, fornendo supporti di calcolo e visualizzazione degli errori e dei risultati, a progetti più ampi che prevedono la denizione di metriche o di approcci più
complicati.
Nella fattispecie, le alternative alle conferenze PETS sono rappresentate dai progetti VACE e ETISEO, mentre per quanto riguarda i framework descritti appena
sopra vi sono i progetti CAVIAR e ODVIS.
Nonostante i numerosi progetti, come si vedrà, sono ancora molti i problemi che
ruotano intorno ad un sistema di valutazione delle prestazioni sulla videosorveglianza.
1.2.1 VACE
Il programma Video Analysis and Content Extraction (VACE), supportato dall'
Advanced Research and Development Activity (ARDA), nasce nel 2000 ed ha come
obiettivo lo sviluppo di nuovi algoritmi ed implementazioni per l'estrazione automatica dei contenuti video e la comprensione degli eventi.
2 http://www.cvg.rdg.ac.uk/slides/pets.html
3 http://www.pets2007.net/
16
Lavori Correlati
Il programma presenta diverse fasi; attualmente si è vicini alla conclusione della
seconda. Nella prima sono stati decisi e formalizzati i passaggi necessari per l'interazione tra i vari partecipanti ed è stato denito il framework comune su cui lavorare.
VACE nasce con tre obiettivi principali:
•
creare un'infrastruttura completamente integrata basata su Informedia (progetto precedente), ovvero un propotipo di ambiente per l'estrazione di metadati, l'indicizzazione e le ricerche
•
fornire un testbed unicato e facilmente consultabile ed aggiornabile
•
sviluppare visualizzazioni di informazioni video e sommarizzazioni su grandi
collezioni di dati video
Questi obiettivi sono tra loro abbastanza ortogonali, coinvolgendo non solo la valutazione delle prestazioni nella visione articiale, ma anche processi di information
retrieval e rappresentazione della conoscenza.
Figura 1.2: Estrazione dei metadati in VACE I
L'architettura realizzata è stata modularizzata per supportare l'intercambiabilità, dove i moduli che elaborano il video per il riconoscimento di oggetti, testo o face
possono essere sostituiti con componenti sviluppati da altre organizzazioni di ricerca. Inoltre, basandosi sulla denizione di interfaccia standard inclusa nel progetto,
è possibile inserire e creare moduli con livelli semantici più elevati.
1.2 Progetti realizzati
17
Figura 1.3: Visione concettuale dell'architettura di elaborazione
I metadati estratti dai nuovi moduli saranno immediatamente reperibili per eventuali ricerche all'interno del sistema e saranno inoltre allineati temporalmente con
i video processati, permettendo cosi il loro utilizzo con altri metadati sincronizzati
per la costruzione di interfacce alle collezioni video ecienti ed ecaci.
Dal punto di vista della valutazione delle prestazioni, VACE utilizza ViPER (si
veda al cap.
2.5) per le annotazioni sul ground truth, concentrandosi prevalente-
mente su bounding box e punti che identicano univocamente gli oggetti. In questo
contesto infatti, VACE II ha considerato come task primario l'object detection e il
tracking.
Le metriche utilizzate sono state concepite come operazioni sulle aree per le
annotazioni sui contorni degli oggetti e calcoli sulle distanze per le annotazioni dei
punti. Per la fase di detection, le metriche ad area riguardano l'overlap spaziale tra
ground truth e i risultati dell'algoritmo. La metrica è denita come Sequence Frame
Detection Accuracy (SFDA) e cattura sia l'accuracy (miss e falsi allarmi) che la
precision (allineamento spaziale).
18
Lavori Correlati
Per la fase di tracking, invece, sulle aree si utilizza un punteggio unico per rappresentare l'accuratezza (intesa come il numero corretto di tracce) e la precisione
(intesa come corrispondenza spaziale e temporale); questo punteggio è denito come
Average Tracking Accuracy (ATA). Entrambi questi parametri hanno un corrispettivo analogo basato sulle distanze.
Per questa fase, inoltre, vengono utilizzati 4 criteri:
1. Percentuale del dataset tracciato - è la frazione fra il numero di frame in cui
l'algoritmo ha tracciato l'oggetto rispetto ai frame totali in cui è presente.
2. Overlap medio tra i bounding box - è la percentuale di sovrapposizione dei
bounding box di ground truth e output del sistema divisa per la percentuale
del dataset tracciato
3. Overlap medio tra le bitmap - è il confronto tra l'immagine dell'output del
sistema e quella del ground truth
4. Distance Transform tra le due bitmap, sia partendo da quella del ground truth
che partendo da quella dell'output del sistema
VACE, nonostante l'attenta pianicazione delle fasi di valutazione, non è riuscito
a proporsi come strumento eciente per valutazioni general-purpose.
1.2.2 PETS Metrics
Le metriche PETS sono state sviluppate per essere sia un meccanismo di ausilio che
complementare ai tradizionali workshop PETS, creando un portale apposito.
Obiettivi
L'obiettivo generale è quello di orire un meccanismo automatico per comparare
in maniera quantitativa un selezione di algoritmi che lavorano sugli stessi datasets.
L'approccio è dierente tra attività correlate come ETISEO (si veda in 1.2.3) in cui
un coordinatore super-partes compie le valutazioni sui risultati presentati. La principale motivazione che ha spinto i ricercatori a sviluppare questo progetto è che al
secondo PETS, nel 2001, fu richiesto ai partecipanti di spedire i risultati dei propri
1.2 Progetti realizzati
19
Figura 1.4: Portale PETS Metrics
algoritmi (sul dataset comune) in formato XML, ma nonostante questo non fu facile confrontarli e capire come potessero essere integrati per ottenere risultati migliori.
Quindi, le PETS Online Metrics mirano a:
1. Orire un repository online di datasets, metriche e risultati, in continua crescita
2. Permettere la valutazione automatica dei risultati inviati
3. Fornire risultati quantitativi che possono essere visionati all'interno di classiche organizzate per metrica.
Metriche di valutazione
Siccome i ricercatori sviluppano i propri algoritmi su piattaforme dierenti con una
varietà di linguaggi diversi e tipicamente con proprie strutture dati per salvare i
risultati, PETS Metrics ha deciso per un formato standard non proprietario e indipendente da piattaforme e linguaggi di programmazione, come l'XML. In più,
quest'ultimo può essere generato facilmente in vari linguaggi. Perciò, i risultati che
devono essere inviati sul sito di PETS Metrics devono osservare il suo XML Sche-
20
Lavori Correlati
ma, ovvero una denizione delle direttive su come costruire l'XML da sottoporre al
progetto. L'XML Schema di PETS Metrics è visibile in gura 1.5.
Figura 1.5: PETS Metrics XML Schema
Volendo fungere da repository online per risultati, metriche e datasets è necessario che il processo di creazione del ground truth sia pianicato in modo ottimale.
Tra i vari tool esistenti per la creazione delle annotazioni del ground truth, PETS
4
Metrics ha scelto il progetto AVITRACK , che è in grado di fornire annotazioni
assistite da una predizione lineare del moto degli oggetti.
Il ground truth viene eettuato in 4 passi:
1. Si assegna un unico ID e una classicazione (come persona, macchina, etc) ad
ogni oggetto sico in movimento, per ogni frame.
2. Ogni oggetto sico in ogni frame viene incapsulato in un bounding box appositamente più largo del dovuto. La predizione automatica del moto aiuta ad
aggiungere rapidamente i bounding box ai frame successivi e/o precedenti.
4 http://www.avitrack.net/
1.2 Progetti realizzati
21
3. Ogni oggetto viene segmentato all'interno del proprio bounding box identicato i pixel di contorno degli oggetti e utilizzando l'algoritmo ood ll per
ottenere i pixel interni.
4. A questo punto, tramite la fase precedente è possibile estrarre automaticamente il vero bounding box.
Per la segmentazione del moto PETS Metrics ha implementato quattro metriche:
per ognuna di queste, più è basso il punteggio più l'algoritmo è eciente e vicino al
grund truth. Tutte le metriche sono la somma di due parti: un false positive score,
che è l'errore sull'identicazione dei contorni dell'oggetto, e un false negative score,
che invece è l'errore sull'identicazione del foreground interno all'oggetto.
La prima metrica, Negative Rate Metric (NR), da un'indicazione generale della
segmentazione dell'oggetto.
1
N R = (N Rf n + N Rf p )
2
dove
N Rf n
e
N Rf p
indicano rispettivamente la false negative rate e la false
positive rate (si veda a pag. 54) sui pixel.
La seconda metrica, Misclassication Penalty Metric(MP), descrive quanto bene
un algoritmo può estrarre uno specico oggetto penalizzando i pixel misclassicati
di una quantità pari alla loro distanza dal bordo dell'oggetto del ground truth.
1
M P = (M Pf n + M Pf p )
2
PNf n i
PNf p i
j=1 df n
j=1 df p
j
j
dove M Pf n =
e M Pf p =
. df n e df p sono le distanze del j −
D
D
esimo pixel falso negativo e del k − esimo pixel falso positivo dal contorno della
segmentazione di riferimento. Il fattore di normalizzazione D è la somma di tutte
le distanze dei pixel dal contorno dell'oggetto in un frame.
La terza metrica, Rate of Misclassications Metric (RM), valuta il grado medio
di errore quando avvengono più errori della media di errori che di norma accade.
1
RM = (RMf n + RMf p )
2
22
Lavori Correlati
dove
RMf n
Nf n
j
1 X df n
=
Nf n j=1 Ddiag
e
RMf p
Nf p
1 X dkf p
=
; Ddiag
Nf p k=1 Ddiag
è la diagonale distan-
za del frame.
La quarta metrica, Weighted Quality Measure Metric (WQM), quantica la
discrepanza spaziale tra la segmentazione del moto stimato e la segmentazione
dell'oggetto di riferimento appartentente al ground truth.
1
W QM = ln ( (W QMf n + W QMf p ))
2
dove
W QMf n
Nf n
1 X
=
wf n dif n
Nf n j=1
e
W QMf p
Nf p
1 X
=
wf p dkf p ; wf n
Nf p k=1
e
wf p
sono pesi
scelti arbitrariamente.
Concludendo, una volta che i dati sono stati inviati nel formato XML seguendo
l'apposito Schema, vengono calcolate automaticamente le metriche appena citate e
l'algoritmo viene inserito nella classica della rispettiva categoria, mostrando così
direttamente il confronto con gli altri algoritmi. In tal modo, idealmente, sarà possibile comprendere oggettivamente qual'è l'algoritmo o l'insieme di algoritmi migliore
per quella determinata esigenza.
Considerazioni
PETS, tramite i workshop e le metriche online, rappresenta forse il tentativo più
eciente di framework sulla valutazione delle prestazioni: il suo principale punto a
sfavore è rappresentato dalle limitazioni imposte dallo standard.
1.2.3 ETISEO
A dierenza di PETS che lavora dal punto di vista degli algoritmi, il progetto ETISEO [2], nanziato dal Ministero francese, studia le dipendenze tra le qualità dei
video e gli algoritmi. Esso mira ad identicare le adeguate caratteristiche di una scena per un dato algoritmo e ad evidenziare le debolezze di questi ultimi per ulteriori
miglioramenti.
Gli altri progetti orono sequenze video a vari livelli di dicoltà globali con il
ground truth associato. Tuttavia, gli stessi livelli globali possono essere costituiti
1.2 Progetti realizzati
23
da diversi problemi di video processing (ad esempio ombre, poco contrasto, etc).
Conseguentemente, il processo di valutazione non riesce ad andare in profondità
su ogni algoritmo:
in modo specico, per un dato algoritmo, la valutazione non
indica a quali problemi di elaborazione del video bisogna fare attenzione, la cui
correzione/miglioramento è spesso cruciale; non indica neppure in quali condizioni
questo algoritmo può acquisire prestazioni soddisfacenti.
Quindi, ETISEO cerca di valutare gli algoritmi di elaborazione video dato un
certo obiettivo di visione (individuazione degli oggetti, classicazione, riconoscimento degli eventi), un tipo di scena (ad esempio la strada) e un livello di dicoltà ben
denito (ad esempio ombre contrastanti). Lo scopo ultimo è di studiare le dipendenze tra un video processing task e le caratteristiche video, deniti in questo contesto
come problemi di elaborazione video.Per fare questo, il progetto utilizza una precisa
e pianicata metodologia che consiste in questi passaggi:
•
Per prima cosa, ETISEO indirizza in modo separato ogni problema che viene
accuratamente denito e classicato.
Ad esempio, le ombre possono essere
studiate come ombre a dierenti livelli di intensità, alla stessa intensità ma
con diversi tipi di immagini di background, oppure ombre con dierenti fonti
di illuminazione.
•
Secondariamente, ETISEO colleziona le sequenze video che illustrano solo quel
dato problema, con diversi livelli di dicoltà e di complessità.
•
A questo punto, ETISEO calcola 3 tipi di dati associati per ogni video sequenza. Il primo è il ground truth, realizzato da operatori umani tramite il tool
5
ViPER (si veda al cap. 2.5) ad ognuno dei livelli di elaborazione video . Il
secondo è l'annotazione generale delle sequenze video che riguardano le dicoltà dell'elaborazione e le condizioni di registrazione. Il terzo dato concerne
la calibrazione della videocamera e le informazioni contestuali circa la zona di
interesse.
•
Inoltre, ETISEO ha denito varie metriche per valutare le prestazioni di un
sistema di videosorveglianza ad ogni livello.
5 Analizzati in modo appropriato al cap. 5.5.2
24
Lavori Correlati
•
Inne, ETISEO ore uno strumento di valutazione automatico e essibile per
analizzare accuratamente come un dato algoritmo si occupa di un determinato
problema.
Tutte le metriche che il progetto utilizza si basano su funzioni di matching : per
la maggior parte di queste, infatti, è necessario far corrispondere l'area o intervalli
di tempo degli oggetti nei dati di riferimento (ovvero di ground truth) con gli oggetti
individuati dall'algoritmo. Se il valore della misura di matching è più alto di una
soglia predenita, si considera valida la corrispondenza.
ETISEO utilizza per lo più la funzione Dice Coecient
2 · card(RD
T
C)/(card(RD) + card(C)),
dove
RD
D1.
Essa è denita come
è l'intervallo di tempo o l'area
del Reference Data, ovvero dei dati di riferimento (ground truth), e
C
è l'analogo del
Candidate Data, cioè i dati dell'output dell'algoritmo. Come indice di prestazione,
vengono utilizzati la Precision
(GD/OD),
la Sensitivity
(GD/RD)
o l'F-Score :
2 · P recision · Sensitivity
P recision · Sensitivity
dove
GD
è il numero di good detections (in altre parole i True Positive),
il numero totale di detections (TP+FP), e
RD
OD
è
è il numero di dati di riferimento
(TP+FN).
Per l'object detection, si utilizzano 4 metriche, di cui una principale e 3 complementari:
•
number of objects metric: valuta il numero di oggetti individuati di cui si
ha un matching (basato sui bounding box) nei dati di riferimento; purtroppo
questa metrica non può misurare la precisione del rilevamento. Infatti, anche se
è la metrica principale, essa non può distinguere tra un algoritmo che individua
il 130% dell'area dell'oggetto rispetto ad un altro che ne individua esattamente
il 100%;
•
object area metric: valuta il numero di pixel nei dati di riferimento che sono
stati individuati;
•
split metric: qualica la frammentazione degli oggetti individuati; in modo
particolare, essa elabora il numero di blob (oggetti individuati) per un oggetto
1.2 Progetti realizzati
25
ground truth, utilizzando un'altra funzione di matching, denita come
card(RD
T
C)/card(C).
D2 =
E' quindi molto utile per individuare casi di over-
detection (ad esempio, quando una persona è rilevata come due oggetti);
•
merge metric: qualica la sovrapposizione di oggetti individuali. Nonostante nella maggioranza delle situazioni queste due metriche sono sempre risultate vicine al 100%, con un datasets appropriato si potrebbero risaltare e
successivamente correggere gli errori di split and merge.
Per supportare le metriche precedenti, inoltre, si utilizza la 2D/3D distance
metric, che misura la distanza media tra i baricentri degli oggetti individuati e i
corrispondenti del ground truth. Analogamente alla metrica sull'area degli oggetti,
essa serve per calcolare la precisione del rilevamento.
Va aggiunto che i risultati di valutazione di queste metriche possono inuenzare
negativamente alcuni algoritmi che riescono, a dierenza di altri, ad individuare oggetti dicili da catturare (come gli oggetti lontani dalla videocamera). E' perciò
necessario tenere in conto i risultati del numero di oggetti rilevati: se un algoritmo
ottiene buoni risultati sulle distanze ma pessimi sul numero di oggetti, signica che
quest'ultimo riesce a gestire bene oggetti facili da individuare, a discapito di quelli dicili. Se invece i risultati sono invertiti, è chiaro che l'algoritmo ha diminuito
la propria accuratezza di rilevamento per avere un frequenza di detection molto alta.
Per la fase di tracking, si impiegano 3 metriche, una principale e 2 complementari:
•
tracking time metric: misura la percentuale di tempo nel quale un oggetto di
riferimento è individuato e tracciato (la corrispondenza si valuta sui bounding
box). Il suo grande difetto è che dipende completamente dalla fase di detection ;
•
object ID persistence metric: aiuta a valuta la persistenza dell'ID, ma favorisce l'under-detection ;
•
object ID confusion metric: computa il numero di ID di oggetti di riferimento
per ogni oggetto individuato; lo scambio di ID può avvenire ad esempio quando
due persone si incontrano. Essa favorisce l'over-detection.
Queste ultime due metriche devono necessariamente essere utilizzate insieme alla
metrica principale per evitare di trarre conclusioni fuorvianti.
26
Lavori Correlati
Per i livelli più alti, come la classicazione di oggetti e il riconoscimento di eventi,
si utilizzano ancora una volta le corrispondenze sui bounding box o su condizioni
temporali.
ETISEO riesce quindi a fornire un largo set di dati e di metriche per valutare gli algoritmi di video processing, che si combinano ad un eettiva realizzazione
pratica avvenuta in due fasi principali, durante le quali i partecipanti hanno potuto
prima prendere familiarità con i requisiti richiesti e successivamente eettuare le
valutazioni. Nonostante questo, vi sono state comunque diverse incomprensioni tra
i partecipanti, in modo particolare nel denire gli oggetti e gli eventi di interesse.
Inoltre, non è stata posta attenzione sui requisiti hard-time, ovvero in tempo reale;
la denizione dei livelli di dicoltà all'interno dei cosiddetti problemi è ancora
acerba e poco precisa (vengono utilizzati ad esempio termini come normale o scuro), e la selezione di sequenze video nel progetto non è suciente perché il confronto
tra queste sequenze è soggettiva e approssimativa. In futuro, è prevista la progettazione e l'implementazione di una metrica oggettiva e quantitativa per misurare
automaticamente i livelli di dicoltà dei problemi di elaborazione video.
1.2.4 ODViS
Il progetto ODViS [3] (Open Development for Video Surveillance ) nasce dal bisogno
di ottenere un'analisi empirica diretta sui sistemi di tracking e videosurveillance
senza attribuire un carico non dovuto al designer dell'algoritmo.
ODViS è un framework totalmente indipendente per la ricerca e lo sviluppo dei
sistemi di videosorveglianza; sebbene esistano già vari applicativi che si occupano
della generazione del ground truth, della gestione delle metriche, della visualizzazione e della caratterizzazione degli errori, questi non sono stati esplicitamente creati
in modo general-purpose per supportare la comunità dei ricercatori di quest'area
tematica.
Sono stati creati secondo le necessità del momento, in modo comple-
tamente separato, senza considerare apertamente il problema dell'interoperabilità
tra i suddetti.
Addirittura, con l'obiettivo di capire e visualizzare le performan-
ce relative ai propri sistemi, molti ricercatori hanno ri-sviluppato le funzionalità di
visualizzazione, misura dell'errore e processing video, in modo superuo.
Il sistema ODViS è estensibile, in quanto permette ai ricercatori di inserire
1.2 Progetti realizzati
27
al proprio interno modelli di video sorveglianza, avendo la possibilità cosi di valutare i propri algoritmi di tracking ed event detection in un ambiente provvisto
di un'interfaccia graca interattiva.
Utilizzando questo sistema, i ricercatori pos-
sono facilmente denire dati ground truth, visualizzare il comportamento dei loro
algoritmi, ed automaticamente misurare e riportare errori in tramite dierenti formati. Si può cosi evitare tutto l'overhead comunemente associato con una profonda
valutazione delle performance.
Figura 1.6: Esempio del sistema ODViS in uso
Nella gura 1.6 vi è riportato un esempio di utilizzo del sistema, tramite le varie
nestre:
•
nestra della coda degli eventi: mostra a che frame si sono vericati gli eventi
individuati dal tracker e quelli costruiti a mano (ground truth);
•
nestra di analisi dell'errore: mostra l'utilizzo di una metrica inclusa nel sistema (la distanza euclidea) fra il ground truth e il modello del tracker; la linea
verticale corrisponde al frame mostrato nella nestra principale.
28
Lavori Correlati
Figura 1.7: Architettura di ODViS
ODViS è scritto in C++ usando le librerie QT
6
e il sistema operativo Linux.
Siccome le QT sono supportate anche su Windows, il porting di ODViS non dovrebbe
essere complicato (ma non è stato ancora eettuato). La prima versione stabile di
ODViS (che è anche quella attualmente disponibile) supporta il usso video in due
formati, le AVI e liste di frame.
Il usso di controllo di un modulo di sorveglianza all'interno del framework
ODViS è mostrato in g. 1.7.
Un modulo di sorveglianza deve implementare questa interfaccia se intende utilizzare ODViS. Per integrare un modulo, occorre linkarlo ad ODViS: solo un modulo
può essere linkato alla volta, ma nel futuro sono previste istanze multiple. Esso contiene una serie di funzioni di avvio e di stop che iniziano e terminano le sequenze
di tracking, la funzione di tracking che aggiorna i parametri monitorati e un set di
event detectors. La funzione di trigger (trigger function ) è necessaria per costruire un'istanza del tracking engine, e inizializzarla con un vettore di parametri che
descrive la congurazione iniziale del soggetto monitorato.
Il tracking engine è il componente principale del modulo di videosorveglianza:
6 http://trolltech.com/products/qt
1.2 Progetti realizzati
29
fondamentalmente prende in input un vettore di parametri e ne produce uno nuovo
basato sull'analisi dei dati disponibili; la lettura dei dati video grezzi è ottenuta
utilizzando le DATA I/O API che orono al ricercatore un set di routine per accedere
a pixel, regioni, ed altre informazioni ausiliare come il timecode salvato con il video.
Ogni istanza del Tracking Engine mantiene un proprio stato interno. Ad ogni
frame, per ogni immagine istantanea di tracking viene controllata una condizione
di halting invocando le halting functions, che deniscono appunto le condizioni
che causano lo stop del sistema. La funzione di halting può prendere in ingresso il
vettore di parametri prodotto dal tracking engine per quel frame. Come esempio si
può considerare ad esempio che la funzione di halting venga invocata quando una
struttura monitorata lascia la scena.
Concludendo, ODViS si presenta con un'architettura molto scalabile e generalpurpose, ma forse non riesce, proprio per questa sua natura, a soddisfare le esigenze di molti. L'idea di un framework che comprenda tutte le fasi necessarie per
le fasi di tracking, detection, event analysis e performance evaluation è brillante,
ma dicilmente realizzabile: costringerebbe molti ricercatori a ri-adattare i propri
VCA all'interno del sistema. Per questi motivi ODViS è tuttora poco utilizzato e
supportato.
1.2.5 CAViAR
CAViAR, Context Aware Vision using Image-based Active Recognition [4] [5], è un
framework modulare plug-and-play fondato dall' EC's Information Society Technology e progettato e sviluppato all'Univ. of Edinburgh (Regno Unito), all'Instituto
Superior Tecnico (Lisbona, Portogallo), e all'Institut National Polytechnique de
Grenoble (Francia); il progetto è iniziato nel 2002 ed è terminato nel 2005.
CAViAR è stato progettato specicatamente per permettere a più implementazioni concorrenti di moduli equivalenti di lavorare in competizione uno con l'altro,
inserendoli all'interno del sistema per confrontare diversi approcci a problemi basati
su condizioni che variano su un ampio spettro di possibilità.
Il sistema è basato su un controller globale e su un numero di moduli per l'elaborazione delle informazioni.
Ogni modulo ore una completa descrizione di se
30
Lavori Correlati
stesso utilizzando CVML [6], includendo i suoi set di dati di input e di output e una
lista completa di parametri pubblici. Ogni parametro ha una descrizione che include
l'utilizzo raccomandato come ad esempio il passo minimo, massimo e incrementale
e le dipendenze con gli altri parametri.
Figura 1.8: Descrizione del modulo di CAViAR in CVML
L'implementazione include un componente base che contiene tutte le funzionalità
dei moduli comuni come ad esempio l'interfaccia che collega controller e parti per
la gestione dei parametri.
Dopo ogni run (dove un set di dati in input è elaborato per produrre dati di
output), ogni modulo farà un report al controller sulla complessiva qualità e quantità
dei risultati. Questo è chiamato feedback di alto livello e il modulo base aggiunge
le informazioni riguardati circa il tempo e le risorse spese. Il controller di CAViAR
è l'implementazione globale di un controller di sistema classico. All'avvio esso legge
una lista di possibili moduli che possono essere utilizzati compatibilmente con l'input
disponibile e l'output desiderato.
Il controller può funzionare in due modalità, una real-time e una oine di apprendimento. Durante questo apprendimento il controller scorre una o più sequenze
video dove il ground truth è già stato generato. Il controller può quindi confrontare
passo per passo i propri risultati con il ground truth fornito e per ogni modulo esplorare parti dello spazio dei parametri per capire quali di questi hanno un'inuenza
1.2 Progetti realizzati
31
sull'output di quel modulo e sul sistema considerato nella sua interezza. Esso salva
poi la sua conoscenza in uno dei due modi disponibili, tramite reti neurali o regole create dinamicamente, per fare uso della conoscenza acquisita nel modo online,
quando le strette condizioni richieste dal real-time non permettono nessuna complessa esplorazione dello spazio dei parametri. La fase di apprendimento ha come scopo
anche quello della performance evaluation, per determinare quale tra vari moduli
equivalenti lavora meglio in circostanze stabilite.
I moduli di CAViAR comunicano i feedback, i dati e le informazioni di controllo
attraverso precise API; per le comunicazioni è sempre utilizzato CVML. L'architettura CAViAR è scritta in una combinazione di C++ e schemi e regole logiche
che utilizzano Clips. Esso utilizza le più svariate librerie, come le Imalab, le Intel's
OpenCv, le CoreLibrary.
Anche CAViAR presenta il problema di ODViS: un framework in cui integrare
moduli a piacere per avere una base comune su cui confrontare e testare i propri
algoritmi è un'idea ambiziosa e molto dicile da realizzare. Per questo, sebbene sia
molto più diuso di ODViS, CAViAR non è riuscito ad imporsi come standard de
facto.
32
Lavori Correlati
Capitolo 2
Il framework ViSOR
L'ambiente generale in cui si sviluppa il progetto verrà denito come il ViSOR
framework, un ambiente destinato a fornire un servizio di ricerca e recupero di di
video in base a determinate richieste e di valutazione degli algoritmi del sistema di
visione articiale che tramite la conoscenza e l'elaborazione genera informazioni utili
a questi due obiettivi.
Tale ambiente viene spesso denito come framework VCA, dove l'acronimo
VCA sta a indicare il sistema di video content analysis che si occcupa di elaborare
i dati attraverso opportuni algoritmi, una volta acquisito il video.
2.1
Visione Generale
Tutti i settori della visione articiale, quali medical imaging, multimedia, analisi del
traco e sorveglianza mirano a costruire un framework VCA generale e completamente integrato. Una distinzione deve essere fatta fra quei sistemi che rischiano di
sorire di un fallimento critico se i termini di scadenza temporali vengono violati
(hard-time), e quelli che non ne sorono (soft-real time).
Per i sistemi di video-
sorveglianza in real-time, dove l'operatore vuole ricevere allarmi per certi eventi, è
richiesto al sistema di lavorare con un piccolo ritardo.
Se un allarme deve essere
generato quando una macchina entra nella scena, il sistema VCA non può applicare
la classicazione quando l'oggetto lascia la scena, ma fare questa classicazione al
volo.
33
34
Il framework ViSOR
Figura 2.1: Visione d'insieme dell'ambiente
Il framework ViSOR ha tre moduli principali.
Il primo è il modulo del video content analysis, dove l'acquisizione video è applicata (frame grabbing da una camera); gli oggetti in movimento vengono segmentati
dall'immagine video in input.
Le caratteristiche degli oggetti (come la velocità e
la dimensione) vengono raccolte e vengono generati dei metadata legati a queste
caratteristiche: essi vengono poi salvati nel database generale, che è successivamente
utilizzato per la ricerca e il recupero di contenuti e per la valutazione delle prestazioni. Siccome l'acquisizione video per la sorveglianza e il traco è applicato in modo
continuativo (non-stop), l'analisi dei contenuti è fatta in real-time.
Il secondo modulo è la ricerca e il recupero di dati, dove gli utenti possono
compiere ricerche all'interno del database, attraverso tutti i video depositati, in base
a criteri specici (come il tipo di oggetto, la dimensione, la velocità e la traiettoria).
I risultati ritornati sono presentati all'utente attraverso un'interfaccia graca. Visto
2.2 L'annotazione di video
35
1
che la ricerca può essere eettuata o-line , il modulo non è condizionato dal fattore
real-time e dalle sue stringenti condizioni.
Il terzo modulo comprende la performance evaluation degli algoritmi di video
content analysis.
I metadati, generati nel passo di analisi, sono confrontati con i
risultati aspettati, cioè i così deniti
ground truth (GT), attraverso opportune
metriche di valutazione.
Principalmente, il progetto verrà sviluppato all'interno del primo e del terzo
modulo. Nei seguenti capitoli tutti i moduli verranno espansi e dettagliati.
2.2
L'annotazione di video
La valutazione delle prestazioni di un sistema prevede diversi requisiti (g. 2.2).
I punti chiave per realizzarla sono denire e possedere:
•
un ground truth
•
l'output del sistema interessato
•
alcune metriche di valutazione
per ottenere quindi dei risultati, da cui sarà necessario estrarne una visualizzazione e le opportune conclusioni.
L'output del sistema che si intende valutare e i dati di ground truth devono essere
pienamente confrontabili tra loro, secondo uno schema logico preciso.
E' quindi
necessario un formato di annotazione comune tra sistema e ground truth, perché
tramite la metrica designata si possano comparare ed estrarre risultati adabili;
le annotazioni sono i metadati attraverso i quali si possono ottenere valutazioni o
eettuare ricerche sui video elaborati e analizzati (g. 2.3).
Il formato di annotazione è composto essenzialmente da due livelli:
•
livello semantico:
è il livello della comprensione, denisce come andranno
categorizzate e modellate le entità da annotare
1 Ovvero dopo il video processing; come si vedrà in 2.4, la ricerca si può eettuare online sul
sito di ViSOR
36
Il framework ViSOR
Figura 2.2: Processo di valutazione delle prestazioni
Figura 2.3: Visione d'insieme: annotazioni
•
livello sintattico : è il livello del linguaggio, denisce le regole di scrittura del
formato
Prima di analizzare in modo più attento questi due livelli occorre approfondire
cosa si intende per ground truth.
2.3
Ground Truth
Il ground truth è un componente fondamentale nel framework (come è possibile
osservare in g. 2.4) e in generale nella performance evaluation.
2.3 Ground Truth
37
Figura 2.4: Visione d'insieme: ground truth
I dati di ground truth vengono creati con l'intento di orire dati indipendenti e
obiettivi (riguardo alla classicazione, alla locazione e alla dimensione, ad esempio)
che possono essere collegati alle osservazioni estratte dalla sequenza video.
Per
esempio, nella sorveglianza in remoto, il ground truth può identicare l'utilizzo
della locazione corrente, il tipo di agricoltura o la geometria di strutture costruite
dall'uomo, per poi confrontare il tutto con i dati estratti dal satellite o dalle riprese
aeree. In questo caso, i dati di ground truth potrebbero tipicamente essere generati
da perizie manuali, che includono l'ispezione di regioni molto ampie.
La generazione di questi dati richiede un gran impegno di tempo ed è soggetta
all'errore ed all'incertezza.
Dove le caratteristiche dell'immagine sono soggette a
cambiamenti (ad esempio la crescita delle coltivazioni e il raccolto), è importante
assicurare la coincidenza temporale dell'immagine catturata e del ground truth. In
aggiunta, la qualità del ground truth è altamente dipendente dalle competenze dei
geometri che eseguono i rilevamenti topograci.
I dati di ground truth per il video tracking presentano alcune dierenti sde.
La prima riguarda l'indicazione della posizione di un soggetto, usando il bounding
box che lo circumscrive, un singolo punto che lo identica unicamente come il punto
più alto dell'oggetto o il centroide.
38
Il framework ViSOR
Secondariamente, si punta un accurato contrassegno del contorno dell'obiettivo.
Questo può abilitare una varietà di misurazioni basate sulle regioni per determinare
la qualità della segmentazione, i dettagli di quella determinata forma e della sua
apparenza.
Inne, possono essere generate le informazioni di classicazione.
Questo è ge-
neralmente il più semplice da produrre siccome è necessario solo un valore per
traccia.
Per le prime due categorie il ground truth può essere determinato passando
frame per frame l'intera sequenza e caratterizzando i soggetti nella scena, tramite
metodi puramente manuali o strumenti semi-automatici. Il metodo manuale è abbastanza comodo per la prima categoria, ma è particolarmente noioso e lungo per
contrassegnare i contorni, specialmente se è richiesto di annotare migliaia di soggetti. L'approccio semi-automatico (supervisionato) utilizza un algoritmo di tracking
e detection per trovare e identicare facilmente soggetti corrispondenti ai frame
precedenti, permettendo l'intervento manuale per la correzione di eventuali errori
dell'algoritmo stesso. Una conseguenza nell'utilizzare questo metodo per generare il
ground truth è che è polarizzato in favore dello stesso algoritmo di detection che
deve essere valutato.
In generale, questi metodi di estrazione del ground truth sono soggettivi e tendenti ad errori, particolarmente considerando la natura tediosa dell'acquisizione e
la possibile inclinazione del valutatore che eettua il ground truth - se il valutatore compie delle scelte che possono risultare simili a quelle di un certo algoritmo o
metodo, può favorire indirettamente un particolare labelling.
In aggiunta, allo stimatore può anche essere richiesto di categorizzare la visibilità
di ogni soggetto monitorato, e questo include la valutazione di occlusioni parziali o
complete quando un soggetto si incrocia con un altro soggetto statico o mobile nell'immagine. Diversi ricercatori possono vedere in modo dierente come questi eventi
sono rappresentati nel ground truth - in alcuni casi, il ground truth viene generato solo quando può essere identicato univocamente. Negli altri casi, il valutatore
può annotare solo i soggetti parzialmente invisibili, o inferire sull'intero soggetto
(basandosi sulla conoscenza dei frame precedenti).
Questo è un chiaro compromesso tra il tempo speso per acquisire il ground truth
2.3 Ground Truth
39
e l'accuratezza e l'attendibilità dei dati risultanti. Ciò è particolarmente vero se la
qualità della segmentazione e la susseguente analisi delle forme è da valutare, perché
l'acquisizione manuale dei dati di conne del soggetto porterebbero ad un eccessivo
impiego di tempo.
2.3.1 Gli errori umani
Il ground truth è quindi necessario come dogma per vericare la precisione e l'efcacia dei propri algoritmi: si assume che l'osservatore umano sia equo e infallibile.
Questo, come anticipato in 2.3, non è sempre vero, ed è necessario tener conto della
variabilità dell'osservazione umana quando si confrontano i risultati al ground truth.
Per esempio, se le dimensioni del bounding box realizzate da due osservatori umani
variano del 5%, la dierenza del 5% tra i risultati del tracker e il ground truth è
probabilmente insignicante.
List et al [7] ha compiuto un interessante studio sulla variabilità di più osservazioni contemporanee, all'interno del progetto CAViAR (si veda 1.2.5). Le principali
attività osservate sono costituite da alcune persone che vagano o camminano, più un
combattimento simulato tra due ricercatori. La sequenza inoltre include alcuni casi
dicili, come persone praticamente ferme, persone in situazioni ambigue e piccoli
soggetti in regioni scure sul fondo della scena principale. Nel compiere il labelling,
gli osservatori conoscevano la disposizione dei mobili, quali i punti di informazione,
le scrivanie, i divani etc.
Sono stati utilizzati 3 livelli per riportare e categorizzare il labelling a mano:
1. Spatial Tracking: la descrizione geometrica degli individui in movimento, il
matching degli oggetti e dei gruppi, le posizioni del bounding box.
2. Temporal Tracking: le dierenze a tempo di frame di un determinato soggetto
e dei suoi comportamenti all'interno del contesto.
3. Human Behaviour Labelling: l'assegnazione di un'ipotesi di comportamento
del soggetto o del gruppo, che consiste di quattro etichette: movimento, ruolo,
situazione e comportamento generico.
40
Il framework ViSOR
Gli esperimenti all'interno dell'object detection al primo livello portano alla conclusione che il riconoscimento è accurato al 95% circa.
E' da notare che il terzo
osservatore ha contrassegnato generalmente il 20% in più rispetto al primo osservatore, e il secondo un sorprendente 80% rispetto a quest'ultimo, poiché il secondo ha
riconosciuto come soggetti anche persone praticamente ferme. La ragione di queste ampie dierenze risiede nella diversa opinione che gli osservatori umani hanno
riguardo all'importanza dei soggetti.
Per quanto riguarda i gruppi, deniti univocamente grazie al requisito di almeno
90% di overlap, non ci sono grosse divergenze. Gli errori di posizione si limitano a
1-2 pixels (2-3 per i gruppi), quelli di dimensione al 3% (4%-8% per i gruppi), quindi
entro valori più che accettabili.
Per i risultati del temporal tracking, è stato registrato quanto velocemente gli
osservatori notavano gli oggetti e i gruppi dopo la loro apparizione iniziale, quanto
bene erano in accordo sul tempo di uscita, e quanto spesso durante il tracking perdevano le tracce di questi. Per l'apparizione degli oggetti il risultato è stato che gli
osservatori li hanno validati entro i 2 frame (entro i 5 per i gruppi). Per l'uscita le
dierenze non hanno raggiunto il singolo frame; la perdita delle tracce dei soggetti
è risultata inferiore al 3% per gli individui e ad un solido 0% per i gruppi.
Inne, per quanto riguarda l'analisi del comportamento, le dierenze principali
risiedono nella denizione del movimento e nel confronto dei ruoli; questo è dovuto
al fatto che gli osservatori sono inuenzati dalla loro personale interpretazione
di cosa accade nella scena.
In alcuni casi, purtroppo, queste interpretazioni sono
molto diverse o ambigue. Nel caso di situazioni disambigue, i risultati confermano
un'interpretazione concorde nell'80% dei casi circa, e in alcuni casi al 100%.
Per i gruppi, invece, non vi è questa variabilità e i risultati sono consistenti. Nel
caso dei due ricercatori che combattono, ad esempio, tutti gli osservatori non hanno
avuti dubbi sul ruolo. Forse questo è dovuto al fatto che può essere più dicile per
un osservatore decidere se un individuo sta muovendosi o meno (o sta coprendo quel
ruolo) piuttosto che identicare con una certa sicurezza il proposito dell'individuo
all'interno del gruppo (relazionato quindi ad altri).
2.4 Livello semantico: ViSOR
2.4
41
Livello semantico: ViSOR
ViSOR (Video Surveillance Online Repository ) è una collezione condivisa di video
relativi alla sorveglianza e delle rispettive annotazioni, sviluppata presso l'ImageLab
[8] al Dipartimento di Ingegneria dell'Informazione all'Università di Modena e Reggio
Emilia.
ViSOR fa parte del progetto europeo VIDIVIDEO, il cui obiettivo è la
ricerca semantica sui video, sulla base di un vasto thesaurus di concetti audio-visivi
di apprendimento delle macchine.
Figura 2.5: ViSOR homepage
2.4.1 Obiettivi
Lo scopo di ViSOR è di raccogliere e rendere pubblicamente disponibile questa
collezione di video alla comunità di ricercatori che si occupano di video sorveglianza
e della ricerca dei video (video retrieval ).
Inoltre, vi è il proposito di scambiare,
confrontare e discutere risultati su un'ampio spettro di problemi attraverso un forum
creato appositamente. E' il cuore dell'ambiente descritto in questa tesi; il core di
ViSOR si occupa quindi delle parti evidenziate in g. 2.6.
42
Il framework ViSOR
Figura 2.6: Visione d'insieme: portale ViSOR
Poiché questa condivisione di video potrebbe portare anche alla divulgazione di
informazioni personali, si adotta una politica che garantisce il rispetto della privacy:
•
L'accesso è protetto e consentito solo ad utenti registrati
•
L'abilitazione di un account è controllata da un moderatore
•
Alcuni contenuti video sono modicati per eliminare informazioni utili all'identicazione (un esempio è l'oscuramento dei volti)
•
le responsabilità sono a carico del proprietario del video (inteso come colui che
lo carica sul repository)
La collezione creata sarà strutturata in modo da contenere sia scenari outdoor che
indoor, come strade, parchi pubblici, uci e campus universitari, nell'arco di tutte
le 24 ore del giorno, spesso con viste dierenti: questo permette potenzialmente di
inviare richieste come trovami tutti i video che contengono una persona che stanno
correndo dalle 7 alle 8 pomeridiane, oppure trovami tutte le sequenze video in
questa determinata area in cui una due persone sono ferme a discutere.
Insieme ai video, il progetto contiene annotazioni di metadati, generati sia manualmente (ovvero dati di ground truth) che automaticamente.
In questo modo,
2.4 Livello semantico: ViSOR
43
gli utenti che interagiscono con il repository possono eettuare sui propri algoritmi
valutazioni di prestazione e confronto con altre attività concorrenti.
2.4.2 Denizione dell'ontologia
Per assicurare l'interoperabilità tra gli utenti è stato denito un formato di annotazione standard insieme alla struttura della conoscenza base. La conoscenza che
può essere estratta dalle sequenze di videosorveglianza è costruita come una semplice
lista di concetti: questa tassonomia è una forma base di ontologia dove i concetti
sono gerarchicamente strutturati ed univocamente deniti. E' ovviamente possibile
arricchire dinamicamente questa lista, sotto la supervisione del manager del progetto, per permettere la crescita di questa struttura senza pregiudicarne l'omogeneità
e l'unicità dei componenti, evitando così la nascita di sinonimi e ambiguità.
Figura 2.7: Ricerca e risultati sui concetti video in ViSOR
La tassonomia denita per classicare forme, oggetti ed eventi signicativi all'interno di un ambiente di videosorveglianza è rappresentata visualmente in g. 2.8.
44
Il framework ViSOR
In essa, un concetto può rappresentare diverse cose; per esempio, può descrivere il
Figura 2.8: Tassonomia gerarchica delle categorie sui concetti video
contesto del video (località, orari, tempo etc..), un'oggetto sico caratteristico o presente nella scena (persone, animali, edici), oppure un'azione/evento individuabile
(cadute, esplosioni, interazioni).
Allo stesso tempo, i concetti deniti possono essere dierentemente relazionati
nello spazio del tempo. Perciò, si introduce anche un'altra tassonomia basata sul
tempo: un concetto può infatti essere correlato all'intero video (ad esempio per la
località o le caratteristiche della camera), ad un intervallo temporale (una persona
nella scena), o ad un singolo frame/istante (un'esplosione o l'entrata di una persona
nella scena).
Una prima lista di concetti è stata ottenuta come un sottoinsieme di due diversi
set già predeniti, rispettivamente la 101-concept list di UvA [9] e LSCOM [10].
Siccome queste liste sono state denite per contesti generici, solo una piccola parte
può essere eletta per servire la videosorveglianza.
In più, le liste UvA e LSCOM
sono basate solamente sui key-frame e non bastano a descrivere attività ed eventi.
In altre parole, non si è interessati solo a concetti individuabili analizzando separatamente ogni keyframe, ma anche ad eventi/azioni che richiedono un'analisi
temporale. La denizione di evento è estremamente importante nel caratterizzare
i contenuti del video: un evento è tipicamente avviato da qualche cambiamento di
2.4 Livello semantico: ViSOR
45
stato catturato all'interno della sequenza, come l'inizio del movimento di un oggetto. L'abilità di ragionare ad eventi è un passaggio dicile ma necessario verso la
comprensione video.
Gli oggetti sono qualsiasi entità denita e individuata in un intervallo di tempo
e rappresentata da un set di caratteristiche visive che mutano all'interno di questi,
mentre gli eventi sono fatti vericati da un set di regole, condizioni e relazioni.
L'ontologia di ViSOR è strutturata in diverse classi, ognuna delle quali appartiene ad una delle categorie riportate in g. 2.8. Un'annotazione video può essere
considerata come un set di istanze di queste classi; ad ogni istanza viene poi assegnata una lista di attributi relativi. Alcuni di questi descrivono direttamente la natura
della classe stanziata, ovvero sono connessi a quell'entità con una relazione IS-A
(ad esempio informazioni come uomo, donna, bambino etc possono essere assegnati
ad istanze della classe Person ). Altri attributi, invece, descrivono alcune caratteristiche dell'entità, in relazione HAS-A (come il contorno, il colore e la posizione di
un istanza FixedObject ).
Attualmente il formato di annotazione utilizzato è il formato di ViPER, ed è in
sviluppo un modulo MPEG-7.
ViPER denisce le regole con le quali le persone possono annotare i propri
video, denendo quindi il livello di sintassi appropriato per un formato comune.
Ogni traccia che sarà annotata diverrà un descrittore. I descrittori sono di diversi
tipi (vedi g.2.1), ed ognuno di questi, come si è visto, possiede diversi concetti, che
possono essere dinamici o statici. Qual'è la dierenza tra questi ultimi due??
46
Il framework ViSOR
Descriptor Name
Category
Viper Type
Person
PhysicalObject
Object
BodyPart
PhysicalObject
Object
GroupOfPeople
PhysicalObject
Object
FixedObject
PhysicalObject
Object
MobileObject
PhysicalObject
Object
ActionByAPerson
Action/Event
Object
ActionByPeople
Action/Event
Object
ObjectEvent
Action/Event
Object
Event
Action/Event
Object
Video
Context
Content
Clip
Context
Content
Location
Context
Content
Tabella 2.1: Descrittori di ViSOR
Is-a Concepts
Name
Building
House
Oce
Windows
Denition
Type
Dynamic
Shots of an exterior of
bvalue
False
...
bvalue
False
...
bvalue
False
...
bvalue
False
Type
Dynamic
bbox
True
2D Position of the gravity center
point
True
Contour of the object
polygon
True
a building [ID LSCOM 226]
...
Has-a Concepts
Name
Position_BBOX
PositionBar
Contour
Denition
Tabella 2.2: Un estratto della concept list del descrittore FixedObject
2.5 Livello sintattico: ViPER
47
I concetti statici hanno un unico valore, che corrisponde ad una sua caratteristica
intrinseca (in relazione IS-A, già citata precedentemente): questa è invariante nel
tempo, e indissolubilmente legata al descrittore.
I concetti dinamici, invece, rappresentano caratteristiche del descrittore che cambiano nel tempo, come la forma, il contorno, la traiettoria, la velocità, etc...; la relazione che contraddistingue i concetti dinamici è quindi quella HAS-A. I concetti
dinamici possiedono perciò una lista di valori, ognuno di questi associato ad un certo
intervallo temporale.
Nella tabella 2.2 è ad esempio possibile osservare i concetti dinamici e statici
deniti per il descrittore FixedObject.
2.5
Livello sintattico: ViPER
ViPER (Video Performance Evaluation Resource ) è un toolkit di programmi Java,
sviluppato dal Language and Media Processing Laboratory (LAMP [5]) dell'università del Maryland, che permette la valutazione di algoritmi per analisi video confrontando l'output generato da un qualche programma con una versione ideale della
verità (Truth ).
2.5.1 Perchè utilizzare ViPER
ViPER soddisfa i seguenti requisiti:
•
la lista dei concetti è personalizzabile, ma allo stesso tempo ben denita;
•
è largamente diuso , evitando così le dicoltà di condividere un nuovo for-
2
mato specico;
•
è intuitivo e semplice da imparare e utilizzare;
•
è self containing, in quanto la descrizione dei dati di annotazione è inclusa
assieme ai dati;
2 E' utilizzato ad esempio da ETISEO (si veda 1.2.3) e VACE (si veda 1.2.1)
48
Il framework ViSOR
•
è possibile realizzare un'annotazione su ogni singolo frame;
•
contiene un sistema di annotazione general-purpose e imparziale;
•
è open source.
Figura 2.9: ViPER-GT
Per assicurare che i ricercatori possano ripetere e vericare le valutazioni, ViPER
mette a disposizione:
1. Un metodo standard per rappresentare i risultati delle analisi e i metadati
del ground truth.
In questo modo si è in grado di pubblicare questi dati,
permettendo alle parti interessate di eseguire valutazioni anche con altri tool,
o di confrontare i diversi algoritmi.
2. Un sistema per congurare la valutazione. ViPER utilizza il tipo di le EPF
(Evaluation Parameter File) contenente i parametri per la valutazione, in
combinazione con un le di tipo PR (PRoperties) contenente un elenco di
proprietà.
2.5 Livello sintattico: ViPER
49
3. Uno strumento per eettuare la valutazione, ViPER-PE.
4. Un modo signicativo di presentare i risultati.
2.5.2 Strumenti di interazione con il formato
I tool fondamentali del toolkit ViPER sono:
•
ViPER-GT: Ground Truth Authoring Tool, ore all'utente un'interfaccia graca Java per il processo di generazione di metadati ground truth. Permette
l'annotazione, frame dopo frame, di video multimediali tramite metadati che
vengono salvati nel formato proprietario di ViPER (XGTF, ma anche XML).
Funziona anche da editor per i metadati stessi.
•
ViPER-PE: Performance Evaluation Tool, é un tool Java a linea di comando
per la valutazione delle prestazioni. Ore una varietà di metriche per eseguire
comparazioni tra le di metadati video oppure per confrontare un set di dati
risultanti da un'elaborazione automatica con i dati ground truth.
Fornisce
metriche precise e ricorsive, valutazioni sia su ogni singolo frame sia basate
sugli oggetti, e un meccanismo di ltraggio per valutare un subset di dati
rilevanti. Descritto in modo più attento nel cap. 6.
2.5.3 Schema generale del formato
Possiamo riassumere il formato di annotazione e i suoi componenti per punti.
•
Un Descrittore
è un record che descrive uno o più elementi del video
è un oggetto che si conforma ad uno schema denito dall'utente
è composto da diversi attributi con nome e tipo associato
ha un unico ID e un periodo associato nel quale è valido
è uno di questi tre tipi: File, Content, Object
50
Il framework ViSOR
∗
File:
esso si riferisce a dati che rappresentano il video nella sua
interezza, oppure altri metadati riguardanti quest'ultimo, come il
formato del le e il framerate.
∗
Content: istanze di questo tipo possono occorrere solo una alla volta,
e non possono cambiare durante il corso della propria vita.
∗
Object: si riferisce ad un oggetto che può avere diverse istanze in
qualunque istante di tempo, e queste istanze possono cambiare nel
tempo. Ogni istanza ha il proprio periodo di vita (time span ) e un
set di attributi.
•
Un attributo
Ogni descrittore ha diversi attributi.
Un attributo può essere uno dei seguenti tipi:
∗
svalue : stringa di caratteri
∗
lvalue : valore numerato - una delle possibilità denite dall'utente
∗
bbox, polygon, etc. - uno tra i vari tipi di dato riferiti alle forme
∗
reference : riferimento ad un altro descrittore
D'ora in poi, gli attributi verrano deniti concetti.
Il formato viene salvato in XML, che rappresenta ormai da tempo il metalinguaggio più diuso e oggettivamente più ecace per questo tipo di utilizzo.
Il le è formato principalmente da due parti:
•
cong, dove sono deniti i descrittori e i loro attributi
•
data, dove vi sono le istanze dei descrittori per uno o più le
Qui di seguito viene riportato un semplice esempio di un le di ViPER:
" 1.0 " e n c o d i n g=" UTF -8 " ?>
" http: // lamp . cfar . umd . edu / viper #"
/ viperdata #">
1
<? xml
2
<v i p e r
v e r s i o n=
x m l n s=
" http: // lamp . cfar . umd . edu
x m l n s : d a t a=
2.5 Livello sintattico: ViPER
3
4
< c o n f i g>
<d e s c r i p t o r
5
" Information "
" false "
name=
<a t t r i b u t e
6
d y n a m i c=
9
10
</ a t t r i b u t e>
11
<a t t r i b u t e
12
" false "
d y n a m i c=
<d e s c r i p t o r
" fvalue " />
t y p e=
" Person " t y p e=" OBJECT ">
" HeadPosition " t y p e=" point " d y n a m i c=" true " />
name=" HeadEllipse " t y p e=" ellipse " d y n a m i c=" true " />
name=
<a t t r i b u t e
15
<a t t r i b u t e
name=
16
</ d e s c r i p t o r>
17
</ c o n f i g>
18
<d a t a>
" cam3_120405A1 . mpg ">
" Information ">
< a t t r i b u t e name=" FRAMERATE ">
<d a t a : f v a l u e
v a l u e=" 1.0 " />
<s o u r c e f i l e
20
<f i l e
21
22
23
f i l e n a m e=
"0"
i d=
name=
</ a t t r i b u t e>
24
</ f i l e >
25
<o b j e c t
26
" 77 :79 " i d="0" name=" Person ">
" HeadPosition ">
< d a t a : p o i n t f r a m e s p a n=" 77 :77 " x="7" y=" 232 " />
< d a t a : p o i n t f r a m e s p a n=" 78 :78 " x=" 11 " y=" 244 " />
< d a t a : p o i n t f r a m e s p a n=" 79 :79 " x=" 15 " y=" 244 " />
< d a t a : p o i n t f r a m e s p a n=" 80 :80 " x=" 29 " y=" 255 " />
f r a m e s p a n=
<a t t r i b u t e
27
28
29
30
name=
31
</ a t t r i b u t e>
32
<a t t r i b u t e
" HeadEllipse ">
f r a m e s p a n=" 77 :77 " h e i g h t=" 23 "
r o t a t i o n=" 97 " w i d t h=" 113 " x="7" y=" 232 " />
<d a t a : e l l i p s e
f r a m e s p a n=" 78 :78 " h e i g h t=" 29 "
r o t a t i o n=" 99 " w i d t h=" 119 " x=" 10 " y=" 242 " />
<d a t a : e l l i p s e
f r a m e s p a n=" 79 :79 " h e i g h t=" 34 "
r o t a t i o n=" 98 " w i d t h=" 114 " x=" 11 " y=" 244 " />
33
name=
<d a t a : e l l i p s e
34
35
36
37
38
39
</ a t t r i b u t e>
40
</ o b j e c t>
41
<o b j e c t
42
. . .
" 86 :94 "
f r a m e s p a n=
43
</ o b j e c t>
44
</ s o u r c e f i l e >
46
" FRAMERATE "
name=
</ d e s c r i p t o r>
14
45
" lvalue ">
t y p e=
− p o s s i b l e s>
< d a t a : l v a l u e −enum v a l u e=" SEQUENCE " />
< d a t a : l v a l u e −enum v a l u e=" FRAMES " />
</ d a t a : l v a l u e − p o s s i b l e s>
7
19
" FILE ">
" SOURCETYPE "
t y p e=
name=
<d a t a : l v a l u e
8
13
51
"1"
i d=
" Person ">
name=
</ d a t a>
</ v i p e r>
Analizzandolo brevemente, si può notare come all'interno di questo le vi siano
due istanze di descrittori della classe Person, descritti attraverso due concetti
(deniti da ViPER come attributi), il baricentro della testa e la sua forma racchiusa
in un ellisse; in altre parole, vengono annotate due persone in movimento.
52
Il framework ViSOR
Capitolo 3
Metriche di valutazione
Le metriche di valutazione sono un'altra importante componente nella valutazione
delle prestazioni.
Figura 3.1: Visione d'insieme: metriche
Siccome un VCA
1
completo comprende più livelli semantici, la valutazione può
essere fatta su un determinato livello. Gli algoritmi che compiono solamente la segmentazione di oggetti in movimento, senza tracking attraverso frame multipli, può
1 Video Content Analysis, si veda al cap. 4
53
54
Metriche di valutazione
essere valutata esclusivamente in base ai pixel. Gli algoritmi che al contrario emettono allarmi (ad esempio al riconoscimento di macchine) possono essere valutati solo
per la loro classicazione, e non per la qualità della loro segmentazione. Perciò, per
prima cosa è necessario denire cosa deve essere valutato per ogni livello semantico.
Per ogni livello sono quindi richieste dierenti metriche.
3.1
I livelli semantici
I livelli semantici deniti per la valutazione sono:
1. Pixel-based: segmentazione degli oggetti in movimento e del background statico
2. Object-based per frame: caratteristiche dell'oggetto all'interno di quel determinato frame
3. Object-based over object life time: classicazione e caratteristiche dell'oggetto in base al suo tempo di vita
4. Behaviour of objects: comportamento degli oggetti e analisi degli eventi
E' possibile raggruppare questi livelli in tre macro-categorie:
(valutazione sui pixel),
Pixel-Based
Frame-Based (valutazione sui frame) e Object-Based
(valutazione sugli oggetti).
3.2
Pixel-Based
Il primo passo da compiere per ottenere una valutazione delle performance è utilizzare metodi statistici standard sul confronto tra due popolazioni di valori. A livello
di pixel la valutazione viene eettuata per ottenere la qualità della segmentazione
degli oggetti e del background statico.
Si sfruttano quindi i seguenti concetti:
3.2 Pixel-Based
•
55
True Positive (TP) : numero di pixel correttamente individuati, ovvero quei
pixel appartenenti all'output del sistema che a quel determinato frame hanno
una corrispondenza (basata su colore o luminosità, ad esempio) con il rispettivo
pixel appartenente ad un oggetto del ground truth
•
False Positive (FP) : numero di pixel individuati come appartenenti ad oggetti
dal sistema, ma che non presentano un riscontro nel ground truth
•
True Negative (TN) : numero di pixel su cui sia il sistema che il ground truth
considerano come pixel di background (quindi non oggetti)
•
False Negative (FN) : numero di pixel non individuati dal sistema come oggetti
ma che sono presenti nel ground truth
Tali metriche sono utili perché sono la base per stimare l'indice relativo alla specicità e alla sensibilità e per la costruzione di curve ROC. Mentre i veri negativi
non vengono praticamente calcolati poiché lo spettro di questi è troppo ampio, i
falsi negativi fanno capire al ricercatore che il proprio algoritmo (o sistema) non
riconosce pixel (od oggetti) classicati dal ground truth.
Da queste metriche, infatti, è possibile ricavare i seguenti indici:
•
Tracker Detection Rate (TRDR)
•
False Alarm Rate (FAR)
•
Detection Rate (Recall)
•
Specicity
•
Accuracy
•
Positive Prediction (Precision)
=
=
=
=
=
TP
T GT
FP
TP + FP
TP
TP + FN
TN
FP + TN
TP + TN
TF
=
TP
TP + FP
56
Metriche di valutazione
•
Negative Prediction
=
TN
FN + TN
•
False Negative Rate
=
FN
TN + TP
•
False Positive Rate
=
FP
FP + TN
dove TGT rappresenta il numero totale di pixel (frame per il livello successivo) per
gli oggetti del ground truth e TF il numero totale di pixel (frame) dell'intera sequenza.
La Detection Rate o Recall viene spesso denitiva anche come Sensibilità ed è
il rapporto tra il numero di pixel correttamente individuati, ovvero i true positive, e
il totale dei pixel del ground truth, cioè la somma tra true positive e false negative;
è dunque la probabilità che un pixel da individuare venga eettivamente individuato.
La Specicità viene invece calcolata come il numero di pixel che non devono essere
individuati (true negative) divisi per il totale di quelli che realmente non devono
esserlo (includendo quindi anche i falsi positivi). In altre parole, da un punto di vista statistico è la probabilità che un pixel che non ha un corrispondente nel ground
truth non venga individuato come pixel di un oggetto da parte del sistema.
La Positive Prediction (più comunemente denita come Precision ) rappresenta esattamente la precisione del sistema, ovvero quanti pixel vengono individuati correttamente sui tutti i pixel.
In letteratura, non sono ancora state denite delle metriche standard a livello di
pixel.
Zhang [11] ha elencato vari metodi di valutazione per la segmentazione delle immagini, sia empirici che analitici (questi ultimi, ad esempio, considerano i principi,
i requisiti e la complessità degli algoritmi).
Correia et al. [12] propone metriche per la valutazione dei metodi di segmentazione di un'immagine con l'obiettivo di creare misure obiettive che corrispondessero
3.3 Frame-Based
57
alla valutazione di un osservatore umano. Gli autori concludono aermando che la
valutazione della segmentazione degli oggetti in un video è un problema per il quale
non è ancora stata trovata una soluzione in letteratura.
Erdem et al. [13] presenta tre metriche di valutazione che non richiedono ground
truth segmentato. Loro suggeriscono di utilizzare sia la dierenza spaziale sul colore,
sul moto e sui contorni dell'immagine segmentata che la dierenza temporale dell'istogramma dei colori dell'oggetto nel frame corrente rispetto ai frame precedenti.
Gli autori sostengono che, sotto determinate assunzioni, il processo di annotazione
ground truth (che richiede un'enorme quantità di tempo) non è necessario. Tuttavia, quando si guarda al di là della segmentazione, il ground va comunque generato
manualmente.
Prati et al. [14] ha analizzato vari algoritmi di segmentazione delle ombre, modicando le metriche Detection Rate e False Alarm Rate e ridenendole come Shadow
Detection Rate e Shadow Discrimination Rate. Successivamente viene fatto un confronto tra vari algoritmi a livello di pixel, comparandoli frame per frame. Purtroppo,
il risultato nale sulle ombre a livello di oggetti non è considerato.
Oberti et al. [15] propone l'utilizzo della curva Receiver Operating Characteristics
(ROC). Loro hanno fatto notare che le curve ROC ottenute possono essere sfruttate
per estrarre informazioni utili sulle performance del sistema, quando avvengono
cambiamenti alle condizioni della scena.
Le curve ROC possono essere utilizzate
anche per trovare il punto di lavoro ottimale per un set di parametri.
Chalidabhongse et al. [16] propone come metrica la Perturbation Detection Rate
(PDR) che trae alcuni vantaggi dall'analisi della curve ROC, per il background sub-
straction, ovvero ottenendo la segmentazione del moto grazie alla sottrazione tra
l'immagine e il background calcolato no a quel momento.
3.3
Frame-Based
Le metriche basate su frame sono utilizzate per misurare le performance di un sistema di videosorveglianza su ogni frame della sequenza video. Queste metriche non
tengono conto delle risposte del sistema che riguardano il preservare l'identità di un
oggetto durante il suo periodo di vita.
Ogni frame viene testato individualmente per osservare se il numero di oggetti e
le loro caratteristiche (dimensione e posizionamento) corrispondono ai dati relativi
58
Metriche di valutazione
al ground truth per quel particolare frame. Il risultato viene poi ottenuto prendendo
la media sull'intera sequenza delle statistiche acquisite da ogni frame. Chiaramente,
questo rappresenta un approccio bottom-up, ovvero dal basso verso l'alto.
Al livello frame valgono le seguenti considerazioni:
•
I True Positive sono il numero di frames dove sia il risultato del ground truth
che quello del sistema concordano sulla presenza di uno o più oggetti, e il
bounding box di almeno uno o più di questi ha una corrispondenza tra i due
risultati (parziale o completa, dipende dalla soglia).
•
I False Positive sono il numero di frames dove i risultati del sistema contengono
almeno un oggetto, mentre quelli ground truth non ne contengono nessuno
oppure nessuno degli oggetti del GT cade all'interno del bounding box di
ogni oggetto del sistema.
•
I True Negative sono il numero di frame dove sia i risultati del ground truth
che del sistema concordano sul fatto che non vi sono oggetti presenti.
•
I False Negative sono invece rappresentati dal numero di frame dove il ground
truth contiene almeno un oggetto, mentre il sistema non ne contiene nessuno
oppure nessuno degli oggetti del sistema trova delle corrispondenze con uno
degli oggetti presenti nel GT.
Valgono inoltre gli stessi indici riportati in 3.2.
Mariano et al. [17] ha presentato sette metriche per la valutazione degli algoritmi
di object detection confrontando le proprietà dei bounding box degli oggetti. In tutti
i modi, gli autori hanno già aggiunto che le metriche proposte vanno estese per gli
algoritmi che monitorano gli oggetti nel tempo e nello spazio.
Nascimento e Marques [18] propongono nuove metriche che coprono anche lo split
e il merge di più oggetti, ovvero tengono conto della scissione e della fusione di
quest'ultimi. Oltre a queste, sfruttano anche le metriche comuni sopra citate, come
la false alarm rate e la detection rate.
3.4 Object-Based
3.4
59
Object-Based
La valutazione basata sugli oggetti calcola le metriche fondandosi sul completo
periodo di vita e sulla traettoria di ogni traccia del sistema e del ground truth.
Needham e Boyle [19] hanno presentato alcuni metodi di valutazione per il po-
sitional tracking (le traiettorie degli oggetti): quanto bene può un algoritmo determinare la posizione di quel dato oggetto?
Loro hanno proposto metriche sulla
distanza tra due traettorie, sia nel dominio spaziale che in quello temporale, e
hanno denito una misura per l'area tra le queste ultime due. Tuttavia, gli autori
considerano solo traettorie di uguale lunghezza. In un sistema che lavora con grandi
variazioni di dati in input (ad esempio come ombre molto lunghe e larghe a causa
del sorgere del sole o i riessi in un giorno di pioggia), la lunghezza dell'intervallo di
tempo degli oggetti monitorati può non corrispondere alla lunghezza degli intervalli
del GT.
Rossi e Bozzoli [20] hanno presentato un semplice metodo di valutazione delle
prestazioni per il loro sistema di tracking confrontando quanti oggetti attraversano
una certa retta. Questa metodologia è molto semplice e richiede piccoli sforzi per la
creazione del GT. Pero', purtroppo, i risultati sono intrisecamente insucienti per
una valutazione generale.
Xu e Ellis [21] hanno presentato un approccio che può gestire con il grouping
(la presenza di gruppi) e le occlusioni parziali. L'approccio non richiede GT e non
può essere utilizzato per confrontrare più algoritmi. La prima misura è l'errore di
tracking tra il valore della posizione corrente e quello predetto (dai frame precedenti),
la seconda è la path coherence.
Pingali e Segen [22] propongono due metodi, presentando le metriche per la
misura delle cardinalità, la misura dell'accuratezza temporale e quella spaziale. Il
primo metodo richiede un'estesa disponibilità del GT, mentre il secondo metodo è
scalabile in base al dettaglio di questi. Per descrivere la locazione degli oggetti in
determinati istanti vengono utilizzati gli eventi.
Più eventi sono annotati, più il
ground truth è accurato. Gli autori hanno usato dei segmenti lineari per annotare
questi eventi sul set di video stabilito, tramite uno strumento dotato di interfaccia
graca.
Black, Ellis e Rosin [1] hanno proposto tre metriche per confrontare le traiettorie
degli oggetti del GT con quelle individuate dal sistema. La metrica path coherence
60
Metriche di valutazione
assume che la traiettoria dovrebbe essere omogenea alle condizioni di direzione
e moto.
La metrica color coherence misura la distanza media tra gli istogrammi
dell'oggetto tracciato.
tivi dell'immagine.
Si suppone che la distanza sia costante tra frame consecu-
Per lo più, la metrica shape coherence da un'indicazione del
bounding box atteso per quello oggetto, confrontato poi con i bounding box trovati.
Tramite queste tre metriche è possibile evitare l'utilizzo del GT, una volta assunte
determinate ipotesi.
Analizzando livelli semantici più alti (come la classicazione di oggetti e l'analisi
di comportamenti ed eventi), pare che la questione diventi più semplice per quanto
riguarda il confronto tra i risultati del sistema VCA e quelli del GT. Ancora però non
è chiaro come presentare i risultati delle performance. In più, non è chiaro neanche
come devono essere gestiti i periodi di tempo che si riferiscono alla classicazione
dei comportamenti.
Vari ricercatori hanno proposto metriche simili tra loro, più o meno accurate;
tra queste, una delle più dettagliate è quella proposta da Yin et al [23]. Yin parte
dal concetto di frame-based e passa a quello object-based pensando che TP, FP e
FN non vanno stimati in termini di campioni di frame, ma devono essere misurati
considerando le tracce (usando quindi il concetto di overlap temporale ) per essere
più completi e precisi.
Per le metriche introdotte da Yin, è necessaria una premessa sul motion tracking.
Il motion tracking è la stima della posizione e dell'estensione spaziale degli oggetti
che non appartengono allo sfondo per ogni frame di una sequenza video. Il risultato
del tracking è un set di tracce
Tj ,
con
j = 1 . . . M,
per tutti gli M oggetti in
movimento della scena.
Una traccia
Tj
è denita come:
Tj
= {
xij , Bij }, i = 1 . . . N ,
dove
xij
e
Bij
sono
rispettivamente il centro e l'estensione spaziale (solitamente denita come bounding
box e rappresentata da esso) dell'oggetto
j
per il frame
i
ed
N
è il numero di frame
totali.
Prima di tutto è importante denire i concetti di overlap (sovrapposizione) spaziale e temporale tra le tracce, i quali sono richiesti per quanticare il livello di
3.4 Object-Based
61
Figura 3.2: Overlap spaziale: intersezione e unione
matching (ovvero di corrispondenza) tra le tracce del Ground Truth (denito GT)
e quelle del Sistema (ST), sia nello spazio che nel tempo.
L'overlap spaziale è denito come il livello di sovrapposizione A(GTi ,
tracce
GTi
e
STj
in un frame specico
STj )
tra le
k.
T
Area(GTik STjk )
S
A(GTik , STjk ) =
Area(GTik STjk )
E' stata denita anche una variabile binaria
O(GTi , STj ),
basata su una soglia
Tov ,
impostata arbitrariamente.
(
O(GTik , STjk ) =
L'overlap temporale
T O(GTi , STj )
1
0
se
se
A(GTik , STjk ) > Tov
A(GTik , STjk ) ≤ Tov
è un valore che indica la sovrapposizione nel-
l'intervallo dei frame tra la traccia del sistema
(
T O(GTi , STj ) =
dove
T OS
j
e la traccia GT
i:
T OE − T OS , T OE > T OS
0, T OE ≤ T OS
è il massimo tra gli indici del primo frame delle due tracce, e
T OE
è
62
Metriche di valutazione
il minimo tra quelli dell'ultimo frame.
Come criterio per l'associazione spazio-temporale si utilizza la seguente condizione:
T
Length(Area(GTi STj )
S
> T Rov
Length(Area(GTi STj )
Se questa condizione è vera, è possibile associare le due tracce utilizzate e iniziare
la valutazione delle performance della traccia di sistema.
Yin denisce i True Positive anche come Correct detected track (CDT) ed aerma che una traccia GT è stata correttamente trovata se sono soddisfatte due
condizioni:
1. L'overlap temporale tra la traccia
i
del GT e la traccia
j
del sistema è più
T Rov
T
Length(Area(GTi STj )
≥ T Rov
Length(Area(GTi )
grande di un soglia predenita chiamata
2. Anche l'overlap spaziale tra la traccia
essere suciente
N
X
j
del sistema e quella
i
del GT deve
A(GTik , STjk )
k=1
N
≥ Tov
Gli errori di frammentazione sono considerati a parte; Se ogni traccia del GT è individuata correttamente (da una o più tracce del sistema), il numero di CDT equivale
al numero di tracce GT.
Sebbene per gli operatori umani sia facile riconoscere un falso allarme anche in
situazioni complesse, per un sistema automatico è molto più dicile.
I False Positive sono deniti anche come False Alarm Track (FAT) e si considera una traccia del sistema come falso allarme se quella traccia soddisfa almeno
una delle seguenti condizioni:
3.4 Object-Based
1. Una traccia
soglia
T Rov
63
j
del sistema non deve avere un overlap temporale più largo della
con qualunque traccia
i
del Ground Truth.
T
Length(Area(GTi STj )
< T Rov
Length(Area(STj )
2. Anche se ha una sovrapposizione temporale con la traccia
j
i
del GT, la traccia
del sistema non deve aver alcun overlap spaziale con una delle tracce GT.
N
X
A(GTik , STjk )
k=1
N
< Tov
La metrica FAT è importante perché è indica all'operatore che sistemi in cui la false
alarm rate non è prossima allo zero non devono essere considerati ecaci, indipendentemente dalla performance relativa al TP.
I False Negative sono rideniti anche come Track Detection Failure (TDF) ; si ritiene che una traccia del GT non viene considerata se si verica almeno una delle
seguenti condizioni:
1. Una traccia
i
del GT non ha un overlap temporale più largo di
qualunque delle tracce
j
T Rov
con una
del sistema
T
Length(Area(GTi STj )
< T Rov
Length(Area(GTi )
2. Una traccia
i del GT non ha un overlap spaziale suciente con nessuna traccia
del sistema (sebbene ne possa avere uno temporale)
N
X
A(GTik , STjk )
k=1
N
< Tov
Questa condizione è analoga alla seconda sui False Positive: è semplicemente
invertito il punto di vista.
L'overlap spaziale viene spesso denito controllando se il centroide della traccia
del sistema è all'interno dell'area della traccia del ground truth (come ad esempio
64
Metriche di valutazione
propone Bashir et al [24]). Varianti di questa denizione suggeriscono di considerare
non il 100% dell'area di quest'ultima traccia ma il 120%.
Oltre a ridenire le metriche classiche sotto il nuovo punto di vista delle tracce,
Yin aggiunge nuove misurazioni avanzate sul motion tracking.
La frammentazione delle tracce (Track Fragmentation, TF) viene introdotta da Yin
per indicare la mancanza di continuità di una traccia del sistema in riferimento ad
una traccia del GT.
Figura 3.3: Track Fragmentation
In condizioni ottimali, TF dovrebbe essere zero: ciò sta ad indicare che il sistema
riesce ad orire un tracking continuo e stabile rispetto al ground truth. Considerano
la possiblità di associazioni multiple tra le tracce del GT e quelle del sistema, la
frammentazione è misura dai risultati di corrispondenza delle tracce. Nell'esempio
riportato in g. 3.3 la traccia del sistema si interrompe due volte rispetto a quella
del ground truth: perciò TF è 2.
Per ottenerla, viene introdotta la metrica ID Change (IDC) che si propone di
contare il numero di cambiamenti di ID per ogni traccia
bounding box
Dj,k
dell'oggetto della traccia
del ground truth, dove
NDj,k
STj
STj .
Per ogni frame
può essere sovrapposto a
NDj,k
k,
il
aree
è dato da:
NDj,k =
X
O(Gik , Djk )
i
E' possibile stimare il numero totale di IDC in una sequenza video sommando i
j
IDC ottenuti grazie a singole associazioni e una determinata procedura.
Un'altra delle metriche introdotte da Yin è la latenza della traccia del sistema
(LT), che rappresenta il periodo temporale tra l'instante in cui un oggetto inizia ad
essere monitorato e la prima apparizione dell'oggetto.
La latenza ottimale ovvia-
mente dovrebbe essere zero; se invece è molto alta, signica che il sistema non è
3.4 Object-Based
65
Figura 3.4: ID Change
abbastanza sensibile da abilitare il tracking in tempo oppure che la detection non
è qualitativamente abbastanza elevata da innescare il tracking.
semplicemente come
LT =
frame iniziale di
STj −
La LT si calcola
frame iniziale di
GTi .
Anche la vicinanza della traccia (Closeness of Track (CT) ) viene considerata.
Essa è stimata come sequenza di overlap spaziali tra una traccia del sistema e la
traccia del GT associata a questa:
CT (GTi , STj ) = {A(GTi1 , STj1 ), . . . A(GTiN , STjN }
Da questa è possibile ricavare la vicinanza media e la deviazione standard su M
coppie per un'intera sequenza: esse sono rispettivamente denite CTM e CTD.
Oltre alla vicinanza anche la completezza della traccia (Completeness of Track (TC) )
viene analizzata: questa viene denita come il periodo di tempo in cui la traccia
del sistema si sovrappone temporalmente a quella del GT diviso il periodo di tempo
totale delle tracce GT. Una traccia risulta essere completa quando questo indice è
al 100%.
PN
TC =
O(GTik , STjk
number of GTi
k=1
Se per una traccia GT sono associate più tracce del sistema, si sceglie la traccia
con la maggior completezza; è poi possibile, analogamente alla vicinanza, ottenere
la completezza media (TCM) e la deviazione standard (TCD).
66
Metriche di valutazione
Inne, ricercando una metrica per l'accuratezza Yin introduce la Track Matching
Error (TME), che misura l'errore di posizione di una traccia del sistema.
Figura 3.5: Track Matching Error
N
X
T ME =
dove
Dist()
Dist(GT Cik , ST Cjk )
k=1
Length(GTi
T
STj )
è la distanza Euclidea tra il centroide della traccia GT (GTC) e quello
della traccia del sistema (STC). Yin ne denisce poi le versioni più complesse come
il Track Margin Error per l'intera sequenza (TMEMT) e la deviazione standard associata (TMEMTD).
Capitolo 4
Video Content Analysis
Un sistema di video content analysis è la parte del framework (si veda la g. 4.1)
che si occupa di acquisire i dati dai video, elaborare i frame, individuare e seguire
gli oggetti in movimento grazie a diverse tecniche di visione articiale. E' la parte
che cerca di sostituirsi all'occhio umano nella scene undestanding, ovvero la comprensione della scena.
Figura 4.1: Visione d'insieme: VCA
67
68
Video Content Analysis
Per identicare e riconoscere i comportamenti umani, le posture, o altri eventi
all'interno della sequenza il VCA utilizza a livello più alto algoritmi di classicazione
e analisi che sfruttano i risultati ottenuti al livello inferiore. Per valutare in modo
oggettivo la bontà di questi algoritmi è necessario acquisire l'output in un formato
comune al ground truth, con l'obiettivo nale di migliorare questi e il sistema che
vi ruota intorno.
4.1
Il sistema Sakbot
Il sistema di videosorveglianza su cui viene realizzata l'annotazione automatica è il
sistema Sakbot.
4.1.1 Descrizione del sistema
Sakbot (Statistic and Knowledge-based Object Tracker )[25] è un sistema di visione
articiale general-purpose che spazia dall'analisi del traco alla videosorveglianza,
sviluppato presso il laboratorio ImageLab [8] all'Università di Modena e Reggio
Emilia dal 2001. Questo sistema si occupa di compiere object detection e tracking
in situazioni complesse dove vi sono persone in movimento e veicoli, con dierenti
forme, velocità, traiettorie, presenza di strutture e possibili occlusioni.
Sakbot è quindi pensato per gestire diverse problematiche operazionali:
•
il cambiamento delle condizioni di luminosità a causa delle condizioni atmosferiche, delle ore del giorno e delle ombre;
•
i lievi ma frequenti movimenti della videocamera, dovuti alle vibrazioni e al
vento
•
i cambiamenti del background: il background della scena potrebbe cambiare
in base al fermarsi/ripartire di oggetti nella scena;
•
gli oggetti in movimento possono muoversi con qualsiasi traiettoria e velocità,
perciò non è possibile applicare l'approccio basato sulla frame dierence ,
metodo che calibra la dierenza sulla base della velocità dell'oggetto; allo
stesso tempo, non possono essere usati modelli di moto.
4.1 Il sistema Sakbot
69
Figura 4.2: Interfaccia graca di Sakbot
Per modellare una tecnica di background update veloce e robusta, è stato denito un approccio (chiamato S&KB background update) basato sull'adattamento
statistico del background, insieme con un aggiornamento del background selettivo e
knowlegde-based.
L'adattamento statistico fa i conti con l'apparente cambiamento della scena durante il tempo, mentre la selezione basata sulla conoscenza previene l'aggiornamento del background con i punti di foreground.
Grazie all'adattamento, il sistema riesce ad integrare oggetti che stazionano a
lungo (ad esempio, veicoli parcheggiati), o aree abbandonate da oggetti che prima
erano sullo sfondo; grazie alla selettività il sistema può discriminare oggetti con
movimento apparente da oggetti con movimento reale.
70
Video Content Analysis
Figura 4.3: Object detection e tracking in Sakbot
4.1.2 Principali caratteristiche
Le principali caratteristiche di Sakbot sono:
•
l'uso delle informazioni sul colore (invece dei soli livelli di grigio) durante l'intero processo di individuazione degli oggetti in movimento, la cui sensibilità
viene migliorata;
•
l'utilizzo di una funzione mediana con adattamento assicura alta reattività ai cambiamenti del background e buona accuratezza, anche se vengono
considerati solo pochi frame;
•
l'inclusione del feedback basato sulla conoscenza è progettato in modo che
non includa nel background parti di oggetti in movimento. Questo aggiornamento selettivo, basato sulla conoscenza dell'intero oggetto e non solo del
singolo pixel, abbatte i falsi positivi e previene possibili situazioni di stallo
nell'aggiornamento;
•
lo sfruttamento del modulo di individuazione delle ombre (shadow detection )
per il miglioramento sia della segmentazione che dell'aggiornamento del background;
4.1 Il sistema Sakbot
•
71
la denizione di un set di regole essibili che lavorano sugli oggetti in movimento per orire tracking e classicazione applicabili a scenari dierenti.
Nel tempo, ulteriori sviluppi hanno portato all'implementazione di una parte
della scene understanding, tramite la classicazione degli oggetti e l'analisi e la
comprensione delle posture e delle facce nel caso delle persone, e della gestione di
più camere di diverse tipologie.
L'architettura di Sakbot è illustrata a grandi linee in g.
4.4.
Essa non verrà
esaminata oltre perché in questo progetto non è stata modicata, ma solo analizzata per fare da base all'obiettivo nale. L'implementazione di questo sistema sarà
descritta nel cap. 5.6.1.
72
Video Content Analysis
Figura 4.4: Sakbot: architettura generale
Capitolo 5
Architettura sviluppata
Sakbot è il sistema di videosorveglianza su cui eettuare valutazioni delle prestazioni
degli algoritmi presenti e futuri: all'interno di esso è stata progettata e implementata l'architettura che si occupa di catturare, riorganizzare, trasformare ed esportare
l'output dei suddetti algoritmi, in modo tale che poi possa essere possibile confrontare il ground truth presente in ViSOR per un dato video con l'output appena
citato.
5.1
Gestione degli Eventi
Sakbot è composto da vari moduli, contenenti diverse classi, che interagiscono tra
loro in una gerarchia ben denita.
Per far comunicare gli oggetti generati dalle vari classi e soprattutto per permettere che le informazioni scalino la gerarchia ed arrivino no ai livelli superiori, si
utilizza un sistema di eventi parametrici che permette a chi li implementa di poter
mandare informazioni anche a chi non è visibile direttamente.
A livello di programmazione infatti ogni oggetto può passare parametri solo ad
oggetti che ha istanziato direttamente (ovvero gli) o che comunque discendono
da lui; non gli è possibile passare parametri all'oggetto da cui è stato istanziato
(padre).
La soluzione utilizzata in Sakbot prevede l'ausilio di classi che, sotto
opportuni accorgimenti, ricevano i parametri dall'oggetto interessato e li passino
alla classe che li cattura.
73
74
Architettura sviluppata
Nel sistema, un evento può corrispondere a qualunque cosa accada all'interno di
esso, dipendentemente dal contesto: l'apertura di un le, l'arrivo di un nuovo frame,
l'apparizione di un nuovo oggetto, etc...
Un evento quindi si tramuta in un messaggio inviato al gestore eventi. Sono
necessarie alcune condizioni perchè questo avvenga:
•
una classe che vuole generare un evento deve ereditare dalla classe base CE-
ventGenerator
•
la classe che cattura gli eventi deve derivare sia dalla classe CEventManager
che dalla classe CEventGenerator
Le classi CEventManager e CEventGenerator si occupano rispettivamente di
gestire e generare gli eventi tramite metodi appositamente deniti. Gli eventi possiedono un proprio identicatore (ID) e due parametri in cui vi risiedono i dati
passati.
I due parametri sono wParam, in cui come convenzione viene passato il
puntatore all'oggetto che ha generato l'evento e lParam, dove risiede un valore di
interesse dell'evento.
Le due funzioni principalmente utilizzate per la gestione degli eventi sono:
•
SendEvent(UINT idEvent, UINT wParam, UINT lParam) : metodo che permette la generazione di un evento
•
CaptureEvent (UINT idEvent, UINT wParam, UINT lParam) : metodo che
permette la cattura di un evento
I dati di interesse all'interno dei due parametri sono passati come UINT (unsigned
int) perchè non è possibile conoscere a priori (all'arrivo di un evento) la natura
di questi dati.
Spetterà allo sviluppatore eettuare il casting al tipo giusto per
riottenere i dati.
5.2
Da Sakbot a Visor
Per arrivare a comparare l'output del sistema con il ground truth di ViSOR per
un determinato video, è necessario compiere diversi passaggi, come estrapolare le
5.2 Da Sakbot a Visor
75
informazioni di Sakbot e riorganizzarle e catalogarle in modo tale che siano conformi
allo standard dell'ambiente utilizzato.
Come appena visto nel cap.
5.1, il modo più eciente per estrapolare il pro-
cessing di Sakbot è creare delle classi che si inseriscano in questo sottosistema
e catturino gli eventi mentre percorrono il sistema no alla radice. L'architettura
realizzata si inserisce quindi a anco della radice del sistema, in modo assolutamente trasparente, osservando e analizzando tutti i dati che passano all'interno degli
eventi, ottenuti facendo ereditare la classe dalle classi base CEventGenerator e CEventManager e utilizzando il metodo CaptureEvent(). Il punto in cui l'architettura
viene agganciata al sistema è illustrata in modo più dettagliato in g. 5.1.
Esaminando i contenuti nei cap. 2.4 e 4.1, appare evidente la profonda dierenza
che risiede nella struttura dei due sistemi.
5.2.1 Punto di vista temporale: Sakbot
Il video processing di Sakbot analizza il video frame per frame, e ad ogni frame
una lista di eventi viene generata (dipendentemente da cosa è accaduto):
•
l'apertura/chiusura di una sorgente video
•
l'inizio del processing
•
l'apparizione di una nuova traccia
•
l'arrivo di un nuovo frame
•
la lista di tracce presenti all'interno nel video in quel frame
•
...
Questi sono solo alcuni eventi che corrispondono ad avvenimenti accaduti all'interno del sistema. Nell'ottica di costruire l'architettura per questo progetto, è quindi
necessario che ad ogni frame si controllino questi eventi e si acquisiscano i dati di
interesse.
L'output di Sakbot è dunque completamente
temporale: il punto di
vista è calibrato sull'istante di tempo, invece di essere all'interno di un determinato
soggetto presente sulla scena video.
76
Architettura sviluppata
Figura 5.1: Trasparenza del modulo sviluppato rispetto al sistema
5.2.2 Punto di vista ad oggetti: Visor
In ViSOR la situazione è completamente diversa. Il punto di vista è centrato sugli
elementi. Ogni le di annotazione di ViSOR è rispetta il seguente schema:
•
File 1:
Oggetto 1 - framespan 1
∗
Attributo 1 - framespan - valore
1 periodo di tempo in cui è visibile, misurato in frame: da .. a ..
5.2 Da Sakbot a Visor
∗
∗
77
Attributo 2 - framespan
·
valore 1
·
valore 2
·
...
...
Oggetto 2 - framespan
...
•
File 2: ...
E' possibile riassumere l'idea che sta alla base delle annotazioni di ViSOR (e
di ViPER) denendola come una struttura a
le/oggetti. ViSOR si permette di
guardare le sorgenti video da un'ottica a posteriori, ovvero a conti fatti, cosa che
non è possibile in Sakbot, che per sua stessa natura aronta il processing frame per
frame.
5.2.3 Approcci possibili
Gli approcci possibili per creare questo passaggio intermedio sono essenzialmente
due:
•
approccio batch : si raccolgono tutte le informazioni che Sakbot genera mentre viene processato il video in oggetto. Le informazioni vengono elaborate e
riordinate solo in un successivo momento.
Vantaggi:
∗
alla fase di analisi da parte di Sakbot viene aggiunta un'unità che si
occupa solamente di salvare tutti gli eventi; il tempo impiegato nel
logging è irrilevante rispetto al processing;
∗
dopo l'analisi, si possiedono tutti i dati estratti dal processing: si
conoscono quindi a priori il numero di elementi e i valori, non è
necessario agire dinamicamente per riorganizzare l'esportazione;
∗
più semplice da implementare.
78
Architettura sviluppata
Svantaggi:
∗
è inevitabile un'ulteriore operazione di riorganizzazione/assemblaggio al termine del processing di Sakbot, che può richiedere molto
tempo, specialmente se quest'operazione viene eettuata leggendo
2
da le (con conseguenti costi di I/O );
∗
l'analisi da parte di Sakbot genera grosse moli di dati che vengono
salvati inutilmente, creando un'overhead superuo.
•
approccio on-the-y : si genera il le di esportazione al volo, ovvero durante
il processing di Sakbot.
Frame per frame gli eventi vengono riorganizzati e
catalogati in opportune strutture.
Vantaggi:
∗
nessuna ulteriore operazione dopo il processing video;
∗
vengono catturati e memorizzati soltanto i dati necessari, non vi sono
salvataggi inutili: il tutto è gestito dinamicamente senza allocazioni
superue.
Svantaggi:
∗
maggiori (ma accettabili) tempi di elaborazione a causa dei controlli e
dei confronti eettuati durante la riorganizzazione e la catalogazione
dei dati;
∗
maggiore complessità nell'implementazione.
Dopo averli valutati entrambi, si è scelto di applicare il secondo in quanto più
performante.
5.3
Descrizione della struttura creata
A questo punto, è da analizzare in quale struttura vengano salvati i dati. Questa
struttura non può che essere complessa, per via delle relazioni che intercorrono tra
le, descrittori, concetti (statici/dinamici) e stati.
Essa deve ovviamente rifarsi
all'ontologia presente in ViSOR, vista nel cap 2.4, poichè tutti i video annotati in
2 I/O: input/output
5.3 Descrizione della struttura creata
79
modalità manuale (ground truth), con cui fare il confronto diretto tramite appositi
strumenti, rispettano quest'ultima.
E' possibile avere una prima idea di come salvare i dati osservando la gura 5.2.
Figura 5.2: Prima idea della struttura dati
In questa, si può notare come per ogni le (sequenza video) esistano un numero
indenito di descrittori, ovvero soggetti apparsi sulla scena video; ognuno di questi
descrittori, a sua volta, oltre ad essere delineato da caratteristiche come il nome e
il proprio ID, presenta una serie di concetti che lo rappresentano. I concetti, come
visto nei capitoli precedenti, sono caratteristiche appartenenti al soggetto. Anche
questi, a seconda della loro natura (statica o dinamica), possiedono uno o più valori,
deniti come stati.
Lo schema in g. 5.2 è utile per avvicinarsi alla struttura realizzata, ma non
ne mostra a fondo le proprietà. Difatti, i descrittori sono classicati in varie cate3
gorie , possiedono un ID e informazioni aggiuntive; gli stati, inoltre, sono anch'essi
tipizzati in base al valore che deve essere salvato.
3 Si veda la tab. 2.1
80
Architettura sviluppata
La g. 5.3 pone invece maggiormente l'attenzione sull 'assetto e sull 'ossatura
della struttura dati da salvare, non presentando esempi (quali invece erano quelli in
g. 5.2).
Figura 5.3: Architettura dei dati
Essa parte dal punto di vista di un le, e rispetto alla gura precedente mette in
risalto gli attributi che i vari elementi hanno, come il nome, l'ID, ma soprattutto
il frame iniziale e quello nale in cui si presentano. Questo è valido per i descrittori
e per gli stati, perché per i primi indica in quale intervallo temporale (che ha come
unità di misura il frame) si sono presentati, mentre per gli stati indica in quali frame
hanno assunto quel determinato valore.
5.4 Caratteristiche dell'architettura
81
Sempre dallo schema 5.3 si evince come tutti i tipi di descrittori presentano
liste di concetti, e quindi occorre astrarre una superclasse padre (d'ora in poi
denita classe astratta ) che li rappresenti e ne accomuni le proprietà, come avviene
ad esempio per l'oggetto Descriptor Base.
Le classi dei descrittori erediteranno
dunque le caratteristiche comuni da quest'ultimo.
5.4
Caratteristiche dell'architettura
Una volta salvati, è necessario preoccuparsi di come esportare i dati. La presenza
di una struttura abbastanza complessa, composta da liste di elementi dalle carat4
teristiche diverse anche all'interno della propria macroclasse
ha obbligato l'attenta
pianicazione dell'attività di esportazione.
L'architettura è stata costruita in modo tale che:
•
sia facilmente scalabile ed espandibile : l'ontologia di ViSOR viene arricchita
continuamente dalla comunità di nuove categorie e tipi. Essa non deve essere
quindi assemblata in modo chiuso, ma deve essere possibile includere questi
nuovi tipi in tempi rapidi. In quest'ottica, l'utilizzo di classi astratte permette
di mantenere la stessa struttura in caso di espansione: sono da denire solo le
particolarità della nuova classe, dato che il resto viene ereditato dalla propria
classe astratta;
•
l'esportazione non preveda una chiusura rispetto al formato (XML, testo, etc)
e non dipenda da esso in modo stretto; in altre parole, denito l'approccio per
l'esportazione, questo è implementabile per qualunque nuovo formato;
•
l'esportazione sia isolata livello per livello : ogni livello si occupa di estrarre
e controllare i dati delegando la richiesta ai livelli inferiori e consegnando il
risultato al livello superiore.
Ciò permette, rispetto ad un controllo centra-
lizzato, di non sapere quali e quanti dati sono da estrarre, il che risulterebbe
essere un grosso problema dato il numero dei livelli presenti e la complessità conseguente; il linguaggio di programmazione utilizzato (C++) fornisce a
4 i descrittori possono essere di tipo Person, BodyPart etc..; gli stati possono essere string,
double...
82
Architettura sviluppata
questo proposito le potenti funzionalità del polimorsmo e dell'ereditarietà.
L'approccio seguito può essere quindi denito esportazione a catena .
Ulteriori caratteristiche (minori) sviluppate sono:
•
5
il download online del cong schema , in modo da averlo sempre costantemente
aggiornato, di pari passo con le evoluzioni della comunità;
•
l'eventuale fusione di più valori presenti in frame diversi: siccome la cattura
dei dati viene fatta al volo, può capitare che, in un concetto dinamico, stati
consecutivi aventi valori uguali vengano inseriti nella lista in modo separato. Il sistema realizzato provvede al controllo e alla risoluzione di questi casi
accorpando i due stati in oggetto; il tutto viene realizzato con il già citato
principio del polimorsmo, evitando così di preoccuparsi della varietà di tipi
di dato presenti.
5.5
Esempi di applicazione
Ma quali sono gli elementi di Sakbot che si vogliono serializzare per il confronto
con il ground truth di ViSOR? E a che livello? Ora verranno descritte le applicazioni
pratiche di esempio realizzate per vericare e mostrare l'utilizzo della struttura.
5.5.1 Baricentro e bounding box
Essenzialmente, l'architettura sviluppata è stata edicata appositamente per essere
general-purpose verso gli elementi da esportare: si può esportare direttamente la
segmentazione generata dai rispettivi algoritmi (quindi a livello pixel-based, vedi
sez. 3.2), il tracking ed object detection (passando quindi al frame-based, con una
particolare attenzione sulle tracce, vedi 3.3), arrivando anche alla valutazione di
comportamenti e classicazione (object-based, vedi 3.4). La nozione fondamentale
nello sviluppo e nella progettazione di questa libreria è appunto la libertà di inserire
nella struttura i dati di qualsiasi tipo e origine, in modo da permettere anche in
futuro di utilizzarla per la valutazione delle prestazioni con nuovi algoritmi.
5 http://imagelab.ing.unimo.it/visor/Downloads
5.5 Esempi di applicazione
83
Figura 5.4: Bounding box
Come base per testare l'architettura appena presentata e darne un esempio di
utilizzo concreto, è stata creata l'annotazione automatica di oggetti appartenenti al
tipo di descrittore denito come Person, e sono stati creati più concetti associati
(sia statici che dinamici):
•
l'attributo CR_Person (statico), che nel caso di un descrittore Person dovrebbe essere per forza salvato con valore 1;
•
il baricentro dell'istanza del descrittore, con nome PositionBar (dinamico):
esso, le cui coordinate derivano dal rapporto dei momenti del primo ordine
rispetto all'area (che altro non è che il momento di ordine 0), ci da' un'indicazione signicativa e identicativa del soggetto.
E' di solito la proprietà
più utilizzata quando si fa riferimento a metriche di tipo point, su cui le
prestazioni vengono valutate tramite opportune distanze;
•
il bounding box dell'istanza del descrittore, con nome Position_BBOX (dinamico): è il rettangolo minimo (non orientato) che circonda il soggetto. E' uno
degli approcci più utilizzati per la valutazione delle prestazioni, dato che spesso il processo di creazione del ground truth di questi è relativamente semplice
e può essere ottenuto anche tramite predizioni lineari del moto tra frame. Il
6
bounding box rappresenta il trade-o tra la valutazione di un semplice punto ,
6 Come già accennato, spesso questo punto è il centroide/baricentro dell'oggetto.
84
Architettura sviluppata
troppo povera per dare informazioni adeguate sulla precisione dell'algoritmo,
e la valutazione dell'intera immagine bitmap che, anche se fornisce risultati
accurati sulla qualità della segmentazione (di meglio non si può), rappresenta un lavoro disumano in termini di tempo e di impegno per l'annotazione
7
ground truth ).
5.5.2 Un buon compromesso: l'ellisse
Anche se il bounding box rappresenta un'ottimo compromesso, che permette al ricercatore di comprendere attraverso la valutazione delle prestazioni se i propri algoritmi
sono ecienti o meno (grazie agli indici visti al cap. ), analizzando attentamente
il problema si è notato che con il medesimo sforzo è possibile ottenere maggiore
accuratezza. Ma come?
Il principale difetto del bounding box è che non è orientato:
nel caso in cui
l'asse del soggetto sia in posizione verticale od orizzontale, il soggetto stesso è rappresentato con buona approssimazione, ma se l'oggetto ha un asse con una certa
inclinazione, non solo l'approssimazione diventa eccessiva, ma il risultato può essere
fuorviante.
Si è pensato quindi di orientare il bounding box, ovvero di catturare al suo
posto il rettangolo minimo orientato come l'oggetto: facendo così è possibile ottenere
approssimazioni più o meno costanti e più precise sul soggetto. Un ulteriore passo
nell'approssimazione può poi essere eettuato sostituendo al bounding box orientato
8
(che d'ora in poi verrà denito come oriented box ) l'ellisse corrispondente , avente
come angolo lo stesso dell'oriented box e come assi i lati di quest'ultimo passanti
per il centro dell'ellisse.
La metrica dell'ellisse non è implementata in Sakbot, a dierenza del bounding box e del centroide; essa è stata implementata durante il progetto attraverso i
momenti, partendo dalla mask image
9
fornita da Sakbot.
7 Annotare l'immagine bitmap signica contrassegnare ogni punto di ogni oggetto per ogni
frame.
8 Si veda l'appendice A.
9 Ovvero l'insieme di punti che costituisce l'oggetto all'interno dell'immagine video binarizzata.
5.6 Implementazione
85
Figura 5.5: Ellisse
5.6
Implementazione
La costruzione delle annotazioni automatiche prevede l'implementazione di una libreria dedicata ad esse all'interno del sistema Sakbot. E' quindi necessario capire
ed esplorare a fondo l'implementazione del sistema stesso.
5.6.1 Dettagli implementativi di Sakbot
Sakbot è stato sviluppato in Visual C++ ed ha una struttura completamente modulare, in modo che sia possibile espanderlo per ogni nuova caratteristica che si intende
implementare; nel corso degli anni il software del sistema è cresciuto in modo considerevole, raggiungendo allo stato attuale la presenza di 19 moduli per l'elaborazione
video e di migliaia di righe di codice eettivo. Ogni modulo varia la sua complessità
in base alla funzione:
•
Domotica: è il modulo principale, da cui parte l'esecuzione di Sakbot.
•
SingleCameraProcessing: acquisizione e gestione delle videocamere.
•
SakbotLib: classicazione dopo l'object detection e tracking.
•
ImageLib: gestione della segmentazione, dell'object detection e del tracking; è
il vero core di Sakbot.
86
Architettura sviluppata
•
GraphicLib: gestione dell'interfaccia graca.
•
HandoLib: gestione multicamera.
•
PersonLib: analisi delle posture e del comportamento delle persone.
•
UtilityLib: set di classi che servono gli altri moduli in operazioni comuni.
•
GeometricLib: calibrazione e utilizzo della geometria all'interno del sistema.
•
FaceRecognition: riconoscimento dei volti.
•
OpenCVSupport: supporto delle librerie grache OpenCV di Intel
•
TrackerProbab/AdHocTracker:
10
analisi probabilistica delle traettorie e degli
oggetti
Per citare solo i moduli principali. Ogni modulo contiene determinate classi, che
interagiscono tra loro in una gerarchia ben denita e comunicano tramite eventi (si
veda in 5.1).
5.6.2 Modulo realizzato
Per implementare l'architettura vista in 5.3 è stata creata una libreria (sempre in
C++ un-managed ) a parte all'interno di Sakbot, denita come AnnotationLib.
I le che lo compongono e che ne rappresentano le classi sono:
•
Header
AnnotationExport.h
ListOfFiles.h
ListOfDescriptors.h
concepts.h
descriptors.h
states.h
10 http://www.intel.com/technology/computing/opencv/
5.6 Implementazione
•
87
source:
AnnotationExport.cpp
A questi vanno aggiunte le risorse utilizzate per l'esportazione di alberi XML
tramite la libreria open source TinyXML (si veda 5.6.6). Il le AnnotationExport (e
l'oggetto associato) rappresentano il cuore della riorganizzazione e dell'esportazione
delle annotazioni; l'oggetto in questione possiede una lista di le (video), ovvero
un'oggetto della classe ListOfFiles, i quali a loro volta hanno una lista di descrittori
(ListOfDescriptors ).
Gli elementi che costituiscono l'architettura sono implementati rispettivamente
nei le corrispondenti (descriptors.h, concepts.h, states.h ), mentre i le sono descritti
dalla classe ProcessedFile all'interno del le ListOfFiles.h.
5.6.3 Interfaccia graca
La libreria è stata implementata all'interno di Sakbot, perciò integra con il sistema
stesso le possibili interazioni e preferenze dell'utente.
In particolare, in gura 5.6 è possibile osservare come l'utente possa decidere
(attraverso le preferenze) se abilitare o meno le annotazioni e possa cambiare i percorsi che riguardano il salvataggio di queste ultime per ogni formato implementato
(ViPER-XML e testo). Inne vi è anche la possibilità di cambiare l'url da cui scaricare la parte di cong per l'esportazione. Se il le di cong non è raggiungibile, se
ne carica automaticamente uno presente in locale.
88
Architettura sviluppata
Figura 5.6: Interfaccia graca: preferenze
Figura 5.7: Interfaccia graca: salvataggio dati
5.6 Implementazione
89
In g. 5.7 è invece possibile salvare le annotazioni in qualunque momento in uno
dei formati disponibili e per tutti i le processati. Il salvataggio fa partire la catena
di esportazione.
5.6.4 Classi astratte: ereditarietà e polimorsmo
Come accennato precedentemente, perchè si possa costruire una struttura che riesca a delegare i propri compiti ai sudditi (evitando cosi il controllo centralizzato), è
necessario plasmare delle superclassi, o classi astratte, che possiedano le caratteristiche comuni dei vari tipi di quella categoria e permettano comportamenti diversi
in risposta alla stessa richiesta, sulla base del tipo di oggetto interrogato.
Le classi astratte implementate sfruttano i meccanismi di ereditarietà e polimorsmo presenti in C++.
Ereditarietà
L'ereditarietà ha una forte presenza nel mondo reale ed è pure una caratteristica
naturale del pensiero ogni concetto complesso non si crea ex-novo, ma deriva da
concetti più semplici, che vengono ereditati e integrati con ulteriori approfondimenti. Gli oggetti possono assumere, per eredità, le caratteristiche di altri oggetti
e aggiungere caratteristiche proprie, esattamente come avviene nell'evoluzione del
processo conoscitivo.
Polimorsmo
Il polimorsmo è più complicato e meno intuitivo dell'ereditarietà: esso rappresenta
la possibilità di mandare agli oggetti lo stesso messaggio ed ottenere da essi comportamenti diversi, sul modello della vita reale, in cui termini simili determinano
azioni diverse, in base al contesto in cui vengono utilizzati. Letteralmente, la parola polimorsmo indica la possibilità per uno stesso oggetto di assumere più forme;
in un software ad oggetti, esso indicherà l'attitudine di un oggetto a mostrare più
implementazioni per una singola funzionalità.
90
Architettura sviluppata
Per rendere l'idea più chiara, utilizzando ancora una volta un esempio del mondo reale, si pensi al diverso comportamento che assumono un uomo, una scimmia
e un canguro quando eseguono l'azione del camminare. L'uomo camminerà in modo eretto, la scimmia in maniera decisamente più goa e curva mentre il canguro
interpreterà tale azione saltellando.
Figura 5.8: Esempio di polimorsmo
Per fare un esempio di utilizzo in un linguaggio di programmazione ad oggetti, si
presuma di voler disegnare delle gure geometriche. Per tale sistema è stata denita
una classe padre chiamata Shape dalla quale avremo fatto derivare tutte le classi
che si occupano della gestione di una gura geometrica ben precisa. Quando verrà
richiamato il metodo draw() per disegnare una linea, un cerchio o un rettangolo, il
sistema sarà in grado di capire autonomamente quale gura geometrica debba essere
disegnata, lasciando alla classe padre Shape il compito di invocare il metodo della
classe glia chiamata in causa.
In un linguaggio non ad oggetti un simile comportamento necessiterebbe, dal
punto di vista del codice, di un costrutto tipo switch-case.
Quindi, questa tecnica è sviluppata tramite funzioni-membro con lo stesso nome e gli stessi argomenti, ma appartenenti a oggetti di classi diverse; si basa sul
processo di late binding (aggancio ritardato): gli indirizzi delle funzioni da chiamare non vengono risolti al momento della compilazione, come avviene normalmente
(early binding ), ma al momento dell'esecuzione, perché solo in quella fase il C++
può conoscere la funzione selezionata, in base ai dati che condizionano il usso del
programma.
5.6 Implementazione
91
Ma come si realizza in termini pratici questo polimorsmo?
Si utilizza uno specicatore da anteporre alla funzione interessa: grazie alla specica virtual, il C++ rinvia la scelta della funzione appropriata alla fase di esecuzione
(late binding).
Una classe base, se denita con funzioni virtuali, spiega cosa sono in grado di
fare gli oggetti delle sue classi derivate.
Estremizzando questo concetto, si può creare una classe base con funzioni virtuali senza codice, dette funzioni virtuali pure. Non avendo codice, queste funzioni
servono solo da schema di comportamento per le classi derivate e vanno dichiarate
nel seguente modo: virtual void draw() = 0;.
A dierenza delle normali funzioni virtuali, le funzioni virtuali pure devono essere
ridenite tutte nelle classi derivate (anche con corpo nullo, quando non servono).
Se una classe derivata non ridenisce anche una sola funzione virtuale pura della
classe base, rimane una classe astratta e non può ancora essere istanziata (a questo
punto, una sua eventuale classe derivata, per diventare concreta, è suciente che
ridenisca l'unica funzione virtuale pura rimasta).
Le classi astratte sono di importanza fondamentale nella programmazione in
C++ ad alto livello, orientata a oggetti. Esse presentano agli utenti delle interfacce
pure , senza il vincolo degli aspetti implementativi, che sono invece forniti dalle loro
classi derivate. Una gerarchia di classi, che deriva da una o più classi astratte, può
essere costruita in modo incrementale, nel senso di permettere il ranamento
di un progetto, aggiungendo via via nuove classi senza la necessità di modicare
la parte preesistente. Agli utenti questo ranamento incrementale è totalmente
trasparente, in quanto vedono sempre la stessa interfaccia e utilizzano sempre le
stesse funzioni (che, grazie al polimorsmo, saranno sempre selezionate sull'oggetto
appropriato).
5.6.5 Utilità del polimorsmo all'interno dell'architettura
Grazie a queste proprietà è stato possibile implementare i diversi tipi di descrittori
e stati in una struttura che permette una certa indipendenza dal numero di ti-
92
Architettura sviluppata
pi inseriti e dall'inserimento di nuovi.
Queste classi astratte (CDescriptor_Base,
CConcept_Base, CConcept_State_Base ), presenti nei rispettivi le, sono a capo
dei vari tipi presenti nell'ontologia di ViSOR, con funzioni sia di ereditarietà che di
polimorsmo.
E' comodo inserire in una lista di puntatori di tipo CConcept_State_Base tutti
i vari tipi di stato (bool, oat, etc. . . ) senza preoccuparsi di creare liste separate
per ognuno dei tipi. Ma qual'è il problema principale nell'adottare questa tecnica,
che sfrutta appieno l'ereditarietà?
Una volta inseriti nella lista di puntatori, questi stati (in realtà gli della classe
CConcept_State_Base, non direttamente istanziati) non hanno più visibilità come
propri tipi, ma occupano lo spazio riservato alla classe padre. Nel momento in cui
è necessario, ad esempio, scrivere su un le le informazioni racchiuse in questi stati,
bisogna conoscere a quale sottoclasse appartengono, poichè essendo stati inseriti in
una lista di puntatori di stati generici, non si può conoscere se si ha da scrivere
un int o un'array di char.
Occorrerebbe quindi eettuare (conoscendolo a priori)
ilcasting al tipo di stato, per scrivere su le correttamente.
La tal condizione, in un contesto complesso e in continua evoluzione, può essere veramente proibitiva per lo sviluppo. E' impensabile procedere controllando
manualmente e riaggiustando gli elementi ogni qualvolta vengono estratti dalle
liste: anzi, spesso non è aatto possibile, a causa dell'eterogeneità creatasi durante
l'inserimento in una di queste.
Ergo l'ereditarietà, se concepita come unica soluzione, risolve il problema della
scalabilità e dell'espansione dei tipi (non sarà necessario allocare una lista per ogni
tipo di elemento) ma, d'altro canto, crea complicazioni non indierenti nel recupero
degli oggetti per operazioni speciche.
Tale complicazione viene poi gestita dal
poliformismo.
5.6.6 Libreria TinyXML
ViSOR utilizza la sintassi di ViPER, che come si è visto è composta da schema
strutturali deniti in XML.
Per agevolare la programmazione e l'esportazione degli elementi acquisiti si è
5.6 Implementazione
93
scelto di utilizzare una libreria al ne di una formattazione corretta in questo metalinguaggio. Anche se vi era la possibilità di realizzare la scrittura in XML from scrat-
ch (ovvero iniziando da zero), la decisione di astrarre quest'operazione di ulteriore
strato è da vedere in un'ottica di maggior consistenza, chiarezza e riusabilità.
La libreria utilizzata si chiama
TinyXML. TinyXML è un semplice e piccolo
parser XML scritto in C++ che può essere facilmente integrato all'interno di altri
programmi; è rilasciato con licenza open source.
In poche parole, TinyXML codica/decodica un documento XML, e costruisce
da quello un Document Object Model (DOM) : i dati XML possono essere codicati/decodicati in oggetti C++ che possono essere letti e modicati, e poi scritti su
disco o su un altro usso output.
Inoltre, si possono creare documenti XML dal
nulla grazie agli oggetti C++ presenti nella libreria.
Figura 5.9: TinyXML
Nella gura 5.9 è presentata la gerarchia degli oggetti che TinyXML ore.
A seconda delle operazioni che si vogliono svolgere è possibile generare la struttura da le o istanziare un oggetto TiXMLDocument, a cui agganciare una
TiXMLDeclaration e vari TiXMLElement ; a loro volta, a questi potranno esserne
agganciati altri, per creare l'albero DOM. In più TinyXML permette la gestione
degli attributi tramite l'oggetto TiXMLAttribute e quella dei commenti e del testo
tramite gli oggetti TiXMLComment e TiXMLText. Per eventuali estensioni si può
utilizzare l'oggetto TiXMLUnknown.
Questi oggetti prevedono il completo controllo per la navigazione dell'albero, sia
in maniera verticale (parent-child ) che in maniera orizzontale (sibilings ), orendo
opportuni metodi per gestirli.
94
Architettura sviluppata
5.6.7 Acquisizione e riorganizzazione logistica dei dati
La prima fase necessaria per la creazione delle annotazioni è la cattura e il salvataggio
dei dati nella struttura vista precedentemente.
Risposte agli eventi
Questa fase viene realizzata all'interno del le principale del modulo creato, Anno-
tationExport. Si è già visto come la classe AnnotationExport, aancata in modo
trasparente ad uno dei moduli alla radice Sakbot, per catturare gli eventi debba
ereditare i metodi necessari dalla classe CEventManager e CEventGenerator, denite con la classe CObjWithEvents. Da essa viene ereditato il metodo CaptureEvent
(UINT idEvent, UINT wParam, UINT lParam) (si veda in 5.1): il metodo grazie
al quale è possibile salvarsi tutte le informazioni che riguardano il processing video.
I principali eventi catturati dal metodo sopracitato sono:
•
EVENT_VS_OPEN : segnala l'apertura di una VideoSource
•
EVENT_VS_UPDATE : segnala l'aggiornamento dei dati di una VideoSource
•
EVENT_VS_NEWFRAME : indica l'arrivo di un nuovo frame
•
EVENT_TR_NEW_TRK : indica che una nuova traccia (un nuovo soggetto)
è entrato nella scena
•
EVENT_TR_LSTTRACKS_UPD : contiene l'aggiornamento di tutte le tracce al frame corrente
In risposta a questi eventi, per ognuno di essi, vengono eettuate determinate operazioni atte a raccogliere e immagazzinare in modo corretto i dati riorganizzandoli e catalogandoli man mano che arrivano.
Una volta svolta l'operazio-
ne scatenata da un evento, l'oggetto AnnotationExport si occupa di rigirare
l'evento al suo parent, di modo che quest'ultimo possa continuare la catena degli eventi e non si accorga dell'oggetto dell'annotazione, semplicemente ritornando
m_pObjWithEventParent->CaptureEvent(iEvent, wParam, lParam).
5.6 Implementazione
95
Una volta catturato l'evento VS_OPEN, si acquisisce il wParam corrispondente
tramite un'opportuno cast, poi si procede alla creazione di un nuovo le associato
alla VideoSource, aggiornando la lista di les. A questo punto si associa la lista di
descrittori corrente con la lista di descrittori del le (tramite copia di puntatori) e
si attendono ulteriori eventi riguardanti il le associato.
Il VS_UPDATE serve per aggiornare alcuni dati che riguardano la sorgente
video, ovvero il le. Infatti, quando viene inviato l'evento di apertura della Video-
Source, non tutti i dati (come ad esempio il nome del le) sono stati già inizializzati.
Essi vengono salvati successivamente: il fatto in sé non crea problemi in presenza di
una singola sorgente, dato che il wParam acquisito è un puntatore; se fosse inviata
come copia, i valori non verrebbero aggiornati, cosa che invece accade possedendo
l'indirizzo. L'evento VS_UPDATE è stato creato appositamente per questo motivo.
All'ingresso di un nuovo soggetto all'interno della scena viene inviato l'evento
TR_NEW_TRK : sebbene esso non sia strettamente necessario (potrebbe essere incluso nell'evento che contiene la lista delle tracce), permette una suddivisione delle
operazioni che rende la comprensione globale più chiara. Nel lParam è contenuto
l'oggetto Track, che contiene tutte le informazioni sulla traccia; dopo averlo acquisito, si crea il descrittore corrispondente e i concetti che si intende associarli.
Successivamente, gli stessi concetti vengono agganciati al descrittore inserendoli
nella sua lista di concetti, e il descrittore a sua volta viene inserito nella rispettiva
lista del le corrente.
L'evento TR_LSTTRACKS_UPD è l'evento più importante e la principale fonte di dati per l'annotazione sugli oggetti a livello di frame.
Acquisita la lista di
tracce dal parametro tramite casting,
CPointerList<CTrack> plstTracks = (CPointerList<CTrack> *) lParam;
si procede nel seguente modo:
•
si inizia a scorrere la lista di tracce; per ogni traccia
si scorre la lista di descrittori; per ogni traccia
IDi = IDj
e se la traccia
i
è visibile:
i − esima:
j − esima,
se è vericata
96
Architettura sviluppata
∗
si aggiorna il descrittore con il nuovo FrameEnd, ovvero l'ultimo
frame in cui è presente
∗
si calcolano i momenti
11
e le operazioni utili ad ottenere l'ellisse (che
è rappresentata da un concetto)
∗
si creano gli stati in base a cosa ed a quale tipo si intende salvare
∗
si recuperano i concetti del descrittore e si aggiorna il loro stato
Stati consecutivi che presentano lo stesso valore
L'aggiornamento dello stato dei concetti, come si è visto, avviene tramite l'aggiunta
degli stati al concetto in questione. Infatti, i concetti possono essere statici o dinamici: nel primo caso possiederanno un solo valore (quindi un solo stato), mentre nel
secondo caso una lista di valori (perché il concetto cambia questi valori nel tempo).
Può capitare quindi che in questa lista vi siano valori consecutivi uguali (ad
esempio, sia al frame
i
che al frame
i+1
il valore è
k ).
L'oggetto che rappresenta
uno stato è stato creato in modo da avere un framespan (ovvero un intervallo di
tempo in frame, partendo dal frame FrameStart no al FrameEnd ) e un valore; di
norma, l'intervallo degli stati è di un frame, perché i valori del concetto nel tempo
sono cambiati (infatti spesso questo accade a causa dei soggetti in movimento), ma
si possono presentare casi in cui l'intervallo è maggiore.
Siccome l'acquisizione e la riorganizzazione avviene in tempo reale, ovvero mentre avviene il processing, non è possibile sapere a priori quali stati presenteranno
valori uguali. Ad ogni frame è quindi necessario controllare se, per ogni concetto, lo
stato immediatamente precedente in termini di tempo contiene lo stesso valore: se
eettivamente è lo stesso, al frame
i non viene creato un nuovo stato con framespan
[i:i], ma viene aggiornato il framespan dello stato precedente (che ha quindi Frame-
Start
i − 1).
Il nuovo framespan sarà quindi [i
− 1:i].
Successivamente, se il valore
è ancora lo stesso, potrà essere di nuovo aggiornato.
Il controllo avviene in modo automatico da parte dello stesso stato, tramite il
polimorsmo.
11 I momenti si calcolano sull'
AlphaPlane
della traccia, che è una maschera binaria che rap-
presenta l'oggetto e la cui origine è denita come il pixel più in alto e più a sinistra di
questi.
5.6 Implementazione
97
Una volta che un concetto richiama il metodo SetState(CConcept_State_Base
* pState,int iFrame), questi richiede il controllo del valore dell'ultimo stato tramite il metodo CheckLastStateValue(CConcept_State_Base * pState), che restituisce
un valore booleano. Questa funzione è dichiarata virtual nella classe astratta Concept_State_Base: quando viene richiamata, essa passa il controllo alla sottoclasse
specica che si occuperà di controllare nel modo opportuno l'uguaglianza dei valori.
Ad esempio, se il controllo riguarda il confronto di due double, essa consisterà in
una semplice uguaglianza; al contrario, se riguarda l'ellisse, l'operazione sarà un po'
più complicata. Anche se queste operazioni sono dierenti da tipo a tipo (e quindi
da sottoclasse a sottoclasse), con lo stesso metodo è possibile invocare la modalità
appropriata al momento giusto.
5.6.8 Esportazione dei dati
La fase di esportazione sfrutta al massimo i concetti di polimorsmo ed ereditarietà per assumere la completa indipendenza nella gestione delle liste da esportare.
L'esportazione attualmente può avvenire in due modi: schema XML (conforme all'ontologia di ViSOR) e in testo semplice, per una maggiore leggibilità in fase di
test. Per ogni tipo di esportazione viene denito un metodo, come ad esempio Ex-
portToTxt() per il formato testo. Isolando i metodi in base ai formati, è possibile
aggiungerne altri creando i metodi associati; se il sistema fosse realizzato in un'unica
funzione che si occupa dell'esportazione, l'adattabilità sarebbe molto minore.
Inoltre, ribadendo che l'ontologia di ViSOR è in continua evoluzione, l'aggiunta
di nuovi descrittori, concetti e stati deve essere trasparente all'esportazione. Delegando tramite il polimorsmo le operazioni di esportazione direttamente all'interno
della classe dell'elemento è perciò possibile delegare all'elemento i compiti da svolgere quando vi è una richiesta di recupero dati. In tal modo, all'aggiunta di un
elemento occorre denire come dovrà comportarsi in caso di richieste di esportazione. Un'unità esterna che controlla i tipi ed eettua le conversioni dei vari stati
rappresenterebbe un collo di bottiglia in cui viene creata confusione e in cui vi è il
rischio di inconsistenza; quest'approccio, invece, è più distribuito ed ore maggior
chiarezza e riusabilità.
98
Architettura sviluppata
In gura 5.10 e 5.11 sono rappresentate le operazioni svolte nel sistema durante
la fase di esportazione.
Nella prima parte (g. 5.10), viene creato il documento TinyXML che si occuperà
di contenere l'albero XML da stampare su le; successivamente, viene scaricato il
le di congurazione dello schema strutturale dal sito di ViSOR.
A questo punto l 'header del le XML viene generato:
si eettua il parsing
del cong online, si aggancia la parte iniziale (che prevede alcune informazioni sul
formato e dei commenti) e la parte di cong al documento TinyXML, che rappresenta
la radice dell'albero.
L'esportazione quindi inizia a scorrere le liste in modo ricorsivo su vari livelli,
per il recupero delle informazioni; le liste, come si è visto, sono del tipo Descriptor
Base, Concept Base e State Base : sono fatte per contenere elementi comuni, ma
che presentano caratteristiche dierenti. Non è possibile estrarre da queste liste i
reali sottotipi per riuscire a conoscere in che modo esportare i dati; piuttosto, gli
elementi Base fanno da ponte ai veri elementi che dovranno essere esportati, grazie
ai metodi virtual() (e quindi al polimorsmo).
Nella seconda parte (g. 5.11) i risultati delle esportazioni risalgono l'albero
sotto forma di elementi TinyXML corrispondenti ai rispettivi componenti; questi
elementi vengono agganciati al loro elemento padre no ad arrivare alla radice.
Il le XML viene quindi salvato su le percorrendo l'albero completo appena
costruito.
5.6 Implementazione
Figura 5.10: Esportazione dei dati nel formato di ViSOR (I
99
◦
parte)
100
Architettura sviluppata
Figura 5.11: Esportazione dei dati nel formato di ViSOR (II
◦
parte)
5.7 Risultati sperimentali
5.7
101
Risultati sperimentali
Da vari test eettuati, si deduce che l'implementazione dell'architettura non incide
signicativamente sui tempi e sull'utilizzo di memoria del sistema Sakbot.
L'aumento del tempo di elaborazione con il modulo delle annotazioni attivato è
minore dell'1%; la scelta di un approccio ``on-the-y ha permesso di salvare solo ed
esclusivamente i dati necessari per l'esportazione, evitando così l'overhead presente
con l'altro approccio e quindi i tempi di processing.
L'utilizzo di memoria è incrementato di circa il 4%, poichè la mole di dati da
salvare è comunque notevole, soprattutto in video che presentano scene aollate.
Nonostante questo, la memoria si mantiene pressochè costante, poichè si è posta una
particolare attenzione alla gestione della memoria e all'individuazione di eventuali
sprechi; come è ben noto, il linguaggio C++ non possiede garbage collector :
la
liberazione della memoria allocata attraverso i puntatori spetta allo sviluppatore.
Per quanto riguarda l'esportazione, il tempo necessario per eettuarla è fortemente inuenzato dall'operazione I/O di scrittura su le dell'annotazione, ma nonostante questo non prevede più del 2% del tempo totale che occorre per ottenere
il risultato perseguito.
102
Architettura sviluppata
Capitolo 6
Un esempio di valutazione con
ViPER-PE
In questo capitolo si vedrà in modo pratico come è possibile ottenere misurazioni oggettive sulla qualità degli algoritmi del sistema grazie al formato di annotazione e all'architettura realizzata. Nell'ambiente ViSOR, quindi, questa parte è rappresentata
dalla valutazione obiettiva e dalla visualizzazione dei risultati (g. 6.1).
Figura 6.1: Visione d'insieme: valutazione e presentazione
103
104
Un esempio di valutazione con ViPER-PE
6.1
ViPER-PE: descrizione ed obiettivi
Il toolkit ViPER, oltre a fornire uno strumento per annotare manualmente il ground
truth dotato di interfaccia graca (ViPER-GT, si veda 2.5), include anche un un
altro applicativo utile alla valutazione: ViPER-PE. Come è possibile dedurre anche dal nome, l'obiettivo di questo software è di eettuare la valutazione tra due
annotazioni create in conformità con il formato di ViPER.
La valutazione eettuata utilizzando ViPER-PE consiste nel misurare quanto un
le di target
1
(tipicamente il le contenente i metadati del ground truth) e un le di
candidate (tipicamente contenente i dati provenienti da un'elaborazione automatica)
siano simili. Per determinare il grado di similitudine ViPER (come già accennato in
2.5) utilizza un le di proprietà (Properties le, PR) e un le contenente i parametri
della valutazione (Evaluation Parameter File, EPF). In output viene creato un le
(Output le, O) contenente la valutazione eettuata (si veda 6.2).
Figura 6.2: Schema di ViPER-PE
Sono possibili due diversi tipi di analisi: object analysis e framewise analysis.
6.2
Object Analysis
Quest'analisi è a livello di oggetto: tenta di far combaciare gli oggetti target con gli
oggetti candidate, e di rispondere alla domanda: Quanto sono vicini due oggetti?.
1 I dati del ground truth sono chiamati così in quanto ogni algoritmo cerca di generare i dati
TARGET nel miglior modo possibile, producendo un elenco di dati CANDIDATE.
6.2 Object Analysis
105
Utilizzando questa losoa determina quali oggetti target e candidate sono abbastanza vicini da potersi considerare lo stesso oggetto, e quindi mostra quali oggetti
hanno determinato un match, un miss oppure un false, e per ognuno genera una
serie di risultati numerici. Questo comporta la denizione di alcune metriche per il
confronto di questi oggetti (g. 6.3).
Figura 6.3: Metriche utilizzabili in ViPER-PE
Le metriche e le tolleranze possono essere congurate nel le delle proprietà.
L'object analysis è suddivisa in diverse fasi, ognuna delle quali è ad un livello più
ranato di valutazione.
106
Un esempio di valutazione con ViPER-PE
6.2.1 Detection (level = 1)
Per ogni tipo di descrittore ViPER-PE controlla i frame dove sono presenti oggetti.
Se un candidate si sovrappone temporalmente a un target per abbastanza tempo
(o, equivalentemente, per un numero suciente di frame), allora sia il target che il
candidate vengono conteggiati come match. Da notare che non importa dove il target
e il candidate si trovano spazialmente nel frame, l'importante è che siano presenti
temporalmente (quasi) negli stessi frame. Per determinare quando due oggetti sono
sucientemente vicini si utilizza una distanza tra i due framespan (range_metric )
e una tolleranza (range_tol ). Se la distanza è maggiore della tolleranza gli oggetti
non vengono contati.
6.2.2 Localization (level = 2)
Opera in modo simile alla detection, però qui entra in gioco la posizione nello spazio.
Invece di guardare a tutti i frame di un oggetto, confronta solo quei frame dove gli
attributi sono simili. Il termine simili è sempre denito dall'utente tramite una
distanza (<attribute_type> _metric ) e una tolleranza (<attribute_type> _tol ).
6.2.3 Statistical Comparison (level = 3)
A partire dai match della localization, calcola la distanza media (level3_metric =
mean ), minima ( = minimum ), mediana ( = median ) e massima ( = maximum), e
poi confronta questo valore con la tolleranza (level3_tol ). Quest'analisi è utile per
oggetti che si trovano su molti frame.
6.2.4 Target Matching
Dopo questi tre livelli di analisi, ViPER-PE ha una lista di candidate che hanno dei
target corrispondenti. In base al tipo di analisi che vogliamo eettuare, è necessario
decidere in che modo accoppiare oggetti target e candidate (target_match ):
•
SINGLE-GREEDY : semplice accoppiamento 1 a 1.
•
SINGLE-BEST: accoppiamento 1 a 1 che minimizza la somma delle distanze.
•
MULTIPLE: accoppiamento MOLTI a MOLTI.
6.3 Framewise Analysis
6.3
107
Framewise Analysis
Questo tipo di analisi esamina gli oggetti frame per frame, e per ogni frame genera
una lista di metriche di valutazione.
6.3.1 Metriche di valutazione
Per denire quali metriche utilizzare occorre settare opportunamente il le contenente i parametri della valutazione (EPF).
Denendo:
T = target,
C = candidate,
size(X) =
#X =
dimensione di
X,
numero di istanze di
X
Le metriche utilizzabili sono:
•
e/dice/overlap/maxdev/l/h/euclidean/manhattan/dierence : da utilizzare in
base al tipo di oggetto, si veda la gura 6.3
•
matchedpixels =
size(T
T
C):
numero di pixel contati come MATCH (ovvero
i true positive)
•
missedpixels =
size(T ) − size(T
T
C):
numero di pixel contati come MISS
(ovvero false negative)
•
falsepixels =
size(T ) − size(T
T
C):
numero di pixel contati come FALSE
(ovvero i false positive)
•
arearecall <soglia> =
numero di target la cui Recall supera lo soglia data
numero totale di Target
ogni Recall è calcolata come:
size(T
T
C)/size(T ).
108
Un esempio di valutazione con ViPER-PE
•
areaprecision <soglia> =
numero di Candidate la cui Precision supera lo soglia data
numero totale di Candidate
ogni Precision è calcolata come:
size(C
T
T )/size(C).
Figura 6.4: Target e Candidate
In più ve ne sono alcune relazionate al numero di istanze di target e candidate:
•
Detection Accuracy :
if (#T + #C) == 0 return undefined;
else return
•
2·min(#T,#C)
;
#T +#C
Object Count Recall :
if #T == 0 return undefined;
else if (#C < #T ) return (#C/#T ); else return 1;
•
Object Count Precision :
if #C == 0 return undefined;
else if (#T < #C) return (#T /#C);
else return 1;
6.4 Il le Properties
109
Come è facilmente intuibile, queste ultime tre metriche sono normalizzate con
un intervallo che va da 0 a 1.
6.4
Il le Properties
Il Properties File è un le di congurazione in cui è possibile aermare la metrica
che si intende utilizzare, il livello di object analysis e le tolleranze.
Le principali preferenze per la valutazione sono:
•
il livello di analisi: nel caso si voglia eettuare una localization, il livello è 2;
•
la modalità di target matching
•
la metrica da utilizzare per il confronto delle aree: dice, overlap, etc . . .
•
la metrica da utilizzare per le distanze sulle stringhe: Levenshtein, Hamming,
etc . . .
•
la metrica specica per il livello scelto: nel livello 3 ad esempio si può utilizzare
media, varianza, etc. . .
•
le tolleranze (o soglie) temporali, speciche per livello o per attributo
La forza di ViPER-PE sta nella sua capacità di fornire uno strumento di valutazione general-purpose adattabile per un ampio spettro di casi e contesti.
La
valutazione può avvenire sia su precise forme che corrispondono a determinati oggetti, tramite le metriche per le aree, sia su entità rappresentate da punti o da
stringhe.
Oltre alla metrica dell'uguaglianza, dicilmente applicabile in contesti
con un così elevato dettaglio, vengono fornite metriche che orono un confronto
statistico normalizzabile e riutilizzabile.
6.5
Il le Evaluation Parameters
Se nel le delle proprietà vengono decise le metriche da utilizzare per eettuare la
valutazione, nell'EPF si notica al sistema quali sono gli oggetti da confrontare.
110
Un esempio di valutazione con ViPER-PE
Il le dei parametri della valutazione è formato da una lista di sezioni: EQUIVALENCE, EVALUATION, FILTER.
La parte di EQUIVALENCE viene utilizzata per risolvere il disaccoppiamento
tra i nomi: esso è un problema comune durante la valutazione.
Infatti, lo stesso
attributo (o descrittore) potrebbe avere un nome diverso nei le ground truth e
candidate; una lista di equivalenze provvede a chiarire qualunque ambiguità.
Nella sezione di EVALUATION vanno elencati i descrittori e gli attributi di
cui si intende compiere la valutazione, secondo la sintassi descritta nel manuale di
ViPER-PE [26].
La lista di descrittori e attributi va costituita sia per la fase di
object analysis che per quella riguardante la framewise analysis. Sia per i descrittori
che per i rispettivi attributi inoltre è possibile specicare l'utilizzo di metriche e
tolleranze diverse da quelle di default presenti nel le delle proprietà.
Inne, la sezione FILTER è stata implementata poichè spesso è utile esaminare
solo una parte dei dati che si hanno a disposizione. Tramite i ltri è possibile isolare
quel sottoinsieme di dati che soddisfa certi requisiti. Mentre la sezione EVALUATION specica la metrica da utilizzare e quali tipi di descrittori valutare, i ltri
forniscono un controllo preciso su quali descrittori valutare.
E' possibile lavorare
separatamente su target input, target output, candidate input e candidate output.
I ltri in input fanno in modo che alcuni oggetti non vengano letti in ViPERPE: in altre parole quegli oggetti che non passano un ltro in input è come se
non esistessero; sembra cioè che questi oggetti non facciano parte dei dati.
Per
escludere dalla valutazione interi descrittori è suciente non includerli nella sezione
EVALUATION. I ltri in output specicano invece che i descrittori scartati dai ltri
in input e quelli che non passano i ltri in output non devono essere stampati in
output.
Occorre prestare attenzione perchè un errato utilizzo dei ltri potrebbe
portare a valutazioni non valide. Se per esempio si adopera solamente un ltro sul
target, l'utilizzo di un sottoinsieme della verità porta all'incremento del totale delle
false detection; è bene quindi che i ltri siano sempre applicati sia al target che al
candidate.
6.6 File di output
6.6
111
File di output
I risultati della valutazione vengono salvati su le, il le di output. Il formato del
le è testuale, consentendo cosi l'elaborazione e l'acquisizione dei dati per generare
eventuali graci riassuntivi.
Il le è suddiviso in varie sezioni.
All'inizio del le vi sono gli input parameters, una lista di proprietà utilizzate
per la valutazione; successivamente, vengono elencati i ltri applicati e gli oggetti da
2
valutare con le metriche stabilite . Dopo questo breve sommario, inizia la valutazione vera e propria, suddivisa nelle due parti principali descritte precedentemente,
ovvero l'Object Evaluation e la Framewise Evaluation.
Nell'object evaluation, un oggetto può essere classicato sotto diversi livelli di
detection in base ai risultati conseguiti; vengono quindi elencati tutti gli oggetti
conteggiati come miss o false durante i vari livelli di analisi (si veda cap 6.2).
Levels :
•
0: non esistono altri oggetti dello stesso tipo nel le.
•
1: l'oggetto non soddisfa metriche e tolleranze sui frame per ogni altro oggetto
dello stesso tipo.
•
2: la localization non rileva alcun match.
•
3: la statistical comparison non rileva alcun match.
•
3c: il descrittore non fa match con un oggetto così bene come un altro.
Se un tipo di oggetto nel candidate fa match con oggetti del target, non presenta
problemi nel passare i livelli elencati sopra. Dopo i risultati in questi livelli vengono
quindi elencate le Detections, dove sono elencati tutti i match.
Per ogni frame (l'insieme dei frame considerati è l'unione dei framespan del
target e della somma dei framespan dei candidate individuati), è mostrato il valore
2 Le informazioni vengono raccolte dai le PR e EPF
112
Un esempio di valutazione con ViPER-PE
numerico della distanza tra target e candidate : 0 è la distanza minima (cioè perfetta
identità tra gli oggetti), 1 è la distanza massima (nessun candidate fa match col
target ).
Inoltre, vengono mostrati la media dei valori della distanza, la distanza
statistica (si veda in 6.2.3) e il valore medio per l'overlap, la metrica dice e l'extent.
Inne, vi è il sommario per l'object evaluation. I dati sono forniti elencando Precision
e Recall prima per ogni tipo di oggetto, e poi per il totale.
Giunge quindi il turno della Framewise Evaluation, ovvero la valutazione frame
per frame. Per ogni frame vengono visualizzati i risultati per le metriche scelte nel
le EPF; in ultima istanza sono mostrate le medie nali per ogni metrica (pixel
matched, missed e falsely detected riportano la somma totale dei pixel); per rendere
più chiaramente l'idea, è possibile osservare l'esempio seguente, in cui si riportano i
risultati per un frame e per il totale.
For frame 1605
Detection Accuracy:
0.6666666666666666
Object Count Recall: 0.5
Object Count Precision: 1
Dice coefficient:
Target overlap:
0.5856427059442004
0.6413844465936461
Maximum deviation:
Pixels matched:
Pixels missed:
0.6489415878545485
1065.4468085102023
2106.053191489099
Pixels falsely detected: 230.55319148933197
Object Area Recall: 0.35861555317352317
Box Area Precision: 0.8221040185643844
Localized Object Area Recall:
0.5
Localized Box Area Precision:
1.0
Total for all frames
Detection Accuracy:
0.825793551612097
Object Count Recall: 1
Object Count Precision: 0.7032779906343125
6.7 Test realizzati
113
Dice coefficient:
Target overlap:
0.49696838381590314
0.32971600611678675
Maximum deviation:
Pixels matched:
Pixels missed:
0.5678654790713002
4299132.451114162
2156265.548885301
Pixels falsely detected: 3583425.558221029
Object Area Recall: 0.6702839934423572
Box Area Precision: 0.5691756658617229
Localized Object Area Recall:
0.5236077481840193
Localized Box Area Precision:
0.6296296296296297
6.7
Test realizzati
3
Come esempio dimostrativo si è preso un le video dal repository di ViSOR
e
lo si è fatto elaborare da Sakbot per generare le annotazioni automatiche grazie
all'architettura realizzata.
Una volta ottenute le annotazioni automatiche, sono stati creati i le PR ed EPF
per confrontare i descrittori presenti nel le generato con il ground truth scaricato
dal sito.
L'obiettivo è valutare grazie a ViPER-PE, a livello di frame, quando è corretta
la segmentazione; non verranno perciò analizzati i risultati sulla Object Evaluation,
poichè non relativi agli scopi pressi.
E' possibile mostrare un primo feedback dei risultati estraendo dall'output di
ViPER-PE il risultato sul totale dei frame alla ne della Framewise Evaluation.
Total for all frames
#### Valido per tutte le feature valutate
Detection Accuracy:
0.9626556016597511
Object Count Recall: 1
Object Count Precision: 0.928
3 http://imagelab.ing.unimore.it/visor/video_details.asp?idvideo=71
114
Un esempio di valutazione con ViPER-PE
#### Per il bounding box
Dice coefficient:
0.36182361224867077
Target overlap:
0.26451372065261675
Pixels matched:
545274.0
Pixels missed:
185624.0
Pixels falsely detected: 152948.0
Localized Object Area Recall:
0.896551724137931
Localized Box Area Precision:
0.64
#### Per l'ellisse
Dice coefficient:
0.6207183318540974
Target overlap:
0.4935180652085695
Pixels matched:
82143.58835817437
Pixels missed:
34403.03291310558
Pixels falsely detected: 80019.68244322749
Localized Object Area Recall:
0.48695652173913045
Localized Box Area Precision:
0.3089430894308943
Anche solo per ottenere una valutazione sommaria, gli indici del totale dei frame
precisano obiettivamente chiari risultati statistici. Considerati i pixel matched, missed e falsely detected è possibile calcolare la Precision e la Recall sia del bounding
box che dell'ellisse.
Per il bounding box, Recall e Precision sono del 74,6% e del 78,1%, mentre per
l'ellisse corrispondono rispettivamente al 70,5% e al 50,7%.
Non solo è possibile
estrarre questi indici, ma grazie alle metriche sulla sovrapposizione (Dice e Target
Overlap ) possiamo concordare su quanto le forme individuate dal sistema e quelle
annotate come ground truth corrispondano.
In questo particolare caso, ad esempio, è possibile osservare una maggiore precisione nel bounding box rispetto all'ellisse: il coeciente dice e l'overlap sono più
vicini allo 0 (e quindi più vicini all'identità) nella prima forma.
Possedendo ta-
li informazioni possiamo in questo caso confermare il fatto che il bounding box è
statisticamente più eciente poichè è meno preciso nel descrivere il soggetto annotato; l'ellisse fornisce comunque buoni risultati, considerando la maggiore fedeltà alla
sagoma del soggetto.
6.7 Test realizzati
115
Se poi si vuole analizzare meglio il risultato della valutazione, è possibile ottenere
dagli valori conseguiti per ogni frame un graco riassuntivo e comparativo sui diversi
indici.
Nelle gure 6.5 e 6.6 sono mostrati i graci riguardanti il bounding box sugli
indici di dice, overlap, recall e precision.
Figura 6.5: Bounding box: dice - overlap
E' poi possibile ottenere una misura unica dalla g. 6.6, calcolando l'F-Measure
4
(g. 6.7).
Per avere invece un'idea su quanto sia distribuita la campana delle recall e
delle precision è possibile osservare il graco in g. 6.8, il quale, ponendo sull'asse
orizzontale la recall e sull'asse verticale la precision, rappresenta in modo geometrico
la zona in cui più frame hanno i due valori in comune, permettendo una migliore
scelta delle tolleranze.
Analoghe valutazioni possono essere compiute per l'ellisse.
4 Utilizzata anche in ETISEO, si veda cap. 1.2.3
116
Un esempio di valutazione con ViPER-PE
Figura 6.6: Bounding box: recall - precision
Figura 6.7: Bounding box: f-measure
6.7 Test realizzati
117
Figura 6.8: Bounding box: distribuzione di recall e precision
Figura 6.9: Baricentro
Il baricentro, essendo un punto, non può presentare metriche di dice/overlap e
recall/precision. Per esso è possibile analizzare la distanza tra il target e candidate:
118
Un esempio di valutazione con ViPER-PE
le due metriche utilizzabili per i punti sono la manhattan distance e l'euclidean
5
distance . Esse sono molto simili, come è possibile notare in g. 6.9.
Concludendo, questa valutazione non vuole aermare quanto validi siano gli
eettivi risultati, ma intende dimostrare che grazie a questi strumenti è possibile
eettuare una valutazione completa, accurata ed obiettiva.
5 Si veda la g. 6.3.
Conclusioni
In questa tesi è stata proposta la progettazione e l'implementazione all'interno dell'ambiente ViSOR di un'architettura per generare annotazioni automatiche, attraverso l'acquisizione, la riorganizzazione e l'esportazione dei dati di elaborazione di
un sistema di videosorveglianza nell'ambito della valutazione delle prestazioni degli
algoritmi riguardanti questa tematica.
Dopo una prima introduzione sull'argomento, sui progetti correlati e sull'ambiente in cui si è lavorato, è stata analizzata l'architettura progettata e ne è stata
proposta l'implementazione realizzando una libreria C++ all'interno del sistema
Sakbot. Inne, attraverso un esempio è stato mostrato come dalle annotazioni automatiche generate, attraverso appositi tool, è possibile ottenere una valutazione
completa ed obiettiva degli algoritmi e dei livelli semantici interessati.
L'architettura è stata progettata in modo tale da essere la base per la valutazione
delle prestazioni degli algoritmi presenti e futuri del sistema di videosorveglianza
in esame.
L'obiettivo è stato pienamente raggiunto; l 'infrastruttura realizzata
possiede diverse caratteristiche:
•
è espandibile: sono facilmente aggiungibili nuovi descrittori, nuovi concetti o
stati, senza che sia necessaria una modica alla struttura;
•
è modulare: ogni oggetto presente nell'ontologia è stato analizzato e isolato
in modo da chiarirne la funzione minimizzando le dipendenze. Ogni livello si
occupa di estrarre e controllare i dati delegando la richiesta ai livelli inferiori
e consegnando il risultato al livello superiore;
•
è aperta rispetto al formato: è possibile aggiungere l'esportazione in diversi
formati oltre a quelli già realizzati (testo e ViPER-XML);
119
120
•
Conclusioni
l'implementazione non altera in maniera consistente le prestazioni del sistema di videosorveglianza, e la fase di acquisizione dei dati appare a questi
completamente trasparente;
•
l'annotazione generata è perfettamente compatibile con il formato di ViSOR,
che è aperto e già utilizzato da larga parte della comunità.
Nonostante i punti appena citati, rimane ancora molto da fare. L'applicazione realizzata è infatti dipendente dal sistema di videosorveglianza in cui è stata sviluppata.
I possibili sviluppi futuri possono essere molteplici:
•
esportazione nel formato MPEG-7, o altri formati minori;
•
inserimento di nuovi descrittori e di nuovi tipi di dato;
•
realizzazione di un'interfaccia graca per la selezione delle feature da annotare e per la gestione degli elementi della struttura (inserimento, modica,
cancellazione di descrittori e stati);
•
applicazione dell'esportazione anche a moduli di Sakbot di più alto livello,
quali consistent labeling, behaviour analysis, etc. . .
Elenco delle gure
1.1
Datasets Video disponibili pubblicamente . . . . . . . . . . . . . . . .
13
1.2
Estrazione dei metadati in VACE I
. . . . . . . . . . . . . . . . . . .
16
1.3
Visione concettuale dell'architettura di elaborazione . . . . . . . . . .
17
1.4
Portale PETS Metrics
. . . . . . . . . . . . . . . . . . . . . . . . . .
19
1.5
PETS Metrics XML Schema . . . . . . . . . . . . . . . . . . . . . . .
20
1.6
Esempio del sistema ODViS in uso
. . . . . . . . . . . . . . . . . . .
27
1.7
Architettura di ODViS . . . . . . . . . . . . . . . . . . . . . . . . . .
28
1.8
Descrizione del modulo di CAViAR in CVML
. . . . . . . . . . . . .
30
2.1
Visione d'insieme dell'ambiente
. . . . . . . . . . . . . . . . . . . . .
34
2.2
Processo di valutazione delle prestazioni
. . . . . . . . . . . . . . . .
36
2.3
Visione d'insieme: annotazioni . . . . . . . . . . . . . . . . . . . . . .
36
2.4
Visione d'insieme: ground truth . . . . . . . . . . . . . . . . . . . . .
37
2.5
ViSOR homepage . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
41
2.6
Visione d'insieme: portale ViSOR . . . . . . . . . . . . . . . . . . . .
42
2.7
Ricerca e risultati sui concetti video in ViSOR . . . . . . . . . . . . .
43
2.8
Tassonomia gerarchica delle categorie sui concetti video . . . . . . . .
44
2.9
ViPER-GT
48
3.1
Visione d'insieme: metriche
3.2
Overlap spaziale: intersezione e unione
3.3
Track Fragmentation
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . .
53
. . . . . . . . . . . . . . . . .
61
. . . . . . . . . . . . . . . . . . . . . . . . . . .
64
3.4
ID Change . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
65
3.5
Track Matching Error . . . . . . . . . . . . . . . . . . . . . . . . . . .
66
4.1
Visione d'insieme: VCA
67
. . . . . . . . . . . . . . . . . . . . . . . . .
121
122
ELENCO DELLE FIGURE
4.2
Interfaccia graca di Sakbot . . . . . . . . . . . . . . . . . . . . . . .
69
4.3
Object detection e tracking in Sakbot . . . . . . . . . . . . . . . . . .
70
4.4
Sakbot: architettura generale
. . . . . . . . . . . . . . . . . . . . . .
72
5.1
Trasparenza del modulo sviluppato rispetto al sistema . . . . . . . . .
76
5.2
Prima idea della struttura dati . . . . . . . . . . . . . . . . . . . . . .
79
5.3
Architettura dei dati
. . . . . . . . . . . . . . . . . . . . . . . . . . .
80
5.4
Bounding box . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
83
5.5
Ellisse
85
5.6
Interfaccia graca: preferenze
5.7
Interfaccia graca: salvataggio dati
. . . . . . . . . . . . . . . . . . .
88
5.8
Esempio di polimorsmo . . . . . . . . . . . . . . . . . . . . . . . . .
90
5.9
TinyXML
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
93
◦
5.10 Esportazione dei dati nel formato di ViSOR (I parte) . . . . . . . . .
99
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . .
88
5.11 Esportazione dei dati nel formato di ViSOR (II
◦
6.1
Visione d'insieme: valutazione e presentazione
. . . . . . . . . . . . . 103
6.2
Schema di ViPER-PE
6.3
Metriche utilizzabili in ViPER-PE . . . . . . . . . . . . . . . . . . . . 105
6.4
Target e Candidate . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
6.5
Bounding box: dice - overlap . . . . . . . . . . . . . . . . . . . . . . . 115
6.6
Bounding box: recall - precision . . . . . . . . . . . . . . . . . . . . . 116
6.7
Bounding box: f-measure . . . . . . . . . . . . . . . . . . . . . . . . . 116
6.8
Bounding box: distribuzione di recall e precision . . . . . . . . . . . . 117
6.9
Baricentro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
parte)
. . . . . . . . 100
. . . . . . . . . . . . . . . . . . . . . . . . . . 104
Appendice A
Calcolo dell'ellisse
In questa appendice verrà descritto quali sono i fondamenti teorici utilizzati per
calcolare l'ellisse data una determinata regione connessa.
Per ottenere l'oriented
box (o meglio ancora l'ellisse) è possibile procedere in due modi:
•
calcolare l'MVEE (Minimum Volume Enclosing Ellipse) :
tecnica alquanto
complicata che mira a determinare l'ellisse con volume minore su un set di
punti cercando un vettore
sitiva
E
c ∈ Rn
e una matrice simmetrica strettamente po-
che minimizzi il determinante
det(E −1 ),
appartenente all'equazione
dell'ellisse. Il metodo non viene analizzato oltre perchè non è stato applicato;
ulteriori informazioni possono essere trovate in [27];
•
utilizzare i
momenti di primo e di secondo ordine.
Siccome i due metodi appena riportati portano a risultati molto simili, il secondo
è migliore poichè meno complesso e più discretizzabile.
I momenti delle immagini e i momenti invarianti giocano un ruolo molto importante nel riconoscimento degli oggetti e nell'analisi delle forme.
I momenti generici bidimensionali di ordine
di grigio
f (x, y)
(p + q)esimo di un'immagine a livelli
sono deniti come:
Z
+∞
Z
+∞
mpq =
−∞
xp y q f (x, y)dxdy
−∞
123
p, q = 0, 1, 2..
124
Calcolo dell'ellisse
Dato che i momenti vengono calcolati nel progetto su immagini binarie (denite
I ),
si può omettere
f (x, y),
avendo trasformato la funzione di distribuzione di pro-
babilità in una variabile binaria che è attiva quando i pixel sono presenti e settata
a 0 altrimenti:
Z Z
xp y q dxdy
mpq =
p, q = 0, 1, 2..
I
Lavorando sui pixel, è necessario discretizzare il momento:
mpq =
X
xp y q
A
dove
1
A è il set di elementi
su cui lavora la sommatoria. Grazie ai momenti è pos-
sibile ottenere misure invarianti rispetto alle trasformazioni ani (quali rotazione,
translazione, scala, etc. . . ).
I momenti invarianti alla traslazione sono, ad esempio, i momenti centrali :
µpq =
X
(x − xc )p (y − yc )q
A
dove
xc
e
yc
sono le coordinate del baricentro (o centroide)
ressato.
1 In questo caso, gli elementi sono i pixel neri nell'array dell'immagine.
c,
dell'oggetto inte-
125
Gettando uno sguardo più attento ai momenti, si può notare che:
Area = m00 ,
xc =
m10
,
m00
yc =
m01
,
m00
θ = tan−1
b
,
a−c
w=
q
p
6(a + c − b2 + (a − c)2 ,
w=
q
p
6(a + c + b2 + (a − c)2
dove
a=
m20
− x2c ,
m00
b = 2(
c=
m11
− xc yc ),
m00
m02
− yc2 ,
m00
Tramite questi parametri è possibile inferire l'ellisse equivalente, dove
il suo centro,
θ
la sua inclinazione,
w
e
l
C(xc , yc ) sarà
rispettivamente l'asse maggiore e minore.
Le formule antecedenti sono vericabili passo per passo. Ad esempio, l'area è il
momento bidimensionale di ordine 0:
gli elementi di A.
P
A
x0 y 0 ⇒
P
A
1,
ovvero la somma di tutti
126
Calcolo dell'ellisse
Bibliograa
[1] J. Black, T. Ellis, and P. Rosin, A novel method for video tracking performance
evaluation, Joint IEEE International Workshop on Visula Suirvellance and
Performance Evaluation of Tracking and Surveillance (VS-PETS), 2003.
[2] A.
T.
Nghiem,
F.
Bremond,
M.
Thonnat,
and
V.
Valentin,
ETISEO,
performance evaluation for video surveillance systems, 2007.
[3] C. Jaynes, S. Webb, R. M. Steele, and Q. Xiong, An Open Development Environment for Evaluation of Video Surveillance Systems, IEEE International
Workshop on Performance Evaluation of Tracking and Surveillance (PETS),
2002.
[4] T. List, J. Bins, R. B. Fisher, D. Tweed, and K. R. Thórisson, Two Approaches
to a Plug-and-Play Vision Architecture
CAVIAR and Psyclone, 2006.
[5] D. Tweed, W. Feng, R. B. Fisher, J. Bins, and T. List, Exploring techniques
for behaviour recognition via the CAVIAR modular vision framework, 2006.
[6] T. List and R. B. Fisher, CVML - an XML-based computer vision markup
language,
IEEE International Conference on Pattern Recognition (ICPR),
2004.
[7] T. List, J. Bins, J. Vazquez, and R. B. Fisher, Performance evaluating the
evaluator, 2005.
[8] http://imagelab.ing.unimore.it/imagelab/, ImageLab Website.
[9] C. G. M. Snoek, M. Worring, J. C. van Gemert, J. M. Geusebroek, and A. W. M.
Smeulders, The challenge problem for automated detection of 101 semantic
concepts in multimedia, ACM Multimedia, 2006.
127
128
BIBLIOGRAFIA
[10] M. R. Naphade,
L. Kennedy,
J. R. Kender,
S. F. Chang,
J. R. Smith,
P. Over, and A. Hauptmann, A Light Scale Concept Ontology for Multimedia
Understanding for TRECVID 2005, IBM Research Technical Report, 2005.
[11] Y. J. Zhang, A survey on evaluation methods for image segmentation, Pattern
Recognition, vol. 29, no. 8, 1996.
[12] P. L. Correia and F. Pereira, Objective evaluation of video segmentation
quality, IEEE Transactions on Image Processing, vol. 12, no. 2, 2003.
[13] C. E. Erdem, B. Sankur, and A. M. Tekalp, Performance measures for vdeo
object segmentation and tracking, IEEE Transactions on Image Processing,
vol. 13, no. 7, 2004.
[14] A. Prati, I. Mikic, M. M. Trivedi, and R. Cucchiara, Detecting moving shadows: algorithms and evaluation, IEEE Transactions on Pattern Analysis and
Machine Intelligence, vol. 27, no. 7, 2003.
[15] F. Oberti, A. Teschioni, and C. S. Regazzoni, ROC curves for performance
evaluation of video sequences processing systems for surveillance applications,
IEEE International Conference on Image Processing (ICIP), 1999.
[16] T. H. Chalidabhongse, K. Kim, D. Harwood, and L. Davis, A perturbation
method for evaluating background subtraction algorithms, Joint IEEE In-
ternational Workshop on Visula Suirvellance and Performance Evaluation of
Tracking and Surveillance (VS-PETS), 2003.
[17] V. Y. M. et al., Performance evaluation of object detection algorithms, IEEE
International Conference on Pattern Recognition (ICPR), 2002.
[18] J. Nascimento and J. S. Marques, New performance evaluation metrics for
object detection algorithms, IEEE International Workshop on Performance
Evaluation of Tracking and Surveillance (PETS), 2004.
[19] C. J. Needham and D. Boyle, Performance evaluation metrics and statistics for positional tracker evaluation, Computer Vision System: International
Conference, 2003.
BIBLIOGRAFIA
[20] M. Rossi and A. Bozzoli, Tracking and counting moving people,
129
IEEE
International Conference on Image Processing (ICIP), 1994.
[21] M. Xu and T. Ellis, Partial observation vs. blind tracking through occlusion,
British Machine Vision Conference (BMVC), 2002.
[22] S. Pingali and J. Segen, Performance evaluation of people tracking systems,
1996.
[23] F. Yin, D. Makris, and S. Velastin, Performance evaluation of object tracking algorithms, IEEE International Workshop on Performance Evaluation of
Tracking and Surveillance (PETS), 2007.
[24] F. Bashir and F. Porikli, Performance evaluation of object detection and tracking system, IEEE International Workshop on Performance Evaluation of
Tracking and Surveillance (PETS), 2006.
[25] R. Cucchiara, C. Grana, G. Neri, M. Piccardi, and A. Prati, The Sakbot system
for moving object detection and tracking, European Workshop on Advanced
Video-Based Surveillance Systems, 2001.
[26] D. Mihalcik, ViPER-PE Manual.
[27] N. Moshtagh, Minimum volume enclosing ellipsoids, 2006.
[28] D. P. Young and J. M. Ferryman, PETS Metrics: On-Line Performance Evaluation Service, Joint IEEE International Workshop on Visula Suirvellance
and Performance Evaluation of Tracking and Surveillance (VS-PETS), 2005.
[29] V. Manohar, M. Boonstra, V. Korzhova, P. Soundararajan, D. Goldgof, R. Kasturi, S. Prasad, H. Raju, R. Bowers, and J. Garofolo, PETS vs. VACE Evaluation Programs: A Comparative Study, IEEE International Workshop on
Performance Evaluation of Tracking and Surveillance (PETS), 2007.
[30] http://viper-toolkit.sourceforge.net/, ViPER Website.
[31] X. Desurmont, R. Wijnhoven, E. J. O. Caignartd, M. Baraise, W. Favoreelf,
and J. F. Delaigle, Performance evaluation of real-time video content analysis
systems in the CANDELA project, 2005.
130
BIBLIOGRAFIA
[32] L. M. Brown, A. W. Senior, Y. l. Tian, J. Connell, A. Hampapur, C. F. Shu,
H. Merkl, and M. Lu, Performance evaluation of surveillance systems under
varying conditions, 2004.
[33] T. Ellis,
Performance metrics and methods for tracking in surveillance,
IEEE International Workshop on Performance Evaluation of Tracking and
Surveillance (PETS), 2002.
[34] X. Desurmont, R. Sebbe, F. Martin, C. Machy, and J. F. Delaigle, Performance
evaluation of frequent events detection systems, IEEE International Workshop
on Performance Evaluation of Tracking and Surveillance (PETS), 2006.
[35] J. Nascimento and J. Marques, Performance evaluation of object detection
algorithms for video surveillance, 2005.
[36] N. Lazarevic-McManus, J. Renno, D. Makris, and G. A. Jones, Designing
evaluation methodologies: The case of motion detection, IEEE International
Workshop on Performance Evaluation of Tracking and Surveillance (PETS),
2006.
[37] http://imagelab.ing.unimore.it/visor/, ViSOR Portal.
[38] http://datasets.visionbib.com/index.html, Datasets Reference.
[39] R. Vezzani and R. Cucchiara, ViSOR: Video Surveillance Online Repository, British Machine Vision Association and Society for Pattern Recognition
Symposium on Security and surveillance: performance evaluation, 2007.
[40] http://www.informedia.cs.cmu.edu/arda/, VACE Portal.
[41] L. O. Rocha, L. U. V. Elho, P. C. Ezar, and P. C. Arvalho, Image MomentsBased Structuring and Tracking of Objects,
XV Brazilian Symposium on
Computer Graphics and Image Processing, 2002.
[42] D. Mihalcik and D. Doermann, The Design and Implementation of ViPER.