Wie zählen wir Menschen, die Computer Vision verwenden?

Bild
Fotos aus offenen Quellen

Massenversammlungen von Menschen verursachen Probleme in verschiedenen Bereichen (Einzelhandel, öffentliche Dienste, Banken, Entwickler). Kunden müssen Informationen über die Anzahl der Personen an vielen Orten kombinieren und überwachen: in Servicebüros, Verwaltungsgebäuden, auf Baustellen usw.

Die Aufgaben der Personenzählung haben vorgefertigte Lösungen, z. B. die Verwendung von Kameras mit integrierter Analyse. In vielen Fällen ist es jedoch wichtig, eine große Anzahl von Kameras zu verwenden, die zuvor in verschiedenen Abteilungen installiert wurden. Darüber hinaus ist eine Lösung, die die Besonderheiten eines bestimmten Kunden berücksichtigt, für ihn besser.

Unsere Namen sind Tatyana Voronova und Elvira Dyaminova. Wir beschäftigen uns mit Datenanalysen im Center 2M. Obwohl das Thema das einfachste zu sein scheint, was derzeit bei Computer-Vision-Problemen berücksichtigt wird, müssen selbst bei diesem Problem in Bezug auf die Praxis (Implementierung) viele komplexe und nicht triviale Teilaufgaben gelöst werden. Der Zweck unseres Artikels ist es, die Komplexität und die grundlegenden Ansätze für Computer-Vision-Probleme am Beispiel der Lösung eines der Grundprobleme aufzuzeigen. Für die folgenden Materialien möchten wir Kollegen gewinnen: Entwickler, Ingenieure, Projektmanager für Videoanalysen, damit sie über die beteiligten Computerressourcen, Geschwindigkeitsmessungen, die Nuancen der Kommunikation mit Kunden und Projektimplementierungsgeschichten sprechen. Wir werden uns auf einige der verwendeten Datenanalysemethoden konzentrieren.

Beginnen wir mit der folgenden Anweisung: Sie müssen die Anzahl der Personen in der Warteschlange im Servicebüro anzeigen. Wenn die Warteschlange gemäß den internen Regeln des Kundenunternehmens als kritisch eingestuft wird, wird das interne Szenario ausgearbeitet:
  • Benachrichtigung über die Notwendigkeit, einen zusätzlichen Eingang / eine zusätzliche Kasse zu eröffnen;
  • Manageranruf;
  • Informationen über die Notwendigkeit, Personenströme an andere (kostenlosere) Kassen umzuleiten.

So erspart unsere Arbeit den Kunden viele Nerven.

Verwendete Modelle für maschinelles Lernen


Personen Silhouetten Erkennung


Zunächst haben wir uns für ein bereits geschultes Modell zur Erkennung von Personen (Silhouetten) entschieden, da solche Aufgaben ziemlich gute Lösungen bieten, beispielsweise die Definition von Silhouetten .

In der TensorFlow-Bibliothek gibt es also eine große Anzahl vorgefertigter Modelle .

Nach der Durchführung der Tests haben wir uns zunächst für zwei Architekturen entschieden: Faster R-CNN und YOLO v2. Später, nachdem die neue Version erschienen war, haben wir YOLO v3 hinzugefügt.

Beschreibung der Modelle .

Ein Beispiel für ein Erkennungsergebnis für YOLO v2 (im Folgenden werden Bilder aus freien Quellen aufgenommen - wir können keine Bilder von Kundenkameras veröffentlichen):

Bild

Ein Beispiel für ein Erkennungsergebnis für Faster R-CNN:

Bild

Der Vorteil von YOLO ist, dass das Modell schneller reagiert, und bei einigen Aufgaben ist dies wichtig. In der Praxis haben wir jedoch festgestellt, dass die Verwendung von Faster R-CNN korrekter ist, wenn es nicht möglich ist, eine vorab trainierte Version des Modells zu verwenden und eine Umschulung für Ihr spezielles Trainingsset erforderlich ist. Wenn die Kamera weit genug von Personen entfernt installiert wurde (die Höhe der Silhouette beträgt weniger als 100 Pixel für eine Auflösung von 1920 x 1080) oder zusätzlich die persönliche Schutzausrüstung einer Person erkannt werden musste: Helme, Befestigungselemente, Schutzkleidungselemente, in solchen Situationen ergibt sich die Qualität des Trainings in Ihrem eigenen Datensatz (bis zu 10) tausend verschiedene Objekte) für YOLO v2 waren wir nicht zufrieden.

YOLO v3 zeigte akzeptable Ergebnisse, jedoch ergaben Geschwindigkeitstests keinen signifikanten Vorteil für YOLO v3 im Vergleich zu schnellerem R-CNN. Darüber hinaus haben wir einen Weg gefunden, die Erkennungsgeschwindigkeit durch Stapelverarbeitung (Gruppenverarbeitung von Bildern) und selektive Analyse von Bildern zu erhöhen (mehr dazu weiter unten).

Für alle Modelltypen haben wir die Genauigkeit durch Nachbearbeitung der Ergebnisse verbessert: Wir haben Ausreißer in Werten entfernt und die häufigsten Werte für eine Reihe aufeinanderfolgender Frames verwendet. Eine Sekunde von einer Kamera entspricht normalerweise 25-50 Bildern. Um die Leistung zu verbessern (mit zunehmender Anzahl von Kameras), analysieren wir natürlich nicht jedes Bild, aber es ist oft möglich, über einen Zeitraum von mehreren Sekunden eine endgültige Antwort zu geben, dh mehrere Bilder zu verwenden. Diese Entscheidung kann dynamisch getroffen werden, wobei die Gesamtzahl der Kameras (Videostreams zur Verarbeitung) und die verfügbare Rechenleistung berücksichtigt werden.

Ein Beispiel für die Verwendung des Faster R-CNN-Modells, das auf unserem eigenen Datensatz trainiert wurde:

Bild

Jetzt führen wir Tests mit dem SSD-300- Modell durch. Wir hoffen, dass wir dadurch die Produktivität steigern und gleichzeitig eine akzeptable Qualität der Anerkennung erhalten.

Erstellen Sie Ihren eigenen Trainingsdatensatz


In Fällen, in denen Sie Ihr eigenes Lernset erstellen möchten, haben wir für uns das folgende Verfahren entwickelt:
  • Wir sammeln Videoclips mit den erforderlichen Objekten: Kundenvideos, öffentlich zugängliche Videos (angelegte Videos, Überwachungskameras);
  • Wir schneiden und filtern Videofragmente so, dass der resultierende Datensatz über verschiedene Erkennungsobjekte verteilt ist.
  • Wir verteilen Frames zwischen Markern, um die erforderlichen Objekte hervorzuheben. Ein Beispiel für ein Markup-Tool .
  • Überprüfen Sie selektiv die Ergebnisse der Marker.
  • Bei Bedarf führen wir eine Augmentation durch: Normalerweise fügen wir Windungen hinzu, reflektieren, ändern die Schärfe (bilden einen erweiterten markierten Datensatz).

Erkennungszonen verwenden


Eines der Probleme beim Zählen von Personen in einer Linie ist der Schnittpunkt der Sichtbereiche mehrerer Kameras. In einem Raum kann mehr als eine Kamera installiert werden. Daher ist es wichtig, den überlappenden Bildbereich beizubehalten. Wenn eine Person das Sichtfeld mehrerer Kameras betritt, sollte dies einmal berücksichtigt werden.

In einigen Situationen müssen Personen nur in einem bestimmten Bereich des Raums (in der Nähe der Servicefenster) oder der Plattform (in der Nähe der Ausrüstung) erkannt werden.

Aus offensichtlichen Gründen ist es falsch zu überprüfen, ob das Rahmenrechteck (Kasten / Rahmen), das die gesamte Person einschränkt, in die Zone (Polygon) fällt. In dieser Situation wird der Boden (Drittel / Hälfte) des Rechtecks ​​in Punkte - Knoten (ein Raster von 10 mal 10 Knoten wird genommen) unterteilt und das Fallen in die Zone der einzelnen ausgewählten Knoten wird überprüft. "Signifikante" Knoten werden vom Systemadministrator basierend auf der Geometrie des Raums zugewiesen (die Standardwerte werden ebenfalls ausgewählt - wenn die Einstellung für einen bestimmten Raum nicht eingegeben wird).

Bild

Darüber hinaus wird die Anwendung der Mask R-CNN- Architektur für unsere Aufgaben getestet . Mit dieser Methode können Sie den Umriss der Silhouette bestimmen. Auf diese Weise können Sie bei der Analyse des Schnittpunkts mit einer Zone nicht mehr ein Randrechteck verwenden .

Bild

Ein anderer Ansatz: Kopferkennung (Modelltraining)


Qualität wird nicht immer durch Auswahl eines Modells, Erhöhen / Ändern des Trainingssatzes und anderer rein ML-Methoden erreicht. Manchmal kann eine entscheidende Verbesserung nur erreicht werden, indem die gesamte Formulierung des Problems geändert wird (zum Beispiel in unserem Problem). In diesen Warteschlangen drängen sich die Menschen und überlappen sich daher, sodass die Erkennungsqualität häufig nicht ausreicht, um nur diese Methode unter realen Bedingungen anzuwenden.

Nehmen Sie das Bild unten. Wir schließen unsere Augen vor der Tatsache, dass das Bild auf dem Telefon aufgenommen wurde und der Neigungswinkel nicht dem Neigungswinkel von CCTV-Kameras entspricht. Der Rahmen enthält 18 Personen, und das Silhouettenerkennungsmodell identifizierte 11 Personen:

Bild

Um die Ergebnisse zu verbessern, haben wir uns von der Definition von Silhouetten zur Definition von Zielen bewegt. Zu diesem Zweck wurde das Faster R-CNN-Modell anhand eines Datensatzes aus trainiertLink (der Datensatz enthält Frames mit einer unterschiedlichen Anzahl von Personen, einschließlich großer Cluster, unter denen sich Personen unterschiedlicher Rassen und Altersgruppen befinden).

Außerdem haben wir den Datensatz mit Rahmen aus dem Material (von den Kameras) des Kunden um etwa ein Drittel angereichert (hauptsächlich aufgrund der Tatsache, dass der ursprüngliche Datensatz nur wenige Köpfe in Hüten hatte). Ein Tutorial war nützlich, um ein Modell selbst zu lernen .

Die Hauptprobleme sind die Bildqualität und die Größe der Objekte. Die Köpfe haben unterschiedliche Größen (wie aus dem obigen Bild ersichtlich), und die Rahmen der Kameras des Kunden hatten eine Auflösung von 640 x 480. Aus diesem Grund werden interessante Objekte (Hauben, Weihnachtskugeln, Stuhllehnen) manchmal als Köpfe erkannt.

Zum Beispiel haben wir im Trainingsdatensatz Köpfe beschriftet:

Bild- Dies sind Köpfe in einem Datensatz.

Bild- und das ist die Rückenlehne des Stuhls, aber das Modell möchte glauben, dass dies der Kopf ist.

Im Allgemeinen kommt dieses Modell jedoch in Fällen mit einer massiven Konzentration von Menschen recht gut zurecht. Im obigen Rahmen identifizierte unser Modell also 15 Personen:

Bild

In diesem Bild konnte das Modell also nicht nur drei Köpfe finden, die durch Fremdkörper erheblich blockiert waren.

Um die Qualität des Modells zu verbessern, können Sie die aktuellen Kameras durch Kameras mit einer höheren Auflösung ersetzen und zusätzlich den Trainingsdatensatz sammeln und markieren.

Es sollte jedoch berücksichtigt werden, dass bei einer kleinen Anzahl von Personen die Methode zur Erkennung durch Silhouetten und nicht durch Köpfe besser geeignet ist, da es schwieriger ist, die Silhouette vollständig zu überlappen oder mit Fremdkörpern zu verwechseln. Wenn es jedoch eine Menschenmenge gibt, gibt es keinen Ausweg. Um die Anzahl der Personen in einer Reihe zu zählen, wurde beschlossen, zwei Modelle parallel zu verwenden - für Köpfe und Silhouetten - und die Antwort zu kombinieren.

Silhouetten und Köpfe, ein Beispiel für ein Erkennungsergebnis:

Bild

Genauigkeitswertung


Beim Testen des Modells wurden Rahmen ausgewählt, die nicht an der Schulung teilgenommen haben (Datensatz mit einer unterschiedlichen Anzahl von Personen auf dem Rahmen, in verschiedenen Winkeln und verschiedenen Größen). Um die Qualität des Modells zu bewerten, haben wir Rückruf und Präzision verwendet.

Rückruf - Vollständigkeit zeigt, welchen Anteil von Objekten, die tatsächlich zur positiven Klasse gehören, richtig vorhergesagt haben.

Präzision - Genauigkeit zeigt, welchen Anteil von Objekten, die als Objekte einer positiven Klasse erkannt wurden , korrekt vorhergesagt wurden.

Bei Bildern von Kameras auf Teststandorten (Bilder in diesen Räumen befanden sich im Datensatz) Metriken:

Bild

Bei Bildern von neuen Kameras (diese Räume befanden sich nicht im Datensatz):

Bild

Wenn der Kunde eine Ziffer, eine Kombination aus Genauigkeit und Vollständigkeit, benötigte, gaben wir ein harmonisches Mittel oder F-Maß an :
Bild

Berichterstattung


Ein wichtiger Teil des Dienstes ist die Statistik. Zusammen mit einzelnen Frames (und von ihnen gezählten engagierten Personen) möchten Kunden die Ergebnisse in Form von vorgefertigten Berichten (Dashboards) mit durchschnittlicher / maximaler Belegung für verschiedene Zeitintervalle anzeigen. Das Ergebnis ist oft in Form von Grafiken und Diagrammen interessant, die die Verteilung der Anzahl der Personen über die Zeit charakterisieren.

In unserer Lösung für den Rahmen wird beispielsweise die Anzahl der Personen für beide Modelle (Silhouetten und Köpfe) berechnet und das Maximum ausgewählt. Befinden sich mehrere Kameras im Raum, wird die Bildüberlappungszone (über die Schnittstelle voreingestellt) gespeichert, und wenn eine Person den Bereich mehrerer Kameras betritt, wird sie einmal berücksichtigt.
Als nächstes wird der Wert der Anzahl von Personen in der Warteschlange für mehrere aufeinanderfolgende Rahmen gebildet - für das Intervall Δt . Innerhalb einer Stunde werden Werte für mehrere solcher Intervalle für jeden Raum entladen.

Die Größe des Zeitintervalls und die Anzahl der Intervalle werden basierend auf der Anzahl der Räume und der verwendeten Rechenleistung bestimmt. Für jedes Intervall wird ein Array von Werten mit der Anzahl der Personen im Raum gebildet.

Der häufigste Wert (Modus) wird ausgewählt. Wenn mehrere Werte mit derselben Frequenz vorhanden sind, wird das Maximum ausgewählt.

Der resultierende Wert ist die Anzahl der Personen in der Warteschlange zum Zeitpunkt tunmittelbar nach dem fraglichen Intervall. In nur einer Stunde wird eine Reihe von Werten für verschiedene Intervalle erhalten - dh Werte zu den Zeitpunkten t_1, t_2 .... t_n .

Weiter für t_1, t_2 .... t_n werden die Maximal- und Durchschnittswerte der Anzahl der Personen berechnet - diese Werte werden im Bericht als Spitzen- und Durchschnittslasten für eine bestimmte Stunde angezeigt.

Diagramm der zeitlichen Verteilung der Personen bei maximaler Belastung (einfaches Beispiel):

Bild

Diagramm der zeitlichen Verteilung der Personen bei durchschnittlicher Belastung (einfaches Beispiel):

Bild

Menschenmassen


Abschließend möchte ich der Vollständigkeit halber das Thema sehr großer Menschenmengen erwähnen, zum Beispiel Menschenmengen in Stadien an Orten mit starkem Menschenverkehr.

Bei diesen Aufgaben geht es darum, die Größe der Menge zu schätzen: Wenn es sich um eine Menge von 300 Personen handelt, wird eine Antwort von 312 oder 270 als akzeptabel angesehen.

In der Praxis mussten wir solche Probleme nicht mithilfe von Videoanalysen lösen (wenn es sich um eine organisierte Veranstaltung handelt, ist es für jede Person einfacher, ein Etikett auszustellen). Wir haben jedoch Tests durchgeführt. Für solche Aufgaben werden separate Methoden verwendet, eine Übersicht über die Methoden .

Das Ergebnis des Modells aus der Überprüfung (auf CSRNet vorab trainiertes Modell) wurde reproduziert:

Bild

Der Winkel ist wichtig für die Einstellungen dieses Modells. Wenn der Aufnahmeort festgelegt ist, ist das Ergebnis besser als bei Anwendung auf verschiedene Bilder. Im Allgemeinen besteht die Möglichkeit, dieses Modell neu zu trainieren. Die Qualität kann während des Modellbetriebs verbessert werden, wenn echtes Video von installierten Kameras eingeschaltet ist.

Autoren des Artikels: Tatyana Voronova (tvoronova), Elvira Dyaminova (Elviraa)

All Articles