Friday 6 March 2015

Event-Based Neuromorphic Systems Book Published

Last month, the book I've been helping to write and edit, Event-Based Neuromorphic Systems, finally came out:

 Event-Based Neuromorphic Systems cover

Event-Based Neuromorphic Systems, Shih-Chii Liu (Editor), Tobi Delbruck (Co-Editor), Giacomo Indiveri (Co-Editor), Adrian Whatley (Co-Editor), Rodney Douglas (Co-Editor), pp 440, Wiley.
ISBN: 978-0-470-01849-1

Neuromorphic electronic engineering takes its inspiration from the functioning of nervous systems to build more power efficient electronic sensors and processors. Event-based neuromorphic systems are inspired by the brain's efficient data-driven communication design, which is key to its quick responses and remarkable capabilities.  This cross-disciplinary text establishes how circuit building blocks are combined in architectures to construct complete systems. These include vision and auditory sensors as well as neuronal processing and learning circuits that implement models of nervous systems.

Techniques for building multi-chip scalable systems are considered throughout the book, including methods for dealing with transistor mismatch, extensive discussions of communication and interfacing, and making systems that operate in the real world. The book also provides historical context that helps relate the architectures and circuits to each other and that guides readers to the extensive literature.

The book is intended for practicing neuromorphic electronic engineers, advanced electrical engineering and computer science students and researchers interested in neuromorphic systems.

The book
  • summarises the latest design approaches, applications, and future challenges in the field of neuromorphic engineering;
  • presents examples of practical applications of neuromorphic design principles; and
  • covers address-event communication, retinas, cochleas, locomotion, learning theory, neurons, synapses, floating gate circuits, hardware and software infrastructure, algorithms, and future challenges.
Follow the link to see a table of contents etc.

Friday 31 August 2012

Michael Arbib takes a look at Ada

Ten years ago, my colleagues and I at INI had a lot of fun, and stress, working on 'Ada - the intelligent space' [1] for the Swiss national exhibition of 2002. Recently, influential theoretical neuroscientist and a computer scientist Michael A. Arbib [2][3] published a paper in the journal Intelligent Buildings International [4] entitled Brains, machines and buildings: towards a neuromorphic architecture [5].

Ada was conceived as a novel artificial organism, a creature in the shape of a space that visitors could enter. The space could then perceive and playfully interact with her visitors via sensory organs. She could see, hear and sense touch and contact. She expressed herself through sound, light, and projections on the walls.



In Arbib's paper he points out that
"While there is a great deal of work well underway in the design of intelligent buildings and ambient intelligence, this work has almost entirely ignored the findings of neuroscience"
and asks what might happen
"if our knowledge of the structure and function of brains informs our design of perception, control and communication systems for buildings, so that these systems are based on brain operating principles rather than ad hoc computational designs".

In trying to answer this question he takes a new look at Ada, amongst other systems. Ada's various subsystems were inspired to different degrees by neuroscience [6], and as such Arbib suggests that Ada represents a 'seminal precursor' of future buildings constructed as perceiving, acting and adapting entities based on lessons learnt from studying real, biological brains, and "a significant stepping stone towards neuromorphic architecture."

Part of his paper may be read as an introduction to neuroscience for architects and building automation engineers. If these readers take up Arbib's ideas and those expressed in INI's Ada, in the not too distant future we may find ourselves living and working in buildings that react much more intelligently to our habits and requirements.

One small correction to Arbib's article - Ada was exhibited in Neuchatel (aka Neuenburg), not in Lausanne.

[1] http://ada.ini.uzh.ch/
[2] http://www.usc.edu/programs/neuroscience/faculty/profile.php?fid=16
[3] http://en.wikipedia.org/wiki/Michael_A._Arbib
[4] http://www.tandfonline.com/action/aboutThisJournal?journalCode=tibi20
[5] http://www.tandfonline.com/doi/abs/10.1080/17508975.2012.702863
[6] http://ada.ini.uzh.ch/presskit/papers/ada-iros2002.pdf

(This post is adapted from my post which first appeared on the Institute of Neuroinformatics' Blog http://neuroinformatic.blogspot.ch/ )

Arbib also gave a lecture at ANFA, the Academy of Neuroscience for Architecture, see  http://www.anfarch.org/news/interfaces/March22011Lecture.shtml

Tuesday 31 July 2012

Code review(ed)

Today I had the rare, but pleasant experience of getting my code
reviewed by a colleague. We were talking about some aspects of Python at
lunch, and he volunteered to take a look at my code, so I said yes
please. Later in the afternoon he sat down with me, and we went through
almost 300 lines of my code and I learnt a couple of things. For one,
I'm not doing too badly (i.e. not too un-Pythonically), something I was
not at all sure about. For another, I was doing something quite ugly
with iterating over lists of tuples, where my reviewer pointed out I
could use a dictionary and get a much more elegant, readable &
maintainable result.

The point is that I learned stuff, and my code is now better.

Unfortunately, in this environment (an academic research institute) code
writing is still predominantly seen as a solo activity conducted as a
means to an end which does not need to be discussed. Only the results
need to be discussed.

The quality of code I see being written by doctoral students varies
greatly. Some is excellent, some less so. And I think it's a shame that
learning opportunities are being lost because hardly anyone reads
anybody else's code. It's not only the weaker coders who could gain in
terms of productivity during their PhDs, the better ones might happen to
find bugs sooner too, on the basis that two heads are better than one.
And in both cases, doing a bit of code review should stand them in good
stead for their future careers, in which they are very likely to
continue to write code, whether in academia or in industry.

Thursday 19 July 2012

IRQF_SAMPLE_RANDOM on its way out

According to Linux Weekly News article 507115
http://lwn.net/Articles/507115/ , the flag IRQF_SAMPLE_RANDOM, which
drivers use to tell the kernel whether to use interrupts from their
device(s) as a source of entropy for the entropy pool that backs the
kernel's RNG or not, is liable to become redundant from 3.6 onwards.
"After this change, adding randomness from interrupts ... is done by
default for all interrupts". This means that at that point I can remove
the flag in my out-of-line pciaer driver
(http://www.ini.uzh.ch/~amw/pciaer/index.html) along with the handling
of a module parameter (no_sample_random) which I provided to allow
paranoiacs to turn the use of IRQF_SAMPLE_RANDOM off. This might have
been important if very regular address-event senders and/or receivers
were in use (e.g. during test) but high quality random-number generation
were still important.

I've queued this change up in my TODO file.

Wednesday 18 July 2012

Bibtex entry creation script used in anger

I've been using my Python script in anger to help convert two chapters
worth of references from plain text references to Bibtex entries.

It's a bit rough and ready and assumes quite a bit about the layout of
the references in the plain-text text, but it did a kind of 90% job
for me.

Maybe it could be helpful for others too, but you shouldn't expect too
much of it.

Of course it could be improved a lot, but at some point, faced by the
law of diminishing returns, I decided to stop improving it when it was
doing 90% OK, and the rest (the difficult cases) I've edited by hand.

Monday 16 July 2012

Python script

I'm writing a Python script to generate Bibtex entries from more or less
free-form citations, trying to guess which parts are the author names,
article title, page numbers etc.

This is the first time I've written any Python for over a year, and I'm
a bit rusty. I keep on forgetting the colons at the end of if's and
function definitions.

Thursday 12 July 2012

Draft book chapters handed over

Yesterday and today I handed over the drafts of two chapters of a
forthcoming book to our lead editor, Shih-Chii Liu.

Sunday 1 May 2011

Capo Caccia 2011



I'm at Capo Caccia in Sardinia again (for the third year running) for the annual review of the SECO project and for the 2011 Capo Caccia Cognitive Neuromorphic Engineering Workshop.

Last year, getting home afterwards was quite a struggle due to Eyjafjallajökull. This year, getting here was quite a struggle due to Alitalia. The plan was to take the 15:09 train from Zürich to Milan, and then fly to Alghero, which is only a half hour's drive to the hotel here. We should have arrived in the late evening. The train journey was uneventful, but on the plane, having taxied out to the runway, it was discovered that there was a small problem with one of the engines. So we taxied away from the runway again. Technicians boarded. After two hours sitting on the plane it was decided, not long before midnight, that we must get off the plane again. As we walked down the steps to the buses that would return us to the terminal, we could see the no. 1 engine with cowls open, a technician sitting on the ground underneath it next to his rather domestic looking small blue toolbox. For some while in the now deserted terminal it appeared there was still a chance our flight might depart that night, but then the word cancellato was heard, and that was that. The two remaining airport check-in staff then faced the unenviable task of organising a hotel for everyone and buses to take us to the hotel, and issuing everyone with vouchers for the accomodation. After this we still had to collect all our luggage, wait for the buses, travel to the hotel, and last but not least check in, before we eventually saw our beds at around 3:15 in the morning. I set my alarm for 6:15 to ensure I had time to check out again in good time to be ready for the bus back to the airport at 7am. At least our second chance flight proceeded smoothly, but our nine hour journey had been stretched to twenty hours with only three hours of sleep.

That was all last Tuesday 26th April/Wednesday 27th April. Since then I've presented my couple of slides at the SECO review meeting on Friday 29th, and all is well.