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
Next revisionBoth sides next revision
neurali:ispike [2015/08/21 14:44] – [Performance] profproneurali:ispike [2020/06/08 22:20] – external edit 127.0.0.1
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 http://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]]
  
neurali/ispike.txt · Last modified: 2023/06/09 10:29 by profpro