UNIVERSITÀ DEGLI STUDI DI TRIESTE                Facoltà di IngegneriaCorso di Laurea in Ingegneria dell’informazione     ...
2
IndiceINTRODUZIONE………………………………………...………………61 LA SEGMENTAZIONE ...............................................................
3.4.1 Tipo di dati restituito ..................................................................................... 43    ...
RingraziamentiDesidero ringraziare la mia famiglia, per avermi accompagnato in questi mesi diduri sforzi. Ringrazio il pro...
IntroduzioneIl presente lavoro di tesi si propone di sviluppare e studiare il problema dellaricerca di determinate tonalit...
Capitolo 1                                LA SEGMENTAZIONE1.1 Il colore e lo spazio di coloreIl colore viene percepito dal...
Figura 1.2: Mescolanza additiva dei colori rosso, blu e verdeSia per mescolanza sottrattiva che additiva, è possibile quin...
1.2 Panoramica sulla segmentazioneLa segmentazione di un’immagine consiste nella divisione dell’immagine inregioni signifi...
un certo livello di grigio presente nell’istogramma (per questo è dettaanche Sogliatura a livelli di grigio).          Fig...
Il principale vantaggio è dato dalla semplicità d’implementazione.      Tuttavia questo algoritmo non tiene conto dell’inf...
Tuttavia questa tecnica richiede uno studio molto accurato della fase di   inizializzazione (regioni troppo grandi possono...
   Fase di Fusione: Poiché la fase di divisione crea blocchi sempre più    piccoli (sovra-segmentazione), è necessaria un...
Il principale vantaggio di questa tecnica è lo sfruttamentodell’informazione sia spaziale (in termini di regioni adiacenti...
La principale tecnica utilizzata è l’algoritmo K-means, che osserva i seguenti      passi:          1. Fissato un numero K...
5. Superata quella soglia, ogni volta che alcune regioni si uniranno             (poiché i pixel di confine avranno una lu...
eserciterà sullo snake, nell’eventualità che esso passi per quel luogo.             L’energia esterna può essere calcolata...
18
Capitolo 2                        GLI ALGORITMI GENETICI2.1 La storiaGli algoritmi genetici furono inventati formalmente d...
Esempio 1.    Si può ad esempio codificare un punto del piano di fenotipo (5,12) come una sequenza di    bit (dove ogni bi...
Se il genotipo è una stringa di 4 bit, lo spazio di ricerca comprenderà 15 elementi (con o     senza segno).Ad ogni cromos...
Nel processo di incrocio, i geni dei due cormosomi scelti vengono mescolati(totalmente a caso, oppure scegliendo uno o più...
2.3 Funzionamento di un AGOgni algoritmo genetico segue una sequenza di passi che modellizzanol’evoluzione naturale di una...
2.4 SchemaUn importante nozione nell’ambito degli AG è quella di Schema, introdotta daHolland nel suo libro. Lo schema H r...
È da notare che questo teorema contempla solo gli effetti “distruttivi” su un datoschema a causa delle operazioni genetich...
2.6 Caratteristiche di un AGLe prestazioni di un AG dipendono sia dai parametri iniziali utilizzatidall’algoritmo, sia dal...
lente, poiché è sufficiente cambiare il numero di individui scelti in ogni        fase del torneo (aumentandolo se si vuol...
soluzione “sopra la media”, anche se non ottima. Negli anni, sono stati utilizzatiin diversi ambiti:       Ottimizzazione...
3. Convergenza dei classici metodi di ottimizzazione per la soluzione delle         corrispondenti condizioni di primo ord...
For r =1 To Rmax do            While (non si è ottenuto un valore accettabile) do               xn = vicino di xc         ...
Viene mantenuta una “storia recente” degli elementi ispezionati, per non    coinvolgerli più volte nell’evoluzione.       ...
32
Capitolo 3                           L’ALGORITMO SVILUPPATO3.1 ObiettivoIl problema che si vuole risolvere è quello di det...
3.2.1 Inizializzazione Il primo passo richiede la scelta dei parametri per l’algoritmo genetico (come descritto nel Capito...
0,4                                      0,3                                      0,2                                     ...
Si noti che non è stato necessario implementare una funzione di idoneità, in quantoil meccanismo di selezione si basa su u...
Implementa la funzione di valutazione. In questa realizzazione,             essa è descritta come in [1]Pacchetto: pkgGene...
valutazione presenti, nonché la media e la varianza del valore di                valutazione e del fenotipo (codificato tr...
I pacchetti per gestire l’inserimento dei dati da utente attraverso la form sono     i seguenti:     Pacchetto: pkgPrimiti...
sincronizzazione avviene per mezzo di un oggetto di tipo                    MyBoolean all’interno di un blocco sincronizza...
Figura 3.7: Scelta dei colori di estremo per lintervallo cercato4. Si impostino i parametri dell’algoritmo genetico: proba...
Figura 3.9: Esecuzione dellalgoritmo    6. Mediante il tasto “See Result” è possibile vedere all’interno        dell’immag...
3.4 Note tecniche3.4.1 Tipo di dati restituito   Scopo dell’algoritmo è fornire una lista di punti il cui colore rientra i...
44
Capitolo 4                          STUDIO DELL’ALGORITMO4.1 Metodo di studioPer lo studio del comportamento dell’algoritm...
    AC è l’area dell’insieme convesso13 più piccolo comprendente                    tutti i punti con colore inPiù il c.d...
   la media delle coordinate cartesiane dei punti medi di ogni              generazione, ovvero:              dove       ...
4.3.1 Prima fase: 10 elementi per generazioneSi è scelta l’immagine riportata in figura 4.2.                              ...
parametri dell’algoritmo (bassa popolazione, bassa probabilità di incrocio, bassa       lunghezza     del       segmento d...
dell’82.9% di punti generati. Il numero di generazioni improduttive sale al 60%, causando un aumento della media del valor...
susseguirsi delle generazioni. L’efficienza migliora notevolmente, e solo il  10% delle generazioni è stato improduttivo. ...
Test 1.e                          800% pCross      80% pMut        0.1         600lSeg(bit)     3           400Tempo (ms) ...
considerando le generazioni successive alla 60°, si ottiene una media di 4.45punti trovati in ogni generazione, con una me...
Test 1.f                             800% pCross         90% pMut           0.1         600lSeg(bit)        8           40...
4.3.2 Seconda fase: 100 elementi ad ogni generazione   In questa fase si sono ripetuti gli stessi test sulla stessa immagi...
Test 2.b        800% pCross        10          700                            600% pMut          50                       ...
Test 2.d                            800% pCross        10% pMut          50          600lSeg(bit)       8           400Tem...
Test 2.f         800 % pCross         90          700                              600 % pMut           0.1               ...
I test che hanno riportato i risultati migliori si possono approssimare al test   descritto nella seguente tabella:       ...
Le immagini su cui saranno effettuati i test sono le seguenti:                                    coefficiente di distribu...
I risultati ottenuti variando i parametri caratteristici dell’algoritmo sono iseguenti:                                   ...
Sviluppo e studio di un algoritmo genetico per la ricerca di un intervallo di colore in un'immagine digitale
Sviluppo e studio di un algoritmo genetico per la ricerca di un intervallo di colore in un'immagine digitale
Sviluppo e studio di un algoritmo genetico per la ricerca di un intervallo di colore in un'immagine digitale
Sviluppo e studio di un algoritmo genetico per la ricerca di un intervallo di colore in un'immagine digitale
Sviluppo e studio di un algoritmo genetico per la ricerca di un intervallo di colore in un'immagine digitale
Sviluppo e studio di un algoritmo genetico per la ricerca di un intervallo di colore in un'immagine digitale
Sviluppo e studio di un algoritmo genetico per la ricerca di un intervallo di colore in un'immagine digitale
Sviluppo e studio di un algoritmo genetico per la ricerca di un intervallo di colore in un'immagine digitale
Sviluppo e studio di un algoritmo genetico per la ricerca di un intervallo di colore in un'immagine digitale
Sviluppo e studio di un algoritmo genetico per la ricerca di un intervallo di colore in un'immagine digitale
Sviluppo e studio di un algoritmo genetico per la ricerca di un intervallo di colore in un'immagine digitale
Sviluppo e studio di un algoritmo genetico per la ricerca di un intervallo di colore in un'immagine digitale
Sviluppo e studio di un algoritmo genetico per la ricerca di un intervallo di colore in un'immagine digitale
Sviluppo e studio di un algoritmo genetico per la ricerca di un intervallo di colore in un'immagine digitale
Sviluppo e studio di un algoritmo genetico per la ricerca di un intervallo di colore in un'immagine digitale
Sviluppo e studio di un algoritmo genetico per la ricerca di un intervallo di colore in un'immagine digitale
Sviluppo e studio di un algoritmo genetico per la ricerca di un intervallo di colore in un'immagine digitale
Sviluppo e studio di un algoritmo genetico per la ricerca di un intervallo di colore in un'immagine digitale
Sviluppo e studio di un algoritmo genetico per la ricerca di un intervallo di colore in un'immagine digitale
Sviluppo e studio di un algoritmo genetico per la ricerca di un intervallo di colore in un'immagine digitale
Sviluppo e studio di un algoritmo genetico per la ricerca di un intervallo di colore in un'immagine digitale
Sviluppo e studio di un algoritmo genetico per la ricerca di un intervallo di colore in un'immagine digitale
Sviluppo e studio di un algoritmo genetico per la ricerca di un intervallo di colore in un'immagine digitale
Sviluppo e studio di un algoritmo genetico per la ricerca di un intervallo di colore in un'immagine digitale
Sviluppo e studio di un algoritmo genetico per la ricerca di un intervallo di colore in un'immagine digitale
Sviluppo e studio di un algoritmo genetico per la ricerca di un intervallo di colore in un'immagine digitale
Sviluppo e studio di un algoritmo genetico per la ricerca di un intervallo di colore in un'immagine digitale
Sviluppo e studio di un algoritmo genetico per la ricerca di un intervallo di colore in un'immagine digitale
Sviluppo e studio di un algoritmo genetico per la ricerca di un intervallo di colore in un'immagine digitale
Sviluppo e studio di un algoritmo genetico per la ricerca di un intervallo di colore in un'immagine digitale
Sviluppo e studio di un algoritmo genetico per la ricerca di un intervallo di colore in un'immagine digitale
Sviluppo e studio di un algoritmo genetico per la ricerca di un intervallo di colore in un'immagine digitale
Sviluppo e studio di un algoritmo genetico per la ricerca di un intervallo di colore in un'immagine digitale
Sviluppo e studio di un algoritmo genetico per la ricerca di un intervallo di colore in un'immagine digitale
Sviluppo e studio di un algoritmo genetico per la ricerca di un intervallo di colore in un'immagine digitale
Sviluppo e studio di un algoritmo genetico per la ricerca di un intervallo di colore in un'immagine digitale
Sviluppo e studio di un algoritmo genetico per la ricerca di un intervallo di colore in un'immagine digitale
Sviluppo e studio di un algoritmo genetico per la ricerca di un intervallo di colore in un'immagine digitale
Sviluppo e studio di un algoritmo genetico per la ricerca di un intervallo di colore in un'immagine digitale
Sviluppo e studio di un algoritmo genetico per la ricerca di un intervallo di colore in un'immagine digitale
Sviluppo e studio di un algoritmo genetico per la ricerca di un intervallo di colore in un'immagine digitale
Sviluppo e studio di un algoritmo genetico per la ricerca di un intervallo di colore in un'immagine digitale
Sviluppo e studio di un algoritmo genetico per la ricerca di un intervallo di colore in un'immagine digitale
Sviluppo e studio di un algoritmo genetico per la ricerca di un intervallo di colore in un'immagine digitale
Sviluppo e studio di un algoritmo genetico per la ricerca di un intervallo di colore in un'immagine digitale
Sviluppo e studio di un algoritmo genetico per la ricerca di un intervallo di colore in un'immagine digitale
Upcoming SlideShare
Loading in …5
×

Sviluppo e studio di un algoritmo genetico per la ricerca di un intervallo di colore in un'immagine digitale

1,379 views
1,313 views

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,379
On SlideShare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
27
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Sviluppo e studio di un algoritmo genetico per la ricerca di un intervallo di colore in un'immagine digitale

  1. 1. UNIVERSITÀ DEGLI STUDI DI TRIESTE Facoltà di IngegneriaCorso di Laurea in Ingegneria dell’informazione Curriculum in informatica Sviluppo e studio di un algoritmo genetico per la ricerca di un intervallo di colore in un’immagine digitaleRelatore: Prof. Andrea SGARRO TESI DI LAUREA DI: ANDREA BIDINOST MATR. 83600156 Anno Accademico 2011/2012
  2. 2. 2
  3. 3. IndiceINTRODUZIONE………………………………………...………………61 LA SEGMENTAZIONE ..................................................................... 7 1.1 Il colore e lo spazio di colore .................................................................................... 7 1.2 Panoramica sulla segmentazione .............................................................................. 9 1.3 Tecniche di segmentazione........................................................................................ 9 1.3.1 Segmentazione a soglia..................................................................................... 9 1.3.2 Accrescimento delle regioni.......................................................................... 11 1.3.3 Divisione e Fusione ....................................................................................... 12 1.3.4 Clustering......................................................................................................... 14 1.3.5 Segmentazione a bacini ................................................................................. 15 1.3.6 Contorni Attivi ............................................................................................... 162 GLI ALGORITMI GENETICI ........................................................... 19 2.1 La storia ......................................................................................................................... 19 2.2 Terminologia biologica ............................................................................................... 19 2.3 Funzionamento di un AG .......................................................................................... 23 2.4 Schema .......................................................................................................................... 24 2.5 Principali problematiche ............................................................................................. 25 2.6 Caratteristiche di un AG............................................................................................. 26 2.6.1 Numero di elementi, probabilità di incrocio e di mutazione .................. 26 2.6.2 Meccanismo di selezione ............................................................................... 26 2.6.3 Meccanismo di incrocio ................................................................................ 27 2.6 Alcune applicazioni ..................................................................................................... 27 2.6 Metodi Euristici di Ottimizzazione........................................................................... 283 L’ALGORITMO SVILUPPATO ........................................................ 33 3.1 Obiettivo ....................................................................................................................... 33 3.2 Descrizione dell’algoritmo ......................................................................................... 33 3.2.1 Inizializzazione ............................................................................................... 34 3.2.2 Prima generazione .......................................................................................... 34 3.2.3 Generazioni successive .................................................................................. 34 3.2.4 Interruzione..................................................................................................... 35 3.3 Implementazione ......................................................................................................... 36 3.3.1 Struttura del codice ........................................................................................ 36 3.4 Note tecniche ............................................................................................................... 43 3
  4. 4. 3.4.1 Tipo di dati restituito ..................................................................................... 43 3.4.1 Rappresentazione del genotipo .................................................................... 434 STUDIO DELL’ALGORITMO ......................................................... 45 4.1 Metodo di studio ....................................................................................................... 45 4.2 Definizione di coefficiente di distribuzione ................................................................... 45 4.3 Studio mediante cambiamento di parametri ......................................................... 46 4.3.1 Prima fase: 10 elementi per generazione ..................................................... 48 4.3.2 Seconda fase: 100 elementi per generazione .............................................. 55 4.3.3 Terza fase: miglior combinazione di parametri ......................................... 58 4.4 Studio attraverso immagini con diverso coefficiente di distribuzione ....................... 59 4.4.1 Riepilogo........................................................................................................... 69 4.5 Studio su un ridotto numero di generazioni ......................................................... 70 4.6 Applicazione ad un’immagine termica................................................................... 75 4.7 Applicazione per il rilevamento di una traiettoria................................................ 77CONCLUSIONI ...................................................................................... 81APPENDICE A ....................................................................................... 83BIBLIOGRAFIA .................................................................................... 106 4
  5. 5. RingraziamentiDesidero ringraziare la mia famiglia, per avermi accompagnato in questi mesi diduri sforzi. Ringrazio il professor A. Sgarro per avermi dato l’opportunità diapprofondire quest’interessante argomento, con pazienza e curiosità. Ringrazioil dott. Felice Andrea Pellegrino per l’aiuto nella stesura dei primi argomenti.Infine vorrei ringraziare i miei amici ed i miei fratelli, per essermi stati accantoed aver fatto il tifo per me, come sempre. 5
  6. 6. IntroduzioneIl presente lavoro di tesi si propone di sviluppare e studiare il problema dellaricerca di determinate tonalità di colore all’interno di un’immagine digitalizzata,attraverso un algoritmo genetico.Si è voluto quindi sviluppare un software per l’implementazione di talealgoritmo e per lo studio delle sue caratteristiche.Nel primo capitolo viene presentata la nozione di spazio di colore e vengonofornite brevemente ed in modo informale alcune tecniche di Segmentazione diimmagini digitali. Questi algoritmi, permettono di estrarre informazionidall’immagine in modo automatico.Nel secondo capitolo viene illustrata la tecnica degli algoritmi genetici per larisoluzione di alcuni problemi (prevalentemente di carattere geometrico-matematico). Ne vengono descritte le caratteristiche, il funzionamento, lepotenzialità ed i limiti. Inoltre vengono presentate alcune applicazioni in cuisono stati utilizzati.Nel terzo capitolo viene descritto l’algoritmo sviluppato e viene mostrato il suofunzionamento attraverso l’interfaccia grafica predisposta.Nel quarto capitolo vengono forniti i risultati di alcuni test effettuatisull’algoritmo, attraverso cui si è potuti giungere a conclusioni riguardanti limitidi efficacia ed efficienza. Al termine del capitolo vengono inoltre proposte duepossibili applicazioni: il rilevamento di un’area di calore ed il tracciamento diuna traiettoria.Al termine, in Appendice A, è riportato il codice scritto per l’implementazione. 6
  7. 7. Capitolo 1 LA SEGMENTAZIONE1.1 Il colore e lo spazio di coloreIl colore viene percepito dall’occhio umano in base alla radiazione luminosaemessa dall’oggetto osservato. I fotorecettori posti all’interno del bulbo ocularepossono inviare tre stimoli nervosi diversi a seconda della lunghezza d’onda delsegnale luminoso che colpisce quella particolare regione della retina.Combinando tra lori i diversi stimoli, il nostro cervello è in grado di associare ilcolore presente in quella particolare regione. È quindi naturale scegliere tre colori“elementari” capaci di generare ognuno uno stimolo nervoso diverso. Adesempio, questi colori possono essere il magenta (Magenta), il giallo (Yellow) edil ciano (Cyan). Essi sono detti detti colori primari sottrattivi, poiché sono ingrado di generare gli altri colori in base ad una mescolanza sottrattiva1. Figura1.1: Mescolanza sottrattiva dei colori ciano, giallo e magentaTuttavia, i colori possono essere generati anche tramite una mescolanza di tipoadditivo 2. I tre colori primari additivi, utilizzati nell’ambito elettronico, sono ilrosso (Red), il blu (Blue) ed il verde (Green).1 La lunghezza d’onda del colore risultante è una radiazione “filtrata” dalla presenza di altricolori che assorbono ognuno una componente della luce solare. Ad esempio, si puòpensare a due inchiostri, uno giallo ed uno ciano, che si sovrappongono: una parte dellaluce viene assorbita dall’inchiostro giallo, un’altra parte dall’inchiostro ciano e larimanente viene riflessa dando origine al verde. La riflessione di tutte le radiazioniluminose genera il bianco, mentre l’assorbimento di queste genera il nero.2 La lunghezza d’onda del colore risultante è una radiazione “combinata”. Le radiazioni,infatti, colpiscono nello stesso istante di tempo la retina: in questo modo, vengonopropagati stimoli nervosi per ogni lunghezza d’onda incidente. L’informazione viene poirielaborata dal cervello che “costruisce” il colore percepito. La presenza di tutte leradiazioni all’interno dell’occhio genera il bianco, mentre l’assenza genera il nero. 7
  8. 8. Figura 1.2: Mescolanza additiva dei colori rosso, blu e verdeSia per mescolanza sottrattiva che additiva, è possibile quindi generare un colorea partire da tre colori primari. In quest’ottica è possibile descrivere uno spazio dicolore. Infatti, assegnando ad ogni colore primario un valore numerico che neindica l’intensità, è possibile costruire uno spazio a tre dimensioni. Una voltastabilita la natura delle dimensioni ed i valori numerici di massimo e di minimo, èpossibile costruire un modello di colore. Il modello di colore classico per la codificae l’archiviazione delle immagini digitali è l’RGB, in cui le dimensionicorrispondono ai colori primari additivi ed ogni intensità va da un valore diminimo pari a zero, ad un valore di massimo pari a 255.Negli anni ’70 è stato introdotto anche la dimensione A (alpha), che rappresentala trasparenza o l’opacità del colore stesso. Per la memorizzazione digitale di uncolore nel modello ARGB, sono necessari 4 byte, ognuno per codificare unnumero da 0 a 255 associato alla dimensione corrispondente. 8
  9. 9. 1.2 Panoramica sulla segmentazioneLa segmentazione di un’immagine consiste nella divisione dell’immagine inregioni significative. Successivamente, vi sono molteplici utilizzi. Ad esempiol’immagine può essere partizionata per la rilevazione3 e/o il riconoscimento4 dioggetti. Attraverso la segmentazione è possibile tracciare la traiettoria di unoggetto presente in più fotogrammi in sequenza. Inoltre, è utilizzata nellacompressione digitale. L’immagine viene così trasformata in qualcosa di piùsignificativo e facile da analizzare attraverso un sistema automatico.La segmentazione classifica i pixel dell’immagine, raggruppandoli in insiemiaventi caratteristiche comuni (di colore, di luminosità, etc…). Figura 1.3: Immagine originale ed esempio di immagine segmentata1.3 Tecniche di segmentazione 1.3.1 Segmentazione a soglia (Hassan, 1989; Otsu, 1979) Si basa sulle informazioni ottenibili dall’istogramma di colore5. Nel caso più semplice, viene fissata una soglia di separazione in corrispondenza di3 La rilevazione di un oggetto permette di stabilire la sua presenza o assenza all’internodella scena4 Il riconoscimento permette di associare una porzione dell’immagine ad uno specificooggetto5 Istogramma che rappresenta la distribuzione dei colori in un’immagine. In ascissa sonopresenti le tonalità di colore (solitamente RGB) ed in ordinata il numero di pixel aventiquella determinata tonalità. Di seguito è illustrata un’immagine con il relativo istogrammadi colore. 9
  10. 10. un certo livello di grigio presente nell’istogramma (per questo è dettaanche Sogliatura a livelli di grigio). Figura 1.4: Istogramma di un’immagine a livelli di grigio con relativa soglia TI pixel dell’immagine apparterranno quindi ad una regione o all’altra.L’immagine risultante sarà in bianco e nero, dove il colore è decisodall’appartenenza o meno alla regione selezionata.La Sogliatura può anche essere effettuata in base a diverse tonalità di colore.In questo caso, si costruiscono più istogrammi e vengono fissate più sogliedi colore. Esempio 1.1 Esempio di applicazione dell’algoritmo di “Sogliatura a livelli di grigio” ad un’immagine in bianco e nero, nel cui istogramma sono presenti in ordinata i livelli di grigio. In questo caso, sono state utilizzate 2 soglie per limitare le regioni delle tonalità interessate. Figura 1.5: Immagine originale e segmentata tramite Sogliatura a diversi livelli 10
  11. 11. Il principale vantaggio è dato dalla semplicità d’implementazione. Tuttavia questo algoritmo non tiene conto dell’informazione spaziale degli elementi interni alla foto. 1.3.2 Accrescimento di regioni (Y.L. Chang, 1994) Si basa sul suddividere l’immagine in molteplici regioni distinte Ri, unendo poi quelle regioni adiacenti che verificano una determinata condizione H(R). L’algoritmo è suddiviso in due fasi: inizializzazione ed accrescimento.  Inizializzazione: L’immagine viene suddivisa in un determinato numero di regioni elementari (al limite, una regione può contenere un singolo pixel). Dopodiché vengono scelte quelle regioni che presentano un alto valore della funzione di omogeneità H(Ri)6  Accrescimento: data una condizione di omogeneità tra regioni distinte H(Ri Rj), in maniera iterativa le coppie di regioni contigue vengono valutate dalla funzione H ed eventualmente aggregate in una nuova regione. Esempio 1.2 Stabilita una certa soglia , si aggreghino le regioni Ri ed Rj solo se vale la disequazione: ≥ Dove è il numero di pixel di contorno aventi contrasto inferiore ad una certa soglia e comuni alle due regioni e Pm è la lunghezza del perimetro della regione più piccola. I principali vantaggi di questa tecnica sono l’elevata qualità ottenibile rispetto alle altre tecniche di segmentazione e l’adattabilità a qualsiasi tipo di immagine, attraverso un’opportuna costruzione della funzione di omogeneità.6 Funzione che valuta la presenza e la quantità di caratteristiche comuni appartenenti aipixel di una determinata regione. Ad esempio, si può confrontare la luminosità, lapresenza di un certo colore elementare RGB o la varianza dalla media RGB della regione. Èpossibile anche la valutazione della presenza di più caratteristiche in una stessa regione. 11
  12. 12. Tuttavia questa tecnica richiede uno studio molto accurato della fase di inizializzazione (regioni troppo grandi possono dar luogo a pixel non omogenei, regioni troppo piccole richiedono più tempo per essere unite tra loro) ed è caratterizzata da un elevato onere computazionale (dovuto alla scansione e valutazione delle singole regione ed alla valutazione dell’omogeneità sulle varie combinazioni possibili di regione-regione adiacente).1.3.3 Divisione e FusioneL’algoritmo si compone di due fasi:  Fase di Divisione: Questa fase è ricorsiva. Inizialmente si considera l’immagine intera e la si valuta attraverso una certa funzione di omogeneità H(R). Se il risultato è soddisfacente, l’algoritmo termina. Altrimenti si suddivide la regione in 4 sotto-regioni di uguale dimensione e si itera il procedimento su ogni regione. Si viene così a formare una struttura ad “albero quaternario”, come mostrato in figura: Figura 1.6: Suddivisione in una regione in sotto-regioni e albero quaternario corrispondente 12
  13. 13.  Fase di Fusione: Poiché la fase di divisione crea blocchi sempre più piccoli (sovra-segmentazione), è necessaria una procedura di rilassamento ed unione di quei sotto-blocchi che darebbero luogo ad una regione con alta funzione di densità. L’esempio sottostante può chiarire il problema: Esempio 1.3: Poiché l’immagine sottostante non è omogenea, viene divisa in 4 blocchi. Tuttavia solo un blocco dovrebbe essere separato, mentre gli altri 3 dovrebbero dare luogo alla stessa regione R1 R 1 R2 R2 R 3 R4 R1 Per la fusione si adotta una struttura dati chiamata RAG (“Region Adjacency Graph o grafo delle regioni adiacenti). Questo grafo pesato contiene in ogni nodo una regione (R1,…,Rn). Soltanto le regioni adiacenti sono collegate da un arco, il cui peso è il costo che si sosterrebbe nel fondere insieme i due blocchi. Il costo esprime l’incremento dell’errore in termini della funzione di omogeneità utilizzata. A ciascuna iterazione si fondono in un unico nodo (e in un unico blocco) le due regioni che comportano un costo minore. La computazione termina quando tutti i costi sono troppo elevati per sostenere una fusione. Figura 1.7: Immagine originale. Immagine dopo la fase di Divisione e dopo la Fusione delle zone omogenee. 13
  14. 14. Il principale vantaggio di questa tecnica è lo sfruttamentodell’informazione sia spaziale (in termini di regioni adiacenti) checromatica.La qualità della segmentazione dipende però dalla grandezza minima deiblocchi ed aumentare la qualità del risultato comporta un maggiore onerecomputazionale.1.3.4 ClusteringVengono costituite classi di pixel, raggruppati in base ad una determinatacaratteristica (luminanza, contrasto, livello di grigio, etc…). Dallo spaziobidimensionale dell’immagine si passa quindi allo spazio dellecaratteristiche, nel quale vengono raggruppate le varie porzioni diimmagine aventi una o più caratteristiche comuni. Si perde cosìl’informazione spaziale, che dovrà essere recuperata mediante unraffinamento successivo (pixel adiacenti appartenenti alla stessa classecostituiranno una regione omogenea). Figura 1.8: Esempi di gruppi di classi e di processo di raggruppamento in base alle caratteristicheIl Raggruppamento è una tecnica generale di suddivisione di un insieme didati (detti oggetti), introdotta da Robert Tryon nel 1939 (R.C. Tryon,1970). Le basi di un algoritmo di raggruppamento sono :  La creazione dello spazio multidimensionale delle caratteristiche  La definizione della funzione Fs di misura della similarità tra due oggetti (distanza)  La definizione del criterio di appartenenza ad una classe 14
  15. 15. La principale tecnica utilizzata è l’algoritmo K-means, che osserva i seguenti passi: 1. Fissato un numero K di classi, si attribuisce casualmente una classe a ciascun oggetto(pixel) 2. Per ogni classe, si calcola il centroide (punto medio) degli oggetti 3. Ogni oggetto viene assegnato alla classe al cui centroide è più vicino 4. Se l’algoritmo converge7, ci si fermi, altrimenti si riparta dal punto 2 L’algoritmo non garantisce il raggiungimento di un ottimo globale, ma può essere ripetuto più volte per ottenere più risultati su cui scegliere la soluzione migliore. Inoltre, l’efficacia dipende dal numero e dalla composizione dei cluster, per cui si può utilizzare un’esplorazione euristica dell’immagine in sostituzione del punto 1 dell’algoritmo. 1.3.5 Segmentazione a bacini L’idea è quella di pensare all’immagine come ad un insieme di argini e bacini, inizialmente vuoti. Questa distinzione viene fatta in base alla luminosità di ciascun pixel. Inizialmente i bacini sono vuoti, poi vengono riempiti d’acqua fino a che le acque di bacini distinti non si congiungono. A questo punto, le acque vengono separate da una “diga”. Al termine dell’algoritmo, le dighe rappresenteranno il contorno degli oggetti presenti. Più in dettaglio, il procedimento è il seguente: 1. Si assegni ad ogni pixel un valore di luminosità 2. Partendo dal valore inferiore di luminosità λ, si scelgano tutti quei pixel aventi luminosità λ. I pixel adiacenti ed i pixel isolati costituiranno il primo gruppo di regioni R1,..,Rn. 3. Si alzi il livello di luminosità λ’. I pixel adiacenti alla regione Ri si uniranno ad essa. 4. Si continui ad alzare il livello di luminosità e ad accrescere le regioni fino ad una soglia scelta , che si ritiene possa creare una distinzione tra le forme presenti.7 La convergenza è data dal non cambiamento della composizione delle partizioni o dalraggiungimento di una distanza minima tra oggetti e centroidi determinata a priori. 15
  16. 16. 5. Superata quella soglia, ogni volta che alcune regioni si uniranno (poiché i pixel di confine avranno una luminosità abbastanza elevata), i pixel che dovrebbero essere annessi costituiranno invece una parte dei contorni degli oggetti presenti 6. Al termine, tutti i contorni risulteranno uniti (formando delle dighe) e le regioni rappresenteranno la forma dei vari oggetti presenti (paragonabili a dei bacini pieni d’acqua). Un esempio è dato dalla figura sottostante: Figura 1.9: Evoluzione temporale della segmentazione "a bacini" Il principale svantaggio di questa tecnica è che, scelto un troppo basso, si costruiranno un numero molto elevato di piccole regioni (sovra- segmentazione) 1.3.6 Contorni Attivi (Michael Kass, 1988) Attraverso la tecnica dei Contorni Attivi, si vogliono distinguere gli oggetti dal resto della scena identificandone i bordi. L’immagine viene trasformata in una “mappa di forze” che agiscono su una linea curva (detta snake) per farla aderire al contorno dell’oggetto desiderato. Questa tecnica, diversamente dalle precedenti, richiede un’interazione con l’utente, che dovrà prima di tutto tracciare il primo snake in prossimità del bordo dell’oggetto specificato. Più in dettaglio ed in riferimento ad un’immagine a livelli di grigio, l’algoritmo è il seguente: 1. L’utente tracci una curva chiusa (snake) in prossimità dell’oggetto di cui si vogliono definire i bordi. 2. Si associ ad ogni pixel un valore che dipende dalla distanza al bordo più vicino (un bordo è riconoscibile per l’elevato valore di gradiente8) e che caratterizzerà la “forza” (energia esterna) che8 Associando ad ogni pixel un livello nella scala di grigio, il gradiente di un pixel èparagonabile alla variazione di intensità tra i suoi pixel “confinanti”. E’ plausibile ottenereun alto valore di gradiente alla presenza di due oggetti distinti separati da un bordo. 16
  17. 17. eserciterà sullo snake, nell’eventualità che esso passi per quel luogo. L’energia esterna può essere calcolata seguendo una formula del tipo: Dove Exy rappresenta l’energia esterna associata al pixel di coordinate (x,y) e (xb,yb) rappresentano le coordinate del bordo più vicino. 3. Si valuti l’energia interna associata allo snake, ovvero l’attitudine ad allungarsi ed a curvarsi (decisa a priori dall’utente), seguendo una formula del tipo: Dove s(x,y) è l’equazione parametrica dello snake, α è un coefficiente legato alla tensione della curva proporzionale alla capacità di allungamento e β è un coefficiente legato alla rigidità della curva, inversamente proporzionale alla sua capacità di deformazione. 4. Si facciano agire le forze esterne sulla curva, che si poserà su zone di gradiente minore (ad energia meno elevata), modificando la propria energia interna. 5. L’algoritmo si interrompa se la somma di forze esterne ed interne agenti sulla curva raggiunge un minimo, altrimenti si ritorni al punto 3. Figura 1.10: Immagine a livelli di grigio, mappa delle forze esterne, immagine segmentataL’efficacia dell’algoritmo dipende dai valori iniziali scelti per α e β, nonché dallafunzione secondo la quale calcolare energia interna ed esterna. 17
  18. 18. 18
  19. 19. Capitolo 2 GLI ALGORITMI GENETICI2.1 La storiaGli algoritmi genetici furono inventati formalmente da John Holland negli annisessanta e furono sviluppati negli anni sessanta e settanta. Lo scopo originale diHolland era quello di studiare il fenomeno dell’adattamento delle specie cosìcome avviene in natura, per poi riproporlo come tecnica risolutiva nell’ambitodei problemi nei sistemi informatici.Nel libro intitolato “Adaptation in Natural and Artificial Systems” (Holland, 1975),l’algoritmo genetico viene presentato come un’astrazione dell’evoluzionebiologica e vengono fornite metodologie teoriche per la modellizzazione dellarealtà tramite un AG (Algoritmo Genetico).2.2 Terminologia biologicaPer creare un collegamento con la teoria genetica anche a livello dinomenclatura, è necessario introdurre alcuni termini che saranno poi utilizzatinella descrizione dell’algoritmo.Ogni AG opera su un insieme di elementi candidati a diventare soluzione di unproblema (ad esempio, un punto generico nel piano per un problema dimassimizzazione di una funzione). L’insieme di questi elementi si chiamapopolazione o generazione. Particolarità degli AG è di agire su popolazioni di “pochielementi” (nell’ordine delle decine o delle centinaia). Ogni elemento dellapopolazione si chiama fenotipo e deve essere codificato in una struttura formatada dati elementari, chiamati geni. La scelta della particolare struttura adottata èfondamentale per la risoluzione del problema mediante una strategia genetica.Scelta una struttura, una determinata sequenza di geni si chiama genotipo ocromosoma. 19
  20. 20. Esempio 1. Si può ad esempio codificare un punto del piano di fenotipo (5,12) come una sequenza di bit (dove ogni bit rappresenta un gene), in cui i primi 4 bit rappresentano il numero 5 e gli ultimi 4 rappresentano il 12. Questo è il relativo genotipo: 01001100 Ogni gene è rappresentato da un bit. Questo punto può essere una soluzione candidata al probelma di massimizzare la funzione f1(x) = x+2y. Esempio 2. Si può, ad esempio, voler codificare una funzione, come f2(x)=x2 + 3x + 1. A questo punto, possono essere scelte 2 codifiche per i genotipi: una mediante stringhe di bit ed una mediante albero binario.  La codifica mediante stringhe di bit associa ad una sequenza di n bit un particolare valore univoco. Codificando Carattere Codifica binaria x 1111 2 1000 + 0100 * 0100 3 0011 1 0001 Si ha: 11111000010000110100111101000001 x 2 + 3 * x + 1 dove ogni bit rappresenta un gene.  La codifica mediante albero binario rappresenta i geni tramite nodi dell’albero. Seguendo una visita in ordine posticipato, si può riconoscere la funzione + + 1 ^2 * x 3 xOgni genotipo, quindi, codifica un fenotipo e rappresenta una possibilesoluzione del problema modellizzato. Si chiama spazio di ricerca l’insieme di tutti ipossibili valori che può assumere il fenotipo codificato mediante un particolaregenotipo. 20
  21. 21. Se il genotipo è una stringa di 4 bit, lo spazio di ricerca comprenderà 15 elementi (con o senza segno).Ad ogni cromosoma viene associato un valore che lo legherà (direttamente omeno) alla probabilità di essere scelto come buona soluzione e quindi di poterdare origine ad un elemento figlio che erediterà alcuni suoi “caratteri genetici”.Questo valore si chiama valore di valutazione ed è calcolato tramite una funzionedetta funzione di valutazione. Può rappresentare il fenotipo stesso, la distanza tradue punti o tra due valori (si pensi ai problemi di approssimazione o diinterpolazione) o qualsiasi altra entità. In base al valore di valutazione, vienecalcolato un altro valore, chiamato valore di idoneità calcolato tramite la funzione diidoneità. Questo valore rappresenta la “bontà” del cromosoma come possibilesoluzione e sarà tanto maggiore quanto migliore sarà il genotipo. Per il probelma di massimo presentato nell’ esempio 1, la funzione di valutazione potrebbe semplicemente essere la stessa funzione: Funzione di valutazione = f1(x,y) Il relativo valore sarà allora: Valore di valutazione = f1(5,12) = 5 + 2*12 = 29 La funzione di idoneità potrebbe restituire la differenza tra il valore di valutazione e la media dei fenotipi: Funzione di idoneità per (xi,yi) = – Dove N rappresenta il numero degli elementi della popolazione. Una funzione di idoneità altrettanto valida potrebbe rappresentare il rapporto tra il valore di valutazione e l’insieme di tutti i valori di valutazione, dando luogo ad un possibile valore di probabilità: 0≤ ≤1Per l’evoluzione della popolazione, ogni genotipo sarà soggetto (con una certaprobabilità) ad operazioni di selezione, incrocio, mutazione.Nel processo di selezione, vengono scelti una coppia di cromosomi appartenentiall’attuale popolazione, in base al valore della loro funzione di idoneità. Questoprocesso è l’equivalente della selezione naturale. 21
  22. 22. Nel processo di incrocio, i geni dei due cormosomi scelti vengono mescolati(totalmente a caso, oppure scegliendo uno o più punti di taglio), dando originead uno o più nuovi cromosomi. Con questo processo si modellizza lariproduzione sessuata. Figura 2.1: Esempi di incrocio di 2 cromosomi, scegliendo uno o più punti di taglioNel processo di mutazione, uno o più geni del cromosoma generato vengonomutati (un bit può venire invertito, un valore di un nodo di un albero binariopuò essere cambiato, etc…). Questa operazione è l’equivalente della mutazionegenetica e potrà essere sfruttato per rendere “più variegato” il campione.Può essere poi presente un valore obiettivo, ovvero una soglia di tolleranza entrocui si stabilisce a priori che una determinata soluzione è accettabile per ilproblema, anche se non ottima (ad esempio, la soglia di tolleranzanell’interpolazione di funzioni). Raggiunto questo valore, il processo dievoluzione può fermarsi.Infine, con il termine pressione di selezione si indica il grado con cui l’algoritmo(l’ambiente) predilige individui con alto valore di idoneità rispetto a quelli con unbasso valore di idoneità. 22
  23. 23. 2.3 Funzionamento di un AGOgni algoritmo genetico segue una sequenza di passi che modellizzanol’evoluzione naturale di una popolazione in un determinato ambiente (EhudLamm, 2011): 1. Si generi una popolazione casuale di N cromosomi 2. Si calcoli il valore di valutazione ed il valore di idoneità di ogni cromosoma nella popolazione 3. Si ripetano i seguenti i seguenti passi finchè non siano stati creati N nuovi cromosomi a. Selezione: si scelgano casualmente 2 cromosomi dalla popolazione attuale. La probabilità di essere scelti deve dipendere dal valore di idoneità dei cromosomi. Tanto più è alta l’idoneità di un cormosoma, tanto più spesso sarà scelto per la riproduzione. b. Incrocio: si effettui con probabilità pc un incrocio dei genotipi dei genitori scelti per creare un nuovo cromosoma, altrimenti si scelga un genitore come nuovo elemento. c. Mutazione: per ogni gene presente nel nuovo genotipo, lo si muti con probabilità pm d. Si inserisca il nuovo elemento nella nuova popolazione 4. La nuova popolazione prenda il posto della popolazione corrente 5. Se esiste ed è stato raggiunto un valore obiettivo, ci si fermi, altrimenti si riparta dal punto 2.Questa sequenza è da ritenersi approssimativa, poiché in base al particolareproblema affrontato, è possibile scegliere di alterare i processi di selezione,incrocio e mutazione per ottenere risultati migliori. 23
  24. 24. 2.4 SchemaUn importante nozione nell’ambito degli AG è quella di Schema, introdotta daHolland nel suo libro. Lo schema H rappresenta un blocco costitutivo disoluzione, ed è codificato da una stringa di caratteri 1/0/* (non importa).Rappresenta una determinata disposizione di caratteri all’interno di una stringa dibit. Il fenotipo 9 può essere rappresentato dal genotipo 1001, che appartiene agli schemi: ****, 1***, *0**, **0*, ***1, 10**, 1*0*, 1**1, *00*, *0*1, **01, 100*, 10*1, 1*01, *001, 1001Il Teorema degli Schemi proposto da Holland afferma che, data una popolazioneall’istante t, la media di istanze di un dato schema H presente nella popolazionesuccessiva sarà limitata inferiormente da: E( m(H, t+1) ) ≥ ∙ m(H, t) ∙ ∙ Dove: t: istante dell’attuale generazione m(H,t): numero di istanze di H presenti nella popolazione all’istante t (H, t): idoneità media delle istanze di H all’istante t , pari a : idoneità media della popolazione all’istante t pc: probabilità di incorcio in un punto singolo pm: probabilità di inversione di un bit d(H): lunghezza di definizione di H (distanza tra i bit ben definiti definiti più esterni) l: lunghezza di una stringa di bit appartenente allo spazion di ricerca o(H): ordine dello schema (numero di bit ben definiti nello schema)Il Teorema degli Schemi implica che gli schemi brevi e di basso ordine, la cuiidoneità media sia “sopra la media generale”, saranno rappresentati da unnumero sempre più alto di elementi, in modo esponenziale nel tempo. 24
  25. 25. È da notare che questo teorema contempla solo gli effetti “distruttivi” su un datoschema a causa delle operazioni genetiche. È un limite inferiore che non tieneconto dei possibili effetti “costruttivi” che si possono originare a seguito diincorci e mutazioni. Ed è proprio l’operazione di incrocio (Goldberg, 1989) unadelle principali fonti di potenza di un AG, per la sua capacità di ricombinareistanze di buoni schemi per formare istanze di schemi di ordine superiorealtrettanto buoni o migliori.2.5 Principali problematicheNella progettazione di un AG è necessario tenere in considerazione possibilieffetti indesiderati dovuti al meccanismo evolutivo.Il principale di questi fenomeni è la convergenza veloce. Dato uno shcema chegarantisce un valore di valutazione alto, è probabile che gli schemi seguenticonvergano ad esso, portando i fenotipi ad assumere valori appartenenti ad uninsieme sempre più ristretto. Se questo accade durante le prime generazioni, siincorre nel rischio di stabilizzarsi su un punto di ottimo locale, mentre potrebbeessere presente un valore di ottimo globale non ancora esplorato. Per porrerimedio a tale fenomeno, è necessario controllare la variabilità della popolazione(ad esempio, calcolando media e varianza dei valori di valutazione) edeventualmente aumentare le probabilità di mutazione, o modificare i meccanismidi selezione, incrocio e mutazione, oppure modificare la funzione di idoneitàfavorendo momentaneamente anche quei fenotipi che presentano bassa idoneità.Il fenomeno opposto è chiamato convergenza lenta. Esso si presenta nellepopolazioni in cui non si riesce ad affermare un particolare schema, causato dauna variabilità di popolazione alta. Questo effetto può essere ridotto riducendole probabilità di selezione ed i valori di idoneità dei fenotipi che più si discostanodalla media. 25
  26. 26. 2.6 Caratteristiche di un AGLe prestazioni di un AG dipendono sia dai parametri iniziali utilizzatidall’algoritmo, sia dalle tecniche di selezione, incrocio e mutazione adottate. Nonesiste al giorno d’oggi un modello standard per scegliere a priori i valori e letecniche da utilizzare.2.6.1 Numero di elementi , probabilità di incrocio e di mutazioneDeJong (DeJong, 1975) compì una serie di prove ripetute su una sequenza difunzioni di prova (sequenza di DeJong), ricercando una combinazione deiparametri iniziali che desse un risultato soddisfaciente. Egli ottenne i risultatimigliori con una popolazione iniziale composta da 50-100 individui, probabilitàdi incrocio prossima al 60% e probabilità di mutazione di circa lo 0.1%. Questivalori sono oggi diventati di uso comune. Tuttavia l’uso di algoritmi genetici pergenerare questi parametri (Grefenstette, 1986) ed una prova sistematica di unvasto insieme di combinazioni di essi (Schaffer, 1989) portarono a riteneremigliore una popolazione con 30 individui, con probabilità di incrocio del 75-95% ed una probabilità di mutazione dello 0.1%. Altri approcci prevedono divariare i parametri durante l’evoluzione.2.6.2 Meccanismo di selezioneSono stati ideati vari metodi di selezione, tra cui:  Selezione a classifica: si ordinano gli elementi della popolazione in base al loro valore di idoneità. Dopodichè, si scelga a caso un elemento (favorendo le posizioni con idoneità maggiore). Questo processo mantiene una bassa pressione di selezione. Tuttavia, valori di posizioni consecutive presentano valori di probabilità vicini. Questo sfavorisce il caso in cui tra due posizioni consecutive il valore di idoneità diminuisca significativamente, e si correrebbe il rischio di una convergenza lenta.  Selezione a torneo: si scelga un insieme di individui e si indichi come genitore quello con maggior valore di valutazione. Gli individui vengono poi reinseriti nella popolazione e si esegue lo stesso passo per il secondo genitore. Questo metodo è utile per controllare le convergenze veloci e 26
  27. 27. lente, poiché è sufficiente cambiare il numero di individui scelti in ogni fase del torneo (aumentandolo se si vuole ottenere una convergenza più rapida, viceversa diminuendoli). Inoltre questo metodo non richiede né il calcolo del valore di idoneità né un ordinamento particolare.  Selezione a stato stazionario: da una generazione alla successiva vengano “rimpiazzati” soltanto una parte degli elementi, ovvero quelli con valore di idoneità minore. Questo permette un miglioramento graduale di tutti gli elementi del campione, e non solo di una parte di essi. Il metodo per cui invece vengono mantenuti soltanto pochi elementi tra una generazione e la successiva si chiama elitarismo (DeJong, 1975).2.6.3 Meccanismo di incrocioL’incorcio prevede la scelta di uno o più segmenti sui due individui genitori, chesaranno uniti per dar luogo a due figli (di cui uno potrà essere eventualmentescartato). Le principali tecniche di incrocio sono le seguenti:  Incrocio in un punto: si scelga a caso un punto all’interno della stringa di bit e la si divida nei due segmenti formati. È da notare che, mentre ogni bit “interno” al genotipo ha probabilità p, i bit estremali hanno prbabilità 0 di essere scelti.  Incrocio in più punti: si scelgano più punti all’interno della stringa, rappresentanti l’inizio e la fine dei segmenti. Essi saranno uniti ai bit complementari presenti nell’altro genitore. In questo modo, i bit estremali hanno meno probabilità di essere riprodotti rispetto all’incrocio in un punto. Per questo, tale tecnica si chiama anche incrocio parametrico uniforme.2.7 Alcune applicazioniGli AG presentano la qualità di operare in ampi spazi di ricerca altrimentiesplorabili solo esaustivamente. Inoltre, in poche generazioni realizzano una 27
  28. 28. soluzione “sopra la media”, anche se non ottima. Negli anni, sono stati utilizzatiin diversi ambiti:  Ottimizzazione: Goldberg (Goldberg, 1989) ottimizzò la struttura di una pompa per l’olio, composta da sezioni di tubo e unità di compressione per mantenere la pressione, di modo che l’energia utilizzata per azionare i compressori fosse minimizzata in base ai vincoli della pressione minima e massima consentita in ciascuna sezione  Aereodinamica: attraverso gli Algoritmi Genetici sono stati progettati profili alari che soddisfano determinate condizioni, come la minimizzazione della risposta ad un radar o la minima perturbazione della velocità dovuta ad un determinato cambiamento di condizioni atmosferiche (C. Poloni, 1995)  Progetto di reti neurali: gli AG vengono utilizzati per descrivere le reti neurali, modellizzandone la struttura ed i relativi pesi (G.F. Miller, 1989)  Economia: tramite AG è possibile modellizzare l’andamento economico di particolari titoli bancari, per poter effettuare previsioni per il proprio portafoglio (Dueck, 1990)2.8 Metodi Euristici di OttimizzazioneGli AG appartengono ad una categoria chiamata Metodi Euristici di Ottimizzazione(Winker, 2004), in particolare ai metodi di Ricerca Locale. A differenza dei modellidi ottimizzazione standard, questi metodi non forniscono la soluzione ottima,ma una o più soluzioni che possono comunque considerarsi “buone”.I modelli standard di ottimizzazione (ad esempio la ricerca del massimo di unafunzione o la costruzione di una serie storica) si basano infatti su tre paradigmi: 1. La soluzione viene identificata tramite enumerazione o calcolo differenziale 2. La soluzione, se esiste, è unica 28
  29. 29. 3. Convergenza dei classici metodi di ottimizzazione per la soluzione delle corrispondenti condizioni di primo ordineNon tutti i problemi possono essere risolti con questa strategia. Si pensi, adesempio, al problema del commesso viaggiatore, nel quale esso deve recapitarealcuni pacchi in n città distinte, collegate da più strade, seguendo il percorso piùbreve. In quanto problema NP-hard, non esiste alcun metodo di ottimizzazionestandard per ottenere il percorso più breve.I modelli di ottimizzazione euristici, invece, si basano su caratteristiche diverse: 1. Sono basati su modelli ritrovabili in natura 2. Si basano sulla crescente potenza di calcolo 3. Sebbene migliorino la soluzione proposta, la soluzione ottima non sarà raggiunta con certezzaEssi si dividono in Algoritmi Golosi e Metodi di Ricerca Locale.Gli Algoritmi Golosi (Thomas H. Cormen, 2005) eseguono una sequenza dipassaggi, scegliendo sempre la “strada” che sembra portare ad un risultatomigliore di quello attuale (scelta localmente ottima).I Metodi di Ricerca Locale non esplorano tutto lo spazio di ricerca, ma costruisconoun “cammino” in esso, seguendo il quale si ottengono risultati via via migliori.Sono algoritmi di Ricerca Locale:  Ricottura simulata (Kirkpatrick, Gelatt, & Vecchi): Il concetto deriva dalla scienza dei metalli, dove la ricottura è usata per eliminare difetti reticolari dai cristalli, tramite il riscaldamento ed un lento raffreddamento. È utilizzato per trovare un minimo globale in presenza di più minimi locali. Lo schema è il seguente: Genera una soluzione corrente xc, un numero di passi massimi Rmax ed una temperatura T 29
  30. 30. For r =1 To Rmax do While (non si è ottenuto un valore accettabile) do xn = vicino di xc Δ = f(xn) – f(xc) u = casuale in (0,1] Δ if (Δ < 0) or ( < u) then di xc = xn End while Diminuisci T End for Figura 2.2: Andamento esponenziale del valore della soglia di calore Soglia di accettazione (Dueck, 1990): Ciò che nell’esercizio precedente era rappresentato da una temperatura T, ora è rappresentato da un valore di soglia τ. Genera una soluzione corrente xc, un numero di passi massimi Rmax ed una soglia τ For r =1 To Rmax do While (non si è ottenuto un valore accettabile) do xn = vicino di xc Δ = f(xn) – f(xc) if (Δ < τ) then di xc = xn End while Diminuisci τ End for Ricerca tabù (Glover, 1989): 30
  31. 31. Viene mantenuta una “storia recente” degli elementi ispezionati, per non coinvolgerli più volte nell’evoluzione. Genera una soluzione corrente xc, ed una lista L vuota. While (non si è ottenuto un valore accettabile) do xn = vicino di xc non appartenente a L Δ = f(xn) – f(xc) if (Δ < 0) then di xc = xn ed inserisci xn in L Elimina elementi vecchi da L End while Algoritmi Genetici 31
  32. 32. 32
  33. 33. Capitolo 3 L’ALGORITMO SVILUPPATO3.1 ObiettivoIl problema che si vuole risolvere è quello di determinare inizialmente lapresenza o meno di un determinato intervallo di colore9 (appartenente almodello ARGB) all’interno di un’immagine. Successivamente, è possibilestabilire se in una certa zona è presente un particolare colore. Attraverso unulteriore algoritmo di interpolazione, infine, è possibile delimitare la zona in cui ilcolore è stato trovato.3.2 Descrizione dell’algoritmoLo scopo principale dell’algoritmo è di fornire un’insieme di punti nei qualil’immagine presenta un colore specificato. Il risultato ottimo, ma difficilmenteraggiungibile attraverso un algoritmo di tipo genetico, sarebbe l’indicazione ditutti i punti il cui colore appartenga ad un intervallo scelto a priori dall’utente.Nelle seguenti pagine si intenderà come “colore” un oggetto appartenente almodello ARGB. Esempio 3.1: Ricercando tutti i colori compresi nell’intervallo I ={ [255,0,0,0] ; [255,0,0,255] }, ovvero tutti i punti con opacità massima (A = 255) ed appartenenti ad una tonalità di blu ( B = 0,1,…255) nella figura 3.1a, il risultato ottimo è l’ottenimento di un insieme di punti ricoprenti tutte le zone interessate, come in figura 3.1b (in bianco) Figura 3.1a: Immagine iniziale Figura 3.1b: Area obiettivo9 Insieme di valori compresi tra due colori “estremali”. Utilizzando la rappresentazioneARGB, in cui ogni grandezza rappresenta una dimensione in uno spazio quadrimensionale,un intervallo è raffigurabile come un ipercubo, le cui facce sono limitate dai valori deicolori estremali. Ad esempio, scelti come colori il rosso [255,255,0,0] ed una tonalità diarancione meno opaco [200,247,153,59], l’intervallo di colore costituito è descrivibilecome: I = {(α,r,g,b) : α [200,255] , r [247,255] , g [0,153] , b [0,59]} 33
  34. 34. 3.2.1 Inizializzazione Il primo passo richiede la scelta dei parametri per l’algoritmo genetico (come descritto nel Capitolo 2). Dovranno essere impostati i valori di probabilità di mutazione (pMut) e di incrocio (pCross). Il numero di punti di taglio di un cromosoma è deciso a priori scegliendo la lunghezza della porzione di cromosoma che sarà tagliato durante l’incrocio (lSeg). Inoltre, si sceglie il numero di elementi presenti nella popolazione (nPop). Infine vengono impostati i colori di estremo per l’intervallo ( = {colour [ext1,ext2]}).3.2.2 Prima generazione Vengano creati casualmente nPop elementi (pixel) e vengano inseriti nella prima popolazione. Per ogni punto:  Si calcoli il valore di valutazione come somma delle distanze euclidee tra il colore scelto (col = [colA ,colR ,colG ,colB] )ed i colori estremali per , ovvero: Fval = + [1]  Si aggiunga il punto generato alla popolazione  Si consideri il colore del pixel e, se appartiene all’intervallo , si “segnali” il punto come parte della soluzione Al termine, si ordini la popolazione secondo il valore di valutazione in modo crescente, ovvero mantenendo in prima posizione gli elementi meno distanti dall’intervallo .3.2.3 Generazioni successive Si generi una nuova popolazione di nPop elementi, inizialmente vuota. Dopodichè, si proceda con la fase evolutiva dell’algoritmo:  Si scelgano 2 elementi “genitori”, seguendo una distribuzione di probabilità sulla popolazione di tipo gaussiano. Poiché la popolazione è stata ordinata, i primi elementi saranno scelti con maggior probabilità, e saranno proprio quelli il cui colore è meno distante dall’intervallo . La figura seguente schematizza la probabilità di scelta: 34
  35. 35. 0,4 0,3 0,2 0,1 1 2 3 4 … … … nPop Figura 3.2: Distribuzione gaussiana di probabilità di selezione sulla popolazione  Tra i due genitori si effettui l’operazione di incrocio con probabilità pCross, generando due elementi figli. L’incrocio venga effettuato su più punti, utilizzando segmenti di lunghezza l ≤ lSeg, dove l è scelto con probabilità uniforme in [0, lSeg]. Figura 3.3: Incrocio di due cromosomi genitori con segmenti di lunghezza 3  Con probabilità pMut ogni figlio sia soggetto all’operazione di mutazione di un gene. Nel caso la mutazione porti a figli “non ammissibili” (rappresentanti pixel di coordinate esterne all’immagine), si sostituisca con un elemento generato casualmente, aumentando l’eterogeneità della popolazione, per non incorrere nella convergenza veloce  Per ogni figlio, si valuti il valore di valutazione, lo si aggiunga alla nuova popolazione e, nel caso il suo colore appartenga all’intervallo , lo si “segnali” come parte della soluzione  Al termine, si ordini la popolazione in modo crescente secondo il valore di valutazione3.2.4 Interruzione Non è previsto alcun meccanismo d’interruzione interno all’algoritmo: ad ogni passo, infatti, deve essere l’utente a scegliere di generare un’ulteriore popolazione a partire dall’attuale. 35
  36. 36. Si noti che non è stato necessario implementare una funzione di idoneità, in quantoil meccanismo di selezione si basa su una distribuzione gaussiana su unapopolazione ordinata: questo meccanismo di selezione fa le “veci” della funzionedi idoneità, poiché gli elementi migliori saranno scelti con probabilità più elevata.3.3 ImplementazioneL’algoritmo è stato sviluppato in linguaggio Java, versione 7. Si è utilizzato il tooldi sviluppo “NetBeans IDE 7.0.1”. Il codice è visionabile all’appendice A.3.3.1 Struttura del codice Per realizzare il solo algoritmo genetico, è stata realizzata la seguente struttura di classi: Pacchetto : pkgColouredImages Il pacchetto descrive le classi utilizzate per una descrizione ed una manipolazione più efficace delle immagini e dei colori.  MyARGB Rappresenta un colore appartenente al modello ARGB e contiene alcuni metodi dinamici, come il calcolo della distanza euclidea tra l’istanza ed un parametro e l’appartenenza o meno dell’oggetto istanziato ad un intervallo di colore.  MyImage Descrive l’immagine su cui opera l’algoritmo genetico. Implementa un metodo che restituisce il colore di un pixel dato ed un metodo che modifica l’immagine stessa evidenziando i pixel appartenenti all’attuale popolazione. Quest’ultimo metodo, in realtà, è necessario solo in caso di interazione con l’utente. Pacchetto: pkgEvaluator Contiene la classe:  GenPixelEvaluator 36
  37. 37. Implementa la funzione di valutazione. In questa realizzazione, essa è descritta come in [1]Pacchetto: pkgGeneticColourItems Descrive il funzionamento dell’algoritmo genetico. Descrive le classi per la modellizzazione della popolazione, delle operazioni genetiche e dell’algoritmo nel suo complesso.  GeneticOperations Implementa le operazioni genetiche: l’incrocio e la mutazione. Entrambe si applicano al genotipo, codificato come stringa di bit.  GeneticPixel Codifica un elemento della popolazione. Ogni pixel viene rappresentato mediante le sue coordinate, il colore, il genotipo ed il valore di valutazione. Il genotipo scelto è la sequenza binaria delle coordinate X ed Y del pixel, come sintetizzato in figura: 3 x 4 (3,4) 011100 y Figura 3.4: Coordinate cartesiane, fenotipo e genotipo relativi I metodi pointToBits e bitToPoints trasformano le coordinate cartesiane nel genotipo e viceversa. Il metodo invertBitAt inverte un singolo bit nella posizione scelta durante la mutazione con probabilità uniforme. Il metodo crossGenotypes genera due nuovi pixel attraverso l’incrocio descritto nelle pagine precedenti. Il metodo compareTo confronta l’oggetto istanziato con un parametro in base al valore di valutazione.  Population Descrive una popolazione in un certo istante dell’evoluzione. Contiene informazioni quali il minimo ed il massimo valore di 37
  38. 38. valutazione presenti, nonché la media e la varianza del valore di valutazione e del fenotipo (codificato tramite coordinate cartesiane). Il metodo computeStatistic assegna i valori appena descritti. Il metodo sortPopulation ordina la popolazione in modo crescente in base al valore di valutazione seguendo l’algoritmo di ordinamento della classe java.util.Collections, che implementa una variante del mergesort (Thomas H. Cormen, 2005) con un costo di nlog(n). L’algoritmo è descritto al sito: http://docs.oracle.com/javase/1.4.2/docs/api/java/util/Collections.html  Searcher È il “cuore” dell’algoritmo. Tramite il costruttore, assegna i parametri di input per l’Algoritmo Genetico ed implementa i metodi per creare ed evolvere la popolazione. Il metodo makeFirstGeneration genera una popolazione iniziale casuale e, come nella descrizione dell’algoritmo, assegna ad ogni elemento il valore di valutazione e restituisce la lista (eventualmente vuota) degli elementi che soddisfano l’appartenenza all’intervallo di colore. Il metodo makeNextGeneration incrocia gli elementi appartenenti all’attuale popolazione e genera una nuova popolazione. Ogni nuovo elemento potrebbe poi subire una mutazione. Infine, restituisce la lista degli elementi che soddisfano l’appartenenza all’intervallo di colore.Per realizzare l’interazione con l’utente, è stata realizzata l’interfaccia riportatain figura: Figura 3.5: Maschera iniziale per limpostazione dei parametri dellalgoritmo genetico 38
  39. 39. I pacchetti per gestire l’inserimento dei dati da utente attraverso la form sono i seguenti: Pacchetto: pkgPrimitiveWrapper Re-implementa un tipo di dato primitivo con una classe dinamica, che sarà utilizzata per la sincronizzazione di thread10,11.  MyBoolean Descrive un oggetto di tipo booleano, implementandone i metodi per impostarlo, modificarlo e restituirne il valore Pacchetto: pkgSearcherFrontEnd Contiene le classi per la gestione della form.  MyJPanel Descrive il pannello (contenitore di oggetti grafici) in cui verrà visualizzata l’immagine in elaborazione. Attraverso il click del mouse su di un pixel, mostra il valore dei parametri ARGB relativi al colore di quel punto.  MyFileOperator Implementa metodi per la lettura/scrittura su un file di testo. È stata creata per rendere più leggibile il codice.  FrmWelcomeSearcher Oltre ad implementare e richiamare metodi per gestire il funzionamento della maschera, contiene alcuni metodi per avviare l’algoritmo vero e proprio. Le operazioni al run-time sono gestite mediante l’utilizzo di thread sincronizzati. La10 Con il termine thread si indica una classe che implementa metodi che possono esserelanciati e catturati al run-time. Il processo “padre” può lanciare un processo “figlio”(thread) che sarà eseguito indipendentemente dal padre. Il padre potrà poi arrestare(catturare) in qualunque momento l’esecuzione del figlio. Per una descrizione piùaccurata, si rimanda a Tanenbaum (Tanenbaum, 2009).11 La sincronizzazione è un problema che si presenta quando vengono lanciati più threaddipendenti tra loro. Il problema è quello di far “comunicare” i processi attraverso uncanale. Una delle possibili soluzioni (utilizzata in questo software) è l’utilizzo di un oggettodi tipo booleano. Ogni thread, prima di eseguire la sua porzione di codice, controlla lostato di questa variabile ed “agisce” di conseguenza. Per una descrizione più accurata, sirimanda a Tanenbaum (Tanenbaum, 2009). 39
  40. 40. sincronizzazione avviene per mezzo di un oggetto di tipo MyBoolean all’interno di un blocco sincronizzato12.Di seguito viene illustrato il meccanismo di avvio dell’algoritmo, con unosguardo alle istruzioni eseguite. 1. All’inizio si scelga, tra i propri file, l’immagine su cui operare. Il software supporta immagini di tipo JPEG, PNG e GIF. Figura 3.6: Scelta dell’immagine 2. Scelta l’immagine, verrà richiesta la selezione di un file di testo in cui salvare i punti trovati. Sarà possibile scegliere, per ogni generazione, di aggiungere statistiche quali: media e varianza, valore minimo e massimo del valore di valutazione, media e varianza delle coordinate cartesiane nonché i valori impostati come parametri per l’algoritmo genetico e modificabili al run-time. 3. Si scelgano i colori di estremo per l’intervallo. Essi saranno poi “normalizzati”, ovvero verranno utilizzati due colori estremali diversi, uno “di minimo” ed uno “di massimo”, in cui i valori dei parametri ARGB saranno il minimo (o il massimo) tra i valori presenti nei due colori.12 Un blocco sincronizzato è un insieme di istruzioni che viene eseguito in mutuaesclusione. Si ha mutua esclusione quando è garantito che tutti gli oggetti utilizzati da unthread non siano modificati da un altro thread eseguito in parallelo, che eventualmenteattenderà. Definire un insieme di istruzioni all’interno di un blocco sincronizzato significagarantire la mutua esclusione per gli oggetti definiti al suo interno. I blocchi sincronizzativengono utilizzati per modificare il valore degli oggetti creati per gestire la comunicazionee la sincronia tra thread paralleli. 40
  41. 41. Figura 3.7: Scelta dei colori di estremo per lintervallo cercato4. Si impostino i parametri dell’algoritmo genetico: probabilità di incrocio e mutazione, numero di elementi della popolazione e lunghezza del segmento di cromosoma che sarà tagliato durante l’incrocio. Per una visione a run-time dell’evoluzione della popolazione, si scelga il colore con cui visualizzare nell’immagine i pixel appartenenti alla generazione corrente. Figura 3.8: Impostazione dei parametri per lesecuzione5. Si prema “Start Generate”. Il metodo associato lancia il thread StartThread in FrmWelcomeSearcher. Questo thread disabilita i comandi non più necessari, istanzia un oggetto di tipo Searcher e richiama i metodi makeFirstGeneration e makeNextGeneration. Attraverso un oggetto di tipo MyFileOperator, aggiunge i punti trovati (e le eventuali statistiche) al file scelto come destinazione del risultato. Quando viene invocato il metodo associato al tasto “Stop Generate”, viene lanciato un thread di tipo StopThread in FrmWelcomeSearcher. Mediante la sincronizzazione, questo processo blocca l’esecuzione del thread StartThread. 41
  42. 42. Figura 3.9: Esecuzione dellalgoritmo 6. Mediante il tasto “See Result” è possibile vedere all’interno dell’immagine i punti trovati dall’algoritmo. Figura 3.10: Visione del risultatoIl file ottenuto mostra i risultati in una forma facilmente identificabile ed adattaad un parsing, come riportato in figura seguente: Figura 3.11: File di destinazione ottenuto 42
  43. 43. 3.4 Note tecniche3.4.1 Tipo di dati restituito Scopo dell’algoritmo è fornire una lista di punti il cui colore rientra in un intervallo specificato. I metodi makeFirstGeneration e makeNextGeneration, infatti, restituiscono un oggetto di tipo ArrayList<Point>. Il salvataggio di questi punti su un file di testo, l’aggiunta delle statistiche e la visualizzazione a video mediante l’interfaccia progettata sono elementi esterni all’Algoritmo Genetico, scelti per visionare, studiare e correggere il comportamento del processo.3.4.2 Rappresentazione del genotipoCome descritto nella sezione “Struttura del codice”, il genotipo è statorappresentato tramite una concatenazione di bit. Ad ogni pixel è associata unacoppia di numeri naturali a 32 bit che ne indicano le coordinate all’internodell’immagine digitale. Il genotipo è una sequenza di 64 bit, rappresentatatramite un numero intero di tipo long. I primi 32 bit rappresentano lacoordinata X, mentre gli ultimi 32 bit rappresentano la coordinata Y. Per imetodi di conversione, si rimanda all’Appendice A,pkgGeneticColourItems.GeneticPixel, righe 49-121. 43
  44. 44. 44
  45. 45. Capitolo 4 STUDIO DELL’ALGORITMO4.1 Metodo di studioPer lo studio del comportamento dell’algoritmo, si è utilizzata l’interfacciagrafica descritta del capitolo precedente. In un primo momento si sono testatediverse combinazioni di parametri su una stessa immagine di base. In unsecondo momento si è voluta studiare la risposta ad immagini differenti, condiverse combinazioni di parametri in ingresso. Successivamente, si sonoanalizzate le prestazioni in risposta ad un basso numero di evoluzioni. Infine, siè voluta fornire una possibile applicazione dell’algoritmo, nella ricerca di aree dicalore in un’immagine termica e di tracciamento di traiettoria in una sequenzadi immagini.4.2 Definizione di coefficiente di distribuzionePer un corretto studio della risposta dell’algoritmo genetico, è necessario poterclassificare le immagini campione secondo una certa metrica. Si idealizza cosìun valore da associare ad ogni immagine, detto coefficiente di distribuzione,che indica in prima approssimazione la “ semplicità della struttura” dell’area daricercare.Si definisce coefficiente di distribuzione associato all’intervallo di colore il valore: c.d. = dove,  nC è il numero dei punti nell’immagine appartenenti all’intervallo di colore specificato, ovvero: 45
  46. 46.  AC è l’area dell’insieme convesso13 più piccolo comprendente tutti i punti con colore inPiù il c.d. si avvicina ad 1, più l’area obiettivo assume una forma compatta edefinita. Al decrescere di tale valore, i pixel di colore cercato formano insieminon connessi14 o non convessi. Figura 4.1: Immagini con diverso coefficiente di distribuzione associato al valore [255,0,162,232] (blu chiaro). Rispettivamente, da sinistra, i valori sono 1.00 , 0.80 , 0.40 e 0.24. In nero sono evidenziati gli insiemi convessi che contengono l’area obiettivo4.3 Studio mediante cambiamento di parametriIn questa prima fase si è scelto di ripetere più prove, variando i parametri checaratterizzano l’algoritmo: probabilità di incrocio (pCross), probabilità dimutazione (pMut), numero di elementi del campione e lunghezza minima delsegmento di cromosoma da tagliare (lSeg).Sono stati considerati ai fini dello studio:  il numero medio di punti trovati per ogni generazione (N punti)  la media e la varianza del valore di valutazione (vv) medio di ogni generazione, ovvero: dove e sono rispettivamente la media e la varianza del valore di valutazione nella generazione i-esima;13 Un insieme si dice convesso se, presi due punti arbitrari che ne fanno parte, è possibilecostruire un segmento che li unisce, i cui punti sono anch’essi contenuti nell’insieme.14 Un insieme si dice semplicemente connesso se, presi due punti arbitrari che ne fannoparte, è possibile costruire una curva che li congiunge, i cui punti sono anch’essi contenutinell’insieme. 46
  47. 47.  la media delle coordinate cartesiane dei punti medi di ogni generazione, ovvero: dove è la media delle coordinate cartesiane della generazione i-esima;  la media della varianza della distanza dal punto [0,0] delle coordinate medie di ogni generazione, ovvero: dove è la varianza della distanza delle coordinate dal punto [0,0];  la percentuale di generazioni “improduttive” (%Gen.Im.), ovvero i cui elementi presentano tutti un colore al di fuori dello spazio specificato.A lato di ciascun test è riportato l’andamento di media e varianza del valore divalutazione al susseguirsi delle generazioni. La linea blu rappresenta il valore divalutazione medio,la linea nera è una linea di tendenza di tale valore e la linearossa è la varianza. È stato ottenuto anche un grafico che mostra la posizionedel punto medio di ogni generazione (in blu).L’algoritmo è stato lasciato evolvere per un numero prefissato di generazioni(Ngen), in modo che si potessero stimare anche il numero di millisecondinecessari all’esecuzione. In questo senso, è da precisare che il tempo dilettura/scrittura dell’output su un file ed il tempo necessario al motore graficoper visualizzare e modificare l’immagine sono stati valutati in media edecrementati dal tempo totale. Tuttavia, per la stima del tempo di esecuzionenon sono stati calcolati i cicli di clock destinati ad altri processi in esecuzionenello stesso istante sulla macchina.Il calcolatore di test ha a disposizione una CPU AMD Turion®II Ultra Dual-Core Mobile M600, 2.40 GHz e 2GB di RAM. Le immagini hanno dimensione800x600 pixel. 47
  48. 48. 4.3.1 Prima fase: 10 elementi per generazioneSi è scelta l’immagine riportata in figura 4.2. Figura 4.2: Immagine del primo test. L’area obiettivo è il disco rosso (più precisamente, di colore [255,237,28,36]) di centro [400,313]. Il coefficiente di distribuzione dell’immagine rispetto al rosso è pari a 0.81. Si è scelta una popolazione di 10 elementi per ogni generazione, fatti evolvere per 100 generazioni. Test 1.a 800 % pCross 10 % pMut 0.0 600 lSeg(bit) 3 400 Tempo (ms) 31 200 N punti 2.64 E[E[vv]] 599.1 0 E[Var[vv]] 52.7 0 20 40 60 80 100 E[E[x,y]] [390,328] E[Var[z]] 44 % Gen. Im. 51 Il comportamento dell’algoritmo è completamente imprevedibile. Le prime generazioni cadono nelle vicinanze dell’area interessata, poi si evolvono al di fuori di essa (si nota un valore di valutazione medio molto alto). Questo è dovuto al fatto che ci sono pochi elementi nella popolazione e che i 48
  49. 49. parametri dell’algoritmo (bassa popolazione, bassa probabilità di incrocio, bassa lunghezza del segmento di cromosoma) non permettono l’avvicinamento presso i punti “migliori”. Fino alla generazione 31, ogni punto generato ha un colore non idoneo. Successivamente, alcuni punti ricadono all’interno dell’area obiettivo, per poi uscirne (questo a dimostrazione dell’aleatorietà dell’evoluzione). La percentuale di generazioni improduttive è molto alta, ed il numero di punti generati al di fuori dell’area obiettivo è del 73.6%. Tuttavia, la media delle coordinate si avvicina al valore atteso [400,313], seppur con una notevole varianza. Questo dato è riconducibile all’eterogeneità dei campioni ottenuti, i cui punti si distribuiscono casualmente all’interno dell’immagine. Test 1.b 800% pCross 10% pMut 50 600lSeg(bit) 3 400Tempo (ms) 150 200N punti 1.79E[E[vv]] 648.4 0E[Var[vv]] 41.2 0 20 40 60 80 100E[E[x,y]] [312,284]E[Var[z]] 51% Gen. Im. 60 In questo test si è aumentata la probabilità di mutazione al 50%. Ciò crea un disturbo maggiore alla stabilità delle coordinate. Infatti, si nota un andamento ancora più casuale dell’esperimento precedente, seppur con una tendenza verso la parte “sinistra” dell’immagine. Nelle prime generazioni si ha la “fortuna” di aver generato punti nei pressi dell’area obiettivo. Tuttavia, questo vantaggio si perde per gli stessi motivi del test precedente. Si ha una media di appena 1.79 punti trovati per ogni generazione, con uno spreco 49
  50. 50. dell’82.9% di punti generati. Il numero di generazioni improduttive sale al 60%, causando un aumento della media del valore di valutazione. Com’era prevedibile, un semplice aumento della probabilità di mutazione non è sufficiente, anzi è deleterio per l’efficacia e l’efficienza dell’algoritmo. Infatti ogni mutazione porta il rischio di generare punti al di fuori dell’immagine. Per com’è stato implementato l’algoritmo, questi punti vengono rimpiazzati con punti generati casualmente; una mutazione nel 50% dei casi aumenta quindi la presenza di punti casuali generati durante l’evoluzione. Test 1.c 800% pCross 10% pMut 0,1 600lSeg(bit) 8 400Tempo (ms) 175 200N punti 5.37E[E[vv]] 365.3 0E[Var[vv]] 94.7 0 20 40 60 80 100E[E[x,y]] [385,325]E[Var[z]] 43.1% Gen. Im. 10 In questo test è stata diminuita allo 0.1% la probabilità di mutazione ed è stata aumentata ad 8 la lunghezza di taglio del segmento di cromosoma. Si nota un decisivo miglioramento delle prestazioni. Infatti, in media, più della metà dei punti generati in ogni popolazione rientra nell’area obiettivo (precisamente, 5.37 punti). Inoltre, il valor medio del valore di valutazione è più che dimezzato rispetto al test precedente. Potendo disporre di soli 10 punti, però, la popolazione ha una grande varianza (vicina a 100) ed il valore di valutazione non sembra stabilizzarsi. La media delle coordinate, invece, si avvicina al valore atteso e, come si nota dall’evoluzione dei punti medi delle generazioni, sembra stabilizzarsi nelle vicinanze dell’area obiettivo durante il 50
  51. 51. susseguirsi delle generazioni. L’efficienza migliora notevolmente, e solo il 10% delle generazioni è stato improduttivo. L’aumento della lunghezza di taglio del segmento di cromosoma ha portato ad una stabilizzazione dell’evoluzione. Infatti, in questo modo un quarto del genotipo viene costantemente mantenuto, e questo permette di contrastare la scarsa numerosità di elementi in una popolazione. Test 1.d 800 % pCross 10 % pMut 50 600 lSeg(bit) 8 400 Tempo (ms) 100 200 N punti 1.73 E[E[vv]] 653.1 0 E[Var[vv]] 55.5 0 20 40 60 80 100 E[E[x,y]] [382,315] E[Var[z]] 52 % Gen. Im. 47 In questo test, si sono mantenuti i parametri del test precedente, ma è stata aumentata al 50% la probabilità di mutazione.Come si nota, l’andamento è di nuovo casuale e disastroso, com’eraprevedibile. 51
  52. 52. Test 1.e 800% pCross 80% pMut 0.1 600lSeg(bit) 3 400Tempo (ms) 70N punti 1.76 200E[E[vv]] 650 0E[Var[vv]] 47 0 20 40 60 80 100E[E[x,y]] [439,290]E[Var[z]] 49.6% Gen. Im. 60 In questo test, si nota l’efficacia dell’incrocio solo dopo un certo numero di generazioni completamente improduttive. Infatti, i punti iniziali sono stati generati al di fuori dell’area obiettivo e nessuno di essi aveva un valore di valutazione più basso, in modo da essere scelto con più probabilità durante l’incrocio. Nella prima metà delle generazioni, quindi, l’alta probabilità d’incrocio ha fatto si che fossero scelti dei punti “non buoni” per la costruzione della generazione successiva; inoltre, il basso valore della lunghezza di taglio del segmento di cromosoma ha contribuito alla creazione di punti di coordinate eterogenee. Successivamente, alla 60° generazione, alcuni punti sono caduti all’interno del disco obiettivo. La loro presenza ha favorito lo stabilizzarsi delle successive generazioni nelle aree prossime al disco. Il basso valore di taglio ha però mantenuto molto oscillante il valore di valutazione medio e la sua varianza. Nemmeno la media totale delle coordinate cartesiane è buona, ed è presente una grande varianza delle stesse. Tuttavia, una media globale dei risultati ottenuti è un’approssimazione sommaria. Infatti, per un corretto studio di questo test, è necessario prendere in considerazione il comportamento “a regime”, ovvero dopo la 62° generazione (in questo caso particolare). Uno studio dei valori a regime fornisce risultati prossimi a quelli ottenuti “in buone condizioni”, anche se leggermente peggiori. Infatti, 52
  53. 53. considerando le generazioni successive alla 60°, si ottiene una media di 4.45punti trovati in ogni generazione, con una media delle coordinate pari a[393,368].Si potrebbe pensare che il comportamento a regime, lasciando evolverel’algoritmo per più di 100 generazioni, potrebbe migliorare. Tuttavia, ilrisultato dell’esecuzione per 1000 generazioni, mantenendo invariati iparametri, è riportato dal seguente grafico: 800 700 600 500 400 300 200 100 0 0 200 400 600 800 1000Come si può notare, non si ha un apprezzabile miglioramento del valore divalutazione medio, né della sua varianza. I risultati sono pressoché analoghi alcaso precedente, dopo la 60° generazione: 4.41 punti in media trovati inogni generazione, con un avvicinamento delle coordinate medie al punto[387,333]. Anche in questo caso, si nota la presenza di uno stato iniziale di“improduttività”, che coinvolge 50 generazioni.Questo comportamento è dovuto alla scarsa numerosità del campione. 53
  54. 54. Test 1.f 800% pCross 90% pMut 0.1 600lSeg(bit) 8 400Tempo (ms) 150 200N punti 3.58E[E[vv]] 506 0E[Var[vv]] 96 0 20 40 60 80 100E[E[x,y]] [401,337]E[Var[z]] 48.9% Gen. Im. 12 In questo si è tentato di combinare gli effetti di una alta probabilità di incrocio, di una bassa probabilità di mutazione e di una lunga sequenza di bit conservata nell’incrocio. Contrariamente alle aspettative, l’insieme di questi effetti non porta ad un apprezzabile miglioramento dell’esecuzione. Il valore di valutazione medio oscilla con una grande ampiezza e non si stabilizza, mantenendo un’elevata varianza. Tuttavia la media delle coordinate è molto buona e prossima al valore atteso. In accordo con gli studi di Holland, si nota la predominanza del seguente schema nel genotipo dei pixel: 0000000000000000000000010*1*0***000000000000000000000001*1**0**1 La coordinata X varia da 288 a 375, mentre la coordinata Y varia da 321 a 503 La poca popolazione presente non permette, nella maggioranza dei casi, di ottenere un’esecuzione efficiente (in termini di popolazioni improduttive generate), né molto efficace (in termini di stabilizzazione dei punti generati). Giunti a questo punto, sembra che in presenza di pochi elementi all’interno delle generazioni (ipotizzabile nei casi di pochissima memoria a disposizione), una buona strategia sia quella presentata nel test 1.c. 54
  55. 55. 4.3.2 Seconda fase: 100 elementi ad ogni generazione In questa fase si sono ripetuti gli stessi test sulla stessa immagine, con la stessa area obiettivo, aumentando la popolazione a 100 elementi. Test 2.a 800 700 % pCross 10 600 % pMut 0.0 500 lSeg(bit) 3 400 300 Tempo (ms) 350 200 N punti 55.4 100 E[E[vv]] 352.1 0 0 20 40 60 80 100 E[Var[vv]] 38.2 E[E[x,y]] [387,337] E[Var[z]] 14.3 % Gen. Im. 0 In questo primo test, si è limitata l’influenza dei parametri sull’evoluzione della popolazione. Tuttavia, l’aumento del numero di elementi di ogni popolazione ha permesso la stabilizzazione dei punti nei pressi del disco obiettivo, come si nota dalla rappresentazione delle coordinate medie. La media dei valori di valutazione è più bassa rispetto ai test precedentemente effettuati. Anche la varianza è nettamente diminuita. Le coordinate medie si posizionano in un’intorno del punto [387,337], ovvero nei pressi del valore atteso. È da notare l’assenza di generazioni improduttive ed una media di 55.4 punti trovati per ogni generazione. 55
  56. 56. Test 2.b 800% pCross 10 700 600% pMut 50 500lSeg(bit) 3 400Tempo (ms) 81 300 200N punti 53.8 100E[E[vv]] 365.0 0E[Var[vv]] 38.1 0 20 40 60 80 100E[E[x,y]] [387,336]E[Var[z]] 14.6% Gen. Im. 0 Test 2.c 800% pCross 10% pMut 0.1 600lSeg(bit) 8 400Tempo (ms) 68N punti 39.5 200E[E[vv]] 478 0E[Var[vv]] 37.0 0 20 40 60 80 100E[E[x,y]] [390,344]E[Var[z]] 16.3% Gen. Im. 0 56
  57. 57. Test 2.d 800% pCross 10% pMut 50 600lSeg(bit) 8 400Tempo (ms) 280 200N punti 41.2E[E[vv]] 464.5 0E[Var[vv]] 37.7 0 20 40 60 80 100E[E[x,y]] [394,344]E[Var[z]] 15.6% Gen. Im. 0 Test 2.e 700% pCross 80 600% pMut 0.1 500lSeg(bit) 3 400 300Tempo (ms) 130 200N punti 54.2 100E[E[vv]] 362.0 0E[Var[vv]] 38.4 0 20 40 60 80 100E[E[x,y]] [386,333]E[Var[z]] 14.6% Gen. Im. 0 57
  58. 58. Test 2.f 800 % pCross 90 700 600 % pMut 0.1 500 lSeg(bit) 8 400 Tempo (ms) 350 300 200 N punti 40.7 100 E[E[vv]] 468.5 0 E[Var[vv]] 37.9 0 20 40 60 80 100 E[E[x,y]] [396,348] E[Var[z]] 15.4 % Gen. Im. 0 Nei successivi test, si nota come l’introduzione di valori diversi nei parametri porti ad un peggioramento dei risultati. La presenza di 100 punti sembra “dominare” sull’evoluzione dell’algoritmo, impedendo una stabilizzazione accurata dei punti generati. Infatti, pur evidenziando un aumento nel valor di valutazione medio, non si può dire altrettanto delle varianze e della media delle coordinate. Questi valori, infatti, non sembrano risentire di particolari variazioni. Lo schema di Holland che si profila è lo stesso riportato nel test1.f. In conclusione, si conclude che 100 elementi costituiscono una popolazione troppo numerosa perché i parametri dell’algoritmo abbiano effetto sui punti generati.4.3.3 Terza fase: miglior combinazione di parametri Sono stati effettuati 50 test, combinando un numero di elementi non eccessivo (40-80) con una modifica dei parametri caratterizzanti l’algoritmo. L’esecuzione è stata lasciata evolvere per 1000 generazioni. 58
  59. 59. I test che hanno riportato i risultati migliori si possono approssimare al test descritto nella seguente tabella: Test 3 600 % pCross 80 500 % pMut 0.01 400 lSeg(bit) 5 Popolazione 75 300 Tempo (ms) 1500 200 N punti 52.7 100 E[E[vv]] 302.3 0 E[Var[vv]] 35.5 0 200 400 600 800 1000 E[E[x,y]] [415,328] E[Var[z]] 12.4 % Gen. Im. 0 Si nota un valore di valutazione medio decisamente inferiore ai test 1 e 2, con una bassa varianza. Anche la media delle coordinate si avvicina al valore atteso, ed anche in questo caso si ha una bassa varianza. Il numero di punti mediamente trovati su una popolazione è pari al 70.3%. Un risultato migliore di questo non è stato ottenuto. Ciò porta a concludere che circa il 30% dei punti generati non è utilizzato.Il tempo di esecuzione sembra dipendere solo dal numero di generazioni percui è lasciato evolvere l’algoritmo, ma non dai parametri di ingresso (siconfrontino a questo proposito i test 1.a, 1.b, 1.c e 2.b).4.4 Studio attraverso immagini con diverso coefficiente di distribuzioneIn questa fase di studio, è stato considerato il comportamento dell’algoritmo suimmagini con diverso valore di coefficiente di distribuzione. Obiettivo del test èformulare alcune ipotesi sui parametri d’ingresso in funzione del coefficiente didistribuzione per ottenere prestazioni paragonabili a quelle del test3. 59
  60. 60. Le immagini su cui saranno effettuati i test sono le seguenti: coefficiente di distribuzione rispetto al blu: 0.86 coefficiente di distribuzione rispetto al marrone: 0.46 coefficiente di distribuzione rispetto al verde: 0.45 coefficiente di distribuzione rispetto al bianco:0.29 coefficiente di distribuzione rispetto al giallo: 0.25 coefficiente di distribuzione rispetto al giallo: 0.25 60
  61. 61. I risultati ottenuti variando i parametri caratteristici dell’algoritmo sono iseguenti: pCross: 80% I punti generati ricoprono so pressoché l’intera area obiettivo, con una maggior concentrazione pMut: 10% verso la parte inferiore dell’immagine. Pur con una Pop: 75 breve lunghezza del segmento di taglio, si è ottenuto un risultato accettabile, in cui il 76% dei lSeg: 3 punti generati è stato utilizzato. pCross: 90% Mutazione: In questo test si è verificato uno spreco dell’ 84% dei punti generati. Il risultato pMut: 50% associato ad un incremento della probabilità di mutazione non è Pop: 75 soddisfacente. lSeg: 3 pCross: 10% Incremento popolazione: Non si notano particolari differenze dal primo caso. I punti generati pMut: 60% sembrano concentrarsi nelle aree già individuate precedentemente. Pop: 100 Tuttavia, pur aumentando la popolazione, si è registrato un incremento del numero di punti lSeg: 3 utilizzati in ogni generazione, con un risultato dell’ 80%. pCross: 90% Evoluzione consigliata: I parametri fanno riferimento al test 3. La bassa mutazione ha pMut: 0.01% concentrato le coordinate generate nella zona verticale Pop: 75 centrale. L’area obiettivo è stata ricoperta in gran parte, ma con un numero inferiore di punti. lSeg: 5 Anche in questo caso, la percentuale di punti utilizzati in ogni generazione è alta, pari al 77%. pCross: 10% Evoluzione libera: In questo test si sono volute far evolvere liberamente le generazioni, senza pMut: 0.0% garantire particolari condizioni di stabilità. Tuttavia, anche in Pop: 75 questo caso il risultato è stato soddisfacente in termini di copertura dell’immagine e di lSeg: 3 numero di punti utilizzati in ogni generazione (77%). 61

×