Wie wir ein neuronales Netzwerk zum Zählen von Personen für Transport, Einzelhandel und intelligente Städte trainiert haben

Personenzählung Haupt
Andrei Smirnov

 

Andrei Smirnov,  

Leiter des Referats Adaptive Сomputing Systems 

 

Deep Learning steigert die Produktivität und senkt die Kosten in verschiedenen Geschäftsanwendungen. In diesem Artikel zeigen wir, wie unsere Ingenieure ein neuronales Netz für die Personenzählung entwickelt haben. Diese Lösung kann nun im öffentlichen Verkehr, in intelligenten Gebäuden, im Einzelhandel und beim Warteschlangenmanagement eingesetzt werden.

 

Inhaltsverzeichnis

Wo neuronale Netze eingesetzt werden

Wie Kopf- und Gesichtserkennungssysteme funktionieren

Wie das neuronale Netz trainiert wird

Feinabstimmung des Deep-Learning-Modells mit iterativem Datensatz

 

 

Deep Learning ist eine Art des maschinellen Lernens, bei dem neuronale Netze mit großen Datenmengen trainiert werden. Diese Technologie ermöglicht die Automatisierung komplexer Geschäftsprozesse und die Implementierung von Analysen für datengesteuerte Entscheidungen in verschiedenen Bereichen.

In den letzten fünf Jahren ist der Markt für Deep Learning fast um das 22-Fache (!) gewachsen. Ende 2022 wurde er auf 49,6 Milliarden US-Dollar geschätzt.

 

Wo neuronale Netze eingesetzt werden

Vor der Einführung neuronaler Netze wurden menschliche Zählaufgaben mithilfe eines menschlichen Bedieners und Überwachungskameras sowie optischer Sensoren in Drehkreuzen (sofern vorhanden) gelöst. Computer-Vision- und Deep-Learning-Technologien vereinfachen und automatisieren diesen Prozess in vielen Bereichen:


People are waiting for a public transport

 

Öffentlicher Nahverkehr. Lösungen zur Personenzählung helfen bei der Steuerung des Fahrgastaufkommens, der Analyse von Stoßzeiten und Verkehrsstaus. Mithilfe von Analysedaten können Stadtverwaltungen die Fahrpläne des öffentlichen Nahverkehrs optimieren: Verkürzung der Intervalle zwischen den Fahrzeugen, zusätzliche Fahrten auf der Strecke usw.

 

People are working in an office

 

Intelligente Gebäude. KI-basierte Kameras erleichtern den Betrieb und die Wartung von Gebäuden. Hier sind nur einige Szenarien, wie maschinelles Lernen für intelligente Gebäude eingesetzt werden kann:

  • Überwachung der Kapazität von Büro- und Besprechungsräumen in einem hybriden Arbeits- oder Coworking-Format;
  • Zählung von Personen und Überwachung der Belegung und der Einhaltung der Abstandsregeln;
  • Anpassung von Heizungs-, Klima- und Beleuchtungssystemen an den Bedarf;
  • Überwachung der Aufzugsbelegung und Vermeidung von Überlastungen.


People do shopping

 

Einzelhandel. Maschinelles Lernen in der Einzelhandelsanalyse optimiert die Arbeitsbelastung des Personals. Die gewonnenen Daten helfen, das Kundeninteresse an Produkten und Auslagen zu untersuchen, die Laufwege der Menschen durch die Verkaufsfläche zu erfassen und das Ladendesign zu ändern: Abschnitte in einer bequemen Reihenfolge platzieren oder Werbematerialien bevorzugen.


Detecting people in a queue

 

Warteschlangenmanagement. Kameras mit Gesichtserkennung helfen bei der Verwaltung von Warteschlangen an Flughäfen, Bahnhöfen und großen Geschäften, indem sie die Anzahl der Personen in der Schlange und ihre Wartezeit erfassen. Wenn die Daten zeigen, dass die Warteschlange schnell wächst und sich nur langsam bewegt, ist dies ein Signal, zusätzliche Check-in-Schalter, Kassierer oder Call-Personal einzusetzen.

 

Detecting people in the street

 

Mobilität in der Stadt. Intelligente Kameras für die Videoüberwachung machen das städtische Umfeld für Menschen mit Behinderungen oder Eltern mit Kinderwagen zugänglich. Solche Kameras in öffentlichen Verkehrsmitteln helfen den Fahrern, Fahrgäste zu erkennen, die Hilfe benötigen: eine Rampe zum Aussteigen oder einen mechanischen Aufzug.

 

Wie Gesichts- und Kopf-Erkennungssysteme funktionieren

Schauen wir uns an, wie ein neuronales Netzwerk in Verbindung mit einer Kamera funktioniert. Diese Kombination wird in den meisten Videoüberwachungslösungen verwendet. Zuvor haben wir in unserer Fallstudie über einen intelligenten Fahrradparkplatz mit der SONY Spresense AI-Kamera beschrieben, wie dies funktioniert.

Hier sind die wichtigsten Schritte im Prozess der Objektzählung im Kameravideo:

  • Erfassung von Bildern von CCTV-, IP- oder Spezialsensoren, die den Zielbereich abdecken.
  • Verbesserung der Bildqualität: Filterung, Rauschunterdrückung, Stabilisierung und Klarheit von Bildern oder Videobildern.
  • Erkennung von Objekten mithilfe von Computer-Vision-Algorithmen, einschließlich Single-Shot-Detection (SSD).
  • Zählung von Objekten und Analyse ihrer Merkmale: Personendichte, Wartezeit, Bewegungsmuster usw.
  • Integration und Visualisierung von Daten: Anzeige von Dashboards und Übertragung an Steuerungssysteme und Anwendungen.

 

Damit ein solches System ordnungsgemäß funktioniert, muss das neuronale Netz trainiert werden. Dies ist ein komplexer, aber sehr spannender Prozess, den wir im Folgenden beschreiben. Derzeit trainieren Promwad-Ingenieure im Rahmen eines laufenden maschinellen Lernprojekts in der Automobilindustrie ein neuronales Netz für die Gesichts- und Kopferkennung. 

 

Wie das neuronale Netz trainiert wird

Die Erkennung des Kopfes ist eine Teilmenge der Objekterkennungsaufgaben. Warum ist es wichtig, den Kopf zu identifizieren? Bei einer Reihe von Anwendungen ist es nicht ausreichend oder möglich, die Anwesenheit einer Person zu erkennen. Die Gestalt einer Person kann teilweise in einer Menschenmenge verborgen sein oder die Kamera kann eine Menschenmenge von oben oder von der Seite filmen.

 

A neural network recognises heads and faces

Ein neuronales Netzwerk, das darauf trainiert ist, Köpfe und Gesichter zu erkennen. Videoquelle: „Stabile Verfolgung mehrerer Ziele in Echtzeit-Überwachungsvideos“ von Benfold, Ben und Reid, I. CVPR 2011

 

Um Personen zu zählen, muss ein neuronales Netzwerk mehrere Dinge tun:

  • die Anwesenheit einer Person im Bild erkennen;
  • den Bereich finden, in dem sich der Kopf befindet;
  • die Koordinaten des den Kopf umgebenden Bildausschnitts bestimmen;
  • dem Objekt eine Kennung zuweisen, damit es von Bild zu Bild verfolgt werden kann.

Wir werden die SSD-Objekterkennungsarchitektur verwenden – einen der beliebtesten Algorithmen.

In der ersten Phase haben wir ein mathematisches Modell mit zufällig initialisierten Gewichtswerten, das ohne spezielles Training und Verarbeitung nutzlos ist. Durch unser Training wird es funktionsfähig und intelligent: Wir lassen Tausende vorverarbeiteter Bilder durch unser Modell laufen und fügen Anmerkungen mit den Koordinaten der Köpfe in jedem Bild hinzu, damit unser Modell „verstehen“ kann, dass sich in diesem Bereich ein Zielobjekt befindet. Jeder Stapel von Bildern durchläuft das Modell (Vorwärtspropagierung) und startet Berechnungen der Verlustfunktion, die misst, wie „weit“ die Vorhersagen unseres Modells und die Anmerkungen, die wir in das Modell eingespeist haben, auseinander liegen.
 
Die Verlustfunktion ist einer der wesentlichen Bestandteile des Deep Learning, der bestimmt, wie neuronale Netze lernen. Im einfachsten Fall kann sie als Summe unserer Datenabweichungen von der Modellvorhersage dargestellt werden (siehe Grafik unten). Das genaue Bild ist jedoch viel komplexer, da moderne neuronale Netze eine große Anzahl trainierbarer Parameter enthalten.
 
 
a scheme of a loss function

Der einfachste Fall einer Verlustfunktion beim maschinellen Lernen

 
Nachdem die Verlustfunktion berechnet wurde, wird die Fehlerrückführung aktiviert. In dieser Phase verwenden wir einen Optimierungsalgorithmus, um die Gewichtswerte zu korrigieren und die Verlustfunktion zu minimieren. Ein geringer Verlust bedeutet, dass unser Modell die Anmerkungen, die wir an unser Modell übergeben haben, annähert.
 
Wir werden das Modell verwenden, um Personen im Voll- und Profilbild und ihre Köpfe von hinten und von oben zu erkennen. Wenn die hochgeladenen Bilder diese enthalten, erhält dieser Bereich den entsprechenden numerischen Wert.
 
Zu Beginn des Trainings ist die Zuversicht des Netzes, dass sich in einem Bereich ein Gesicht oder ein Kopf befindet, zufällig zwischen 0 und 1 verteilt. Mit zunehmendem Lernfortschritt tendiert die Zuversicht des Netzes in den Bereichen, in denen sich ein Kopf oder ein Gesicht befindet, gegen 1 und in den Bereichen, in denen es keine gewünschten Bilder gibt, gegen 0.
 
Durch Lernen bestimmt das Modell korrekte und fehlerhafte Vorhersagen und „belohnt“ oder „bestraft“ sich selbst für die erzielten Ergebnisse. Das Modell kann einen Fehler machen und ein digitales Ergebnis erzeugen, das zeigt, dass auf einem Bild, auf dem sich eigentlich ein Gesicht befindet, kein Gesicht zu sehen ist. In diesem Fall ist die Verlustfunktion viel größer, und daher ändert der Backpropagation-Fehler die Gewichtungen, sodass das Modell in Zukunft in der Lage sein wird, dieses Gesicht zu erkennen. Letztendlich trifft das Modell immer genauere Vorhersagen.
 

Feinabstimmung des Deep-Learning-Modells mit iterativer Datensatzerweiterung für die Gesichtszählung

Beim Training eines neuronalen Netzwerks stehen wir vor zwei wichtigen, miteinander verbundenen Problemen:

  1. Wo und wie viele Bilder müssen wir für unser Training aufnehmen, um eine akzeptable Genauigkeit des neuronalen Netzwerks zu erreichen?
  2. Wie viele Iterationen sollten durchgeführt werden, damit das neuronale Netzwerk ausreichend lernt?

Die Lernzeit und Genauigkeit des Algorithmus hängt davon ab, wie diese Probleme gelöst werden.

Wir haben uns für einen iterativen Ansatz entschieden, um das neuronale Netz zu trainieren, indem wir bei jeder Iteration einen neuen Teil der Bilder laden. Dieser Ansatz löst ein potenzielles Leistungsproblem mit der Plattform, auf der das Modell trainiert wird: Wir nehmen mehr Daten auf und erweitern den vorhandenen Datensatz iterativ. Der Zyklus „Sicherstellung der Modellleistung → Erweiterung des Datensatzes → Feinabstimmung des Modells“ wird wiederholt, bis wir ein gutes Ergebnis erhalten.

Das Training unseres neuronalen Netzwerks dauerte 7 Iterationen. In der Null-Iteration trainierten wir das Modell anhand eines Datensatzes aus kostenlosen Quellen . Dieser bestand aus 2405 Bildern, die Köpfe und Gesichter mit unterschiedlichen Merkmalen darstellten: Winkel, Größe und Dichte.


An example of how people can be detected

Bilder aus einem kostenlosen Datensatz werden verwendet, um das Modell für die Null-Iteration zu trainieren. Quelle: github.com
 

Die Null-Iteration zeigte eine Genauigkeit (mittlere durchschnittliche Präzision) von 20 % in unserer Validierungsuntergruppe. Wir verbesserten diesen Wert in weiteren 6 Iterationen und verwendeten zu diesem Zweck einen weiteren Satz Bilder.
 
Der erste Datensatz enthielt eine Vielzahl von Fotos mit unterschiedlichen Szenen, Helligkeit und Skalierung, während wir für unser Problem spezifischere Bilder benötigten. Ein auf diesen Fotos trainiertes Modell ist für Gesichtserkennungssysteme hilfreich, z. B. für die Zugangskontrolle zu Sperrbereichen oder sicheren Gebäuden, Zugangssysteme für Carsharing-Fahrzeuge oder Plattformen zur Verfolgung von Fahrern und Passagieren.
 
Für unsere Aufgabe, die sich auf die Kopferkennung und die Verfolgung einer bestimmten Person in Bewegung konzentrierte, mussten unsere Datensätze Fotos im Profil oder von vorne und Bilder von Köpfen aus verschiedenen Winkeln enthalten: von hinten, oben und unten. So konnte unser Modell Gesichter von vorne und Köpfe aus verschiedenen Winkeln erkennen.
 
Für die folgenden Iterationen verwendeten wir einen Datensatz, den wir selbst zusammengestellt hatten. Wir installierten mehrere Kameras an verschiedenen Orten in unserem Ingenieurbüro. Die Kameras wurden in verschiedenen Neigungswinkeln und in Bereichen mit unterschiedlichen Lichtverhältnissen aufgestellt. Die Bilder wurden entsprechend markiert: Wir rahmten die Bereiche ein, die wir identifizieren wollten.
 
Es handelte sich um einen halbautomatischen Prozess: Ein Teil der Kennzeichnung wurde von unserem trainierten Modell vorgenommen, während ein Mensch Fehler in der Kennzeichnung verfeinerte oder korrigierte.
 
Während des gesamten Trainings haben wir ca. 3.400 Bilder gesammelt und in 6 Teile unterteilt. Jeder Teil wurde in Sets für das Training (~ 80 %) und die Validierung (~ 20 %) unterteilt. Unsere Hauptmetrik bei der Objekterkennung war mAP (Mean Average Precision).
 
Nach der ersten Iteration des Trainings mit den neuen Daten lieferte das Modell ein Ergebnis von ca. 77 %.
 

Wir setzten das Training fort und luden neue Teile von Fotos. Bei der sechsten Iteration erzielten wir eine Genauigkeit von ~92 % und beendeten das Training an dieser Stelle. Je weiter der Lernprozess voranschreitet, desto geringer ist die Genauigkeitssteigerung. In einigen Fällen zeigt das Modell mit jeder Iteration genauere Ergebnisse, aber die Leistung nimmt bei der nächsten Iteration ab. Dies geschah aufgrund interner Fehler oder weil die falschen Eingaben geladen wurden.


Diagram of our neuromodel training for people counting

Iterationsdiagramm unseres neuronalen Netzwerktrainings für die Personenzählung

 

Wenn wir ein Modell in Iterationen trainieren, erweitern wir einerseits die Daten, auf denen es trainiert wird. Andererseits kontrollieren wir die Genauigkeit und können die Anzahl der zusätzlichen Iterationen vorhersagen.

Wir haben einen Dienst für das iterative Lernen unseres Neuromodells geschaffen, der mehrere Open-Source-Dienste und -Tools umfasst. Unser iterativer Prozess umfasst mehrere Schritte:

  • Überwachung des Trainingsprozesses. Mit einem spezialisierten Dienst können wir verschiedene Metriken wie Verlust, Karte usw. protokollieren – so verstehen wir das Verhalten des Modells im Trainingsprozess.
  • Ableitung neuer Daten. In dieser Phase erstellen wir Vorhersagen (Ausgabe) für die neu ausgewählten Daten. Vorhersagen im COCO-Format (Common Objects in Context) werden für die zukünftige Annotation benötigt, um Wahrheitsrahmen zu erstellen. Dieses Verfahren verkürzt die Zeit erheblich, da der Annotationsprozess einer der zeitaufwendigsten beim maschinellen Lernen ist.
  • Verfeinerung der Annotationen. Nach der Ausgabe erhalten wir eine Datei mit Vorhersagen von Werten für die Köpfe in der neuen Datencharge. Diese Vorhersagen müssen verfeinert werden, da die Modelle nicht perfekt sind. Wir laden diese Datei in das Computer Vision Annotation Tool (CVAT) und verfeinern die Vorhersagen manuell.

 

Als Ergebnis haben wir ein Neuromodell, das Gesichter und Köpfe aus verschiedenen Winkeln mit einer Genauigkeit von 92 % erkennt und in Überwachungssystemen an öffentlichen Orten, Flughäfen, Bahnhöfen, großen Verkehrsknotenpunkten und in der Einzelhandelsanalyse eingesetzt werden kann. Wir sind bereit, diese Lösung für Ihr Unternehmen zu nutzen, sie an die spezifische Aufgabe anzupassen und die Erkennungsgenauigkeit auf das erforderliche Niveau zu bringen.

 

* * *

 

Lösungen zur Personenzählung tragen zur Verbesserung der Sicherheit in Gebäuden und belebten Bereichen bei. Diese Lösungen basieren auf Deep-Learning-Algorithmen und liefern zuverlässige und genaue Ergebnisse in Echtzeit, selbst in komplexen Szenarien. 

Fortschritte in der Technologie und die Entwicklung ausgefeilterer Sensoren werden Unternehmen dazu ermutigen, Gesichtserkennungssoftware zu entwickeln und neuronale Netze präzise zu trainieren. Es werden effizientere und intelligentere Systeme geschaffen, die den Bedürfnissen von Wirtschaft und Gesellschaft gerecht werden.

Als Unternehmen, das sich auf die Entwicklung von maschinellem Lernen spezialisiert hat, bieten wir unseren Kunden Dienstleistungen an, von der Beratung bis hin zur Entwicklung unternehmensspezifischer Lösungen. Kontaktieren Sie uns und wir erklären Ihnen, wie unsere Ingenieure eine auf Ihr Unternehmen zugeschnittene Lösung zur Personenzählung entwickeln können.