Rete Back-Propagation su ARDUINODUE

IA e Sistemi di Visione Artificiale per la Robotica

Rete Back-Propagation su ARDUINODUE

Postby alieno75 » 22 Oct 2014, 16:58

Vorrei realizzare una rete neurale back-propagation con gli ingressi collegati a ciascun pixel
di una telecamera da 30x32 pixel.
Tale rete mi servirà per pilotare un' rover a quattro ruote che impara a stare nella careggiata.
Ci saranno quindi 960 ingressi i quali verranno collegati allo strato intermedio formato da 4 neuroni
con soglia di attivazione sigmoide.
nello strato di uscita ci sono altri 4 neuroni sempre a soglia sigmoide (due collegati allo sterzo e due al motore).
Il rover avrà la possibilita' di essere pilotato sia con radiocomando in fase di addestramento sia dalla rete neurale
in fase si esecuzione.
Il punto della questione è: un ARDUINODUE può far girare senza problemi una rete del genere fatta da 8 neuroni
e 960 ingressi?
ARDUINODUE ha la potenza di calcolo necessaria per ospitare una rete neurale del genere ?
alieno75
 
Posts: 135
Joined: 21 Apr 2013, 19:39

Re: Rete Back-Propagation su ARDUINODUE

Postby deluca » 22 Oct 2014, 17:15

Salve alieno,
hai mai realizzato "fisicamente" una rete neurale su uC? o è la prima volta che ti avvicini a questa tematica?

Posso sapere quale è il motivo del tuo studio?
Ciao
Il mio sito: http://www.delucagiovanni.com ......e la chat: chat/
User avatar
deluca
Site Admin
 
Posts: 1104
Joined: 19 Jun 2011, 10:44
Location: 95123 - Catania (Italy)

Re: Rete Back-Propagation su ARDUINODUE

Postby alieno75 » 22 Oct 2014, 17:26

Ho realizzato una memoria associativa a 7 neuroni sul PC windowsXP fatta con il C senza interfaccia grafica,
poi ne ho realizzata una sempre dello stesso tipo ma con 128 neuroni di ingress e 128 di uscita con VB6 che fa
l' associazione tra lettere minuscole e maiuscole.
Tutte e due sono state un gran successo.
Ho relizzato poi una rete Autorganizzante ed una Back-Propagation sempre in C ma non funzionavano.
Il motivo di tali studi sono una passione per l' AI e la robotica con AI hce mi portano a sperimentare per
capire come funzionano le reti neurali.
alieno75
 
Posts: 135
Joined: 21 Apr 2013, 19:39

Re: Rete Back-Propagation su ARDUINODUE

Postby alieno75 » 22 Oct 2014, 17:29

Non ne ho mai realizzate su piattaforme modeste come i PLC o i uControllori.
Per questo ti chiedo se è fattibile realizzarne una come descritta all' inizio.
alieno75
 
Posts: 135
Joined: 21 Apr 2013, 19:39

Re: Rete Back-Propagation su ARDUINODUE

Postby Leonardo » 22 Oct 2014, 17:41

Come primo studio di fattibilità puoi fare due conti con la memoria SRAM se ti basta..
Il mio blog di elettronica: http://electro-logic.blogspot.it
User avatar
Leonardo
 
Posts: 502
Joined: 29 May 2013, 22:31
Location: Parma

Re: Rete Back-Propagation su ARDUINODUE

Postby einstein » 22 Oct 2014, 18:58

@alieno75,

curiosità: in che modo interfacci la camera ad arduino?
User avatar
einstein
 
Posts: 88
Joined: 01 Mar 2014, 15:10
Location: Siracusa

Re: Rete Back-Propagation su ARDUINODUE

Postby alieno75 » 22 Oct 2014, 19:11

Infatti ci stavo pensando, lo farò con il bus I2C.
Il problema è se gli 84Khz del CK bastano per rilevare le immagini.
alieno75
 
Posts: 135
Joined: 21 Apr 2013, 19:39

Re: Rete Back-Propagation su ARDUINODUE

Postby einstein » 22 Oct 2014, 19:47

Che tipo di sensore video stai usando, e in che modo farai la discriminazione del colore?
User avatar
einstein
 
Posts: 88
Joined: 01 Mar 2014, 15:10
Location: Siracusa

Re: Rete Back-Propagation su ARDUINODUE

Postby deluca » 22 Oct 2014, 20:12

Bene bene alieno75, sei alle prese con il vecchio ALVINN,
secondo me la difficoltà non sarà nello sviluppo della ANN, ma sarà nel procurare una camera usata nel vecchio progetto di Pomerleau ed interfacciarla con arduino. Se sai dove trovarla sarei interessato ad averne una.

Comunque il lavoro ultimato potrebbe darti una bella soddisfazione, se funziona.....
Ciao
Il mio sito: http://www.delucagiovanni.com ......e la chat: chat/
User avatar
deluca
Site Admin
 
Posts: 1104
Joined: 19 Jun 2011, 10:44
Location: 95123 - Catania (Italy)

Re: Rete Back-Propagation su ARDUINODUE

Postby alieno75 » 22 Oct 2014, 21:33

Che cos'e' il vecchio ALVIN?
Questa idea l' ho avuta proprio leggendo di ALVIN in un libro sulle reti neurali.
Mi serve una telecamera a bassa risoluzione in bianco e nero: ho scelto bassa risoluzione
perchè altrimenti mi serve una marea di ingressi per le 4 RNA intermedie.
Devo ancora scegliere la telecamera.
alieno75
 
Posts: 135
Joined: 21 Apr 2013, 19:39

Re: Rete Back-Propagation su ARDUINODUE

Postby deluca » 22 Oct 2014, 21:53

@alieno75,
Il vecchio "ALVINN" è proprio il progetto di cui stai parlando ed è "Vecchio"...., perchè si tratta di un progetto del lontano 1991. All'epoca iniziavo a lavorare sulle reti neurali e computer vision per la robotica, con sistemi veramente rudimentali.
Ciao
Il mio sito: http://www.delucagiovanni.com ......e la chat: chat/
User avatar
deluca
Site Admin
 
Posts: 1104
Joined: 19 Jun 2011, 10:44
Location: 95123 - Catania (Italy)

Re: Rete Back-Propagation su ARDUINODUE

Postby Leonardo » 22 Oct 2014, 22:05

@alieno75:

Camere a bassissima risoluzioni sono un po' difficili da trovare nel colore visibile.. una soluzione molto DIY potrebbe essere un sensore di un mouse, ma con problemi di messa a fuoco, etc..

In alternativa una classica camera VGA con funzionalità di downscaling e/o window (puoi ad esempio chiedere alla camera i pixel di un sottoinsieme di soli 32x32 pixel) è più facilmente trovabile in commercio.

In base al tipo di camera i dati però potrebbero arrivare troppo velocemente ed una qualche memoria FIFO potrebbe semplificare la situazione se utilizzi Arduino.
Il mio blog di elettronica: http://electro-logic.blogspot.it
User avatar
Leonardo
 
Posts: 502
Joined: 29 May 2013, 22:31
Location: Parma

Re: Rete Back-Propagation su ARDUINODUE

Postby alieno75 » 29 Oct 2014, 10:09

Utilizzerò una telecamera da 352x288 pixel la quale genera quindi 101376 pixel quindi ho pensato
di ridurne il numero utilizzando un PIC che toglie un pixel si ed uno no fino a fine trama.
Questa operazione la ripeto fino ad ottenere una risoluzione di 1000 pixel circa.
la telecamera e' questa https://www.futurashop.it/telecamera-mi ... %20&page=4 ed è in bianco e nero.
Tra il segnale videocomposito di quest' ultima ed il PIC ci metto un LM1881N che fa da separatore di sincronismi
in modo da ottenere il segnale video puro ed il segnale di sync. verticale puro che mi serve per sapere quando
finisce il quadro video per poter prelevare quello successivo.
Il segnale video puro ed il segnale di sync. verticale verranno campionati dal PIC con due ingressi analogici.
Il PIC dopo aver campionato i due segnali preleva i pixel digitalizzati e li mette in memoria (ridotti di numero naturalmente) per poi inviarli tramite bus I2C ad arduino che conterra la RNA vera e propria in tecnologia Back-Propagation.
Che ne pensate ?
alieno75
 
Posts: 135
Joined: 21 Apr 2013, 19:39

Re: Rete Back-Propagation su ARDUINODUE

Postby peter90 » 29 Oct 2014, 18:48

curiosity:
con quale PIC intendi eseguire l'operazione che hai descritto?
peter90
 
Posts: 44
Joined: 11 Apr 2012, 19:46

Re: Rete Back-Propagation su ARDUINODUE

Postby Leonardo » 29 Oct 2014, 21:07

Il tutto è un po' macchinoso e costoso.. se non hai vincoli di spazio ci sono altre soluzioni.
Hai visto se la lunghezza focale va bene per il tuo progetto?
Il mio blog di elettronica: http://electro-logic.blogspot.it
User avatar
Leonardo
 
Posts: 502
Joined: 29 May 2013, 22:31
Location: Parma

Re: Rete Back-Propagation su ARDUINODUE

Postby alieno75 » 30 Oct 2014, 16:30

peter90 wrote:curiosity:
con quale PIC intendi eseguire l'operazione che hai descritto?



Devo ancora decidere il PIC da utilizzare ma credo un PIC16f876 vada bene dato che puo'
arrivare ad una frequenza di CK di 10MHz.
alieno75
 
Posts: 135
Joined: 21 Apr 2013, 19:39

Re: Rete Back-Propagation su ARDUINODUE

Postby deluca » 30 Oct 2014, 20:49

non lasciarti ingannare dei 10Mhz.... sono pochini.

quello che più ti deve interessare è il tempo di campionamento del ADC che dovrà acquisire il segnale video composito.

Non si tratta di un segnale a bassa frequenza, dove già ci stanno 1k problemi, si tratta di un segnale video, che se pur B/N, ha una banda pasante non trascurabile. Quindi scegli bene il tuo uC e il tuo ADC.
Ciao
Il mio sito: http://www.delucagiovanni.com ......e la chat: chat/
User avatar
deluca
Site Admin
 
Posts: 1104
Joined: 19 Jun 2011, 10:44
Location: 95123 - Catania (Italy)

Re: Rete Back-Propagation su ARDUINODUE

Postby alieno75 » 31 Oct 2014, 10:41

Che frequenza ha il segnale video che esce dal separatore video?
alieno75
 
Posts: 135
Joined: 21 Apr 2013, 19:39

Re: Rete Back-Propagation su ARDUINODUE

Postby deluca » 31 Oct 2014, 16:09

In uscita dal separatore di sincronismi dovresti trovarti un segnale a 15625Hz sync orizzontale e la 50/25Hz per il sincronismo verticale. Quindi il segnale video di ogni riga B/N è contenuto in 64uSec.

Se utilizzi questo impulso (sync H) come trigger per l'adc, dovresti poter campionare almeno 32 punti in 64uSec(in pratica 52uSec poichè 12 servono per la ritraccia),
visto che intendi fare una riduzione drastica del numero dei pixel.

Quindi molto semplicemente... hai 64uSec disponibili,
devi eseguire 32 campionamenti durante questo periodo,
dovresti avere un campione ogni 2uSec... il che si traduce che devi campionare a circa 500Khz.... ?
Ciao
Il mio sito: http://www.delucagiovanni.com ......e la chat: chat/
User avatar
deluca
Site Admin
 
Posts: 1104
Joined: 19 Jun 2011, 10:44
Location: 95123 - Catania (Italy)

Re: Rete Back-Propagation su ARDUINODUE

Postby legacy » 31 Oct 2014, 22:51

al polimi l'avevano solo citato a robotic1&2: progetto alvinn, an autonomous land vehicle in a neural network

cmq, da come la vedo io: molto meglio una mini board PC-like (e se la vuoi x86 c'e' AMD/Geode e tra un po' c'e' pure la intel/Edison) con attaccata una webcam-usb economica, semplice, potente, con la banda giusta per la cam, economico, e senza tutti quei problemi ci si concentra sulla rete neurale; leggendo frame a frame in raw devi solo pensare ad un filtro (magari adattivo) per riportare il frame a colori, tipicamente 640x480x16bit colore nelle cam economiche, verso una scremata 30x32xboh-tuoi bit colore da dare in pasto alla rete neurale che magari gira come thread
legacy
 
Posts: 862
Joined: 12 Mar 2012, 11:30

Next

Return to Intelligenza & Visione Artificiale

Who is online

Users browsing this forum: No registered users and 1 guest

cron