Automatisch Besucher zählen – Testanwendung in nur wenigen Tagen

Blog. Tauchen Sie ein in die AI-Welt

Automatisch Besucher zählen – Testanwendung in nur wenigen Tagen

AI Engineer

Krzysztof Udycz
KI-Ingenieur
24. Juni 2019

Die Technologien der künstlichen Intelligenz entwickeln sich zurzeit sehr schnell weiter. Viele große und namhafte Unternehmen beschäftigen sich mit Natural Language Processing, Image Processing oder Machine Learning. Eines dieser Unternehmen ist Nvidia, das kürzlich “Jetson Nano”, ein Edge AI-Gerät auf den Markt gebracht hat. Wir haben uns entschieden, dieses Gerät zu testen und einen Algorithmus zu implementieren, der Objekte erkennt und verfolgt. Unsere Efahrung mit Jetson Nano möchte ich mit Ihnen in diesem Artikel teilen, auch wozu Besucher zu zählen nützlich ist.

Unsere Idee war es, eine Echtzeitanalyse vom Videostream durchzuführen, um Kunden zu zählen, wenn sie bestimmte Bedingungen erfüllen. So haben wir innerhalb weniger Tage einen Kundenzähler gebaut und dafür KI-Algorithmen verwendet. In diesem Fall haben wir die vorbeikommenden Besucher und die Interessierten, die angehalten haben, gezählt. Im Folgenden erkläre ich, wie wir das gemacht haben und wofür es nützlich ist.

Warum wollen Unternehmen Kunden zählen? Was sind die Anwendungsfälle?

Es gibt viele Anwendungsfälle, in denen ein solcher Ansatz wichtig werden kann. Haben Sie sich schon einmal gefragt, wie viele Menschen sich tatsächlich für Ihren Messestand oder Ihre Ladenausstellung interessieren und wie viele Menschen nur vorbeigehen? Möchten Sie herausfinden, was potenzielle Kunden interessiert? Dies ist möglich durch Echtzeit-Erkennung, Verfolgung und Zählung der Personen, die sich einen bestimmten Zeitraum vor der Kamera aufgehalten haben. Basierend auf dieser Analyse kann festgelegt werden, welche Ausstellung für eine bestimmte Personengruppe am interessantesten ist, welcher Stand attraktiver ist oder welche Inhalte die Aufmerksamkeit der Besucher besser einfangen. Diese Informationen helfen Ihnen, den Auftritt Ihres Standes oder Ihrer Ausstellung zu verbessern und das Angebot an die potenziellen Kunden anzupassen. Die Möglichkeiten sind hier endlos.

Hier ein kurzes Video von unserem Testlauf:

Wie kann man Objekte mit Hilfe der Künstlichen Intelligenz verfolgen?

Nvidia Jetson Nano - was genau ist es?

Das Nvidia Jetson Nano Developer Kit ist ein leistungsstarkes KI-Computergerät für Embedded-Anwendungen. Es beinhaltet einen integrierten 128-Core Maxwell GPU, Quad-Core ARM A57 64-Bit CPU, 4GB LPDDR4 Speicher, sowie Unterstützung für MIPI CSI-2 und PCIe Gen2 High-Speed I/O.

Dieser Computer im Taschenformat ist unglaublich energieeffizient (5-10 W Stromverbrauch), bietet aber die Rechenleistung, die es erlaub mehrere moderne KI-Modelle parallel und mit hoher Leistung zu betreiben. Es ist in der Lage, 472 GFLOPS Rechenleistung zu erreichen, die dem Benutzer viele umfangreiche Möglichkeiten bietet. Das neueste Mitglied der Jetson-Familie wurde als Plattform für “KI on the edge” entwickelt – eine Lösung, bei der Algorithmen der künstlichen Intelligenz lokal auf dem Gerät verarbeitet werden.

Für die ersten Schritte mit dem Nvidia Jetson Nano Developer Kit sind mehrere Dinge erforderlich:

  • microSD-Speicherkarte, auf der das Betriebssystem (JetPack) installiert wird
  • Stromversorgung
  • HDMI-Kabel um das Geräts mit dem Display zu verbinden
  • Maus und Tastatur zur Steuerung und Eingabe von Daten
  • Internetanschluss zum Herunterladen von Software

Eine weitere erwähnenswerte Sache ist die Tatsache, dass Jetson Nano von der neu auf den Markt gebrachten Software JetPack 4.2 SDK unterstützt wird, die Folgendes beinhaltet:

  • komplette Desktop-Linux-Umgebung (Ubuntu 18.04) mit Nvidia-Treibern
  • Bibliotheken und APIs wie:
    • CUDA Toolkit
    • cuDNN – CUDA Deep Neural Network Bibliothek
    • TensorRT – deep learning inference runtime for image classification, segmentation and object detection neural networks
    • VisionWorks – Softwareentwicklungspaket für Computer Vision und Bildverarbeitung
    • Multimedia-API
  • Entwicklerwerkzeuge – Nsight Eclipse Edition, Debugging- und Profilerstellungstools;
  • Dokumentation und Beispielcode

Andere gängige maschinelle Lernbibliotheken und Frameworks wie PyTorch, TensorFlow, Keras, Caffe oder OpenCV werden standardmäßig nicht mitgeliefert, können aber einfach installiert warden. Und sie sind voll kompatibel mit dem freigegebenen Entwicklungsboard.

Jetson Nano eignet sich ideal als Edge AI-Gerät, das es dem Benutzer ermöglicht, maschinelles Lernen / Deep Learning Lernen auf dem Gerät selbst durchzuführen. Es hat eine zuverlässige Verarbeitungsleistung im Vergleich zum kleinen Größenformat, Speicherfähigkeit, viele Möglichkeiten und eine hohe Flexibilität mach es zu einem Gerät der endlosen Möglichkeiten.

Nvidia Digits – was ist drin?

Nvidia Nvidia stellt ihre, im Laufe der Jahre gesammelten, Erfahrungen zur Verfügung, indem sie eine Sammlung von Tool für das Deep Learningn anbietet. Eine davon ist DIGITS (The Deep Learning GPU Training System™), das multiple Aufgaben erlaubt:

  • Verwaltung von Datensätzen
  • Entwerfen und Trainieren von hochpräzisen tiefen neuronalen Netzwerken für Bildklassifikation, Segmentierung, Objekterkennungsaufgaben und mehr
  • Überwachung der Leistung des Modells
  • Validierung und Visualisierung der Ergebnisse
  • Auswahl des besten Modells für die Implementierung

Das Deep Learning GPU Training System ist vollständig interaktiv. Alle Funktionen und Möglichkeiten sind über eine intuitive, browserbasierte Oberfläche erreichbar. Die Kombination von Nvidia’s DIGITS und Jetson bildet eine effektive Basis für die Entwicklung und Bereitstellung fortschrittlichster neuronaler Netzwerke für jede Anwendung.

Nvidia Jetson Nano

Welche Art von Algorithmen können auf Jetson Nano einsetzt werden?

Jetson Nano unterstützt im Vergleich zu Google Coral Dev Board eine Vielzahl gängiger maschineller Lern-/Deep Learning-Bibliotheken und Frameworks wie Keras, TensorFlow, Caffe, Torch/PyTorch etc. Die Kompatibilität mit so vielen Bibliotheken macht dieses Gerät zu einem leistungsstarken Instrument – es kann zum Entwerfen, Implementieren und Ausführen von Aktionen aus Bereichen wie Computer Vision, natürlicher Sprache oder tabellarischer Datenstrukturverarbeitung verwendet werden. Im Detail können auf Nvidias Jetson Nano folgende Algorithmen laufen:

  • Klassifizierung;
  • Objekterkennung;
  • Objektverfolgung;
  • Segmentierung;
  • Posen- und Bewegungsschätzung;
  • Merkmalsverfolgung;
  • Videoverbesserung (Videostabilisierung);
  • etc.

Viele dieser Algorithmen können in Echtzeit verarbeitet werden, d.h. sie können Videoströme mit hoher Auflösung analysieren, z.B. von Kameras an der Produktionslinie / Halle oder von Web- und Sicherheitskameras. Mit dem Jetson Nano von Nvidia können Sie sogar Sounds oder Daten von IoT-Geräten in Echtzeit analysieren.

Diese Funktionen eines Developer-Kits können kombiniert und separat genutzt werden, um komplexe künstliche Intelligenzleitungen und -systeme zu bauen, die darüber hinaus für viele Geschäfts- und Industrieanwendungen genutzt werden können.

Die interessierten Besucher erfassen

Jetson Nano wurde vor nicht allzu langer Zeit auf den Markt gebracht, es handelt sich um ein relativ neues Gerät. Daher haben wir einige Herausforderungen bei der Entwicklung erlebt. Unser Vorteil ist, dass Nano eine ähnliche Software wie die anderen Mitglieder der Jetson-Familie hat. Und wir kennen uns gut aus mit TX2!

Wir haben uns entschieden, einen einfachen Proof of Concept (PoC) zu realisieren, um die Fähigkeiten von Jetson Nano zu testen und zu demonstrieren. Unsere Idee war es, eine Echtzeit-Video-Stream-Analyse durchzuführen, um Personen auf Messen, Konferenzen oder sogar durch eine Ausstellung im Einkaufszentrum zu zählen. Aber wie kann das im wirklichen Leben genutzt werden? Wozu wollen Unternehmen Kunden zählen? Basierend auf dieser Analyse kann festgelegt werden, welche Ausstellung für eine bestimmte Personengruppe am interessantesten ist, welcher Messestand bzw. -auftritt attraktiver ist oder welche Inhalte die Aufmerksamkeit der Menschen besser anregen. Es gibt viele Anwendungsfälle, in denen ein solcher Ansatz eingesetzt werden kann.

counting people

Wie haben wir es gemacht?

Unser Algorithmus zur Objekterkennung und -verfolgung basiert auf der Programmiersprache Python. Wir haben die Logitech C920 HD Pro Webcam verwendet, die sich gut für hochauflösende Videoaufzeichnung oder Streaming eignet.  Für schnellere Bildverarbeitung und Interaktion mit Deep learning haben wir uns entschieden, mehrere bekannte Bibliotheken wie CUDA, OpenCV, dlib und numpy zu verwenden. Hier sind die Schritte, die die Funktionsweise unseres Algorithmus beschreiben:

Variablen aus den Bibliotheken laden und initialisieren

Objekterkennungsmodellladen, wir haben das MobileNet-Modell verwendet auf Grund der guten Leistung

  • Videostream starten
  • Diese Aktionen für jeden Frame ausführen:
    • Alle 10 Frames erzeugen einen “Blob” aus dem aktuellen Frame, leiten ihn durch das Netzwerk, um Vorhersagen zu erhalten und die Liste der Begrenzungsrahmen zu initialisieren. Dann über die Erkennungen laufen lassen und wenn das erkannte Objekt derzeit nicht verfolgt wird, den Tracker aktivieren. OpenCV bietet mehrere eingebaute Tracker;
    • Tracker aktualisieren
    • Schleife über verfolgte Objekte und zeichne ein Rechteck um sie herum;
    • Zählen Sie Menschen;
    • Zusätzliche Informationen anzeigen;
  • Videostream stoppen

Wir haben zwei Ansätze zur Personenzählung in Betracht gezogen. Erste basiert auf der Zählung von Personen, die mehr als eine bestimmte Anzahl von Bildern auf der Aufnahme sind. Die zweite basiert auf der Überprüfung der Fläche des Objekts. Wenn sich die Fläche mit der Zeit vergrößert, bedeutet das, dass das Objekt näher an unseren Stand oder unsere Ausstellung rückt. Wir haben uns entschieden, zuerst den ersten Ansatz zu implementieren. Der zweite Ansatz wird in Kürze umgesetzt.

Jetson Nano vs Jetson TX2

Wie schon erwähnt, haben wir bereits Erfahrungen mit Jetson TX2, daher haben wir uns entschieden, die Rechenleistung dieser beiden Edge-AI-Plattformen zu vergleichen. Der Jetson TX2 liefert eine Rechenleistung von 1,5 TFLOPS, das ist fast dreimal so viel, was der Jetson Nano liefern kann. Auf der anderen Seite ist es größer und weniger mobil als das kleinere und neuere Mitglied der Jetson-Familie. Wir haben an beiden Geräten die gleichen Tests mit dem genannten Objekterkennungs- und Tracking-Algorithmus durchgeführt und haben damit gerechnet, dass die Berechnungen von TX2 dreimal mal so schnell sein müssten. Die Ergebnisse haben uns überrascht, Jetson Nano war im Vergleich zu Jetson TX2 gar nicht so viel langsamer. Dies deutet auf eine sehr gute Optimierung des Algorithmus hin.

Jetson Nano ist kleiner und hat weniger Rechenleistung als der größere Jetson TX2. Heißt das, es ist schlechter bzw. hat eine schlechtere Qualität? Überhaupt nicht! Für die meisten Anwendungen liefert es eine vollkommen ausreichende Leistung. Im Endeffekt kommt es auf die Anwendung und die Algorithmen an, welches Gerät sinnvoller einzusetzten ist.

Zusammenfassung und Schlussfolgerungen

Nvidia’s Jetson Nano bietet einen guten Start, um die Leistungsfähigkeit der künstlichen Intelligenz zu entdecken. Es unterstützt eine Vielzahl bekannter Bibliotheken und Frameworks für maschinelles Lernen / Deep Learning. Es verfügt auch über eine beachtliche Rechenleistung und eine Sammlung von zugehöriger Software. Ein weiterer Vorteil dieses edge AI-Geräts ist die kompakte Größe, die Berechnungen überall durchführbar macht.

Eine der Jetson-Anwendungen kann die Echtzeit-Videoanalyse sein. Das Erkennen, Verfolgen und Zählen von Personen oder anderen Objekten wird in vielen Geschäfts- und Industriebereichen Anwendung finden. Auf diese Weise können Sie z.B. das Interesse der Menschen an einem bestimmten Messestand oder einer Ladenausstellung bewerten.

Jetson Nano ist ein Gerät mit vielen Einsatzmöglichkeiten, das es Ihnen ermöglicht, viele Arten der künstlichen Intelligenz zu implementieren und zu realisieren.

Sie wollen KI / AI In Ihrem Unternehmen einsetzten?