Go JibJib

Alexander J. Knipping

Ein Gastbeitrag Von Alexander J. Knipping
04.02.2019 | 10 Minuten Lesezeit

Ein aktueller Artikel in der iX - Magazin für professionelle Informationstechnik - beleucht den DevOps-Ansatz für ein Machine-Learning-Projekt zur Vogelstimmenerkennung.

Startbildschirm der JibJib App | Foto/Quelle: JibJib

Startbildschirm der JibJib App | Foto/Quelle: JibJib

Das Projekt entstand aus dem Coding Da Vinci OST 2018 heraus, einem Kultur-Hackathon in Leipzig Anfang 2018. Dort haben wir uns entschieden auf Basis des Tierstimmenarchives, mittels Machine Learning einen Vogelstimmenklassifizierer zu entwickeln. Dieser sollte mit Hilfe eines Smartphones oder REST API, Vögel anhand ihres Gesangs bestimmen. Knapp drei Monate später präsentierten wir JibJib - eine Android App zur Vogelbestimmung.

Um mit Machine Learning einen Klassifizierer zu trainieren, brauchten wir erst einmal Daten. Hierfür nutzten wir die knapp 4000 lizenzfreie Aufnahmen aus dem Tierstimmenarchiv, sowie ergänzende Audiodateien der freien Vogelstimmendatenbank xeno-canto.org. Die Kombination beider Resourcen lieferte uns rund 80 000 Audiodateien von fast 200 Vögeln, welche letztendlich für das Training des Machine Learning Modells verwendet wurden. Für das eigentlich Modell nutzten wir ein von Google entwickeltes Neuronales Netz (VGGish), welches angepasst und auf unsere Vögel nachtrainiert wurde.

Unser Team beim CDV OST | Foto/Quelle: JibJib

Unser Team beim CDV OST | Foto/Quelle: JibJib

Die Abfrage des in der Cloud gehosteten Modells erfolgt entweder mittels unserer Android App, oder direkt per REST API Aufruf. Hierzu wird eine MP4-Audiodatei einer Vogelstimme benötigt, welche per curl direkt an die API geschickt werden kann:

$ curl -H 'Content-Type: application/octet-stream' -X POST --data-binary @bird_voice.mp4 https://gojibjib.org/api/detect/binary

Die als Antwort folgende JSON-Nachricht enthält die IDs der drei Vögel mit den höchsten Trefferwahrscheinlichkeiten: bei einem Wert von 0.72 hat das Modell eine Konfidenz von 72%, dass es sich bei der Aufnahme um den Vogel mit der zurückgegebenen ID handelt. Diese ID kann dann benutzt werden um weitere Informationen über den Vogel zu erlangen:

$ curl "https://gojibjib.org/api/birds/2?desc_en=false&desc_de=false"

Weitere Informationen zum Quellcode und zur API befinden sich auf GitHub.

Nun hoffen wir die App auszubauen und weiterentwickeln zu können. Ziel ist es das Modell zu verbessern und die Vogelerkennung genauer zu machen. Weiterhin steht ein Refactoring des Backends an, sowie eine Standardisierung des Data Science Prozesses (mehr Details zu den Methoden unserer Entwicklung kann in meinem Artikel in der aktuellen iX nachgelesen werden). Auch hoffen wir mehr Gamification Elemente in die Android App einbauen zu können. Bei Ideen, Anfragen oder Feedback schickt uns einfach eine E-Mail an gojibjibp[at]gmail.com.

Literatur:

[1] Alexander J. Knipping; Gezwitscher entziffern; Machine-Learning-Projekte umsetzen mit dem DevOps-Ansatz; iX 02/2019, S.92 ff.