Per quanto riguarda il cuore dellapplicazione, cioè la parte di AI, abbiamo deciso di utilizzare un...

18
Il Progetto Il nostro progetto è nato per il corso di ‘AI’ e consiste in un OCR (Optical Character Recognition). Il nome scelto è ‘JInO’, Che sta per “Jino is Not Ocr” o anche per “Java Intelligent Ocr”

Transcript of Per quanto riguarda il cuore dellapplicazione, cioè la parte di AI, abbiamo deciso di utilizzare un...

Page 1: Per quanto riguarda il cuore dellapplicazione, cioè la parte di AI, abbiamo deciso di utilizzare un tipo di architettura che ci ha particolarmente attirato,

Il Progetto

Il nostro progetto è nato per il corso di ‘AI’ e consiste in un OCR (Optical Character Recognition).

Il nome scelto è ‘JInO’,Che sta per “Jino is Not Ocr” o anche per “Java

Intelligent Ocr”

Page 2: Per quanto riguarda il cuore dellapplicazione, cioè la parte di AI, abbiamo deciso di utilizzare un tipo di architettura che ci ha particolarmente attirato,
Page 3: Per quanto riguarda il cuore dellapplicazione, cioè la parte di AI, abbiamo deciso di utilizzare un tipo di architettura che ci ha particolarmente attirato,

Il ProgettoPer quanto riguarda il “cuore” dell’applicazione, cioè la parte di AI,

abbiamo deciso di utilizzare un tipo di architettura che ci ha particolarmente attirato, cioè quella degli auto-encoders affiancati a dei classici classificatori (che realizzano la “selezione a torneo”).

Da un punto di vista “funzionale” invece, si è cercato di dare a “jino” delle caratteristiche che possano renderlo più ultile/interessante

dei molti ocr basati sull’ AI che si possono trovare su internet (“Jino is not ocr”, appunto.. )

Proprio per questo l’input dei file da processare viene da immagini o da webcam, e non da un’area di testo in cui scrivere come avviene

in molti sw di questo tipo.

Page 4: Per quanto riguarda il cuore dellapplicazione, cioè la parte di AI, abbiamo deciso di utilizzare un tipo di architettura che ci ha particolarmente attirato,

Scelte Progettuali

Utilizzo del linguaggio java [portabilità - esperienze personali]

Librerie ausiliari: Joone [neural netowork management] JAI [Image Prepocessing] JMF [Webcam acquisition]

Page 5: Per quanto riguarda il cuore dellapplicazione, cioè la parte di AI, abbiamo deciso di utilizzare un tipo di architettura che ci ha particolarmente attirato,

Step del processo

Page 6: Per quanto riguarda il cuore dellapplicazione, cioè la parte di AI, abbiamo deciso di utilizzare un tipo di architettura che ci ha particolarmente attirato,

Data Acquisition

Come già detto l’acquisizione dati da file(momentaneamente solo immagini) e da webcam vuole essere un modo di aumentare l’utilità del software.

Al momento l’acquisizione da webcam è funzionante solo sotto Windows (a causa di problemi legati alla libreria Java “V4L”) ed è possibile solo con alcuni modelli di webcam.

Page 7: Per quanto riguarda il cuore dellapplicazione, cioè la parte di AI, abbiamo deciso di utilizzare un tipo di architettura che ci ha particolarmente attirato,

Preprocessing: Image Manipulation

Attualmente si limita alla conversione in bianco e nero (basata sul canale dei rossi).

Aggiunte utili all’acquisizione da webcam sarebbero filtering (pulizia, etc..) e

allineamento(fondamentale in fase di segmentazione)

Page 8: Per quanto riguarda il cuore dellapplicazione, cioè la parte di AI, abbiamo deciso di utilizzare un tipo di architettura che ci ha particolarmente attirato,

Preprocessing: Segmentation Analisi dell’immagine:

In lunghezza [per distinguere le varie righe] In larghezza [per distinguere le lettere]

Entrambe le suddivisoni sono basate sulla somma di pixel e utilizzano più soglie.

NOTA:Ogni pixel è memorizzato come un intero che va da 0(nero) a 255(Bianco)

Page 9: Per quanto riguarda il cuore dellapplicazione, cioè la parte di AI, abbiamo deciso di utilizzare un tipo di architettura che ci ha particolarmente attirato,

Preprocessing: Segmentation•“Pulizia” del carattere (vengono eliminati gli spazi bianchi)

Page 10: Per quanto riguarda il cuore dellapplicazione, cioè la parte di AI, abbiamo deciso di utilizzare un tipo di architettura che ci ha particolarmente attirato,

Preprocessing -> Character Recognition

Scaling del carattere a 50x50 pixel (proportional resize in modo che la dimensione più grande arrivi a 50 pixel, dopodichè padding sull’altra)

Desampling del carattere a 10x10 Samples [ognuno costituito da 5x5 = 25 pixels]

Normalizzazione e codifica:sample –> double tra 0 e 1 [Numero di pixel neri /25]

Page 11: Per quanto riguarda il cuore dellapplicazione, cioè la parte di AI, abbiamo deciso di utilizzare un tipo di architettura che ci ha particolarmente attirato,

Character recognition

Architettura software costituita da:

Auto-encoders [riconoscimento dei singoli caratteri](esempio: il carattere in ingresso “è”/”non è” una ‘a’)

Classificatori [distinzione tra due caratteri specifici](esempio: il carattere in ingresso “è una a”/”è una b”)

Gli ingressi[100 double (10x10 samples) che variano da 0.00 ad 1.00]

Page 12: Per quanto riguarda il cuore dellapplicazione, cioè la parte di AI, abbiamo deciso di utilizzare un tipo di architettura che ci ha particolarmente attirato,

Character recognition: Gli stepI. Si attiva la rete neurale dandole in ingresso tutte le lettere riconosciute, una

ad una.

II. Gli ingressi sono collegati ad ogni singolo auto-encoder (full synapse), che torna in uscita un errore [scarto quadratico medio di (uscita meno ingresso)]

III. Se quest’ultimo è minore di una certa soglia il carattere in ingresso appartiene alla classe di cui l’auto-encoder si occupa –> L’auto-encoder risuona.

IV. Se più auto encoder risuonano viene avviato il cosiddetto “torneo”, vengono cioè attivati i classificatori (a due uscite) delle classi che risuonano. Viene così decisa la classe a cui il carattere in ingresso appartiene

V. Le lettere vengono scritte su un file di uscita (appare un nuovo tab), che può essere salvato in formato testo.

Page 13: Per quanto riguarda il cuore dellapplicazione, cioè la parte di AI, abbiamo deciso di utilizzare un tipo di architettura che ci ha particolarmente attirato,

Character recognition: Dietro le quinte(architettura rete neurale)

Auto-encodersSanno dire bene se è una ‘B’ o no, ma c’è il rischio che gli vada bene anche un ‘8’ (target=ingresso -> non gli do mai esempi che non siano B!)

Two Way ClassifiersDistinguono bene gli 8 dalle B, ma devono essere sicuri che l’ingresso sia un 8 o una B -> complementari degli auto-encoders!

Page 14: Per quanto riguarda il cuore dellapplicazione, cioè la parte di AI, abbiamo deciso di utilizzare un tipo di architettura che ci ha particolarmente attirato,

... ... … … … … … … ... ... … … … … … … … … … … … …

1 2 3 ... … … … … … … ... ... … … … … … … … … … … … … … 100

Auto Encoder

Classe1

Auto Encoder

classe2

Auto Encoder

classe3

Auto Encoder

classen

Classificatore classi 3/n

Risuona!Risuona!

no no

Classe 3!

Classificatore classi 1/2

Classificatore classi (n-1)/n

Page 15: Per quanto riguarda il cuore dellapplicazione, cioè la parte di AI, abbiamo deciso di utilizzare un tipo di architettura che ci ha particolarmente attirato,

Character recognition: Dietro le quinte(selezione a torneo)

La “selezione a torneo” è utilizzata per semplificare e rendere più efficienti le operazioni nel caso in cui

risuonino più di due classi.

Si confrontano le classi risuonate a due a due (esattamente come un “campionato”) e si dà loro un

punteggio in base all’uscita del classificatore(se il classificatore richiesto non è presente si assegna un

“pareggio”), la classe che al termine otterrà il maggior numero di punti è quella a cui realmente appartiene il

carattere.

Page 16: Per quanto riguarda il cuore dellapplicazione, cioè la parte di AI, abbiamo deciso di utilizzare un tipo di architettura che ci ha particolarmente attirato,

Character recognition: Dietro le quinte (selezione a torneo)

M N K TOT

M ------------- 0,81 0,72 1,53

N 0,19 ------------- 0,51 0,7

K 0,28 0,49 ------------- 0,77

ClassificatoreM/N

ClassificatoreN/K

ClassificatoreM/K

M: 0,81 - N: 0,19 N: 0,51 - K: 0,49 M: 0,72 - K: 0,28

Page 17: Per quanto riguarda il cuore dellapplicazione, cioè la parte di AI, abbiamo deciso di utilizzare un tipo di architettura che ci ha particolarmente attirato,

TODO

Acquisizione da pdf/altro.. Supporto webcam su linux (e migliorare su win) Testing Supporto divisione spazi e parole (in fase di

segmentazione) Maniploare le immagini (filtering, pulizia,

roation, allineamento, etc..) per migliorare la qualità dell’immagine acquisita da webcam

Gestione di vari Layout di pagina

Page 18: Per quanto riguarda il cuore dellapplicazione, cioè la parte di AI, abbiamo deciso di utilizzare un tipo di architettura che ci ha particolarmente attirato,

Sviluppi futuri

Attualmente le funzioni di JInO sono abbastanza limitate, ma le possibili migliorie son molte, come molte sono le possibili applicazioni.

In generale ci sentiamo di dire che se fosse migliorato l’intero processo di acquisizione da webcam, il software potrebbe avere una reale

utilità nella virtualizzazione di documenti