Table of Contents
Synapse - Daten-Back-End für Inspeye
Stellt einen Dienst per HTTP zur Verfügung. Standard ist Port 1954/TCP, für die Entwickler-Version Port 1955/TCP. Kommunikation erfolgt per JSON (“application/json”), oder als HTML (“text/html”) im Debug-Mode. Der stabile Dienst wird mit dem Benutzer roland
gestartet.
Setup
Läuft derzeit auf grapu
(192.168.178.15), der DNS-Name ist grapu.fritz.box
. Der Dienst wohnt derzeit in /home/roland/work/teachboard
(Test), bzw. /home/timo/work/synapse
(Entwicklung). Der Dienst kann -im Vordergrund- mittels python synapse.py –debug
gestartet werden. Die Modelldateien werden dabei im Ordner './models' erwartet, der ein Link auf das globale Modell-Verzeichnis darstellt. Die Neural-Network-Lib (nn/*) muss im PYTHONPATH eingebunden sein.
API
Folgende APIs sind zur Zeit verfügbar:
- desc: Liefert eine Liste von Tags für das angefragte Bild zurück.
- classify: Liefert eine Liste von Kategorien mit den Wahrscheinlichkeiten zurück.
- novelty: Liefert einen Wert 0=bekannt, 1=neu zurück
Hinweis: Bilder werden immer über eine eindeutig ObjectId referenziert, der Parameter lautet id
. Die ID hat ein festes Format: 54b69330c40a87ae7290bebe
.
Konkrete Beispiele:
- JSON-Liste mit Kategorien: http://192.168.178.15:1954/classify?img=54b69330c40a87ae7290bebe
- HTML-Seite mit Kategorien: http://192.168.178.15:1954/classify?html=1&img=54b69330c40a87ae7290bebe
- JSON-Liste mit Tags: http://192.168.178.15:1954/desc?img=54b69330c40a87ae7290bebe
- HTML-Seite mit Tags: http://192.168.178.15:1954/desc?html=1&img=54b69330c40a87ae7290bebe
Die angegebenen IDs sind rein fiktiv, bitte aus dem Brainboard aktuelle IDs auslesen
Quellcode
Sämtlicher Code für den Dienst liegt im playground-git (timo/teachboard). Der Quellcode für den Zugriff auf trainierte Modelle liegt im Zweig (timo/nn). Dort befinden sich die Modelle für die Forward-Propagation (nn/fprop/fprop_fashion.py), sowie die Werkzeuge zum Training einzelner Modelle (nn/models/fashion.py).
Training
Jedes einzelne Modell, z.B. warp
zum Training der deskriptiven Tags, hat eine eigene Parameter-Datei (nn/models/parameters/WARP.params). Diese Enthält sämtliche Parameter zum Training und zur Nutzung des Modells. Die Dateien enthalten z.B. Werte für die Lernrate, wie viele Knoten, Art der Methode für das Training und wo die Daten zum eigentlichen Training liegen.
Novelty Detection
: wir brauchen ein Deploy-Mechanismus, der nicht von relativen Ordnern abhängt.
PYTHONPATH muss um …/playground/bengt/noveltyDetection/ erweitert werden. Beim Aufruf von classify wird in der json-Antwort dann ein Feld novelty ausgeliefert, welches 0.0 für „bekannte Kategorie“ und 1.0 für „unbekannte Kategorie“ enthält.
Updates
Falls Quellcode im Verzeichnis teachboard
angepasst wurde, muss der Dienst -als roland(!)- einmal neu gestartet werden. D.h. alten Prozessen killen, neuen Prozess starten.
$ nohup python ./synapse.py &
Danach prüfen, dass der Dienst wirklich läuft und irgendwelche Ergebnisse liefert.
Modelle
Alle Modelldateien, vortrainierte, als auch unsere eigenen, landen ab jetzt in /var/local/data/models
. Die Dateien müssen für die Gruppe nerds
lesbar sein. DeCAF-Modelle sind dort ebenfalls vorhanden. Eine für alle nutzbare DeCAF-Installation liegt unter /var/local/decaf/decaf-release-master
(Pfad in PYTHONPATH!).