User Tools

Site Tools


neurali:ispike

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
neurali:ispike [2015/08/23 14:42] profproneurali:ispike [2023/06/09 10:29] (current) – [YARP] profpro
Line 1: Line 1:
 +======iSpike======
 +
 +http://ispike.sourceforge.net/pages/download.html
 +
 +{{neurali:ispike-2.1.1.tar.gz}}
 +
 +{{:neurali:ispike_api.zip|}}
 +
 +  * Robot utilizzabili: iCub, Cronos, SIMNOS
 +  * Vedere ricerca [[neurali:collegare_braccio_e_mente_2010]]
 +
 +Si può utilizzare questa **libreria C++** per scrivere un programma che trasforma un file immagine, o altri input, in una serie di impulsi da inviare ad una rete neurale (e viceversa impulsi provenienti da una rete neurale agli attuatori di un robot).
 +
 +Il programma ottenuto si troverà in mezzo tra il robot e il simulatore di rete neurale.
 +Questo programma dovrà usare anche un'altra libreria per accedere alle risorse del robot, oltre che una per accedere alla rete neurale o per simulare una rete neurale:
 +
 +  - Da un lato è stato usato con [[neurali:software_di_controllo#YARP]] per comunicare con il robot iCub. L'utente deve solo fornire al programma l'indirizzo IP e la porta del server YARP.
 +  - Dall'altro lato può essere usato con qualsiasi software per reti neurali che supporti una libreria in C++, come [[neurali:NeMo]] (SpikeStream).
 +
 +Per poter interagire con [[neurali:NeMo]] si può usare [[neurali:SpikeStream]]
 +
 +[YARP] <-> [programma con iSpike] <-> [NeMo]
 +
 +Espansione del precedente schema
 +
 +[YARP/file] -> [reader] -> [input channel] -> [un vector in C++] -> [SpikeStream / NeMo]
 +
 +[YARP/file] <- [writer] <- [output channel] <- [un vector in C++] <- [SpikeStream / NeMo]
 +
 +  * [reader] e [writer] si occupano della lettura dei dati
 +  * [channel] si occupano della trasformazione in spike
 +
 +Esempio: un oggetto AngleReader legge un angolo e lo passa ad un canale JointInputChannel che lo trasforma in modo da poterlo fornire come input ad una rete neurale.
 +
 +I tempi con cui si inviano impulsi alla rete neurale devono essere sincronizzati con i passi con cui avanza temporalemente la rete neurale (ad es. passi di 1 ms)
 +
 +Il numero di neuroni della rete (le dimensioni della rete) a cui sono destinati gli spike prodotti è uno dei parametri che si devono fornire alle funzioni di iSpike
 +
 +==== Installazione====
 +
 +dipendenze
 +  boost (come nemo)
 +
 +
 +  mkdir build
 +  cd build
 +  cmake ..
 +  -configurazione?
 +  -generazione?
 +  make
 +  make install
 +
 +;;; NOTA: ;;; modificando un sorgente ricompila solo quello compilato (devi usare make clean)
 +
 +;;; NOTA2: ;;; aggiungere un nuovo file sorgente RICHIEDE anche modificare nel file **src/CMakeLists.txt** la riga SET(project_SRCS)
 +
 +[[neurali:ispike output di installazione]]...
 +====Codifica dei dati====
 +
 +
 +Se si vuole trasformare un numero o un file in una serie di impulsi neurali, come fare?
 +
 +
 +iSpike adotta la tecnica population coding, vista nella [[neurali:spiking_neural_network#codifica degli impulsi]]
 +
 +==== YARP ====
 +
 +Il protocollo di comunicazione testuale usato da iSpike per comunicare con [[neurali:YARP]] è descritto qui
 + wiki.icub.org/yarpdoc/yarp_without_yarp.html
 +
 +==== Performance ====
 +
 +Usando neuroni con [[neurali:NEST modello Izhikevich|modello Izhikevich]]
 +
 +Propriocezione
 +
 +  * 100 neuroni per codificare l'angolo di un motore
 +  * x 53 motori da misurare per iCub
 +
 +  * webcam 320x200 = 7680 pixel
 +  * scomposta in 3 immagini dal preprocessamento immagini (simulazione foveation)
 +  
 +  Devo usare** due elaboratori** perché **non riesce** ad elaborare immagini **in tempo reale**
 +  
 +[[neurali::ispike esempio1]]
 +
 +[[neurali::ispike esempio2]] con pezzo di [[neurali:NeMo]]
 +
 +
 +
 +[[neurali::ispike esempio3]]