Impiego di classificatori nell analisi di immagini



Documenti analoghi
Pro e contro delle RNA

APPUNTI DI MATEMATICA LE FRAZIONI ALGEBRICHE ALESSANDRO BOCCONI

risulta (x) = 1 se x < 0.

Corso di. Dott.ssa Donatella Cocca

Ricerca di outlier. Ricerca di Anomalie/Outlier

4 3 4 = 4 x x x 10 0 aaa

Capitolo 2. Operazione di limite

Capitolo 13: L offerta dell impresa e il surplus del produttore

Librerie digitali. Video. Gestione di video. Caratteristiche dei video. Video. Metadati associati ai video. Metadati associati ai video

Raccomandazione del Parlamento europeo 18/12/2006 CLASSE PRIMA COMPETENZE ABILITÀ CONOSCENZE. Operare con i numeri

VC-dimension: Esempio

ELABORAZIONE DI DATI TRIDIMENSIONALI - RELAZIONE HOMEWORK 2

Analisi e diagramma di Pareto

Dimensione di uno Spazio vettoriale

Regressione non lineare con un modello neurale feedforward

Webinar e Manuale Operativo Tecnica di Trading

I motori di ricerca. Che cosa sono. Stefania Marrara Corso di Sistemi Informativi

Il concetto di valore medio in generale

Tecniche di riconoscimento statistico

Esercizi su. Funzioni

Introduzione. Classificazione di Flynn... 2 Macchine a pipeline... 3 Macchine vettoriali e Array Processor... 4 Macchine MIMD... 6

Algoritmi di clustering

Analisi dei requisiti e casi d uso

TRAGUARDI PER LO SVILUPPO DELLE COMPETENZE AL TERMINE DELLA SCUOLA PRIMARIA

Sommario. Definizione di informatica. Definizione di un calcolatore come esecutore. Gli algoritmi.

~ Copyright Ripetizionando - All rights reserved ~ STUDIO DI FUNZIONE

SVM. Veronica Piccialli. Roma 11 gennaio Università degli Studi di Roma Tor Vergata 1 / 14

Il Problem-Based Learning dalla pratica alla teoria

Domande a scelta multipla 1

Automazione Industriale (scheduling+mms) scheduling+mms.

Il database management system Access

GUIDA AL CALCOLO DEI COSTI DELLE ATTIVITA DI RICERCA DOCUMENTALE

Indice. pagina 2 di 10

ISTITUTO COMPRENSIVO MONTEGROTTO TERME SCUOLA PRIMARIA DISCIPLINA: MATEMATICA - CLASSE PRIMA OBIETTIVI DI APPRENDIMENTO


La distribuzione Normale. La distribuzione Normale

Computazione per l interazione naturale: macchine che apprendono

Siamo così arrivati all aritmetica modulare, ma anche a individuare alcuni aspetti di come funziona l aritmetica del calcolatore come vedremo.

VALORE DELLE MERCI SEQUESTRATE

Elementi di Psicometria con Laboratorio di SPSS 1

Fasi di creazione di un programma

Introduzione all analisi dei segnali digitali.

per immagini guida avanzata Uso delle tabelle e dei grafici Pivot Geometra Luigi Amato Guida Avanzata per immagini excel

Metodi statistici per le ricerche di mercato

Algoritmi e strutture dati. Codici di Huffman

CORSO ACCESS PARTE II. Esistono diversi tipi di aiuto forniti con Access, generalmente accessibili tramite la barra dei menu (?)

Probabilità discreta

Strumenti di indagine per la valutazione psicologica

Strutturazione logica dei dati: i file

Determinare la grandezza della sottorete

Corrispondenze e funzioni

Esercitazione 1 del corso di Statistica 2 Prof. Domenico Vistocco

Mete e coerenze formative. Dalla scuola dell infanzia al biennio della scuola secondaria di II grado

La Videosorveglianza Criteri per il dimensionamento dello storage

APPUNTI SU PROBLEMI CON CALCOLO PERCENTUALE

Aprire WEKA Explorer Caricare il file circletrain.arff Selezionare random split al 66% come modalità di test Selezionare J48 come classificatore e

ColorSplitter. La separazione automatica dei colori di Colibri.. Perché ColorSplitter? Come opera ColorSplitter?

Traduzione e adattamento a cura di Gylas per Giochi Rari

Obiettivo Principale: Aiutare gli studenti a capire cos è la programmazione

Codifiche a lunghezza variabile

SPC e distribuzione normale con Access

GUIDA RAPIDA PER LA COMPILAZIONE DELLA SCHEDA CCNL GUIDA RAPIDA PER LA COMPILAZIONE DELLA SCHEDA CCNL

PROGETTO EM.MA PRESIDIO

E naturale chiedersi alcune cose sulla media campionaria x n

Come masterizzare dischi con Nero 11

Indice generale. OOA Analisi Orientata agli Oggetti. Introduzione. Analisi

f(x) = 1 x. Il dominio di questa funzione è il sottoinsieme proprio di R dato da

LE FUNZIONI A DUE VARIABILI

1. Scopo dell esperienza.

Slide Cerbara parte1 5. Le distribuzioni teoriche

CURRICULUM SCUOLA PRIMARIA MATEMATICA

Uso di base delle funzioni in Microsoft Excel

matematica probabilmente

Corso di Informatica

Clustering. Utilizziamo per la realizzazione dell'esempio due tipologie di software:

5.2.1 RELAZIONI TRA TABELLE Creare una relazione uno-a-uno, uno-a-molti tra tabelle 9

Lezione 8. La macchina universale

1. Distribuzioni campionarie

Esponenziali elogaritmi

Gli attributi di STUDENTE saranno: Matricola (chiave primaria), Cognome, Nome.

Regressione Mario Guarracino Data Mining a.a. 2010/2011

e-dva - eni-depth Velocity Analysis

LE CARATTERISTICHE DEI PRODOTTI MULTIVARIANTE

Elementi di Psicometria con Laboratorio di SPSS 1

13. Campi vettoriali

GRUPPO MY- social media solutions / Via G.Dottori 94, Perugia / PI

Corso di Matematica per la Chimica

CHIUSURE di MAGAZZINO di FINE ANNO

ESEMPIO 1: eseguire il complemento a 10 di 765

Testo alla base del Pitgame redatto dal prof. Yvan Lengwiler, Università di Basilea

Federico Laschi. Conclusioni

ARCHITETTURA DI RETE FOLEGNANI ANDREA

Plate Locator Riconoscimento Automatico di Targhe

Progettazione di un Database

Report di valutazione studiolegalebraggio.it

EXPLOit Content Management Data Base per documenti SGML/XML

Organizzazione degli archivi

Ottimizzazione delle interrogazioni (parte I)

03. Il Modello Gestionale per Processi

Quando troncare uno sviluppo in serie di Taylor

Transcript:

Impiego di classificatori nell analisi di immagini Davide Devescovi 1 La classificazione Con il termine classificazione si intende una procedura statistica che permette di associare ciascun oggetto (che sia un immagine, un pattern, un dato numerico... ), appartenente a un generico spazio multidimensionale, a una o più etichette, corrispondenti alle possibili classi di cui può far parte un oggetto; si parla di classificazione esclusiva quando ciascun oggetto può appartenere a una sola classe, o di classificazione continua o fuzzy se un oggetto può appartenere, con un certo grado di probabilità, a più classi. Per ottenere una classificazione si usano le informazioni riguardanti alcuni tratti salienti (feature, caratteristiche) degli oggetti in esame, e li si confronta, in un apposito spazio multidimensionale, con quelli di un training set: se questo training set è etichettato, e quindi le possibili classi sono note e ogni campione nel set è già associato alla classe di appartenenza, si parla di apprendimento supervisionato; in caso contrario, cioè quando le possibili classi vanno direttamente ricavate dai dati stessi, abbiamo a che fare con apprendimento non supervisionato. Una formalizzazione del problema di classificazione può essere la seguente: partendo da una serie di dati di addestramento {(x 1,y), (x 2,y),..., (x n,y) } si deve produrre un classificatore h: X Y che realizzi il mappaggio di nuovi elementi x X sulle etichette y Y. 2 Tipologie di classificatori I metodi di classificazione sono decisamente numerosi, anche a causa del fatto che più classificatori possono essere combinati tra loro (vedi paragrafo 2.6), ma in generale possiamo identificare due tipi principali di approcci: quello statistico e quello sintattico. Il primo approccio cerca in genere di massimizzare la probabilità a posteriori (cioè la probabilità che un campione appartenga a una data classe, che sarà quindi quella scelta), ad esempio a partire dalle stime (ottenute dal trainig set) delle probabilità a priori delle classi e delle probabilità condizionali (qual è la probabilità che il prossimo pattern osservato sia x se la sua classe di appartenenza è W), come nel caso dei classificatori Bayesiani, (paragrafo 2.1); oppure minimizzando iterativamente l errore di predizione, come fanno le reti neurali (paragrafo 2.2). Il secondo approccio, invece, è molto più pragmatico, dato che si concentra sull analisi di caratteristiche distintive degli oggetti o pattern da classificare: trattando queste feature in uno spazio multidimensionale appositamente costruito, la classificazione comporta il confronto tra le caratteristiche strutturali delle feature del campione da testare e di quelle del training set, sia con apprendimento supervisionato (ad esempio l algoritmo Nearest Neighbor, paragrafo 2.3) che non supervisionato (come nel caso del Clustering, paragrafo 2.4). 1

Segue quindi una lista (tutt altro che esaustiva) dei più comuni tipi di classificatori utilizzati. 2.1 Classificatori Bayesiani Come si intuisce dal nome, i classificatori Bayesiani fanno uso del teorema di Bayes per calcolare le probabilità a posteriori, stimando i dati statistici necessari a partire dal training set (addestramento supervisionato). Supponiamo di avere un insieme di possibili classi C e una serie di attributi (o feature) A 1, A 2,..., A k usati per discriminare tra le classi, e indichiamo con lettere minuscole (c, a 1... ) particolari valori assunti dalle variabili. La classificazione ottimale sarà allora quella per cui la probabilità di una certa classe, data una serie di valori assunti dagli attributi, è massima: max P r(c = c A 1 = a 1 A 2 = a 2... A k = a k ) Per il teorema di Bayes si ha che questa probabilità è uguale a: max P r(a 1 = a 1 A 2 = a 2... A k = a k C = c) P r(a 1 = a 1 A 2 = a 2... A k = a k ) P r(c = c) La probabilità a priori di avere una data classe c si può stimare facilmente dal training set (a patto che sia composto in maniera da essere rappresentativo), mentre il denominatore dell equazione è irrilevante, dato che è lo stesso per tutte le classi dell insieme C in quanto da esse indipendente. Si tratta quindi di riuscire a stimare la probabilità condizionale a numeratore per ciascuno degli attributi; fatto questo, si otterrebbe un classificatore Bayesiano ottimo, in grado di fornire la classificazione migliore in assoluto. Il problema è che tale stima è molto complicata a causa delle dipendenze tra attributi, e anche con poche feature rischia di diventare computazionalmente irrealizzabile. Per ovviare al problema si può usare un Naive Bayes Classifier che, come dice il nome, fa un ipotesi piuttosto naive sulle feature, ovvero che siano completamente indipendenti. Se questo è il caso, si ha che P r(a 1 = a 1 A 2 = a 2... A k = a k C = c) = P r(a 1 = a 1 C = c) e quindi che P r(a 1 = a 1 A 2 = a 2... A k = a k C = c) equivale a P r(a 1 = a 1 C = c)p r(a 2 = a 2 C = c)... P r(a k = a k C = c) A questo punto si può ricavare tutto il necessario dal training set, ad esempio così: P r(a j = a j C = c) = count(a j = a j C = c) count(c = c) grazie a cui si hanno a disposizione tutti i dati per calcolare le probabilità a posteriori P r(c = c A 1 = a 1...) e scegliere quindi la classe che ha probabilità maggiore. I classificatori naive sono piuttosto semplici da realizzare e non richiedono un grande carico computazionale; le assunzioni sull indipendenza delle feature sono il più delle volte irrealistiche, ma ciononostante le prestazioni di questi classificatori sono piuttosto buone se ben addestrati. 2

Per trovare una via di mezzo tra questi due estremi (dipendenza totale tra tutte le feature / indipendenza totale) si può usare l approccio delle Reti Bayesiane, un particolare tipo di grafi diretti aciclici che consentono di rappresentare relazioni di causalità tra feature, riuscendo a tenere in considerazione solo le dipendenze effettive tra attributi alleggerendo notevolmente il calcolo rispetto al caso di classificatore ottimale. Per approfondimenti sulle reti bayesiane e sulle ipotesi di indipendenza e causalità si può leggere questo articolo[1] dal taglio divulgativo. Qualche dettaglio in più sul Naive Bayesian Learning si trova invece in questo paper[2]. 2.2 Neural Networks Una rete neurale è un insieme di elementi (neuroni) interconnessi tra di loro in modo da ottenere un comportamento globale complesso, che è determinato appunto dalle connessioni (e dai loro pesi) e dai parametri dei neuroni. Il caso più semplice di rete neurale è il percettrone (figura 1), di fatto un singolo neurone che riceve una serie di valori in input e, in base a una funzione di attivazione, produce un determinato output; un percettrone viene addestrato modificando iterativamente i pesi degli archi di input, fino ad ottenere l output desiderato. Come Figura 1: Un percettrone è facile intuire, però, il percettrone ha potenzialità piuttosto limitate, tant è che non riesce neppure a rappresentare l operazione di XOR in quanto non linearmente separabile. Si passa quindi all utilizzo di topologie di rete più complesse, che prevedono uno strato di neuroni di input, uno strato di output e uno o più strati nascosti (figura 2); sono poi presenti varianti ricorsive, in cui cioè gli output vengono reindirizzati verso lo strato di input o gli strati nascosti. Figura 2: Un esempio di rete neurale Ciascun neurone è caratterizzato da una funzione di attivazione, che può essere scelta in base alle esigenze (step, tangente iperbolica, sigmoide... ); inoltre ciascun collegamento ha un peso che moltiplica il valore di input di quel collegamento, e proprio sui pesi si concentra la fase di addestramento della rete. Prendiamo il caso più semplice, l addestramento supervisionato: in questa situazione possiamo stabilire tutti i valori di input della rete e i rispettivi valori di output desiderati: ciò che resta da determinare sono i vari pesi, in modo da minimizzare l errore tra l output ottenuto e quello desiderato. L algoritmo più noto per l addestramento è quello della backpropagation: si parte dall errore all uscita della rete, e si calcola di quanto vanno corretti i pesi in uscita dall ultimo strato di neuroni per avvicinarsi al risultato ideale, usando una stima di massima verosimiglianza (minimizzare l errore equivale a massimizzare la probabilità dei dati ). Questa correzione può essere vista come l errore dallo strato precedente, che 3

quindi ripete la procedura e cerca di aggiustare a sua volta i propri pesi per avvicinarsi all output richiesto: in sostanza l errore si propaga per tutta la rete. Il procedimento viene ripetuto iterativamente, finché non viene raggiunto un errore finale ritenuto tollerabile. A questo proposito è importante notare che ottenere un errore eccessivamente piccolo non è un risultato positivo, perché in questo caso significa che la rete ha imparato a memoria i valori del training set, e se le verranno presentati nuovi dati difficilmente riuscirà a lavorare con successo perché ha perso in generalità nel corso dell addestramento. Questo problema è noto con il termine di overfitting, ed esistono alcuni metodi per ridurne l impatto, tra cui i più comuni sono l early stopping e il weight decay. L early stopping prevede che una parte del training set non venga passata alla rete per l addestramento, ma venga mantenuta nascosta per essere usata come set di validazione; dopo ogni passo di backpropagation si misura l errore sia sui dati usati nel training che sui dati nascosti : quando l overfitting entrerà in gioco si noterà che l errore sui dati di training tenderà a 0, mentre (dopo essere sceso nelle prime fasi di addestramento) quello sui dati di confronto tenderà ad aumentare nuovamente. Appena si nota un aumento dell errore sul set di validazione si deve interrompere l apprendimento, perché da quel punto in avanti la rete perderebbe in generalità e non apprenderebbe, ma si limiterebbe ad imparare a memoria. Il weight decay invece prevede un termine di penalizzazione, durante la backpropagation, per i pesi che assumono valori assoluti grandi; senza entrare nel dettaglio, basti sapere che pesi molto grandi tendono a ridurre la generalità della rete (in sostanza causano una varianza eccessiva, per cui al minimo discostarsi dai valori che la rete ha imparato l output tende a diventare imprevedibile e poco attendibile), per cui penalizzando i grandi valori assoluti si riescono a ridurre gli effetti dell overfitting. È evidente che le reti neurali possono avere una grande varietà di applicazioni: dall analisi di trend, approssimazione di funzioni, filtraggio e compressione di dati... Naturalmente uno dei loro possibili usi è la classificazione: in particolare dato un training set etichettato si può realizzare apprendimento supervisionato come spiegato in precedenza, impostando gli input (valori delle feature) e gli output desiderati (le etichette). È però anche possibile addestrare le reti in maniera non supervisionata, senza cioè fornire output desiderati: in questi casi la rete si dovrà adattare in base ai risultati ottenuti nei vari passi di addestramento; in questo modo si possono realizzare operazioni di clustering (di cui parleremo nella sezione 2.4). 2.3 Nearest Neighbor L algoritmo Nearest Neighbor è un metodo di classificazione supervisionato basato su feature riconoscibili: a ciascuna feature viene assegnata una dimensione, in modo che si formi uno spazio multidimensionale di feature. All interno di questo spazio vengono disegnate le feature estratte da un training set etichettato, in cui le classi sono note a priori. Completata questa fase di apprendimento, si analizzano i campioni da classificare: anche da questi si estraggono le feature scelte, che vengono quindi confrontate con quelle del training set nello spazio multidimensionale; un campione sarà assegnata alla classe del vicino più vicino, appunto il nearest neighbor, solitamente usando la metrica di distanza euclidea (ma altre scelte sono possibili). È chiaro che l algoritmo sarà tanto più oneroso quanto più grande è il training set e quanto maggiore è il numero di feature considerate: si ha a che fare evidentemente con un 4

trade-off, perché un training set più ampio è tendenzialmente più rappresentativo, e un alto numero di feature permette di discriminare meglio tra le possibili classi, ma a fronte di questi vantaggi la complessità dei calcoli aumenta. Sono state quindi elaborate alcune varianti dell algoritmo, principalmente per ridurre il numero di distanze da calcolare: ad esempio è possibile partizionare lo spazio di feature e misurare la distanza solo rispetto ad alcuni dei volumi così ottenuti. K-nearest neighbor è una variante che determina i k elementi più vicini: ognuno di questi vota per la classe cui appartiene, e il campione in esame verrà assegnato alla classe più votata. 2.4 Clustering Con il termine clustering si denota un famiglia di metodi non supervisionati in grado di individuare raggruppamenti intrinseci (cluster) tra i dati nello spazio multidimensonale, e di creare in corrispondenza di tali raggruppamenti le classi. Queste classi sono inizialmente incognite, e non è noto nemmeno il loro numero, cosa che rende il problema decisamente complesso. I metodi di clustering possono essere ricondotti a due famiglie: Clustering gerarchico: attraverso operazioni di tipo bottom-up o top-down organizza i dati in una sequenza innestata di gruppi che possono essere visualizzati come un albero. Clustering partizionale: individua (solitamente attraverso algoritmi euristici iterativi) delle partizioni che minimizzano un dato criterio di clustering, ad esempio la somma dei quadrati degli errori. Comuni a entrambe le famiglie sono i criteri di clustering che si possono scegliere per specificare il grado di ottimalità di ogni soluzione ammissibile; a seconda del criterio scelto esistono poi vari algoritmi di clustering che forniscono una procedura per determinare le soluzioni che lo ottimizzano. La maggior parte dei criteri di clustering sono definiti sulla base delle due osservazioni seguenti: i pattern all interno dello stesso cluster devono essere tra loro più simili rispetto a pattern appartenenti a cluster diversi; i cluster sono costituiti da nuvole di punti a densità relativamente elevata, separate da zone dove la densità è più bassa. Tra i diversi criteri possibili: somma dei quadrati degli errori: minimizza i quadrati delle distanze dai centri delle classi (detto anche criterio di minima varianza). altri criteri basati su varianza intraclasse: si tratta di una famiglia di metodi tutti tesi a minimizzare la varianza all interno delle classi. criteri basati su scattering: tendono a minimizzare la varianza intraclasse e allo stesso tempo a massimizzare quella inter-classe. 2.4.1 Clustering gerarchico Il clustering gerarchico opera in maniera simile al modo di eseguire classificazione in tassonomia biologica, dove ad esempio gli insetti vengono gerarchicamente classificati specializzandone le specie a partire da famiglie molto ampie fino a famiglie molto più ridotte. 5

Gli algoritmi possono essere bottom-up (agglomerativi) o top-down (divisivi). Nel primo caso si parte cercando di aggregare singoli elementi e ad ogni passo (livello) si fondono in un cluster gli elementi o i sotto-cluster che sono tra loro più simili rispetto a un determinato criterio. Nel secondo (più complesso e quindi meno utilizzato) si parte con un singolo cluster e ad ogni livello si suddividono in sotto-cluster Figura 3: Clustering gerarchico gli elementi più diversi. In entrambi i casi il risultato può essere rappresentato attraverso un albero. I metodi gerarchici (tra i più noti possiamo citare Single-Link e Complete-Link) sono nella pratica utilizzati soprattutto quando i pattern sono discretizzati e non appartengono a uno spazio metrico. In tal caso infatti criteri di somiglianza ad-hoc possono essere implementati per controllare l aggregazione e la divisione. 2.4.2 Clustering partizionale Gli algoritmi più comunemente utilizzati sono K-means (o la sua variante Fuzzy C-means) e Expectation-Maximization (EM). K-means Si tratta di un metodo molto semplice computazionalmente e altrettanto semplice da implementare, che ottimizza il criterio somma dei quadrati degli errori. Nella sua versione base, l algoritmo può essere così descritto: - genera K cluster e determinane il centro; oppure genera direttamente K punti da usare come centri dei cluster; - assegna ciascun punto al cluster il cui centro è più vicino, in base al criterio di distanza scelto (euclidea, Mahalonobis... ); - ricalcola i centri dei cluster come media delle coordinate di tutti i punti che vi appartengono; - ripeti finché il criterio di terminazione non è soddisfatto (in genere il criterio di terminazione prevede che i centri rimangano costanti, e che quindi le partizioni non cambino tra due passi successivi). Questo algoritmo tende a convergere piuttosto rapidamente (è raro che occorrano più di 10 passi) e a fornire risultati piuttosto buoni, a patto di partire da una soluzione iniziale ragionevole. K-means ha alcuni svantaggi: innanzitutto il numero di classi K deve essere noto a priori; inoltre l ottimizzazione è iterativa e locale, quindi si può avere convergenza su un massimo locale della soluzione. La variante fuzzy del K-means consente a un pattern di appartenere con un certo grado di probabilità a diverse classi; questa variante fornisce a volte una convergenza più robusta verso la soluzione finale, ma soffre in sostanza degli stessi problemi della versione standard di K-means. Diverse varianti sono state proposte per risolvere questi problemi: ad esempio per minimizzare il rischio di convergenza verso minimi locali l algoritmo può essere eseguito tante 6

volte a partire da soluzioni iniziali diverse, casuali o magari prodotte da un metodo evoluzionistico (algoritmo genetico). Le tecniche di clustering validation (la determinazione del numero di classi senza che questa informazione sia nota), invece, tendono a valutare a posteriori la bontà delle soluzioni prodotte per diversi valori di K, e a sceglierne una sulla base di un criterio di validazione che tenga conto sia della bontà della soluzione sia della sua complessità. Expectation-Maximization Il metodo di Expectation-Maximization si basa sull ipotesi che i dati nello spazio siano stati generati da un mix di distribuzioni, cioè che ogni classe abbia generato dati in accordo con una specifica distribuzione, ma al termine della generazione i pattern appaiono come prodotti da un unica distribuzione multi-modale. Obiettivo del clustering attraverso EM è quello di risalire (a partire dai pattern del training set) ai parametri delle singole distribuzioni che li hanno generati. A tal fine si ipotizza nota la forma delle distribuzioni e si assume, per semplicità, che esse siano tutte dello stesso tipo: il caso più frequente è quello di mix di s distribuzioni multinormali (gaussiane) di cui si vogliono stimare dai dati i parametri di definizione. EM è nato per il calcolo della massima verosomiglianza (maximum likelihood) nel caso in cui i dati a disposizione X={x 1,x 2,...x n } siano incompleti a causa della mancanza di alcuni valori Y={y 1,y 2,...y n }. Pertanto ogni pattern completo z i =[x i, y i ], i=1..n è costituito da due parti di cui solo la prima è nota. In realtà in alcuni casi, ad esempio quando si devono derivare i parametri delle distribuzioni gaussiane, i dati sono completi, ma le potenzialità di EM vengono sfruttate per rendere trattabile la complessità della massimizzazione. L algoritmo consiste di due passi, che vengono ripetuti iterativamente fino a convergenza: nel passo di Expectation viene calcolato il valore atteso del log likelihood completo: log L(θ Z) = log L(θ X, Y ) = log P r(x, Y θ) a partire dal training set e da una stima iniziale dei parametri θ; nel passo di Maximization viene calcolato il set di valori di parametri che massimizza il valore atteso ottenuto nel passo di Expectation. Questo set di valori viene usato come stima di parametri nel successivo passo di Expectation. L algoritmo converge sempre, ma corre il rischio di cadere in un ottimo locale; inoltre, come per k-means, con alcune soluzioni iniziali si possono ottenere cattivi risultati, e non è semplice determinare il numero ottimale di cluster se non sono noti a priori. 7

2.5 Altri tipi di classificatori Esistono molte altre tipologie di classificatori; fra queste vale la pena di citare Support Vector Machines e Discriminant Analysis (DA). SVM è un algoritmo per la classificazione supervisionata che cerca di risolvere il problema di individuare l iperpiano di separazione ottimo tra due classi, ovvero quell iperpiano che separa, con il massimo margine, gli elementi di una classe da quelli dell altra, in modo da poter poi applicare questo stesso iperpiano a nuovi campioni che gli vengano sottoposti. Quando si ha a che fare con classi linearmente separabili non sorgono particolari problemi; se invece Figura 4: SVM ricerca l iperpiano di separazione ottimo si tratta con classi non lineramente separabili bisogna usare una sorta di trucco, modificando l algoritmo di SVM in modo che cerchi l iperpiano in spazi di dimensionalità superiore: se due classi non sono linearmente separabili nel nostro spazio multidimensionale, è però probabile che lo siano se aumentiamo la dimensionalità. Inoltre è da notare il fatto che SVM operi solo nel caso di due classi; esistono però alcuni sistemi che consentono di ottenere buoni risultati anche nel caso generico di n classi. DA è un metodo per trovare la combinazione lineare di feature che meglio divide due o più classi; può essere usata come un classificatore lineare, ma più spesso per la riduzione di dimensionalità per una successiva classificazione: in questo caso il suo scopo è cercare di ottenere un set di feature più piccolo rispetto all originale, ma che sia comunque altrettanto rappresentativo, in modo da ridurre la complessità computazionale. 2.6 Multiclassificatori Un multiclassificatore è un sistema in cui diversi classificatori sono utilizzati (normalmente in parallelo, ma talvolta anche in cascata o in modo gerarchico) per eseguire la classificazione dei pattern; le decisioni dei singoli classificatori sono quindi fuse ad un qualche livello della catena di classificazione. Recentemente è stato dimostrato (teoricamente ma soprattutto nella pratica) che l utilizzo di combinazioni di classificatori (in inglese multiclassifier, combination of classifiers, classifier fusion) può migliorare, talvolta anche molto marcatamente, le prestazioni di un singolo classificatore. Pertanto può essere opportuno, anziché spendere mesi per migliorare di un epsilon l accuratezza del proprio classificatore, affiancare ad esso altri classificatori basati su feature/algoritmi diversi. La combinazione è comunque efficace solo nel caso in cui i singoli classificatori siano in qualche modo indipendenti tra loro, ovvero non commettano tutti lo stesso tipo di errori. L indipendenza (o diversità) è normalmente ottenuta cercando di: Utilizzare feature diverse per identificare i pattern Utilizzare algoritmi diversi per l estrazione delle feature Utilizzare diversi algoritmi di classificazione 8

Addestrare lo stesso algoritmo di classificazione su training set diversi (bagging) Insistere nell addestramento di alcuni classificatori con i pattern più frequentemente erroneamente classificati (boosting) La combinazione dei classificatori può essere eseguita a livello di decisione o a livello di confidenza. 2.6.1 Fusione a livello di decisione Ogni singolo classificatore fornisce in output la propria decisione, che consiste della classe cui ha assegnato il pattern e opzionalmente del livello di affidabilità della classificazione eseguita (ovvero di quanto il classificatore si sente sicuro della decisione presa). Le decisioni possono essere tra loro combinate in diversi modi (schemi di voto, schemi basati su ranking,... ). Uno dei più noti e semplici metodi di fusione è la cosiddetta majority vote rule: ogni classificatore vota per una classe, e il pattern viene assegnato alla classe maggiormente votata; l affidabilità del multi-classificatore può essere calcolata mediando le singole confidenze. Nel borda count, invece, ogni classificatore produce una classifica o ranking delle classi (dalla prima all ultima) a seconda della probabilità che a ciascuna di esse appartenga il pattern da classificare. I ranking vengono convertiti in punteggi che vengono tra loro sommati, e la classe con il più elevato punteggio finale è quella scelta dal multi-classificatore. prestazioni 2.6.2 Fusione a livello di confidenza Ogni singolo classificatore fornisce in output la confidenza di classificazione del pattern rispetto a ciascuna delle classi, ovvero un vettore di dimensionalità s in cui l i-esimo elemento indica la probabilità di appartenenza del pattern alla classe i-esima. Diversi metodi di fusione sono possibili, tra cui somma, media, prodotto, max, min. Il metodo della somma è uno dei più noti e utilizzati per la sua robustezza: prevede di eseguire la somma vettoriale dei diversi vettori confidenza, e di classificare il pattern sulla base dell elemento maggiore. Una variante molto efficace è quella della somma pesata, dove la somma dei vettori confidenza è eseguita pesando i diversi classificatori in base al loro grado di abilità: i gradi di abilità possono essere definiti in base alle singole prestazioni dei classificatori, ad esempio in maniera inversamente proporzionale all errore di classificazione. 3 Applicazioni dei classificatori nel campo dell analisi di immagini I classificatori possono essere utilizzati in diversi campi dell analisi di immagini, a partire dal semplice clustering di pixel fino a operazioni avanzate quali il riconoscimento di volti. Tuttavia l argomento è ancora campo di ricerca, e non esistono approcci standard o teorie ben consolidate: ad esempio la scelta sul tipo di classificatore da utilizzare è più che altro lasciata all intuito o all esperienza. Allo stesso modo scegliere un approccio statistico piuttosto che uno sintattico ha in ogni caso pro e contro: l approccio statistico può essere più preciso e consente di avere un indicazione probabilistica riguardo all appartenenza a 9

una piuttosto che a un altra classe, ma è raro che la mole di dati coinvolta nell analisi di immagini possa essere trattata in tempi ragionevoli da un approccio di questo tipo; viceversa, un approccio sintattico è più rapido, ma meno preciso e senza indicazione di probabilità per l appartenenza a una classe. In generale è quindi possibile risolvere uno stesso problema con diversi tipi di classificatori, e un certo classificatore può essere applicato a più operazioni; nei seguenti paragrafi vedremo quindi alcune delle applicazioni più comuni per i classificatori, tenendo conto che non sono necessariamente né le uniche né le migliori. 3.1 Classificazione a livello di pixel Può essere utile applicare algoritmi di classificazione a basso livello, lavorando direttamente sulle caratteristiche (di colore e intensità) dei pixel che compongono un immagine: in questa situazione le dimensionalità in gioco non sono elevate, e si può quindi pensare di utilizzare un classificatore Bayesiano. Una possibile applicazione è il riconoscimento dei pixel che rappresentano la pelle. Utilizzando istogrammi e un training set sufficientemente ampio, è infatti possibile ricavare le probabilità condizionali: la probabilità che, se abbiamo osservato un pixel di pelle, questo sia un generico pixel x si può calcolare come la percentuale di pixel di pelle presenti nel box 1 del pixel x. Le probabilità a priori delle due classi (pelle/non pelle) sono facilmente calcolabili come percentuale sul totale del training set, quindi come visto in precedenza si riesce a ottenere la probabilità a posteriori per ciacsun pixel. Un applicazione simile può essere quella necessaria nell analisi di un immagine satellitare, per cercare di associare un pixel a un tipo di terreno (boscoso, coltivato, urbano... ). Come detto in precedenza, non c è un unico sistema per un unico problema: in questo caso infatti possiamo usare gli istogrammi e un classificatore bayesiano, ma potremmo anche preferire apprendimento non supervisionato addestrando una rete neurale (in grado di rilevare relazioni non lineari), oppure usare direttamente l algoritmo K-means per clustering partizionale. 3.2 Segmentazione Il più delle volte prendere in considerazione i singoli pixel non è sufficiente, dato che molti tra i pixel presenti nell immagine saranno potenzialmente inutili (ad esempio i pixel di sfondo), e un analisi completa porta a un forte degrado delle prestazioni. È desiderabile riuscire a raggruppare i pixel correlati in una rappresentazione compatta, in modo da poter lavorare su un immagine ad alto livello, prendendo in considerazione solo determinati componenti. Le caratteristiche desiderate per queste rappresentazioni tendono a essere sempre le stesse, indipendentemente dal campo specifico di applicazione: il numero di componenti in un immagine non dovrebbe essere elevato e i componenti dovrebbero essere rappresentativi degli oggetti presenti nella scena. Il processo di ottenere questi componenti è detto segmentazione. Il problema della segmentazione si presenta in contesti diversi, e si può quindi affrontare in modi altrettando diversi. Ad esempio si parla di segmentazione quando si vuole rias- 1 Ricordiamo che un istogramma divide uno spazio di colori (RGB, grayscale,... ) in una serie di box. Ad esempio, per l intensità in scala di grigio una possibile divisione in box può essere 0-64, 65-128, 129-192, 193-256. 10

sumere il contenuto di un video, dividendolo in sequenze di frame simili e scegliendo un frame rappresentativo per ogni sequenza: il video è così riassunto da questi frame. In questo caso si fa uso di algoritmi di Shot Boundary Detection per rilevare il cambiamento di scena; algoritmi di questo tipo sono ad esempio implementati da codec di tipo MPEG-4 (quali DivX, XviD... ) per rilevare le posizioni migliori in cui inserire un key frame 2. Un ulteriore possibile applicazione della segmentazione è il cosiddetto Background Subtraction (figura 5): si vuole identificare solo la parte di immagine rilevante, sottraendo i pixel che rappresentano lo sfondo, che non contiene informazioni utili, confrontando una serie di fotogrammi successivi della stessa scena, in cui lo sfondo può venire parzialmente coperto da oggetti in movimento. Sempre grazie alla segmentazione si può cercare di rilevare la Figura 5: Background Subtraction presenza di una persona (problema tutt ora aperto) considerandola come unione di più segmenti (braccia, gambe, torso): nell immagine questi segmenti corrisponderanno a regioni uniformi (se i vestiti non hanno texture particolari), quindi sarà opportuno segmentare l immagine cercando zone dello stesso colore. Per identificare edifici in immagini satellitari si può segmentare l immagine in regioni poligonali, così come per il tracking di automobili in video di sorveglianza stradale e di controllo del traffico; e per cercare di rilevare una determinata parte meccanica si può cominciare a cercarne le componenti, che il più delle volte corrisponderanno a linee o cerchi. L approccio più naturale al problema della segmentazione è quello del clustering, dato che il nostro scopo è rappresentare un immagine in termini di cluster di pixel che hanno una relazione tra loro, non solo a livello di caratteristiche intrinseche (colore, intensità... ) ma anche spaziali (distanze, disposizioni nello spazio... ); possiamo quindi usare algoritmi di clustering (gerarchici o partizonali). In particolare vengono spesso utilizzati sia K-means che EM, visto che i metodi gerarchici faticano a gestire il grande numero di pixel presente senza fare uso di qualche tecnica per riassumere i dati più significativi. K-means può essere applicato scegliendo una determinata misura di distanza, ad esempio una che consideri sia il colore che la posizione di un pixel, in modo da suddividere l immagine nei suoi componenti principali; anche EM si può applicare in questo caso, per ottenere segmentazione di colori o texture, ponendo il problema in termini di dati mancanti. Si può ipotizzare che ogni pixel sia generato da una particolare distribuzione di probabilità scelta fra N possibili (dove N è il numero di segmenti che compone l immagine); ognuna di queste distribuzioni è una gaussiana con determinati parametri incogniti 2 Un key frame è un fotogramma che viene memorizzato nella sua interezza; i fotogrammi seguenti, per risparmiare spazio, vengono definiti in funzione del keyframe, specificando quali pixel differiscono e di quanto. 11

che vogliamo ricavare, in modo da poter risalire a quale segmento ha generato quale pixel, ovvero ottenere una segmentazione dell immagine. Un altro modo per realizzare una segmentazione è tramite il model fitting, ovvero sostenere che un gruppo di pixel deve essere considerato un segmento in quanto appartiene a un determinato modello, ad esempio una linea o una circonferenza. In questo caso il modello è esplicito, e il livello di astrazione si alza: per esempio non è possibile cercare gruppi di punti che formano una linea guardando solo alle relazioni tra coppie di punti, come avviene invece nel clustering puro. Tuttavia è possibile applicare una versione modificata di K-means per il fitting di linee: anziché partire da K centri, si ipotizzano K rette nell immagine, e a ogni passo si associa un punto alla retta più vicina, ricalcolando poi la retta come interpolazione dei punti. In maniera simile a quanto visto per la segmentazione, anche EM si può adattare al fitting di linee. EM può però essere applicato anche nel caso di Motion Segmentation, cioè quando si vuole determinare il movimento compiuto dai pixel confrontando due immagini successive: ci saranno regioni dell immagine che avranno compiuto lo stesso spostamento (in genere, punti alla stessa distanza dalla telecamera si sposteranno allo stesso modo nell immagine; i punti dello sfondo si sposteranno di poco, quelli di oggetti in primo piano subiranno spostamenti più significativi), e quindi si potranno identificare diversi Motion Fields, segmentando di fatto l immagine. Infine EM può essere anche usato nel Background Subtraction cui abbiamo accennato in precedenza, ponendo il problema come un problema di dati mancanti; facciamo finta che le immagini successive della nostra scena siano sempre lo stesso frame a cui è stato aggiunto di volta in volta del rumore: in questo modo tutto ciò che è rumore non fa parte dello sfondo, e usando i valori attesi dei dati mancanti possiamo ricostruire (e quindi sottrarre) il background. 3.3 Object Recognition L altro campo che analizzeremo è quello dell Object Recognition. Si tratta di un settore molto complicato, che include in realtà un gran numero di sottoproblemi e di diversi approcci, in cui ancora non esistono standard o soluzioni generali veramente efficaci. I classificatori entrano spesso in gioco in questo contesto, alcune volte in maniera determinante, altre volte facendo da supporto per ottimizzare altre tecniche. 3.3.1 Pose Consistency Questo approccio cerca di riconoscere un oggetto nell immagine ipotizzando un mappaggio tra le feature geometriche dell oggetto e quelle visualizzate nell immagine, stimando quindi la posa dell oggetto nell ambiente. In particolare si definiscono frame groups quei gruppi di feature considerati sufficientemente caratteristici, ad esempio tre punti, o tre direzioni e un punto. Un semplice algoritmo è il seguente: per ciascun frame group nell oggetto e per ciascun frame group nell immagine si usano le possibili corrispondenze per stimare una posa dell oggetto e ricostruirlo, riproiettandolo sull immagine; se questa retroproiezione è consistente, abbiamo trovato l oggetto nella posa ipotizzata. Chiaramente verrà scelta la posa per cui l aderenza della retroproiezione all immagine è massima. È chiaro che il numero di possibili corrispondenze da calcolare potrà essere piuttosto elevato: un sistema che si può usare per ridurlo è il Pose Clustering. In genere un oggetto avrà molti frame group, e quindi ci saranno molte corrispondenze tra oggetto e immagine 12

che indicheranno la stessa posa. Viceversa, le corrispondenze errate, dovute a rumore, indicheranno pose completamente diverse e isolate. Anziché verificare tutte le possibili pose, si può quindi effettuare una sorta di clustering delle pose, andando ad analizzare solo quelle più votate, cioè più frequenti nel corso dell analisi. In realtà questo sistema non si tratta di un vero e proprio classificatore, in quanto è un semplice sistema di voto per ridurre l albero di ricerca. 3.3.2 Template Matching Nei problemi di Object Recognition capita di frequente di cercare oggetti dalla forma semplice e contenuti stilizzati, quali ad esempio un volto umano (tendenzialmente un ovale al cui interno troviamo caratteristiche più o meno comuni: occhi, bocca, sopracciglia, fronte... ): l idea del template matching è verificare se l oggetto è presente in tutte le finestre di una determinata dimensione (ad esempio rettangolare) all interno di un immagine. Se non si conoscono grandezza e orientamento dell oggetto, si può ruotare o scalare la finestra di ricerca per tenerne conto (aumentando però i tempi di computazione). I metodi più semplici di template matching prevedono una semplice correlazione a livello di pixel tra un immagine campione e la finestra di ricerca; in genere i risultati possono essere buoni in casi molto specifici (condizioni di illuminazione costanti, stessa prospettiva sotto cui l oggetto è inquadrato... ), ma in casi più generali è opportuno usare dei classificatori addestrati con un buon numero di esempi. La scelta del classificatore da usare è piuttosto ampia, ad esempio sono stati realizzati rilevatori di volti usando reti neurali. In particolare, una prima rete neurale è usata per stimare l orientamento del volto, quindi una seconda rete si occupa di trovare il volto vero e proprio. Questo metodo funziona però solo con volti inquadrati frontalmente e in condizioni di illuminazione uniformi, che vanno assicurate o al momento della ripresa o tramite postprocessing sull immagine acquisita. Per poter individuare un generico oggetto, in Figura 6: Riconoscimento di volti condizioni di illuminazione generica e da un punto di vista qualunque è necessario un enorme numero di esempi, e il tempo di computazione non può che risentirne. Una strada forse più promettente è quella di lavorare nello spazio delle feature. Usando SVM, ad esempio, è stato ideato un algoritmo in grado di rilevare dei pedoni in immagini urbane o comunque con sfondo generico. Sempre nel campo del rilevamento di volti si è pensato all utilizzo di multiclassificatori: una cascata di classificatori che sfruttano la tecnica di boosting (vedi paragrafo 2.6) e lavorano sulle cosiddette Haar-like features riescono a riconoscere con discreta rapidità la presenza di un volto. La stessa tecnica si può estendere a un generico oggetto (ad esempio un automobile). Un applicazione molto interessante è quella del riconoscimento real-time di una classe di oggetti grazie a un vocabolario visuale appreso; l apprendimento si basa su un set di 13

immagini segmentate ed etichettate 3, mentre il riconoscimento effettua clustering nello spazio delle feature. Il rilevamento dell oggetto è molto rapido e indipendente da illuminazione, punto di vista o colore. Altre informazioni e alcuni video dimostrativi sul sito di Microsoft Research[3]. Un altro metodo di cui vale la pena parlare è il Principal Component Analysis: si tratta di un parente del Discriminant Analysis, dato che è utilizzato per la riduzione dimensionale dello spazio delle feature. Usando PCA si ricavano nuove feature come funzioni lineari delle originali; queste nuove feature occuperanno uno spazio dimensionale più ridotto, in cui è ad esempio possibile applicare un classificatore tipo Nearest Neighbor per identificare un oggetto. L idea di PCA è basata sul fatto che l uomo è in grado di riconoscere un numero enorme di volti, evidentemente riuscendo a farlo solo sulla base di pochi parametri; allo stesso modo PCA consente di ricavare da un immagine delle Eigenpictures (da Eigenvector, autovettore) che riassumono le informazioni più importanti dell immagine. Questo sistema è stato applicato per l identificazione di volti (non solo il rilevamento di un volto, ma anche l associazione del volto a una determinata persona) con risultati piuttosto buoni, anche se a fronte di un training set di oltre 2500 immagini (con diverse espressioni facciali, inquadrature, illuminazioni... ) per 16 individui. 3.3.3 Relational Matching I Relational Matchers tentano di descrivere un oggetto in base alle relazioni tra template caratteristici che lo compongono: anziché considerare un template unico, che risulterebbe il più delle volte troppo complesso per essere riconosciuto direttamente, si considerano template più ridotti che sono in qualche modo collegati tra loro: ad esempio anziché cercare di riconoscere direttamente una faccia intera si possono localizzare speratamente occhi, naso e bocca. I possibili template rilevati vengono messi in relazioni con metodi probabilistici, incrementando di volta in volta l assemblato complessivo: ad esempio si parte da quello che si ritiene essere un occhio, dopodiché si aggiunge la bocca (se questa rispetta i vincoli imposti dal modello), e così via, fino a ottenere l oggetto completo. In questa situazione un classificatore addestrato su un gran numero di esempi può venire utilizzato per ridurre il numero di ricerche da effettuare, eliminando a priori le ipotesi che non porteranno mai a una ricostruzione sensata. Il problema dell approccio di Relational Matching è che difficilmente è in grado di gestire oggetti complessi, dato che per ora questi sistemi funzionano abbastanza bene con oggetti semplici (quali appunto un volto), e sembra difficile riuscire a costruire matcher per modelli più complicati. 3 Esiste anche un algoritmo, LOCUS, che pare possa funzionare con apprendimento non supervisionato, cioè con immagini non etichettate. 14

4 Conclusioni I classificatori trovano ampio uso in vari campi della computer vision, e molte volte vengono usati in congiunzione con altre tecniche (geometriche, probabilistiche) di analisi di immagini, ad esempio per focalizzare l analisi (riducendo il peso computazionale). Finora non esistono standard o linee guida per quel che riguarda la scelta del tipo di classificatore, né per la configurazione di uno specifico classificatore: in genere l approccio migliore è valutare la tipologia di problema e provare a utilizzare il tipo di classificatore più adatto, eventualmente anche aggiustandolo e ottimizzandolo con un po di trial and error. Per quel che riguarda il processing real-time, molti dei classificatori e delle applicazioni visti richiedono una buona dose di computazioni, quindi non è semplice raggiungere il tempo reale; d altro canto buoni risultati sembrano ottenibili con multiclassificatori e classificatori a cascata (si veda ad esempio questo paper su real-time object detection[4]). Riferimenti bibliografici [1] Eugene Charniak, Bayesian Networks without Tears http://www.cs.ubc.ca/~murphyk/bayes/charniak_91.pdf [2] Charles Elkan, Naive Bayesian Learning reperibile su http://citeseer.ist.psu.edu/ [3] Microsoft Research Cambridge, http://research.microsoft.com/vision/cambridge/recognition/default.htm [4] Paul Viola, Michael Jones, Robust Real Time Object Detection reperibile su http://citeseer.ist.psu.edu/ [5] Davide Forsyth, Jean Ponce, Computer Vision: a Modern Approach. Prentice-Hall, 2003. [6] Various Wikipedia entries http://www.wikipedia.org 15