Audiobasierte Verkehrszählung

Nils-Hendrik Meier
Github Repository: https://github.com/NilsHMeier/Audio_Classification_Approaches
Vollständige Arbeit: PDF

Abstract
Diese Arbeit verfolgt das Ziel, mit Hilfe von Machine Learning ein audiobasiertes System zur Verkehrszählung zu entwickeln und damit einen Beitrag für eine effizientere Verkehrssteuerung zu leisten. Dazu wurde ein Datensatz in Form von Videos erhoben und im Preprocessing in Feature und Label transformiert. Im Machine Learning Teil der Arbeit werden die Waveform und Spektrogramm Modelle trainiert und verglichen. Dabei konnten Abweichungen von unter 1% erreicht werden. Zur weiteren Evaluation wurden Testdaten mit verschiedenen Verkehrsdichten aufgenommen. Die Abweichungen hängen stark vom Verkehrsfluss ab und liegen zwischen 1% und 50%.

Datenerhebung

Im ersten Teil des Vorhabens geht es darum, einen geeigneten Datensatz zusammenzustellen, der die Basis für den Vergleich der verschiedenen Ansätze der Audioklassifikation bildet. Dazu wurden Rohdaten in Form von Videos erhoben und anschließend im Preprocessing in eine nutzbare Form mit Features (reine Audiodaten) sowie Labels (wann Autos vorbeigefahren sind) transformiert. Die Aufnahmen und damit auch der endgültige Datensatz beschränken sich auf den fließenden Verkehr, da dieses Setting eine deutlichere Trennung der einzelnen Fahrzeuge ermöglicht und potenziell zu besseren Ergebnissen führt. Die Videoaufnahmen der Straße erfolgen aus seitlicher Perspektive, damit innerhalb der Objekterkennung im Preprocessing Fahrzeuge gut erkannt werden können und die Qualität des Labeling Prozesses sichergestellt wird. Zudem kann bei seitlicher Perspektive gut festgelegt werden, ab wann ein Fahrzeug als vorbeigefahren gilt und dementsprechend ein Label zu diesem Zeitpunkt gesetzt werden muss. Zur Aufnahme der Videos wurde eine normale Handykamera mit Weitwinkel genutzt, wobei zur Reduzierung der Datengröße die Qualität der Videos auf 720p beschränkt wird. Die ersten Aufnahmen wurden mit dem internen Mikrofon des Smartphones erhoben, beim Auswerten der Videos ergab sich jedoch das folgende Problem: Aufgrund der Lage des Mikrofons im Smartphone zeigt es bei der Aufnahme der Straße zwingend in eine Richtung zur Straße und erfasst damit die Fahrzeuge aus dieser Fahrtrichtung eher als die der Gegenrichtung. Damit einhergehend ergibt sich für das Labeling das Problem, dass zwischen Markierung, wann ein Auto im Bild vorbeigefahren ist, und dem Ausschlag in der Audiospur eine zeitliche Differenz entsteht und damit Feature und Label nicht mehr genau übereinander passen. Dieses Problem wurde gelöst, indem ein externes Mikrofon verwendet und direkt auf die Straße ausgerichtet wird. Dadurch werden Fahrzeuge aus beiden Richtungen gleich erfasst und zeitliche Verschiebung zwischen Bild und Ton entfällt.

Vergleich des Audiosignals vorbeifahrender Fahrzeuge bei Asphalt und Kopfsteinpflaster

Wesentliche Punkte der Datenerhebung:

  • Videoaufnahmen mit 720p Weitwinkelkamara eines üblichen Smartphones
  • Aufnahme erfolgt seitlich zur Straße, dass Fahrzuge ausschließlich von der Seite erfasst werden
  • Beschränkung auf den fließenden Verkehr sowie Asphalt als Untergrund

Datenverarbeitung

Die Extraktion des Audiosignals wird in Python mit externen Bibliotheken realisiert. Die Audiodaten werden aus den jeweiligen Videos extrahiert und als einzelne WAV-Dateien gesichert. Die Speicherung im WAV-Format ist darin begründet, dass die Daten in der unkomprimierten Form gesichert werden (nicht wie etwa beim .mp3 Format) und damit die weitere Verarbeitung beschleunigt wird. Ebenfalls erfolgt in diesem Schritt ein Downsampling der Audiodaten von 48kHz auf ca. 22kHz, um den Speicherbedarf der unkomprimierten Dateien zu verringern. Zudem beinhalten die beim Downsampling entfernten Frequenzbereiche keinen hohen Informationsgehalt für die Thematik der Verkehrszählung, weil sich die Geräusche im fließenden Verkehr durch Reifen und Motor eher im tieferen Frequnzbereich abspielen.

Der erste Schritt zum Labeling der Videos ist die Erkennung von Objekten innerhalb der einzelnen Bilder, in diesem Fall von Fahrzeugen (u.a. Autos, Busse und Motorräder). Zur Objekterkennung wurde in dieser Arbeit das YOLOv4 Framework in der DarkNet Implementierung genutzt, das in Python eine einfach Schnittstelle zur Verfügung stellt und verhältnismäßig schnell läuft im Vergleich zu anderen Frameworks. [Anm.: Die Architektur von YOLOv4 ist im folgenden Wiki-Beitrag erläutert]. Eine weitere Variante der Objekterkennung ist das sogenannte Frame Differencing, bei dem die Veränderung zwischen zwei aufeinanderfolgenden Frames betrachtet wird. Über Erosion, Dilatation sowie Konturerkennung können daraus ebenfalls Bounding Boxes abgeleitet werden. Die Abbildung zeigt einen Vergleich von YOLO und Frame Differencing. Es ist ersichtlich, dass die Erkennung von YOLO wesentlich präsizer erfolgt. Ein weiterer Vorteil von YOLO liegt darin, dass nach den Klassen der Objekte gefiltert und damit etwa Radfahrende ignoriert werden können. Diese Option steht beim Frame Differencing nicht zur Verfügung, da die Art der Objekte nicht ermittelt wird. Insgesamt bietet YOLO damit mehr Möglichkeiten bei höherer Genauigkeit. Die erhöhte Verarbeitungsdauer spielt jedoch keine Rolle, da diese nicht in Echtzeit stattfinden muss und somit der zeitliche Aufwand keine Bedeutung hat.

Im zweiten Teil der Videoverarbeitung geht es darum, die erkannten Objekte von YOLO weiter zu verarbeiten und die Zeitpunkte zu ermitteln, wann ein Fahrzeug die Aufnahme passiert hat. Die Abbildung zeigt beispielhaft die verwendete Vorgehensweise beim Labeling. Für die Bounding Boxes der erkannten Objekte wird der Mittelpunkt berechnet, der sogenannte Centroid. Das zweite wesentliche Element ist eine Box in der Mitte des Bildes, nachfolgend als Center Box bezeichnet. Für jeden Frame, also jedes einzelne Bild, wird überprüft, ob sich der Centroid eines Objekts innerhalb der Center Box befindet (in der Abbildung durch die farblich veränderte Bounding Box dargestellt). Sobald der Centroid eines Fahrzeugs die Center Box wieder verlässt, hat es die Mitte des Bildes wieder verlassen und gilt damit als vorbeigefahren. Zu dem entsprechenden Zeitpunkt, der auf Basis der Frames bestimmt wird, kann dann ein Label gesetzt werden.

Ein Problem der gewählten Labeling Methodik liegt darin, dass Fahrzeuge auf der hinteren Spur verdeckt werden können. YOLO ist dann nicht in der Lage, das hintere Fahrzeug zu erkennen und dementsprechend gibt es für den Moment auch keine Bounding Box mit Centroid. Im ungünstigsten Fall passieren zwei Fahrzeuge zum exakt gleichen Zeitpunkt die Mitte des Bildes und somit wird nur das eine als vorbeigefahren wahrgenommen. Bei der Auswertung der Videos hat sich gezeigt, dass dieser Fall nur sehr selten auftritt und kaum Fahrzeuge nicht gelabelt werden. Einen Ansatz zur Lösung dieses Problems könnte Objekt-Tracking bieten, das sich mit der Erkennung von gleichen Objekten in aufeinander folgenden Frames befasst. Die Methodik der Center Box müsste dann entsprechend angepasst werden, um alle Fahrzeuge zu erfassen. Damit einhergehend ergeben sich durch Ungenauigkeiten im Tracking weitere Probleme, die in Summe zu einer ähnlichen Fehlerquote beim Labeling führen könnten wie der gewählte Labeling-Prozess auf Basis der Center-Box.

Feature Engineering & Data Augmentation

Im Anschluss an das Labeling der Videos werden die Audiodaten in kleinere Abschnitte unterteilt und mit dem entsprechendem Label kombiniert. Dadurch entstehen die Inputs X für die Machine Learning Modelle mit den Outputs y. Die Label sind als Klassen zu verstehen, wobei eine Klasse jeweils eine Anzahl von Fahrzeugen je Abschnitt repräsentiert. Generell handelt es sich bei der Problemstellung der Verkehrszählung um ein Regressions-Problem. Aus diesem Grund werden die Vorhersagen der Modelle in eine Regressions-Metrik umgewandelt. Damit einhergehend können die Modelle später besser verglichen werden und die Auswertung der Ergebnisse erfolgt nicht nur auf Klassifikations-Metriken wie Accuracy oder F1-Score, die je nach Klassenverteilung ein falsches Bild der Vorhersagequalität liefern können.

Nachfolgend wird das Feature Engineering für die verwendeten Ansätze über die Waveform des Audios sowie die Repräsentation durch Spektrogramme im Detail thematisiert. Dabei wird auch auf den Aspekt der Data Augmentation eingegangen, die im Training ein Overfitting der Modelle, also eine Überanpassung an die Trainingsdaten, verhindern und damit die Performance verbessern soll. Der Begriff Data Augmentation bezeichnet im Allgemeinen die künstliche Erzeugung von weiteren Trainingsdaten. Darunter fällt auf der einen Seite die synthetische Erzeugung neuer Daten auf Basis bestehender Datenpunkte, wie etwa durch das etablierte SMOTE Sampling Verfahren, auf der anderen Seite aber auch die Veränderung der bestehenden Samples innerhalb des Trainings. Im Falle von Neuronalen Netzwerken wird der Datensatz vor Beginn jeder Epoche durch Data Augmentation leicht verändert und ist dadurch nicht komplett identisch. Infolgedessen erzielen die Modelle nicht durch ausschließliches Auswendiglernen gute Ergebnisse, sondern müssen die tatsächlichen Merkmale ableiten und lernen.

Spectrogram Features

Audiodaten lassen sich durch verschiedene Formen repräsentieren, unter anderem durch Spektrogramme. Diese stellen die Intensität der verschiedenen Frequenzbereiche eines Audiosignals im Verlauf der Zeit dar und reduzieren das Signal somit auf seine wesentlichen Eigenschaften. Die Berechnung der Spektrogramme erfolgt auf Basis der Fourier Transformation, die ein kontinuierliches Signal in seine einzelnen Frequenzbestandteile zerlegt und deren jeweilige Intensität ermittelt. Zur Berechnung von Spektrogrammen wird das Audiosignal in kleine Abschnitte unterteilt, auf denen die Fourier Transformation durchgeführt wird. Für diese Arbeit wurden die drei folgenden Feature ausgewählt: Melspectrogram, Chromagram, Constant Q-Chromagram.

Das genutzte Data Augmentation Verfahren basiert grundlegend auf SpecAugment von Google und wurde für die eigenen Zwecke leicht angepasst. Park et al. (2019) stellen in ihrer Arbeit das sogenannte Frequency Masking vor, bei dem zufällig ausgewählte Frequenzbereiche (mit Bezug auf Spektrogramme Zeilen der Matrix) ‘abgedeckt’ werden und daher im Training keine zusätzlichen Informationen liefern. Machine Learning Modelle sind daher gezwungen, alle Frequenzbereiche zu betrachten und nicht auf eine bestimmte Frequenz angewiesen zu sein. Die Methodik wurde dahingehend angepasst, dass die Abdeckung nicht auf Frequenzen oder Zeitpunkte beschränkt wird, sondern rein zufällig Bereiche der Spektrogramme abgedeckt werden.

Waveform Features

Für die Wave-Features bleiben die Audiodaten in ihrer bestehenden numerischen Form und werden lediglich wie beschrieben in Abschnitte unterteilt und mit einem Label versehen. Für die Data Augmentation wurden auf Basis der von Nanni et al. (2020) vorgestellten Methoden drei verschiedene Varianten abgeleitet, die auf die Daten angewandt werden können:

  • Noise Injection

    Zum ursprünglichen Audiosignal werden normalverteilte Werte um 0 herum addiert. Diese Methodik simuliert gewissermaßen leichte Hintergrundgeräusche, da die Differenzen der einzelnen Punkte des Signals durch die Addition direkt verändert werden.

  • Scaling

    Das Audiosignal wird mit einem um 1 normalverteilten Skalar s multipliziert. Durch die reine Multiplikation bleiben alle Verhältnisse und Muster im Signal generell unverändert, jedoch wird durch die Stauchung (s 1) eine künstliche Änderung der Lautstärke erreicht.

  • Combined

    Diese Variante kombiniert beide vorherigen Methoden miteinander, d.h. das Audiosignal wird zunächst skaliert und anschließend mit Noise versehen.

Machine Learning

Nach Verarbeitung der Rohdaten und Feature Engineering erfolgt im nächsten Schritt der Arbeit das Training der Machine Learning Modelle. Dabei werden die Modelle der beiden Ansätze (Waveform und Spektrogramme) mit den entsprechenden Features trainiert und evaluiert. Es erfolgt sowohl innerhalb als auch zwischen den Vorgehensweisen ein Vergleich der verschiedenen Modellarchitekturen. Die Modelle innerhalb der Ansätze unterscheiden sich hinsichtlich ihrer Komplexität und dementsprechend auch der Anzahl der Gewichte innerhalb des Netzes. Der Hintergrund dabei ist die Fragestellung, ob die Erkennung von Fahrzeugen im wesentlichen Maße von Komplexität und Größe der Modelle abhängig ist. Die wesentlichen Settings beim Training der Modelle sind:
  1. Early Stopping: Falls sich der Validation Loss über 10 Epochen nicht weiter verringert, wird das Training gestoppt und die Gewichte des Zeitpunkts mit dem minimalen Validation Loss werden wiederhergestellt. Infolgedessen werden die Gewichte nicht weiter auf die Trainingsdaten optimiert und es kommt nicht zur Überanpassung.
  2. Dropout Layer: In die einzelnen Modelle werden Dropout Schichten eingebaut, die jeweils einen bestimmten Anteil der Verbindungen zwischen den Neuronen deaktivieren. Als Resultat stehen weniger Pfade für den Informationsfluss zur Verfügung und die Modelle können die Trainingsdaten schwieriger auswendig lernen.
  3. Cyclical Learning Rate: Ein weiterer wichtiger Aspekt beim Training von neuronalen Netzwerken ist die Learning Rate, die die Geschwindigkeit des Gradientenabstiegs und damit die Ergebnisse maßgeblich beeinflusst. Der Auswahl der richtigen Learning Rate wird daher eine große Bedeutung beigemessen. Beim Training der Modelle werden die von Smith (2015) vorgeschlagenen Cyclical Learning Rates verwendet, wobei die Learning Rate während des Trainings in Zyklen zwischen einer unteren und einer oberen Schranke variiert. Durch die Variation der Learning Rate erreichen die Modelle schneller ein Optimum und es muss nicht manuell eine optimale statische Learning Rate ermittelt werden. Als Schranken werden 0.001 und 0.003 verwendet.

Spectrogram Modelle

Innerhalb der Spectrogram Modelle wurden die folgenden Experimente durchgeführt:
  1. Auswirkung der Fenster- und Schrittgröße im Feature Engineering aus die Genauigkeit der Erkennung
  2. Auswahl und Kombination der verschiedenen Arten von Spektrogrammen
  3. Stärke der Data Augmentation, sprich der abgedeckte Anteil der Spektrogramme
  4. Anzahl der Blöcke in residualen Netzwerken

Waveform Modelle

Innerhalb der Waveform Modelle wurden die folgenden Experimente durchgeführt:
  1. Auswirkung verschiedener Varianten und Stärke der Data Augmentation
  2. Anzahl der Schichten sowie Filter innerhalb der WaveNet-Architektur
  3. Auswirkung verschiedener Kernel-Größen innerhalb 1D-Convolutional Modellen

Anwendung

Um die finalen Modelle nach Optimierung der Hyperparameter noch einmal zu testen, werden zusätzliche Testdaten zur weiteren Evaluation herangezogen. Diese wurden im Training nicht verwendet und sind den Modellen daher vollständig unbekannt. Die Erhebung und Verarbeitung erfolgt nach dem gleichen Prinzip wie obenstehend beschrieben. Die Testdaten umfassen die drei verschiedenen Verkehrsdichten niedrig, moderat und hoch. Damit soll untersucht werden, für welche Situationen die Modelle zuverlässige Ergebnisse liefern.

Die Audiodaten werden wie bereits im Training in Abschnitte zum Feature Engineering unterteilt, jedoch ohne Überlappung der Fenster. Andernfalls würden Abschnitte des Audiosignals doppelt in die Erkennung mit einfließen und es könnte zu doppelten Erkennungen eines einzigen Fahrzeugs kommen. Zur Evaluation werden im weiteren Vorgehen die Ausgaben der Modelle aufsummiert und die Abweichung zur tatsächlichen Anzahl der Fahrzeuge berechnet. Mit den binären Labels werden keine weiteren Metriken berechnet, da diese keine Aussage über die tatsächliche Performance der Modelle im realen Straßenverkehr geben würden. Die Tabelle zeigt die Anzahl der erkannten Fahrzeuge sowie die Abweichung zur tatsächlichen Anzahl je Verkehrsfluss für die genutzten Modelle.

Es ist ersichtlich, dass bei geringem Verkehrsaufkommen die größten Abweichungen vorliegen. Es werden von allen Modellen deutlich zu viele Fahrzeuge erkannt, im Falle des Spektrogramm basierten Recurrent CNN liegt die Abweichung bei fast 260%. Bei der Analyse der Videos in Kombination mit den Ausgaben der Modelle wird deutlich, dass im geringen Verkehrsfluss das Geräusch der vorbeifahrenden Fahrzeuge recht frühzeitig vom Mikrofon erfasst wird und diese daher doppelt oder teilweise dreifach gezählt werden. Auffällig ist dabei ebenfalls, dass die Spektrogram Modelle weitaus mehr Fahrzeuge im Audiosignal erkennen als die Waveform Modelle. Ein Lösungsvorschlag, der dem doppelten Zählen von Fahrzeugen entgegenwirken könnte, wird im Fazit der Arbeit vorgestellt.

Bei moderatem und hohem Verkehrsfluss wird die Abweichung geringer, da es aufgrund der verringerten Abstände zwischen den Fahrzeugen zu weniger doppelten Erkennungen kommt. Bei moderatem sowie hohem Verkehrsfluss erzielen das Spektrogram-basierte Recurrent CNN und die WaveNet Architektur die geringsten Abweichungen. Bei den Waveform Modellen folgt an zweiter Stelle das Sample Level CNN mit einer geringfügig höheren Abweichung. Damit zeigt sich für die Waveform Modelle, dass die State-of-the-Art Architekturen gute Ergebnisse erzielen und eine bessere Performance zeigen als die weiteren Modelle.

Fazit

Insgesamt zeigt die Evaluation auf Basis der Testdaten, dass die Modelle im geringen Verkehrsfluss durch doppelte Erkennungen zu viele Fahrzeuge ausgeben und es zu hohen Abweichungen kommt. Dafür liegen die Abweichungen bei modereratem und hohen Verkehrsfluss teils deutlich unterhalb von 5% und damit in einem annehmbaren Bereich für den Einsatz zum echtzeitbasierten Verkehrs-Tracking.