====== 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 ====== {{/dokuwiki/lib/images/smileys/fixme.gif|FIXME}}: 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!).