Autor/Betreuer: Ignacio Heredia (CSIC)
Projekt: Diese Arbeit ist Teil des DEEP Hybrid-DataCloud-Projekts, das im Rahmen der Fördervereinbarung Nr. 777435 vom Forschungs- und Innovationsprogramm Horizon 2020 der Europäischen Union gefördert wurde.
Dies ist ein Plug-and-Play-Tool zur Durchführung der Audioklassifizierung mit Deep Learning. Es ermöglicht dem Benutzer, seine Audioproben zu klassifizieren und seinen eigenen Klassifikator für ein benutzerdefiniertes Problem zu trainieren. Der Klassifikator ist derzeit für die 527 High-Level-Klassen aus dem AudioSet-Datensatz vorab trainiert.
Weitere Informationen dazu finden Sie im DEEP Marketplace.
Inhaltsverzeichnis
Anforderungen
Dieses Projekt wurde in Ubuntu 18.04 mit Python 3.6.5 getestet. Weitere Paketanforderungen sind in der Datei
requirements.txt
beschrieben.
- Um eine breite Palette von Audioformaten zu unterstützen, müssen wir die FFMPEG-Bibliothek verwenden. Um es unter Linux zu installieren, führen Sie bitte Folgendes aus:
apt-get install ffmpeg libavcodec-extra- Es ist erforderlich, dass Tensorflow>=1.14.0 installiert ist (entweder im GPU- oder CPU-Modus). Dies ist nicht in der
requirements.txt
aufgeführt, da dadurch die GPU-Unterstützung unterbrochen wird.
Um dieses Framework zu verwenden, klonen Sie das Repo und laden Sie die Standardgewichtungen herunter:
git clone https://github.com/deephdc/audio-classification-tf
cd audio-classification-tf
pip install -e .
curl -o ./models/default.tar.gz https://api.cloud.ifca.es:8080/swift/v1/audio-classification-tf/default.tar.gz
cd models && tar -zxvf default.tar.gz && rm default.tar.gz
Führen Sie jetzt DEEPaaS aus:
deepaas-run --listen-ip 0.0.0.0
und öffnen Sie http://0.0.0.0:5000/ui und suchen Sie nach den Methoden, die zum audioclas
-Modul gehören.
Wir haben auch einen gebrauchsfertigen Docker-Container für die Ausführung dieses Moduls vorbereitet. Um es auszuführen:
docker search deephdc
docker run -ti -p 5000:5000 -p 6006:6006 -p 8888:8888 deephdc/deep-oc-audio-classification-tf
Öffnen Sie nun http://0.0.0.0:5000/ui und suchen Sie nach den Methoden, die zum audioclas
-Modul gehören.
Sie können Ihren eigenen Audioklassifikator mit Ihrem benutzerdefinierten Datensatz trainieren. Dazu müssen Sie:
Legen Sie Ihre Bilder im Ordner ./data/audios
ab. Wenn Sie Ihre Daten an einem anderen Ort haben, können Sie diesen Speicherort verwenden, indem Sie den Parameter dataset_directory
in den Trainingsargumenten festlegen. Bitte verwenden Sie ein Standard-Audioformat (wie .mp3
oder .wav
).
Hinweis: Der Klassifikator funktioniert mit 10er-Proben. Wenn eine Audiodatei also länger/kürzer als 10 Sekunden ist, wird sie in einer Schleife verkettet, sodass sie ein Vielfaches von 10 Sekunden dauert. Eine 22 Sekunden lange Audiodatei erstellt also drei Einbettungen:
*-0.npy
,*-1.npy
und*-2.npy
.
Zuerst müssen Sie die folgenden Dateien zum Verzeichnis ./data/dataset_files
hinzufügen:
Obligatorische Dateien | Optionale Dateien |
---|---|
classes.txt , train.txt | val.txt , test.txt , info.txt |
Die Dateien train.txt
, val.txt
und test.txt
verknüpfen einen Audionamen (oder relativen Pfad) mit einer Labelnummer (die bei Null beginnen muss). Die Datei classes.txt
übersetzt diese Etikettennummern in Etikettennamen. Schließlich können Sie info.txt
Informationen (z. B. die Anzahl der Audiodateien in der Datenbank) zu jeder Klasse bereitstellen.
Wenn Sie die Option compute_embeddings=False
verwenden, sollte der Dateipfad auf den .npy
Pfad der Einbettung statt auf die ursprüngliche Audiodatei verweisen und der Parameter dataset_directory
sollte auf den Ordner verweisen, der die Einbettungen enthält.
Beispiele dieser Dateien finden Sie unter ./data/demo-dataset_files
.
Gehen Sie zu http://0.0.0.0:5000/ui und suchen Sie nach der TRAIN
POST-Methode. Klicken Sie auf „Ausprobieren“, ändern Sie die gewünschten Trainingsargumente und klicken Sie auf „Ausführen“. Das Training wird gestartet und Sie können seinen Status verfolgen, indem Sie die TRAIN
GET-Methode ausführen, die auch einen Verlauf aller zuvor durchgeführten Trainings anzeigt.
Wenn für das Modul eine Art Trainingsüberwachung konfiguriert ist (wie Tensorboard), können Sie diese unter http://0.0.0.0:6006 verfolgen.
Gehen Sie zu http://0.0.0.0:5000/ui und suchen Sie nach der PREDICT
POST-Methode. Klicken Sie auf „Ausprobieren“, ändern Sie die gewünschten Testargumente und klicken Sie auf „Ausführen“. Sie können entweder Folgendes angeben:
data
mit einem Pfad, der auf eine Audiodatei oder eine komprimierte Datei (z. B. zip, tar, ...) zeigt, die Audiodateien enthält.ODER
url
Argument mit einer URL, die auf eine Audiodatei oder eine komprimierte Datei (z. B. zip, tar, ...) verweist, die Audiodateien enthält. Hier ist ein Beispiel für eine solche URL, die Sie zu Testzwecken verwenden können. Der Code in diesem Projekt basiert auf dem Original-Repo von IBM und implementiert das Papier „Multi-level Attention Model for Weakly Supervised Audio Classification“ von Yu et al.
Die wichtigsten Änderungen gegenüber dem ursprünglichen Repo sind:
Wenn Sie dieses Projekt für nützlich halten, ziehen Sie bitte in Betracht, das DEEP Hybrid DataCloud-Projekt zu zitieren:
García, Álvaro López et al. Ein cloudbasiertes Framework für Workloads und Anwendungen des maschinellen Lernens. IEEE Access 8 (2020): 18681-18692.
zusammen mit einer der folgenden Referenzen:
- Jort F. Gemmeke, et al., Audioset: Eine Ontologie und ein vom Menschen gekennzeichneter Datensatz für Audioereignisse, IEEE ICASSP, 2017.
- Qiuqiang Kong, et al., Audio-Set-Klassifizierung mit Aufmerksamkeitsmodell: Eine probabilistische Perspektive. arXiv-Vorabdruck arXiv:1711.00927 (2017).
- Changsong Yu, et al., Mehrstufiges Aufmerksamkeitsmodell für die schwach überwachte Audioklassifizierung. arXiv-Vorabdruck arXiv:1803.02353 (2018).
- S. Hershey et al., CNN-Architekturen für die groß angelegte Audioklassifizierung, arXiv-Vorabdruck arXiv:1609.09430, 2016.