iSpike

http://ispike.sourceforge.net/pages/download.html

ispike-2.1.1.tar.gz

ispike_api.zip

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:

  1. Da un lato è stato usato con YARP per comunicare con il robot iCub. L'utente deve solo fornire al programma l'indirizzo IP e la porta del server YARP.
  2. Dall'altro lato può essere usato con qualsiasi software per reti neurali che supporti una libreria in C++, come NeMo (SpikeStream).

Per poter interagire con NeMo si può usare 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)

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 codifica degli impulsi

YARP

Il protocollo di comunicazione testuale usato da iSpike per comunicare con YARP è descritto qui http://wiki.icub.org/yarpdoc/yarp_without_yarp.html

Performance

Usando neuroni con modello Izhikevich

Propriocezione

  • 100 neuroni per codificare l'angolo di un motore
  • x 53 motori da misurare per iCub
  • webcam 320×200 = 7680 pixel
  • scomposta in 3 immagini dal preprocessamento immagini (simulazione foveation)

Devo usare due elaboratori perché non riesce ad elaborare immagini in tempo reale

ispike esempio1

ispike esempio2 con pezzo di NeMo

ispike esempio3

  • neurali/ispike.txt
  • Last modified: 2018/04/25 07:55
  • (external edit)