Wiedererkennung mehrerer Personen mit mehreren Kameras mit Hailo-8
Die Wiedererkennung mehrerer Personen über verschiedene Datenströme hinweg ist für Sicherheits- und Einzelhandelsanwendungen unerlässlich, und wird durch die Verfolgung mit mehreren Kameras erleichtert. Dies beinhaltet die mehrfache Erkennung einer bestimmten Person, entweder an einem bestimmten Ort im Laufe der Zeit oder entlang einer Spur zwischen mehreren Orten. Um
dies zu erreichen, ist Hochleistungsrechnen erforderlich. Der Hailo-8 KI-Prozessor bietet die Effizienz, die für eine
genaue Wiedererkennung mehrerer Personen in Echtzeit auf Randgeräte erforderlich ist. Gleichzeitig verbessert er die Videoanalyse und senkt die Kosten, ohne die Privatsphäre der Benutzer zu gefährden. In diesem Blogbeitrag stellen wir eine umfassende Referenzpipeline vor, mit der diese
Aufgabe mithilfe der Multikamera-Tracking-Technologie präzise ausgeführt werden
kann.
Die Verfolgung der Wiederidentifikation mehrerer Personen auf mehreren Videostreams ist ein übliches Merkmal von Videoüberwachungssystemen. Das Ziel dieser Funktion, die in der Regel durch Deep Learning durchgeführt wird, besteht darin, Personen in verschiedenen Streams und im gesamten Video zu erkennen und zu identifizieren. Die Funktion zur erneuten Identifizierung mehrerer Personen wird für Sicherheits- und Datenanalysen verwendet, wodurch wertvolle Informationen über das Verhalten von Kunden, Besuchern und Mitarbeitern erhalten werden. Obwohl sie allgemein als eine weit verbreitete Technologie angesehen wird, stellen Verdeckungen und die unterschiedlichen Bedingungen der einzelnen Kameras (z. B. Perspektive und Beleuchtung) eine große Herausforderung für die genaue Verfolgung dar.
Zu den Vorteilen der Ausführung einer Multikamera-Tracking-Anwendung mit Wiedererkennung mehrerer Personen auf Randgeräte gehören:
- Wahrung der Privatsphäre und Verbesserung des Datenschutz, durch Wegfall der Notwendigkeit, Rohvideo zu senden.
- Verbesserung der Erkennungslatenz, die für Echtzeitwarnungen von entscheidender Bedeutung ist.
Hailo-8 ist der perfekte KI-Beschleuniger, um eine genaue Wiedererkennung von Personen in Echtzeit auf Randgeräte zu ermöglichen. Seine Rechenleistung ermöglicht es auch, viele Personen gleichzeitig mit hoher Genauigkeit zu verarbeiten, was für eine qualitativ hochwertige Wiedererkennung von entscheidender Bedeutung ist. Hailo-8 senkt auch die Systemkosten, da ein einziger KI-Beschleuniger installiert und gewartet wird, um mehrere Kameras in Echtzeit zu verarbeiten.
Die Hailo TAPPAS Pipeline zur Wiedererkennung und Nachverfolgung mehrerer Kameras wird mit hilfe von GStreamer auf einem integrierten Host durchgeführt und Hailo-8 läuft in Echtzeit (ohne Batching) mit vier RTSP-IP-Kameras in FHD-Eingangsauflösung. Der Host erfasst das kodierte Video über Ethernet und dekodiert es. Die dekodierten Bilder werden zur Verarbeitung auf Hailo-8 über PCIe gesendet, und die endgültige Ausgabe wird auf dem Bildschirm angezeigt.
Anwendungs-Pipeline
Die gesamte Anwendungspipeline ist im folgenden Diagramm dargestellt. Zuerst wird die kodierte Eingabe dekodiert und entzerrt, um ausgerichtete Bilder für die Verarbeitung zu erhalten. Entziehen ist eine gängige Bildverarbeitungskomponente, die dazu dient, kamerabedingte Verzerrungen zu beseitigen, z. B. die bei Überwachungskameras übliche Fischaugenverzerrung.. Als Nächstes werden die Bilder an den Hailo-8-KI-Prozessor gesendet, der alle Personen und Gesichter in jedem Bild erkennt. Wir verwenden den Hailo GStreamer Tracker für das anfängliche Tracking der Objekte in jedem Bild. Schließlich wird jede Person aus dem ursprünglichen Bild herausgeschnitten und in ein Wiedererkennung-Netzwerk eingespeist. Dieses Netzwerk gibt einen Einbettungsvektor aus, der jede Person repräsentiert und zwischen verschiedenen Kameras verglichen werden kann. Die Einbettungen werden in einer Datenbank namens „Galerie“ gespeichert. Durch Suchen in dieser Datenbank haben wir jeder Person die endgültige ID zugewiesen. Die endgültige Ausgabe beinhaltet auch einen Block zur Gesichtsanonymisierung, der jedes Gesicht verwischt, um die Privatsphäre der Personen im Bild zu schützen.
Alle neuronalen Netzwerkmodelle (NN) wurden mit dem Hailo Dataflow Compiler kompiliert und die vortrainierten Gewichte und vorkompilierten Modelle wurden im Hailo Model Zoo veröffentlicht. Der Hailo Model Zoo bietet auch eine Umschulungs-Docker-Umgebung für benutzerdefinierte Datensätze, um die Anpassung an andere Szenarien zu erleichtern. Wir stellen fest, dass alle Modelle in relativ generischen Anwendungsfällen trainiert wurden und (in Bezug auf Größe/Genauigkeit/Bilder pro Sekunde) für bestimmte Szenarien optimiert werden können.
Mehrpersonen-/Gesichtserkennung
Das Netzwerk zur Personen-/Gesichtserkennung basiert auf YOLOV5S mit zwei Klassen: Person und Gesicht. YoloV5 ist ein genauer einstufiger Objektdetektor, der 2020 veröffentlicht und mit Pytorch trainiert wurde. Um das Erkennungsnetzwerk zu trainieren, haben wir mehrere verschiedene Datensätze zusammengestellt und sie auf dasselbe Annotationsformat ausgerichtet. Beachten Sie, dass öffentliche Datensätze wie COCO, Open Images usw. nur Personen- oder Gesichtsanmerkungen enthalten dürfen. Um diese zu verwenden, haben wir vollständige Anmerkungen für beide Klassen erstellt. Für Gesichtsanmerkungen verwendeten wir ein hochmodernes Gesichtserkennungsmodell, das auf öffentlich zugänglichen Datensätzen trainiert wurde. Durch die Verwendung starker NN wie YOLOV5 zur Erkennung von Personen und Gesichtern können wir sie mit hoher Genauigkeit und großer Entfernung erkennen. Dadurch kann die Anwendung auch kleine Objekte erkennen und verfolgen.
Parameters | Compute (MAC) | Input Resolution | Training Data | Validation Data | Accuracy |
---|---|---|---|---|---|
7.25M |
8.38G |
640x640x3 |
149k images |
6k images |
47.5mAP*
|
*YOLOv5s network trained on COCO2017 achieves only 23AP on the same validation dataset.
Person Wiedererkennen
Das Personen-Wiedererkennung-Netzwerk basiert auf Rep-VGG-A0 und gibt einen einzelnen Einbettungsvektor der Länge 2048 pro Abfrage aus. Das Netzwerk wurde in Pytorch mit dem folgenden Repo trainiert. Um die Rank-1-Genauigkeit des Validierungsdatensatzes (Market-1501) zu verbessern, haben wir verschiedene Wiedererkennung-Datensätze zu einem einzigen Trainingsverfahren zusammengeführt. Die Verwendung größerer und vielfältigerer Trainingsdaten (aus mehreren Quellen) half uns dabei, ein robusteres Netzwerk zu erstellen, das besser auf reale Szenarien verallgemeinert werden kann. Im Hailo Model Zoo bieten wir Anweisungen zum erneuten Training und eine komplette Docker-Umgebung, um das Netzwerk mit unseren vortrainierten Gewichten zu trainieren.
Parameters | Compute (MAC) | Input Resolution | Training Data | Validation Data | Accuracy |
---|---|---|---|---|---|
9.65M |
0.89G |
256x128x3 |
660k images |
3368/15913 |
90% Rank1
|
Bereitstellung der Pipeline mit dem Hailo TAPPAS
Wir haben die Anwendung im Rahmen der Hailo TAPPAS veröffentlicht. Die Beispielanwendung erstellt die Pipeline mit hilfe von GStreamer in C++ und ermöglicht die Ausführung von Videodateien oder RTSP-Kameras aus. Zu den weiteren Argumenten, mit denen Sie die Anwendung steuern können, gehören die Einstellung von Parametern für den Detektor (z. B. der Erkennungsschwellenwert), den Tracker (z. B. Bildrate beibehalten/verloren) und die Qualitätsschätzung (Mindestqualitätsschwelle).
Der Hailo Model Zoo ermöglicht es Ihnen auch, das NN mit Ihren eigenen Daten neu zu trainieren und sie für eine schnelle Domänenanpassung und -anpassung auf die TAPPAS-Anwendung zu ermöglichen. Das Ziel der Anwendung zur Wiedererkennung mehrerer Personen mit mehreren Kameras besteht darin, ein schnelles Prototyping und eine solide Grundlage für den Aufbau einer Überwachungspipeline auf Hailo-8 und dem eingebetteten Host-Prozessor bereitzustellen.
Als Teil von Hailort (Hailos Laufzeitbibliothek) haben wir ein GStreamer-Plugin für Inferenz auf dem Hailo-8-Chip (libgsthailo) veröffentlicht. Dieses Plugin kümmert sich um den gesamten Konfigurations- und Inferenzprozess auf dem Chip, was die Integration des Hailo-8 in Ihre GStreamer-Pipeline einfach und unkompliziert macht. Es ermöglicht auch die Inferenz einer Multi-Netzwerk-Pipeline auf einem einzigen Hailo-8-Chip, um komplexe Pipelines zu ermöglichen. Eine weitere HailOrt-Komponente, die wir eingeführt haben, ist der Netzwekplaner. Diese HailOrt-Komponente vereinfacht den Betrieb mehrerer Netzwerke auf einem einzigen Hailo-Gerät, indem sie den Netzwerkwechsel automatisiert. Anstatt manuell zu entscheiden, welches Netzwerk wann läuft, steuert der Netzwerkplaner automatisch die Laufzeit jedes Netzwerks. Die Verwendung des Planers macht die Entwicklung von Pipelines mit Hailo-8 viel sauberer, einfacher und effizienter.
Neben HailOrt haben wir in dieser Anwendung auch die folgenden GStreamer-Plugins eingeführt:
- Entziehen: Das in TAPPAS implementierte GStreamer-Plugin, mit dem Sie Kameraverzerrungen korrigieren können. Das Entziehen wurde mit OpenCV implementiert und korrigiert derzeit Fishauge-Verzerrungen.
- Box-Anonymisierung: Das in TAPPAS implementierte GStreamer-Plugin, mit dem Sie Kästchen in einem Bild verwischen können, wenn ein vorhergesagtes Feld angegeben ist. Zum Beispiel die Anonymisierung von Gesichtern in einem Bild, nachdem alle Gesichter vorhergesagt wurden.
- Galeriesuche: GStreamer-Plugin, das der Pipeline eine Datenbankkomponente hinzufügt. Mit der Galeriekomponente können Sie ein neues Objekt hinzufügen und in der Datenbank nach Treffern suchen. In dieser Anwendung verschieben wir die Wiedererkennung-Vektoren und vergleichen sie mit neuen Vektoren, um Vorhersagen zwischen verschiedenen Kameras und Zeitstempeln zuzuordnen.
Wie Sie sehen können, unterstützt der RSC101 effektiv alle erforderlichen Überwachungsfunktionen in kleinen Unternehmen mit 6 Kameras und einem Budget von 500$. Tatsächlich übertrifft die RSC101-Leistung die Anforderungen. Durch die Verwendung eines integrierten KI-Prozessors mit hoher Rechenleistung für die gesamte Videoanalyse könnten hochmoderne Deep-Learning-Algorithmen verwendet werden, was zu hoher Leistung und fortschrittlichen Funktionen führt. Die KI-Rechenleistung von 26 TOPS garantiert zukünftige Verbesserungen, indem sie die Migration zu modernsten DL-Algorithmen für zusätzliche Arten der Ereigniserkennung unterstützt. Beachten Sie, dass die RSC101-Funktionen es ermöglichen, es als die beste kostengünstige Lösung zu verwenden. Es erweitert ein vorhandenes Überwachungssystem um Unterstützung für weitere 4-8 Kameras, wenn die Rechenleistung für die Videoanalyse bereits voll ausgelastet ist.
Aufführung
Die folgende Tabelle fasst die Leistung der Multikamera-Mehrpersonen-Tracking-Anwendung auf Hailo-8- und x86-Hostprozessoren mit vier RTSP-Kameras in FHD-Eingangsauflösung (1920×1080) sowie die Aufschlüsselung der NN-Einzelleistung zusammen.
FPS | Latency | Accuracy | |
---|---|---|---|
Full Application |
30 (per stream) |
– |
90% Rank-1 |
Standalone person/face detection |
379 |
5.93ms |
47.5mAP |
Standalone Re-ID |
1015 |
1.77ms |
90% Rank-1 |
* Measured with Compulab (x86, i5)
Die Hailo-Anwendung zur Wiedererkennungmehrerer Personen mit mehreren Kameras bietet eine komplette Referenzpipeline, die in GStreamer mit Hailo TAPPAS bereitgestellt wird, und bietet Umschulungsfunktionen für jedes NN, um die Anpassung mit dem Hailo Model Zoo zu ermöglichen. Diese Anwendung bietet Ihnen eine Grundlage für die Erstellung Ihres VMS-Produkts mit Hailo-8. Weitere Informationen finden Sie in unserer TAPPAS-Dokumentation.
Dieser Artikel ist eine Zusammenarbeit zwischen Tamir Tapuhi, Amit Klinger, Omer Sholev, Rotem Bar und Yuval Belzer.
Read mode about what we do
Hailo offers breakthrough AI accelerators and Vision processors
Don’t miss out
Sign up to our newsletter to stay up to date