Klassifikation durch Neuronale Netze - Caffe auf dem Robotino

From RobotinoWiki

Aktueller Gegenstand der Forschung ist der Einsatz von neuronalen Netzen zur Klassifikation. Zwar ist der Ansatz nicht neu, jedoch durch den Einsatz von modernen Grafikkarten und immer effizienteren Prozessoren lassen sich heute neuronale Netze mit deutlich größeren Datenmengen und deutlich größeren Strukturen trainieren, die in ihrer Erkennungsleistung klassischen Verfahren deutlich überlegen sind. Durch die Verbreitung von unterschiedlichen Open-Source Frameworks ist der Einstieg in diese Thematik sehr einfach geworden.

Im folgenden Artikel wird beschrieben, wie das Deep Learning Framwork Caffe auf dem Robotino installiert wird. Zudem wird ein kleines Beispielprogramm bereit gestellt, das Bilder einer Kamera (bspw. Webcam oder Intel RealSense Kamera) einliest und über ein neuronales Netz klassifiziert.


Vorausssetzungen

Ubuntu 12.04, 14.04 oder 16.04 sowie eine bestehende Internetverbindung.


Installation

Um die Installation zu vereinfachen, wurden zwei Pakete vorbereitet, die ein Installationsskript sowie ein Beispielprogram enthalten:

  • Das Paket caffe4robotino.tar.gz installiert caffe mit der vom System bereitgestellten ATLAS Bibliothek. Diese unterstützt jedoch keine Mehrprozessor-Berechnungen.
  • Das Paket caffe4robotino_with_openblas.tar.gz installiert caffe sowie die OpenBLAS Bibliothek, die es erlaubt mehrere Prozessorkerne gleichzeitig zu nutzen und somit die Berechnungen deutlich beschleunigt.

Zur Installation muss das gewünschte Paket heruntergeladen und entpackt werden. Im folgenden wird davon ausgegangen, dass der Robotino eine Internetverbindung hat. Die Installationsbefehle sind im einzelnen:

# Entweder
wget http://doc.openrobotino.org/download/jebens/caffe4robotino.tar.gz

# oder
wget http://doc.openrobotino.org/download/jebens/caffe4robotino_with_openblas.tar.gz

tar xfz caffe4robotino*.tar.gz
cd caffe4robotino
./install_caffe.sh

Beispiel

Das Beispielprogramm liegt im Ordner webcam_demo und nutzt ein vortrainiertes Netz zur Klassifikation von Bildern aus. Das vortrainierte Netz wird während der Installation heruntergeladen. Um das Beispielprogramm mit dem ersten Videostrom zu starten reicht folgender Befehl:

cd webcam_demo
./webcam_demo 0

Achtung: Wird eine Kamera mit mehreren Videoströmen verwendet, bspw. eine Intel RealSense Kamera, so muss die Zahl 0 entsprechend erhöht werden.

Um andere Netze zu nutzen können die jeweiligen Parameterdateien beim Programmstart angegeben werden. Eine Beschreibung aller verfügbaren Optionen ist über die -h Option verfügbar:

./webcam_demo -h

Usage: ./webcam_demo [options] [camera number|image files]

Options:
 --model-file|-m    Model file, usually called deploy.prototxt
                    [Default: ../caffe/models/bvlc_reference_caffenet/deploy.prototxt]
 --trained-file|-t  File containing the trained net, usually
                    with the suffix .caffemodel.
                    [Default: ../caffe/models/bvlc_reference_caffenet/bvlc_reference_caffenet.caffemodel]
 --mean-file|-e     Image mean information, e.g.,
                    imagenet_mean.binaryproto.
                    [Default: ../caffe/data/ilsvrc12/imagenet_mean.binaryproto]
 --label-file|-l    Label file, e.g., synset_words.txt.
                    [Default: ../caffe/data/ilsvrc12/synset_words.txt]