Simple Science

Hochmoderne Wissenschaft einfach erklärt

# Computerwissenschaften # Computer Vision und Mustererkennung # Maschinelles Lernen

Innovative Ansätze zur Anomalieerkennung in der Videoüberwachung

Teste verschiedene Modelle zur Erkennung von ungewöhnlichen Aktivitäten in Videodaten.

Fabien Poirier

― 12 min Lesedauer


Video Video Anomalieerkennungstechnik en von ungewöhnlichen Aktivitäten. Teste Modelle zur Echtzeit-Erkennung
Inhaltsverzeichnis

Da ich während meines Studiums keinen Zugriff auf echte Überwachungskameras hatte, habe ich alle Videos, die ich verwendet habe, einfach heruntergeladen. Videodaten benötigen viel Rechenleistung zur Verarbeitung. Leider hatte ich keinen fancy GPU-Server in meiner Firma oder meinem Forschungslabor, also musste ich mich mit einem normalen Computer begnügen, der 32 GB RAM und einen decente Intel Core i9-Prozessor hatte. Ausserdem hatte ich eine Nvidia GeForce RTX2080 Grafikkarte, die mir ein bisschen einen Schub gab.

In diesem Abschnitt reden wir über die Tests, die ich durchgeführt habe, bei denen ich zwei Modelle kombiniert habe, um zu prüfen, wie gut sie ungewöhnliche Aktivitäten (oder Anomalien) erkannt haben. Ich erkläre, wie sich die Ergebnisse geändert haben, je nachdem, ob ich sie parallel oder nacheinander ausgeführt habe. Dann teile ich die Experimente, die ich zur Erkennung von Objekten und Anomalien gemacht habe, die mir halfen herauszufinden, welche Modelle in jeder Situation am besten funktionierten. Schliesslich fasse ich alles zusammen.

Datenvorverarbeitung

Hier erkläre ich, wie ich die Daten für die Tests vorbereitet habe.

Wie bereits erwähnt, zeigen Videos oft normale Aktionen, die durch ungewöhnliche unterbrochen werden. Deshalb musste ich die Videos in Stücke schneiden, um mich auf die ungewöhnlichen Aktivitäten zu konzentrieren und sie besser zu analysieren. Selbst mit diesem Ansatz war der Umgang mit all diesen Videodaten echt ein Kopfzerbrechen, wegen der Menge.

Alle Videos auf einmal zu laden, war keine Option, weil der Speicher meines Computers das einfach nicht hinkriegt. Um dieses Problem zu lösen, entschied ich mich, ein spezielles Tool namens Generator zu verwenden. Stell es dir wie einen Kellner vor, der dir die Gerichte nacheinander bringt, statt das ganze Menü auf einmal zu servieren.

Mein erster Test war zu sehen, wie verschiedene Generatoren funktionieren. Ich probierte vier verschiedene Typen:

  1. Ein Generator, der Videosequenzen erstellt, indem er ein Fenster über das Video bewegt.
  2. Ein Generator, der auch ein gleitendes Fenster verwendet, aber die Sequenzen überlappt.
  3. Ein Generator, der einen dynamischen Schritt verwendet, um Bilder aus jedem Video zu sammeln.
  4. Ein Generator, der das gleitende Fenster mit dem dynamischen Schritt kombiniert.

Der dritte Generator stellte sich als die beste Option heraus. Warum? Weil er einige grosse Probleme löst, die die anderen haben. Bei den ersten beiden Generatoren hängt die Zeit, die die Modelle zum Lernen benötigen, von der Länge der Videos ab – lange Videos bedeuten längere Lernzeiten. Ausserdem ist es knifflig, die Grösse des gleitenden Fensters festzulegen; es muss die gesamte Aktion erfassen, sonst lernt das Modell nicht richtig.

Natürlich ist der dritte Generator auch nicht perfekt. Er hat sein eigenes Problem im Umgang mit Videos unterschiedlicher Längen. Zum Beispiel ist bei kurzen Aktionen die Zeit zwischen den Bildern kurz, während es bei längeren Videos lange Wartezeiten zwischen den Bildern geben kann. Also bekommen kurze Videos detailliertere Bilder, während lange Videos weniger klar wirken.

Dieser dritte Generator erlaubt es mir, Sequenzen zu erstellen, die nicht übereinanderliegen müssen, was cool ist. Durch Ändern der Schrittgrösse kann ich entscheiden, wie schnell ich Dinge erkennen möchte, sei es pro Sequenz oder pro Video. Diese Flexibilität hilft mir, sowohl mit endlichen Videos als auch mit fortlaufenden umzugehen.

Sobald ich meinen Generator ausgewählt hatte, musste ich die Grösse meiner Bilder festlegen. Ich passte die Grösse an und fand die beste Grösse... nun ja, sagen wir einfach, sie hat perfekt funktioniert.

Für die Sequenzgrösse testete ich verschiedene Längen zwischen 15 und 30 Bildern. Da meine Videos mit einer bestimmten Geschwindigkeit laufen (30 Bilder pro Sekunde), stellte ich fest, dass die Verwendung von 20 Bildern optimal war.

Um zu sehen, wie gut jedes Experiment lief, entwickelte ich meine eigene Methode, um den Schritt beim Auswählen von Bildern zu definieren. So konnte ich meine Modelle unter denselben Bedingungen testen wie während des Trainings, egal ob ich ein ganzes Video überprüfte oder mit Sequenzen arbeitete. Mein Hauptziel ist es, den Leuten zu helfen, kontinuierliche Streams im Auge zu behalten, also konzentriere ich mich auf die Leistung in Bezug auf die Sequenzdetektion.

Nachdem ich meine Sequenzen eingerichtet hatte, machte ich meine Daten ein bisschen lebendiger, indem ich einige Verbesserungstechniken anwendete, wie Spiegeleffekte, Zooms und Helligkeitsänderungen. Dies half, meine Daten zu vervielfachen, ohne zu weit von der Realität abzuweichen.

Als nächstes schaute ich mir verschiedene Möglichkeiten an, Daten vorzubereiten – im Grunde genommen, wie man Bilder reinigt und vorbereitet. Ich begann mit gängigen Tricks aus der Computer Vision-Welt: zu berechnen, wie sich Dinge zwischen Bildern bewegen, Bilder zu vergleichen, um Unterschiede zu finden, und Masken anzuwenden.

Was ich herausfand? Die optische Flussmethode hat mich überhaupt nicht beeindruckt. Sie blieb während des Trainings bei 50% Genauigkeit. Die Inter-Bild-Differenzmethode brachte etwas bessere Ergebnisse, aber dann wurde es schlechter, als ich eine Maske verwendete. Überraschenderweise war die Verwendung von Datenaugmentation die beste Lösung. Ohne jegliche Vorverarbeitung war meine Genauigkeit niedrig, obwohl der Rückruf hoch war. Mit nur Datenaugmentation konnte ich eine anständige Genauigkeit und einen soliden Rückruf erzielen.

Dann wandte ich mich einigen fortgeschritteneren Vorverarbeitungsmethoden unter Verwendung spezialisierter Modelle zur Anomalieerkennung zu. Ich dachte darüber nach, etwas namens DINO zu verwenden. Nach dem Ausprobieren bemerkte ich, dass es viel Verarbeitungszeit in Anspruch nahm, sodass es für meine Echtzeitanforderungen nicht praktikabel war. Allerdings funktionierte es gut bei der Erkennung von Schüssen, ohne zusätzliche Schulung zu benötigen.

Bei der Kampferkennung lief es nicht so gut, was mich dazu brachte, Vision Transformers aus meinen Plänen auszuschliessen und mich auf Modelle zu konzentrieren, die besser zu meinen Bedürfnissen passten.

Jetzt reden wir über YOLO, mein Favorit zur Erkennung von Objekten in meinen Videos und um herauszufinden, was die Leute tun. Es hat gute Arbeit geleistet, also fügte ich es in mein Setup ein.

Experimente im Serienmodus

Jetzt ist es an der Zeit zu überprüfen, wie meine Modelle verliefen, als sie nacheinander gestapelt wurden. Ich begann damit, meine Videos aufzubrechen, um jeden Frame zu erfassen, den ich dann durch YOLO laufen liess, um alle verschiedenen Objekte in den Bildern zu erkennen. Danach setzte ich das Video wieder zusammen und liess es durch ein anderes Modell namens CGRU laufen, um nach Anomalien zu suchen.

Ich verglich diese Methode mit der Verwendung von CGRU allein, und die Ergebnisse waren ziemlich aufschlussreich. Es stellte sich heraus, dass das Hinzufügen von YOLO nicht viel an der Leistung des Modells änderte. Das bedeutet, dass das Modell während des Trainings nicht wirklich auf die Begrenzungsrahmen geachtet hat. Ich verbesserte meine Vorverarbeitung, indem ich die Begrenzungsrahmen verwendete, um Masken zu erstellen, die sich auf die Teile des Bildes mit den Objekten konzentrierten und so viel Hintergrund wie möglich entfernten.

Für jedes Bild, bei dem keine Objekterkennung stattfand, hatte ich zwei Optionen: entweder das Originalbild beizubehalten oder es durch ein schwarzes zu ersetzen. Ich testete beide Optionen, und obwohl sie ähnlich abschnitten, sah ich leichte Unterschiede. Die Verwendung eines schwarzen Hintergrunds scheint die Erkennung normaler Aktionen zu verbessern, aber die Genauigkeit bei Kämpfen und Bränden beeinträchtigt. Dies könnte passieren, wenn wichtige Details bei der Erkennung übersehen werden, was dazu führt, dass das Modell entscheidende Informationen ignoriert.

Ich stellte schnell fest, dass die Einstellungen für die Objekterkennungsparameter, wie Vertrauen und Überlappungsschwellen, entscheidend waren. Ich hatte die Vertrauensbarriere für meine Tests auf 55 Prozent gesetzt.

Als es darum ging, Aktionen von Menschen zu erkennen, trat YOLO Version 7 in den Vordergrund, indem es ihre "Skelette" umriss, ähnlich wie es OpenPose tut. Also führte ich eine Pose-Schätzung auf meinen Videos durch, um zu sehen, wie sich das auf die Erkennung von Verhaltensweisen auswirkte. Um es einfach zu halten, konzentrierte ich mich nur auf die Klassen Kampf und Schusswaffe, da nicht alle Anomalien Menschen benötigten.

Dann testete ich, ob die Pose-Schätzung die Dinge besser machte. Anfangs entfernte ich die Hintergründe aus den Videos, um die Erkennung zu schärfen, aber bald stellte ich fest, dass dies die Erkennung anderer Anomalien stören könnte. Also brachte ich den Hintergrund wieder zurück und trainierte mein Modell neu, um zu sehen, ob es immer noch Dinge wie Brände erkennen konnte.

In Bezug auf die Gesamtleistung änderte sich durch das Hinzufügen der Feuerklasse nicht viel, aber die Ergebnisse zeigten einen Rückgang bei der Erkennung von Schüssen, da einige davon als Brände markiert waren. Das führte mich dazu, mein Mehrklassenmodell gegen ein normal/anomal Modell auszutauschen, um zu sehen, wie YOLO die Dinge beeinflusste. Ich trainierte zwei neue Modelle – eines ohne Hintergründe und eines mit.

Unabhängig von der Vorverarbeitung verbesserte die Kombination verschiedener Arten von Anomalien konstant die Leistung meiner Modelle. Allerdings neigte die Aufnahme von nicht verwandten Anomalien, wie Bränden, dazu, die Ergebnisse zu beeinträchtigen. Ich bemerkte auch, dass die Nutzung von YOLO zur Vorbereitung meiner Daten die Genauigkeit steigerte.

Parallelverarbeitung

Als nächstes beschloss ich, meine Modelle parallel auszuführen. Die Idee war, Objekte zu erkennen, während ich die Zeit analysierte, um dann die Ergebnisse zu kombinieren und die Genauigkeit zu verbessern. Mein erstes Experiment war, CGRU, das auf die Kategorie "Schusswaffe" trainiert wurde, mit YOLO zu kombinieren, indem ich eine einfache Regel anwandte: Wenn das Modell "normal" vorhersagte, aber eine Waffe sah, würde es die Ausgabe auf "Schusswaffe" ändern.

Für die Feuererkennung machte ich dasselbe. Ich bewertete, wie gut diese Kombination für jede Video-Sequenz funktionierte, und setzte eine Vertrauensschwelle von 55 Prozent fest.

Die Ergebnisse für die Erkennung von Bränden waren vielversprechend. Die Kombination von CGRU und YOLO verbesserte die Branddetektion, während die Schusswaffenerkennung keine Veränderungen zeigte. Auf den ersten Blick schien es, dass beide Modelle die gleichen Merkmale zur Erkennung von Schüssen erfassten, was darauf hinwies, wie wichtig die Präzision von YOLO für die Gesamtleistung war.

Ich entschied mich, die Regeln zur Erkennung von Schüssen ein wenig anzupassen. Da YOLO Berechnungen verwendet, um herauszufinden, ob ein Objekt erkannt wurde, dachte ich mir: „Hey, vielleicht sollte ein Schuss nur registriert werden, wenn er in der Nähe einer Person ist.“ Also trainierte ich ein frisches Modell, das Bilder von Waffen und einige andere Bilder einbezog, um zu sehen, wie es abschneidet.

Mein neues Modell zur Personen- erkennung schnitt besser ab als zuvor, obwohl die Erkennung von Schusswaffen noch ihre Höhen und Tiefen hatte. Bei einem Vergleich der Ergebnisse sah ich einen schönen kleinen Schub in der Leistung meines neuen Modells zur Schusswaffenerkennung.

Dann sah ich mir an, wie ich Fehlalarme reduzieren konnte. Nach frischen Bewertungen, während ich alles im Auge behielt, sah ich tatsächlich weniger Fehlalarme. Das bedeutete jedoch auch, dass die echten Positiven leicht zurückgingen, was die Notwendigkeit für Präzision bei YOLO verdeutlichte.

Angesichts der Schwere der Anomalien, die ich zu erkennen versuchte, wollte ich das Modell beibehalten, das die niedrigste Rate an falsch negativen Ergebnissen hatte, selbst wenn das bedeutete, dass ich einige Fehlalarme zulassen musste. Ausserdem würde das Training eines einzigen Objekterkennungsmodells, das all meine Anomalien abdeckt, das Leben einfacher machen.

Leistungsgleichvergleich unserer Modelle

Jetzt ist es an der Zeit, zu teilen, wie alle Modelle insgesamt abgeschnitten haben! Ich hatte drei unterschiedliche Modelle zur Erkennung von Kämpfen, Schusswaffen und Bränden. Ich werde sie hinsichtlich ihrer Videoklassifizierung (eine Erkennung pro Video) und ihrer Geschwindigkeit zur Erkennung von Anomalien in einem kontinuierlichen Stream (eine Erkennung pro Sequenz) bewerten.

Für Kämpfe schnitt das Modell gut ab, als ich ganze Videos überprüfte, mit einer Genauigkeit von etwa 85,6%, fiel aber bei kontinuierlichen Streams auf 63,1% ab. Die Schusswaffenerkennung sprang auf 86,5% Genauigkeit für ganze Videos, fiel jedoch leicht in Sequenzen auf 91,8%, was zeigt, dass sie in statischen Szenarien am besten abschneidet. Auf der anderen Seite war die Branddetektion solide, mit 83,8% für Videos und sprang auf 86,0% für Sequenzen, was zeigt, dass sie ein zuverlässiger Performer ist!

Als ich alle meine Datensätze für ein Mehrklassenmodell kombinierte, bemerkte ich einige interessante Trends. Trotz mehr Daten fiel die Erkennungsleistung für die Brandklasse und die Schusswaffenklasse in kontinuierlichen Streams, insgesamt hielt mein Mehrklassenmodell jedoch anständig stand.

Wenn ich mir Videos von realen Vorfällen ansah, schnitt mein Mehrklassenmodell respektabel ab. Die Geschwindigkeiten, mit denen es Daten verarbeiten konnte, waren auch nicht schlecht, und die Erkennungszeiten lagen zwischen 104 und 744 Millisekunden.

Fazit

Durch all diese Tests und Anpassungen, was habe ich gelernt? Wenn du einfach nur irgendeinen Vorfall erkennen möchtest, ist ein binäres Modell (normal/anomal) der richtige Weg. Es mag nicht genau festlegen, was schiefgelaufen ist, aber es deckt alle Grundlagen ab.

Andererseits, wenn dein Ziel darin besteht, eine bestimmte Art von Anomalie zu erkennen, wie einen Kampf oder ein Feuer, sollte sich die Verwendung eines spezialisierten Modells bessere Ergebnisse erweisen. Wenn du alle Arten von Anomalien zusammenmixen und einen Menschen später die Details herausfinden lassen möchtest, passt ein normal/anomal Modell perfekt zu deinen Bedürfnissen.

Kurz gesagt, das Experimentieren mit diesen Modellen war eine wilde Fahrt. Es stimmt, dass die Echtzeiterkennung nicht immer perfekt ist, aber mit den richtigen Anpassungen und Ansätzen kommen wir nahe genug, um wertvolle Einblicke zur Sicherheit zu erhalten!

Originalquelle

Titel: Real-Time Anomaly Detection in Video Streams

Zusammenfassung: This thesis is part of a CIFRE agreement between the company Othello and the LIASD laboratory. The objective is to develop an artificial intelligence system that can detect real-time dangers in a video stream. To achieve this, a novel approach combining temporal and spatial analysis has been proposed. Several avenues have been explored to improve anomaly detection by integrating object detection, human pose detection, and motion analysis. For result interpretability, techniques commonly used for image analysis, such as activation and saliency maps, have been extended to videos, and an original method has been proposed. The proposed architecture performs binary or multiclass classification depending on whether an alert or the cause needs to be identified. Numerous neural networkmodels have been tested, and three of them have been selected. You Only Looks Once (YOLO) has been used for spatial analysis, a Convolutional Recurrent Neuronal Network (CRNN) composed of VGG19 and a Gated Recurrent Unit (GRU) for temporal analysis, and a multi-layer perceptron for classification. These models handle different types of data and can be combined in parallel or in series. Although the parallel mode is faster, the serial mode is generally more reliable. For training these models, supervised learning was chosen, and two proprietary datasets were created. The first dataset focuses on objects that may play a potential role in anomalies, while the second consists of videos containing anomalies or non-anomalies. This approach allows for the processing of both continuous video streams and finite videos, providing greater flexibility in detection.

Autoren: Fabien Poirier

Letzte Aktualisierung: Nov 29, 2024

Sprache: English

Quell-URL: https://arxiv.org/abs/2411.19731

Quell-PDF: https://arxiv.org/pdf/2411.19731

Lizenz: https://creativecommons.org/licenses/by-nc-sa/4.0/

Änderungen: Diese Zusammenfassung wurde mit Unterstützung von AI erstellt und kann Ungenauigkeiten enthalten. Genaue Informationen entnehmen Sie bitte den hier verlinkten Originaldokumenten.

Vielen Dank an arxiv für die Nutzung seiner Open-Access-Interoperabilität.

Ähnliche Artikel