Home    About me    Publications    Blog    Photo gallery
Some other old good stuff

Fabio Ruini’s blog

Because Italians do it better! What the f**k? Ehm… the blogs, I mean… obviously! :-/

Archivio per Agosto, 2009

Primi passi con il Microsoft Robotics Studio

Ho approfittato di questo week end lungo (oggi, qui in UK, era un altro di quei bank holidays che giungono completamente inaspettati per il sottoscritto, ma quanto mai graditi) per iniziare a studiacchiare il manuale di Sara Morgan sul Microsoft Robotics Developer Studio (Microsoft RDS) (lo so, prima lo chiamavo semplicemente Microsoft Robotics Studio, o MSRS, ma a quanto pare con la release R2 dello scorso giugno gli hanno pure cambiato nome), in merito al quale avevo gia’ scritto qualche riga nei giorni scorsi. La prima impressione non e’ esattamente positiva. Il primo capitolo introduce una dozzina abbondante di termini nuovi e l’architettura dell’RDS appare come qualcosa di una contorsione indescrivibile. E l’autrice non fa nulla per chiarire tutta questa confusione, ma semmai l’alimenta. Spero che le cose cambieranno nelle prossime pagine, ma non sono troppo ottimista a riguardo.

Microsoft Robotics Studio - screenshot of the LEGO Mindstorms NXT Tribot in the Visual Simulation Environment

Ad ogni modo, sono gia’ riuscito ad imbattermi nel primo problema software. In apertura del secondo capitolo viene infatti introdotto il concetto di “nodo DSS”, una sorta di contenitore, associato ad una porta TCP, all’interno del quale devono girare i “servizi DSS” di RDS (maggiori informazioni in questo tutorial). Per creare un nuovo nodo si puo’ procedere in due modi. O da riga di comando, tramite il comando dsshost.exe, oppure seguendo la shortcut “Run DSS Node” che durante l’installazione di RDS viene inserita all’interno dell’apposita sezione dello Start Menu. Il clic su questo link porta all’apertura di una finestra di terminale e di una istanza del browser di default, puntato all’indirizzo http://localhost:50000. Trattasi dell’indirizzo della “Microsoft CCR and DSS Toolkit Home”, una sorta di pannello di controllo per il RDS. Che pero’, sul mio netbook, chiedeva che io inserissi username e password, ovviamente sconosciuti. Girovagando sulla rete ho scoperto di non essere l’unico con questo problema. La soluzione piu’ efficace e’ quella che viene discussa al punto 2a di queste faq, che prevede, molto brutalmente, di disattivare il controllo di sicurezza in RDS. Uno a zero per il sottoscritto. Ma la battaglia, come succede ogni qualvolta c’e’ di mezzo un prodotto di mamma Microsoft, si preannuncia ardua. Molto ardua. Lo step successivo, quello che prevede di creare un nuovo “Service Project” mi vede infatti gia’ arenato. Vediamo se reinstallando tutto il baraccone mi compariranno i template Visual Studio che a quanto pare dovrei avere.

EvoIASP2010 – Evolutionary Computation in Image Analysis and Signal Processing

Ricevo e volentieri pubblicizzo la call for papers relativa a EvoIASP2010, “EvoApplication” (che immagino essere piu’ o meno sinonimo di special session) di Evo* 2010, conferenza sulla computazione evolutiva che si terra’ ad Instanbul, Turchia, dal 7 al 9 aprile 2010.

Evo* 2010 logo

EvoIASP2010
Evolutionary Computation in Image Analysis and Signal Processing

an EvoApplication (European Conference on the Applications of Evolutionary Computation) event incorporated in Evo* 2010

Istanbul, Turkey, 9-11 April 2010

********** SUBMISSION DEADLINE: 4 November 2009 **********

Evolutionary algorithms have been shown to be tools which can be used effectively in the development of systems (software or hardware) for image analysis and signal processing in complex domains of high industrial and social relevance.

EvoIASP has been the first European event specifically dedicated to the applications of evolutionary computation (EC) to image analysis and signal processing (IASP) and gives European and non-European researchers in those fields, as well as people from industry, an opportunity to present their latest research and to discuss current
developments and applications, besides fostering closer future interaction between members of the three scientific communities.

In 2010, EvoIASP will reach its twelfth edition, after being held in Gothenburg, Sweden (1999), Edinburgh, UK (2000), Como, Italy (2001), Kinsale, Ireland (2002), Colchester, UK (2003), Coimbra, Portugal (2004), Lausanne, Switzerland (2005), Budapest, Hungary (2006), Valencia, Spain (2007), Naples, Italy (2008), and Tuebingen, Germany (2009).

EvoIASP is part of EvoApplications 2010, the Conference on Applications of Evolutionary Computation, one of the events which will take place under the common name of Evo* 2010.

Topics of interest include, but are not limited to:

  • applications of evolutionary computation to real-life IASP problems
  • evolvable vision and signal processing hardware
  • evolutionary pattern recognition
  • hybrid architectures for machine vision and signal processing
  • including evolutionary components
  • theoretical developments
  • comparisons between different evolutionary techniques and between
  • evolutionary and non-evolutionary techniques in IASP applications,
  • time series analysis by means of EC techniques.

Submissions

Submit your manuscript, at most 10 A4 pages long, in Springer LNCS format (instructions downloadable from http://www.springeronline.com/sgw/cda/frontpage/0,11855,5-164-2-72376-0,00.html) using the online submission service (see http://www.evostar.org for further details) no later than November 4, 2009. The papers will be peer reviewed by at least two members of the program committee. Authors will be notified via email on the results of the review about December 20, 2009.

The authors of accepted papers will have to improve their paper on the basis of the reviewers’ comments and will be asked to send a camera ready version of their manuscripts, along with text sources and pictures, by early January, 2010. The accepted papers will appear in the proceedings of Evo*, published in Springer LNCS Series, which will be available at the Conference.

Tales of Monkey Islands

Guybrush Threepwood, temibile pirata, e’ tornato. A sorpresa, sugli schermi della Wii e non su quelli tradizionali del PC. La notizia non e’ nuova, ma io ne sono venuto a conoscenza soltanto ora, in colpevole ritardo.

Tales of Monkey Island - Guybrush aboard his ship

Il nuovo gioco si chiama Tales of Monkey Island. Telltale Games, la software house che si e’ presa l’incarico di riportare le avventure di Guybrush, LeChuck, Elaine & c. sul piccolo schermo ha messo in cantiere cinque episodi, rilasciati in sequenza e tutti scaricabili direttamente da Internet tramite il sistema WiiWare. Il primo episodio e’ disponibile on line dallo scorso 7 luglio per 1,000 Wii Points, equivalenti, qui in UK, a £7.00 (non so se il prezzo sara’ lo stesso anche per le puntate successive).

Tales of Monkey Island - Guybrush chatting using his famous idiot sentences

Ammetto che dopo un’oretta di gioco non sono rimasto troppo colpito dall’interfaccia, che e’ usabile, ma non praticissima. Il gioco, inoltre, spesso capita che diventi un po’ scattoso, nonostante non si faccia ricorso a DVD. Ma sono sicuro che questi dettagli non fermeranno gli aficionados…

Sempre piu’ vecchi…

Ebbene si’. Nonostante tutti gli escamotage studiati per evitare questo tragico momento, anche quest’anno ho dovuto soccombere di fronte all’incedere degli anni. E festeggiare, ancora una volta, per l’ennesima volta, il mio compleanno.

Birthday cake (clipart)

Ok, sono solo 27, poteva andare peggio. Ma il problema e’ che in futuro la situazione sara’ sempre piu’ grigia. Per il momento, so che non e’ un granche’, ma mi consolo con una cena fuori, qualche pinta e un po’ di risate. Oltre a Mac OS X Snow Leopard, che ha preso dimora proprio questa mattina sul mio Air.

Libri, libri, libri

L’estate sta finendo (ok, qui a Plymouth possiamo pure dire che non sia mai iniziata), io sono tornato al lavoro e la vita riprende a marciare in maniera piu’ o meno regolare. Poteva esserci una scusa migliore di questa per fare un po’ di shopping libresco? Probabilmente si’, ma poco importa. Qui di seguito il contenuto del pacco arrivato in B111 stamattina direttamente da Amazon.

  1. Growing Artificial Societies, di Joshua M. Epstein e Robert Axtell;

    Epstein & Axtell, Growing Artificial Societies (cover)

  2. Understanding Artificial Intelligence, una collezione di saggi a cura degli editors del Scientific American, con introduzione di Rodney Brooks;

    Understanding Artificial Intelligence (cover)

  3. Programming Microsoft Robotics Studio, di Sara Morgan;

    Sara Morgan, "Programming Microsoft Robotics Studio" (cover)

  4. Introduction to MultiAgent Systems (2nd edition), di Michael Wooldridge.

    Michael Wooldridge, "Introduction to MultiAgent Systems" (2nd edition) (cover)

Non c’e’ nessuna novita’ di rilievo, tutti libri ai quali avevo piu’ o meno velatamente fatto cenno di recente e dei quali avevo gia’ letto qualche pagina, vuoi perche’ ne avevo trovato una copia in formato digitale, vuoi perche’ ero in possesso di una versione precedente. Fatto sta che le cose che mi interessano mi piace averle su carta (che vi sia in questo comportamento una punta di feticismo?). Ora, al solito, con questi libri non rimane altro da fare che leggerli e possibilmente capirli…

Robotica in mostra

Su gentile segnalazione di un’amica, vi rigiro il link ad un’interessante paginetta preparata da quelli del Boston Globe, intitolata More Robots. Si tratta di una rassegna fotografica avente come oggetto i piu’ recenti sviluppi nel campo della robotica, con molti contributi provenienti da Graz, dove si e’ recentemente tenuta la Robocup 2009. Una rassegna che parte dal nostro iCub (in posa da manganellatore fascista) ed arriva ai robot anti-IED, passando per Robotinho (a questo link nelle vesti di direttore d’orchestra con la filarmonica di Berlino), Kobian e decine di altri modelli. Meglio comunque lasciar parlare le immagini.

iCub robot (from Boston Globe's gallery)

cook robot (from Boston Globe's gallery)

Kobian robot (from Boston Globe's gallery)

E se ancora non doveste averne abbastanza, a questo link potete trovare altre foto.

Un po’ d’ordine tra le simulazioni

Dopo tanto penare dovuto all’utilizzo di uno solo dei 4 server Apple che abbiamo a disposizione (laziness mia, mista a problemi di configurazione vari), la batteria estiva di 18 simulazioni che avevo lanciato a suo tempo (vedi questo post) e’ giunta a conclusione. Tempo quindi di analizzare un po’ i risultati e guardare cosa ne e’ venuto fuori. Approfitto di questo post per mettere un po’ d’ordine nella marea di dati generati dal simulatore.

Information overload (cartoon)

Uno degli obiettivi di queste simulazioni era quello di capire come sarebbe meglio implementare il roll. Nelle simulazioni 1 e 2 ho provato ad escluderlo del tutto, con i MAVs in grado di muoversi soltanto su due dimensioni (yaw e pitch). Movimento assolutamente non realistico, ma molto semplice. Non a caso i risultati migliori che ho ottenuto sono stati con questa configurazione. Le altre due alternative consistevano rispettivamente nel collegare il roll allo yaw (nel momento in cui un MAV effettua uno yaw si autogenera un corrispondente roll, simulazioni 3 e 4) o lasciarlo come una componente del tutto indipendente, con gli aeroplanini dunque liberi di muoversi lungo tre direzioni (simulazioni 5 e 6). Il motivo per il quale sono state elaborate due simulazioni per ciascuna configurazione e’ che per entrambe si confronta l’utilizzo di input continui (simulazioni 4 e 6) e di input discreti (simulazioni 3 e 5). Escludendo le prime due condizioni sperimentali (elaborate solo per scrupolo) concentriamo il confronto sulle altre 4.

NN Architecture Av. Fitness Max. Fitness Success rate
3 -130.3004 345.6638 0.4363
4 -35.2221 407.9116 0.5493
5 53.7617 406.5243 0.6026
6 5.4618 391.213 0.5749

Table Tutorial

Quello che emerge e’ che, in termini di fitness media, le architetture che utilizzano il roll in maniera indipendente, per quanto piu’ complesse, raggiungono performance significativamente migliori rispetto a quelle che hanno il roll legato allo yaw. Ragionando sulla fitness massima, come d’altronde e’ lecito aspettarsi i risultati si avvicinano un po’, pur continuando ad evidenziare una leggera supremazia delle simulazioni 5 e 6. Supremazia evidente anche guardando al success rate, che varia per le ultime due architetture tra il 57 ed il 60% contro il 43-55% delle concorrenti. Contrastanti invece i risultati riguardanti l’utilizzo di input discreti o continui. Con il roll legato allo yaw, la rete che riceve input continui sembra funzionare meglio rispetto a quella basata su input discretizzati. Nel caso dell roll indipendente, invece, pare che la discretizzazione abbia effetti positivi.

L’introduzione di uno strato intermedio nelle varie reti (simulazioni 7, 8, 9 e 10) fornisce un generale miglioramento delle performance, riassumibile nella seconda delle due tabelle presentate qui sotto.

NN Architecture Av. Fitness Max. Fitness Success rate
7 -82.8986 360.323 0.4754
8 49.8237 438.7521 0.6396
9 119.3603 444.415 0.6755
10 53.28 420.1875 0.6028

Table Tutorial

NN Architecture Av. Fitness Max. Fitness Success rate
7 vs 3 +36.37886% +4.2408837% +8.96172358%
8 vs 4 +241.45579% +7.56058421% +16.4391043%
9 vs 5 +122.01735% +9.32064824% +12.0975772%
10 vs 6 +875.50258% +7.40632341% +4.85301792%

Table Tutorial

L’introduzione di un hidden layer sembra dare un forte boost alle performance delle reti testate, senza tuttavie sovvertire le gerarchie che si erano stabilite in precedenza. Le soluzioni che utilizzano il rollaggio in maniera indipendente e non legata allo yaw confermano infatti la loro “supremazia”.

Infine ho testato altre otto architetture (dalla 11 alla 18 incluse), che ricalcano le caratteristiche delle 8 simulazioni precedenti (dalla 3 alla 10), introducendo pero’ delle ricorrenze degli output. Ricorrenze che prendono la forma di reti di Jordan nelle architetture 11, 12, 15 e 16, di reti di Elman nelle reti 13, 14, 17 e 18. Qui sotto le loro performance assolute ed un confronto con le reti equivalenti prive di ricorrenze.

NN Architecture Av. Fitness Max. Fitness Success rate
11 -221.9481 232.8541 0.2086
12 -160.9756 256.3188 0.2472
13 -258.8055 113.8254 0.1295
14 -265.2192 130.6172 0.155
15 -42.8824 311.3557 0.3581
16 -18.4841 346.6911 0.453
17 -92.2134 291.5339 0.3346
18 -85.5089 296.8809 0.3421

Table Tutorial

NN Architecture Av. Fitness Max. Fitness Success rate
11 vs 3 -70.3357% -32.635671% -52.188861%
12 vs 4 -357.0301% -37.16315% -54.997269%
13 vs 7 -212.1953% -68.410176% -72.759781%
14 vs 8 -632.3153% -70.22984% -75.766104%
15 vs 5 -179.7638% -23.41031% -40.574179%
16 vs 6 -438.4251% -11.380476% -21.203688%
17 vs 9 -177.2563% -34.400527% -50.466321%
18 vs 10 -260.4897% -29.345614% -43.248175%

Table Tutorial

Contrariamente alla credenza comune (e comunque in maniera limitata al caso specifico), l’introduzione di ricorrenze pare non apportare alcun beneficio alle mie reti. Le cui performance, al contrario, decrescono in maniera abbastanza significativa, pur conservando qualche buon picco in termini di fitness massima (condizione vera in particolare per le architetture 15 e 16).

Detto tutto cio’, la scelta per l’architettura da utilizzare per i prossimi scenari (un po’ piu’ complicati di quello presentato qui, dove i MAVs si dovevano muovere all’interno di un ambiente del tutto vuoto, cercando di raggiungere un target stazionario) ricade obbligatoriamente sulla numero 9. Input discretizzati, rolling indipendente dallo yaw, hidden layer e nessuna ricorrenza. Un po’ misera come conclusione dopo cotanto lavoro (in realta’ piu’ del server che non mio…), ma tant’e'…

Backpropagation with NNFW

Mi vergogno un po’ a doverlo ammettere. Ma nonostante siano piu’ di due anni che lavoro nel campo delle reti neurali, ancora non avevo mai scritto del codice che sfruttasse l’algoritmo di Backpropagation. Ovviamente lo conosco discretamente da un punto di vista teorico, ci ho giocato un po’ ai tempi dell’universita’ attraverso il Neural Networks Toolbox di Matlab ed in seguito con tlearn, ma appunto non avevo ancora avuto modo di utilizzarlo all’interno di un software scritto in prima persona. Ebbene, oggi ho rimediato a questa mia lacuna. Come sempre grazie al Neural Network Framework del buon Gianluca, (che tra parentesi si sposa con Giovanna il prossimo sabato… approfitto per fare gli auguri a entrambi!). L’algoritmo di backprop e’ implementato davvero molto bene in questa libreria. Al punto che un programma completo in grado di risolvere il tradizionale XOR problem e’ contenuto in queste poche righe (doveroso un ringraziamento a Snipt.org, che mi permette di utilizzare gratuitamente l’ottimo visualizzatore di code snippets che potete vedere all’opera qui di seguito):

Nel caso specifico ho un po’ esagerato. E mi sono concesso una rete composta da uno strato intermedio di 4 neuroni. I risultati sono comunque garantiti, come da copione, anche utilizzando due soli neuroni di hidden (per chi volesse sporcarsi le mani, la riga incriminata e’ la numero 32). Per il resto, gli unici parametri degni di nota sono il learning rate, fissato a 0.2, e l’aggiunta del momentum, con intensita’ 0.8. Qui di seguito il grafico che visualizza l’andamento dell’errore quadrato medio nel corso delle 50,000 epoche di training impostate.

Mean squared error for the backpropagation algorithm applied on the XOR problem

Ed infine ecco qui i risultati generati dalla rete in un run tipico dell’algoritmo.

Input #1 Input #2 Expected output Generated output
0 0 0 0.00753665
0 1 1 0.989994
1 0 1 0.994187
1 1 0 0.0104711

Table Tutorial

Direi di aver finalmente riempito un vuoto che avevo dentro…

Una scimmia pericolosa

Ok, direi che e’ giunta l’ora di riprendermi definitivamente dalla pausa vacanze e tornare a tenere il blog aggiornato con regolarita’. Il ritorno alla vita lavorativa (ok, per ora molto blando, essendo che sono tornato in laboratorio venerdi’ mattina e la sera era gia’ weekend) mi ha riacceso un pallino che nelle ultime settimane si era un po’ assopito. Un pallino di quelli pericolosi, estremamente pericolosi. Soprattutto per le mie finanze. Trattasi infatti del pallino (e via che usiamo questo termine per la terza volta in altrettante frasi) per gli head-mounted display (HMD). Volgarmenti detti anche visori. Talvolta pure visori 3D (a seconda del fatto che siano capaci o meno di rappresentare una scena in simil-3D). Ed ogni tanto anche head-worn display, giusto per confondere un po’ le cose, come nell’ottima review (anche se ormai datata 2006) a cura di Ozan Cakmakci e Jannick Rolland

HMD - Head-mounted display

Per mia fortuna (o sfortuna, dipende dai punti di vista), questi aggeggi sono ancora dannatamente costosi. Ho trovato una paginetta web, http://www.inition.co.uk/inition/products.php?CatID_=8, dove ve ne sono catalogati diversi. Di primo acchitto, quello che mi ispira maggiormente e’ l’eMagin Z800, che pero’ sparano a $1,500. Ancora un po’ troppo. Anche se magari un giorno finiro’ il mio PhD e mi servira’ qualcosa per festeggiare, no?

PS: a proposito, qualcuno di voi conosceva per caso questa meraviglia? Mi ci sono imbattuto per caso mentre girovagavo per link e, nonostante si sia meritata un’impietosa definizione di The Ugliest Products in Tech History da parte di PC World, vorrei troppo averne uno!

Digital switchover

Miracolo! Appena rientrato in quel di Plymouth mi ero ritrovato di fronte ad una inattesa e fastidiosa novita’. La TV non riceveva piu’ alcun canale. Non che prima si abbondasse, per carita’. Da quando avevo trasferito baracca e burattini nell’appartamento nuovo ero in grado di vedermi solo e soltanto i canali della BBC. Piu’ che sufficienti, tuttavia, per farmi compagnia durante la colazione e talvolta a cena. Ora manco quelli. Considerato anche che avendo sistemato il mio Media Centre in camera da letto, il mio 32″ rischiava di trasformarsi in un costoso (va beh, nei limiti…), ingombrante e inutile soprammobile. Fino a quando non ho scoperto che il problema non era della tv, ma del cosiddetto digital switchover in atto. Pare che sia abitudine europea iniziare il processo di spegnimento del segnale analogico a favore del digitale nelle aree piu’ sfigate di un Paese per poi arrivare man mano a quelle un po’ piu’ “importanti”. In Italia e’ toccato alla Sardegna. Qui, manco a dirlo, a Devon e Cornwall.

Al - digital switchover in the UK

L’importante, comunque, e’ stato l’aver realizzato che non si trattava di un problema del mio impianto. Cosi’ e’ bastato (eufemismo, quando hai un televisore della Vistron niente e’ facile come possa apparire… vedi ad esempio qui) risintonizzare nuovamente tutti i canali del digitale terrestre per trovarmi di fronte ad un nuovo mondo. Decine di canali (tutti ovviamente inutili) tra cui poter scegliere. Roba da crampi al polpastrello del pollice. Almeno ora sono sicuro che se un giorno passeranno per disgrazia qualcosa di interessante io non me lo perdero’.

Pagina Successiva »