Personenerkennung mithilfe von Yolo (v3)

Ähnliche Dokumente
Individualisierte Gesichtsdetektion mit YOLOv2 in Darknet

Deep Learning zur Erkennung von Kochprozessen

Echtzeitfähige Algorithmen für markerloses Tracking und Umfelderkennung , Dr.-Ing. Steffen Herbort, A.R.T. GmbH

Neural Networks: Architectures and Applications for NLP

Weitere Untersuchungen hinsichtlich der Anwendung von KNN für Solvency 2. Tom Schelthoff

Individualisierte Gesichtsdetektion mit YOLOv2 in Darknet

Mathematische Grundlagen III

Human Detection Based On Part Models

Analyse komplexer Szenen mit Hilfe von Convolutional Neural Networks

Personenerkennung. Harald Hauptseminarpräsentation. Harald Kirschenmann. Department Informatik. Department Informatik.

Maschinelles Sehen für die automatische Erkennung von Baubehelfen

Faltungsnetzwerke. (Convolutional Neural Networks) Maximilian Schmidt. Faltungsnetzwerke

Seminar: Maschinelles Lernen und Deep Learning

Statistical Learning

Neuronale Netze. Automatische Hinderniserkennung Paul Fritsche

Maschinelles Lernen: Neuronale Netze. Ideen der Informatik

KNN für XOR-Funktion. 6. April 2009

Grundlagen zu neuronalen Netzen. Kristina Tesch

Hannah Wester Juan Jose Gonzalez

Object Recognition with Convolutional Neural Networks

Decision-Tree-Klassifikator

Rekurrente Neuronale Netze

Feature Selection / Preprocessing

Kann SAS Ihre Handschrift lesen? Machine Learning am Beispiel von Stacked Denoising Autoencoders

Kapitel 10. Maschinelles Lernen Lineare Regression. Welche Gerade? Problemstellung. Th. Jahn. Sommersemester 2017

Maschinelles Lernen: Neuronale Netze. Ideen der Informatik Kurt Mehlhorn

Die Datenmatrix für Überwachtes Lernen

Vorlesung Digitale Bildverarbeitung Sommersemester 2013

(Thema) Optimierung von künstlichen neuronalen Netzen zur Ausfallvorhersage mit Sensordaten. Masterarbeit

Künstliche Intelligenz

Lineare Regression. Volker Tresp

Machine Learning. Kurzeinführung Erfahrungen in GIS

Artificial Intelligence. Was ist das? Was kann das?

3. Analyse der Kamerabewegung Video - Inhaltsanalyse

Beating Humans in complex Boardgames

Wissensentdeckung in Datenbanken

Neuronale Netze. Christian Böhm.

Der Sprung in die Zukunft! Einführung in neuronale Netzwerke

Dreidimensionale Objektklassifizierung mithilfe der Convolutional Neuronal Networks. Master Grundseminar WiSe 2014/2015 Victoria Bibaeva

DOKUMENTENKLASSIFIKATION MIT MACHINE LEARNING

Frischer Wind für ein bekanntes Thema Klassifikation 4.0

Emotion Recognition of Call Center Conversations Robert Bosch Engineering and Business Solutions Private Limited

Projekt-INF Folie 1

OPT Optimierende Clusteranalyse

TUD Computer Poker Challenge

Softwareprojektpraktikum Maschinelle Übersetzung Verbesserungen für Neuronale Übersetzungssysteme

6.2 Feed-Forward Netze

Vorhersage von nicht-funktionalen Feature-Interaktionen

Scalable Deep Learning. Big Data, NLP, Machine Perception

Validation Model Selection Kreuz-Validierung Handlungsanweisungen. Validation. Oktober, von 20 Validation

Mustererkennung: Neuronale Netze. D. Schlesinger ()Mustererkennung: Neuronale Netze 1 / 12

, Data Mining, 2 VO Sommersemester 2008

Pareto optimale lineare Klassifikation

Entscheidungsbäume. Minh-Khanh Do Erlangen,

Maschinelles Lernen: Neuronale Netze. Ideen der Informatik Kurt Mehlhorn

Performance Verbesserung BIRT-BERICHTE

Learning to Rank Sven Münnich

EFS Deep Learning für das Fahren der Zukunft. Anton Junker

JPlus Platform Independent Learning with Environmental Information in School

Analytics Entscheidungsbäume

... Text Clustern. Clustern. Einführung Clustern. Einführung Clustern

Maschinelles Lernen und Data Mining

TensorFlow Open-Source Bibliothek für maschinelles Lernen. Matthias Täschner Seminar Deep Learning WS1718 Abteilung Datenbanken Universität Leipzig

Eine Einführung in R: Hochdimensionale Daten: n << p Teil II

Machinelles Lernen. «Eine kleine Einführung» BSI Business Systems Integration AG

Kapitel 4: Data Mining DATABASE SYSTEMS GROUP. Überblick. 4.1 Einleitung. 4.2 Clustering. 4.3 Klassifikation

Neuronale Netze u. Anwendungen, 17. Jan. 2012

Einleitung. Komplexe Anfragen. Suche ist teuer. VA-File Verfeinerungen. A0-Algo. GeVAS. Schluß. Folie 2. Einleitung. Suche ist teuer.

Maschinelles Lernen: Symbolische Ansätze

Map Matching. Problem: GPS-Punkte der Trajektorie weisen einen relativ großen Abstand zueinander auf.

Learning Phrase Representations using RNN Encoder Decoder for Statistical Machine Translation. Yupeng Guo

Lineare Regression. Christian Herta. Oktober, Problemstellung Kostenfunktion Gradientenabstiegsverfahren

Künstliche Intelligenz

SKOPOS Webinar 22. Mai 2018

SOLID für.net und JavaScript

Maschinelles Lernen: Symbolische Ansätze

INTELLIGENTE DATENANALYSE IN MATLAB. Evaluation & Exploitation von Modellen

Combining Manual Feedback with Subsequent MDP Reward Signals for Reinforcement Learning W. Bradley Knox und Peter Stone

Machine Learning Tutorial

Algorithms for graph visualization

Praktikum Computational Intelligence 2 Ulrich Lehmann, Johannes Brenig, Michael Schneider

Neural Networks: Architectures and Applications for NLP

kurze Wiederholung der letzten Stunde: Neuronale Netze Dipl.-Inform. Martin Lösch (0721) Dipl.-Inform.

Künstliche Intelligenz im Maschinen- und Anlagenbau Heilsbringer oder Hypebringer?

DOWNLOAD OR READ : MICROSOFT WINDOWS SHAREPOINT SERVICES QUICK SOURCE GUIDE PDF EBOOK EPUB MOBI

Softwareprojektpraktikum Maschinelle Übersetzung

Informatik - Übungsstunde

Mustererkennung. Support Vector Machines. R. Neubecker, WS 2018 / Support Vector Machines

Einfaches Framework für Neuronale Netze

Wahrscheinlichkeitsrechnung und Statistik

FRAGESTUNDE WS 2016/17 QM 2. Dr. Christian Schwarz 1

Entwicklung einer Anwendung zur Erkennung von Täuschungsversuchen

Projekt Maschinelles Lernen WS 06/07

D-BAUG Informatik I. Exercise session: week 1 HS 2018

Learning Linear Ordering Problems for Better Translation

Visual Servoing using Mutual Information

INTELLIGENTE DATENANALYSE IN MATLAB. Evaluation & Exploitation von Modellen

Named Entity Recognition auf Basis von Wortlisten

Transkript:

WP - Lernfähige Systeme, WiSe 2018/19 HAW Hamburg Personenerkennung mithilfe von Yolo (v3) Franek Stark Zusammenfassung Es wurde ein Personenerkennungsystem auf basis des Convolutional Neuronal Nets Yolov3 trainiert. Heraus kam ein Netz mit einer etwas besseren Präzision, aber einem viel niedrigeren Recall, als die von den Yolo-Autoren trainierte Netzvariante. Inhaltsverzeichnis 1 Yolo v3 1 1.1 Idee hinter Yolo........................ 1 Grid Bounding Boxes Anchor Boxes Class Prediction 1.2 Architektur des Netzes................... 3 FCN ResNet FPN 1.3 Training.............................. 4 Loss-Funktion Multiscale-Training 2 Personenerkennung 4 2.1 Daten............................... 5 Anforderungen Dataset Preprocessing 2.2 Training.............................. 6 Anchor Boxes Trainigsparameter Ergebnisse 3 Fazit 7 Literatur 9 Einführung Mein Projekt beschäftigt sich mit einer Personenzählung im Miniaturwunderland in Hamburg. Durch die dortige sehr beengte Umgebung ist es für die Betreiber sehr interessant, Besucherflüsse zu erkennen. Eine beginnende Problemstellung ist dabei das Zählen der Besucher in einem Raum. Dies könnte in einem ersten Ansatz durch einfache Lichtschranken geschehen, jedoch sind diese viel zu ungenau bei großen und verwinkelten Durchgängen. Daher galt es nun im Rahmen dieses Projektes eine Personenzählung mithilfe einer Kamera auf Basis eines Neuronalen Netzes, zu testen. Zu Detection von Objekten gibt es bereits einige Ansätze, aufgrund der Geschwindigkeit und Genauigkeit habe ich mich für den Single Shot Detector Yolo, den er bereits in der Version Yolo v3 gibt entschieden. Im Folgenden führe ich zunächst in die Funktionweise und Architektur des Netzes ein. Danach werde ich meine Trainings- und Testergebnisse präsentieren. 1. Yolo v3 Das Problem der Objekterkennung teilt sich in zwei Probleme auf: Objektdetektion: Ist hier ein Objekt und wo ist es? Objektklassifizierung: Um welches Objekt handelt es sich? In üblichen Ansätzen wurden diese Probleme aufgeteilt behandelt: Ein neuronales Netz oder anderer Algorithmus hat mögliche Objekte gesucht und mit so genannten Region-Proposals umrahmt. Ein anderes Netz, der so genannte Classifier wurde auf diese Regionen angewandt und ermittelte so den Typ des Objektes. In ganz frühen Ansätzen wurde sogar der Classifier mittels Sliding-Window Verfahren auf sich ein dadurch ergebendes Raster des Inputs angewandt. Letzteres ist zur Laufzeit sehr langsam und je nach Windowsize ungenau. Der Ansatz mit den getrennten Detektoren und Klassifikatoren ist darüber hinaus schwer zu trainieren. Daher wurden so genannte Single-Shot-Detektoren entwickelt. Dabei handelt es sich um Netze, welche die Detektion und Klassifizierung in einem Netz abhandeln und somit an Geschwindigkeit, und Einfachheit gewinnen. Eines dieser Netze ist Yolo. Die Autoren haben nach der Vorstellung das Netz und die Trainingsmethoden mehrfach verbessert, so dass es inzwischen in der Versionen Yolov3 vorliegt: 1.1 Idee hinter Yolo 1.1.1 Grid Yolo legt über das Eingangsbild eine Grid und teilt es somit in SxS Cells auf. Diese Cells definieren einen Zuständigkeitsbereich. Objekte, definieren über ihren Mittelpunkt die Zugehörigkeit in eine Cell. 1.1.2 Bounding Boxes Typisch für die Objekterkennung sind die so genannten Bounding Boxes. Diese rechteckigen Kästen umrahmen ein erkanntes Objekt. Aus diesen Boxes lässt sich auch einfach der Mittelpunkt eines Objektes und speziell für Yolo darüber die Zugehörigkeit zu einer Cell. Während des Trainings wird über

Personenerkennung mithilfe von Yolo (v3) 2/10 Abbildung 1. Beispiel eines Eingabebildes mit einer 11x8 Grid. Quelle: Aus [NDR][ndr.de] diese Boxes die Position der Objekte definiert. Wa hrend des Tests sagt eine Cell eine bestimmte Anzahl B Bounding Boxes voraus. (Bei Yolov1 war B = 5.) Die Boxes ko nnen gro ßer als die Cell sein, aber ihr Mittelpunkt muss in der Cell bleiben. Pro Cell ko nnen nur so viele Objekte erkannt werden, wie Bounding Boxes vorrausgesagt werden. 1.1.3 Anchor Boxes Das generieren bzw. vorraussagen dieser Bounding Boxes ist sehr komplex in Yolov1 gab es sehr viele Probleme: Die Boxes haben zwar ein Objekt umrahmt, allerdings passten oftmals die Breite und ho he nicht und die Boxen a hnelten sich stark, obwohl die Objekte verschiedene Seitenverha ltnisse hatten. Daher entschied man sich fu r Anchor Boxes. Diese definieren einen Anker fu r die Bounding Boxes durch eine vorgegebene Breite und Ho he und werden beim Desing des Netzes festgelegt. Die Bounding Boxes berechnen sich aus den Anchor Boxes, indem diese (auch antiproportional) skaliert und verschoben werden: bx = σ (tx ) + cx (1) by = σ (ty ) + cy (2) bw = pw etw bh = ph eth (3) (4) bx und by sind die Koordinaten des Mittelpunktes der resultierenden Bounding Box. cx und cy sind die Koordinaten der oberen linken Ecke der Cell. tx und ty sind die Ausgabewert aus dem Netz fu r die Position relativ zur Zelle. bw und bh sind Breite und Ho he der resultierenden Bounding Box. pw und ph sind Breite und Ho he der Anchor Box. tw und th sind die Ausgabewerte des Netzes zur skalierung des Anchors. Fu r die Position wird σ genutzt, da die Position vom Netz relativ zur Cell angegeben werden soll. Die Funktion ha lt die Werte zwischen 0 und 1. Wobei (0, 0) die linke obere Ecke der Cell und (1, 1) die untere Ecke. Abbildung 2. Die Boundingboxes berechnen sich relativ zur Zelle und ihrem vorgegebenen Anchor. Quelle: Aus [RFa] Fu r die Ho he und Breite wird e genutzt, um die Werte positiv zu halten. Außerdem ist somit der Wert fu r (tw,th ) (0, 0) => (1, 1) also keine skalierung des Anchors. In Yolov3 gibt es je Cell die selben drei Anchor Boxes. Außerdem ist festgelegt, dass aus jeder Anchor Box genau eine Bounding Box generiert wird. Somit gibt es pro Cell B = 3 Bounding Boxes. Wenn die Anchors sich in ihren Seitenverha ltnissen und proportionen unterscheiden wird das Netz dazu gezwungen, Bounding Boxes mit verschiedenen Formen zu generieren. Beim Training wird die Anchor Box mit der ho chsten IOU zum Objekt ausgewa hlt. Auswahl der Anchors Um die bestmo glichen Anchor Boxen fu r den Anwendungsfall zu nutzen, empfiehlt Yolo, diese u ber k-means Clustering zu ermitteln. Dabei werden alle Bounding Boxes der Trainingsdaten geclustert um mo glichst n Boxen zu erhalten, die mo glichst auf jedes Objekt passen. Neben den Koordinaten und der Gro ße hat eine Bounding Box weiterhin den Parameter Confidence Score. Diese gibt an, wie wahrscheinlich es ist, dass diese Box u berhaupt ein Objekt umrahmt und wie genau diese den umrahmt. Gerade bei Objekten, die dich u ber mehrere Cells erstrecken, ist letzteres wichtig. Confidence Score thruth box confidence score = Pr(Ob ject) IOU pred Wenn die Box kein Objekt entha lt dann soll con f idence = 0 sein. Wenn die Box ein Objekt entha lt dann soll con f idence = thruth sein. IOU pred

Personenerkennung mithilfe von Yolo (v3) 3/10 Passend zu den Koordinaten berechnet sich der Confidence Score: Pr(object) Pr(Ob ject) IOU thruth pred ) = σ(t o) (5) Wobei t o die Ausgabe des Netzes ist. 1.1.4 Class Prediction Neben der obigen besprochenen Detection eines Objektes, muss dieses auch Klassifiziert werden. In Yolov3 erhält jede Bounding Box C Class Wahrscheinlichkeiten. Diese Wahrscheinlichkeit sagt voraus, dass es sich bei dem Objekt in dieser Box um eines der jeweiligen Class handelt. Aber nur unter der Bedingung, dass die Box überhaupt ein Objekt enthält: Abbildung 3. Residual Block vs. standard Block Quelle: Aus [Jay] conditional class probability = Pr(Class i Ob ject) Resultierender Tensor Am Ausgang des Detections Layers ergibt sich ein Tensor der Dimension dim = N N [B (4 +C + 1)]. Eine einzelne Bounding Box ist 4 +C + 1 groß. X & y, bereite & höhe, die Class Wahrscheinlichkeiten und der Confidence Score. Zusammen ergibt sich für die Wahrscheinlichkeit eines Objektes einer bestimmten Class in einer Box: class confidence score = box confidence score (6) conditional class probability = [Pr(Ob ject) IOU thruth pred ] [Pr(Class i Ob ject)] (7) = Pr(Class i ) IOU thruth pred (8) 1.2 Architektur des Netzes Wie zu Beginn erklärt, teilt sich das Problem der Objekterkennung in Detektion und Klassifizierung auf. Auch das Neuronale Netz Yolov3 besteht generell aus zwei Teilen: Klassifikation Die ersten 75 Layer sind dem Objektklassifizierungsnetz Darknet-53 entnommen und fungieren als Feature Extractor. Detektion Es folgen 32 Layer, die die eigentliche Detektion übernehmen. Hier werden auch die Bounding Boxes und Class Wahrscheinlichkeiten vorhergesagt. 1.2.1 FCN Yolov3 ist ein Fully Convolutional Network, besteht also nur aus Convolutional Layers. Das macht die Objekterkennung unabhängig von der Größe des Eingangsbildes und schneller. 1.2.2 ResNet Der Feature Extractor Darknet-53 orientiert sich bei seinem Design zum Teil an [HZRS, ResNet]. Dabei handelt es sich um ein so gennantes Residual Neural Network. Neuronale Netze, die für die Bilderkennung eingesetzt werden, bestehen auf Grund der Komplexität eines Bildes, meist aus sehr vielen Layern. Solch tiefe Netze lassen sich jedoch schwer trainieren. Die vorderen Layer werden unteranderem aufgrund Abbildung 4. Aufbau eines FPNs. Links der Bottom-Up-pathway, rechts der Top-Down Pathway und in der Mitte die Lateral Connections. Quelle: aus [LDG + ] des Vanishing/Exploding-Gradient Problems meist kaum oder schlecht trainiert. Das Residual Neural Network führt so genannte Residual Blocks ein. Dies Blöcke bestehen aus mehreren ßtandard Layern. Wenn am Eingang x anliegt, liegt am Ausgang vereinfacht F(x) an, wobei F die Ausgabefunktion der Layer ist. Neu ist nun ein bypass, shortcut genannt, an dem Block aus Layern vorbei. So liegt am Ausgang nun F(x) + x an. Beim Training können nun die vorderen Layer direkter erreicht werden. So können sehr tiefe Netze trainiert werden. 1.2.3 FPN Ein Problem von Yolo in den früheren Versionen, war dass kleine Objekte nicht erkannt wurden. Ein Grund dafür findet sich in der Größe der Feature Maps, auf denen die oben erklärte Bounding-Box-Vorhersage arbeitet: Die Feature Map bzw. die Ausgaben der Convolutional Layer verlieren von Layer zu Layer an Auflösung und damit Detailgrad. Für die Objekterkennung ist es so schwer kleine Objekte noch zu erkennen. Um dem Problem zu entgegnen, nutzt der Detektionsteil von Yolov3 Techniken Funktionsweisen eines in 4 dargestellten Feature Pyramid Network: Die Objektdetektion mit der Vorhersage der Bounding Boxes findet nicht nur am Ende des Netzes, sondern auch an zwei weiteren Stellen statt. An diesen Stellen besitzen die Feature Maps noch eine viel höhere Auflösung, allerdings ist der semantische Wert an diesen Ebenen im Netz noch nicht so hoch. Sonst wäre die

Personenerkennung mithilfe von Yolo (v3) 4/10 weitere Tiefe des Netzes ja überflüssig. Daher werden nicht die Detektions Layer vorne in das Neuronale Netz gehängt. Stattdessen werden mittels shortcut, wie im ResidualBlock aus dem vorderen Schichten des Klassifizierungsteils die hochauflösenden Ausgänge bzw. Feature Maps nach hinten durchgereicht. An diesen hinteren Stellen müssen wiederum die Feature Maps durch Upsampeling vergrößert werden. Dies erhöht zwar nicht die Auflösung, aber macht es möglich, dass die semantisch hochwertigen Features mit in die Bounding Box Prediction einfließen. Durch diese Shortcuts tritt nebenbei auch in diesem Teil von Yolov3 noch der oben erklärte ResidualNet-Effekt auf. In Yolov3 gibt es die Bounding Box Vorhersage also an drei Stellen im Netz. Für jede Ebene sind dabei durch die Auflösungsunterschiede unterschiedliche Anchor Boxes Vorgesehen. Yolov3 hat also 3 3 = 9 verschiedene Anchor Boxes. Aus den verschiedenen Auflösungstufen, den damit verbunden Grid-Cell-Größen ergibt sich eine maximale Bounding Box Zahl von 10.647, die pro Bild vorhergesagt werden kann. 1.3 Training Die Zweiteilung des Netzes in Klassifikation und Detektion spiegelt sich auch im Training des Netzes wieder: Zunächst wird der vordere, klassifizierende Teil des Netzes als herkömmlicher Object Classifier trainiert. Anschließend werden ihm die hinteren Layer, z.b. Fully Connected Layer oder andere Soft Max Layer, entfernt. Anschließend werden an das Netz die Layer zur Detektion angehängt und trainiert. 1.3.1 Loss-Funktion Die Loss Funktion für das Traning setzt sich aus mehreren teilen zusammen: Im Allgemeinen wird der Sum-Quad-Error berechnet. Box Koordinaten s2 i=0 B j=0 λ coord s 2 B i=0 j=0 1 obj i j [(x i ˆx i ) 2 + (y i ŷ i ) 2 ] Dabei ist: λ coord ein Faktor, um den Fehler zu gewichten. iteriert über alle Bounding Boxes aller Zellen. 1obj i j gibt an, ob der Box Predictor j in Zelle i für dieses Objekt verantwortlich ist. Denn hier müssen keine Boxes bestraft werden, falls es eine andere bessere gibt. x i ist der vom Netz vorhergesagte Wert, ˆx i ist der korrekte Wert. Box Seitenverhältnis Für die Strafe für die Größenabweichung berechnet sich analog dazu: λ coord s 2 B i=0 j=0 1 obj i j [ (w i ŵ i ) 2 + ( h i ĥ i ) 2 ] Objektfehler Wenn ein Objekt erkannt wurde, und diese Box auch für das Objekt zuständig wäre: s 2 B i=0 j=0 1 obj i j (C i Ĉ i ) 2 Dabei ist C i der Confidence Score. Allerdngs müssen die false-positives auch bestraft werden: λ noobj s 2 B i=0 j=0 1 nooobj i j (C i Ĉ i ) 2 Da die meiste Zeit Boxen leer bleiben, kann über λ noobj gesteuert werden, wie stark dieser Faktor eingeht. Klassifizierungsfehler Für die Klassifizierungsangaben wird für alle Klassenangabe in jeder Bounding Box folgendermaßen der Fehler berechnet: s 2 B 1 oobj i j i=0 j=0 c Classes (P j (c) ˆP j (c)) 2 Die Wahrscheinlichkeit P j (c) für die Wahrscheinlichkeit der Klasse c in der Box j. Addiert ergeben diese Therme dann gesamten loss. 1.3.2 Multiscale-Training Da es sich bei Yolov3, wie oben angedeutet, um ein Fully Convolutional Net handelt, ist die Eingangsgröße egal. Die kann schon zum Trainingszeitpunkt ausgenutzt werden: Alle 10 Batches wird die Eingangsgröße neu gewählt. So kann das Netz besser lernen, zu generalisieren und später auf Objekten und Bildern verschiedener Größen bessere Ergebnisse erzielen. 2. Personenerkennung Um das oben vorgestellte Netz auf den in der Einleitung dargestellten Anwendungsfall zu adaptieren. Wurde nun das Netz trainiert.

Personenerkennung mithilfe von Yolo (v3) 5/10 Abbildung 5. Die Yolo v3 Network Architektur. Insgesamt drei Bounding-Box-Prediction Ausgaben. Quelle: Aus [Katc] 2.1 Daten 2.1.1 Anforderungen Im Anwendungsfall Personenerkennung im Miniaturwunderland geht es nur um das Erkennen von Personen. Diese treten dort allerdings die meiste Zeit immer als Pulk auf. Teilweise sind nur Köpfe oder Oberkörper einzelner Personen zu erkennen. Je nach Anbringungsort der Kamera kann die Situation verbessert werden: Wird die Kamera beispielsweise auf einen engen Türrahmen gerichtet, zwingt dieser die Personen dazu diesen nicht als Gruppe zu durchqueren. Jedoch zeichnet sich das Miniaturwunderland bzw. das Gebäude, ein alter Kaispeicher in der Hamburger Speicherstadt, vor allem durch Verwinkelungen, große Durchgänge und eine niedrige Deckenhöhe aus. Gerade letzteres erschwert den freien Blick auf alle Personen einer Gruppe. Auch die Tatsache der großen Flächen lässt eigentlich nur einen Anbringungsort der Kamera an der Decke zu. Da aus datenschutz- und aufwandstechnischen Gründen nicht möglich war Trainingsdaten vor Ort aufzuzeichnen, war es nun Ziel einen Trainingsdatensatz zu finden, welcher folgenden Ansprüchen gerecht wird: Hauptsächlich Personen Personen treten Pulkartig auf Der Blickwinkel hauptsächlich von schräg oben 2.1.2 Dataset Gewählt wurde der [SZL + 18, CrowdHuman] Datensatz: CrowdHuman is a benchmark dataset to better evaluate detectors in crowd scenarios. The CrowdHuman dataset is large, rich-annotated and contains high diversity. CrowdHuman contains 15000, 4370 and 5000 images for training, validation, and testing, respectively. There are a total of 470K human instances from train and validation subsets and 23 persons per image, with various kinds of occlusions in the dataset. Each human instance is annotated with a head bounding-box, human visible-region bounding-box and human full-body bounding-box. We hope our dataset will serve as a solid baseline and help promote future research in human detection tasks. 2.1.3 Preprocessing Die Annotation der Bounding Boxes im Datensatz als absolute Werte vor. Yolov3 verlangt jedoch, wie oben beschrieben relative Werte. Außerdem verlangt Yolov3 als Koordinaten der Box den Mittelpunkt, im Datensatz gegeben ist jedoch die obere linke Ecke. Daher mussten diese noch umgerechnet werden: x = (x D + (w D /2))/w I (9) y = (y D + (h D /2))/h I (10) w = w D /w I (11) h = h D /h I (12) x,y,w,h Koordinaten und Größe der berechneten Box. x D,y D,w D,h D Koordinaten und Größe der Box aus dem

Personenerkennung mithilfe von Yolo (v3) 6/10 Datensatz. w I,h I Größe des Bildes Darüber hinaus mussten für das das verwendete Framework noch einige weitere Dateioperationen durchgeführt werden. 2.2 Training Zum Testen und trainieren eignet sich das vom Autor des Netztes implementierte Neuronale-Netz-Framework [Pjra, darknet]. Außerdem gibt es für einige tools noch eine Verbesserung [Ale, als Github-Fork]. Es ist in C implementiert und unterstüzt CUDA, um die berechnungen auf NVIDIA-GPUs auszulagern. Leider gab es im Zeitraum meiner Versuche verhäuft Probleme mit der Informatik-Compute-Cloud, so dass ich auf meine heimische NVIDIA GTX 1060 6G ausweichen musste. 2.2.1 Anchor Boxes Für den Anwendungsfall wurden nch obig beschriebenem Verfahren, die in 6 dargestellten, Anchor Boxes errechnet. Diese unterscheiden sich von den aus generelleren Daten errechneten, vorgegebenen Anchor Boxes, dargestellt in 7 stark. Alle Boxen sind hochkant, darüber hinaus sind die meisten sehr schmal. Dies ist natürlich durch die Statur des Menschen hervorgerufen. Gut sind aber auch einzelne kleine, fast quadratische Boxen zu erkennen, die zum Beispiel bei nur sichtbarem Kopf genutzt werden. Abbildung 6. Die mittels Clustering ermittelten Anchor Boxes 2.2.2 Trainigsparameter Für das obige Setup gibt es eine Objektklasse C = 1, dementsprechend hat der Outputensor an den drei Detektionslayern jeweils eine Dimension von: N N B (4 +C + 1) (13) = N N 3 (4 + 1 + 1) (14) = N N 3 (6) (15) = N N 18 (16) Außerdem wurde eine vortrainierte Variante des Objektklassifizierungsnetz Darknet-53 werwendet. Diese ist bereits auf Objekten des Datensatzes MS COCO trainiert. Der Objektklassifizierer wurde dann um die Detektions-Layer erweitert. Diese wurden zufällig belegt und anschließen trainiert. Trainiert wurde mit der empfohlenen Batchsize von 64. Abbildung 7. Einige der durch die Entwickler von Yolov3 auf allgemeineren Daten errechneten Anchor Boxes. Quelle: Aus [RFa]

Personenerkennung mithilfe von Yolo (v3) 7/10 Wie im [RFa, Volov2 Paper] empfohlen, wurden desweiteren mit folgenden Parametern trainiert: Anfangsgröße der Bilder von 416 416, welche alle 100 Batches zufällig skaliert wird. 100 80 60 While Validating map avgiou Konstante Learn-Rate von 0.001, die erst bei 9000 Batches verringert wird. percent 40 20 Alle 100 Batches werden die Weights zwischengespeichert. Die Eingangsbilder werden zufällig skaliert, verschoben und die Farbwerte und Helligkeit wird zufällig verändert. Auf Grund der oben angesprochenen geringen Rechenstärke, konnten die Batches nur in Mini-Batches der Größe 2 aufgeteilt werden. 2.2.3 Ergebnisse Training Das Training lief 8000 iterationen, also 125 Batches. Der durchschnittliche Loss verringerte sich nach den ersten 2000 von über 20.000 auf ungefähr 5.5. Dort pendelte er sich für die nächsten 6000 Iterationen ein. While Training Average Loss 500 400 300 200 100 0 0 2,000 4,000 6,000 8,000 Iteration average Lost Validierung Etwa alle 4 Batches wurden das Netz gegen die Validierungsdaten getestet, wobei sich folgende Werte ergaben: 0 0 2,000 4,000 6,000 8,000 Iteration Gut zu erkennen, dass hier die Gefahr eines Overfittings besteht. Während die Trainingslost noch leicht sinkt und sich somit verbessert, verschlechtern sich ab ungefähr 7000 Iterationen die Werte für die durchschnittliche Präzision und die Genauigkeit der Boxen. Test Um einen Vergleich zwischen dem durch mir trainierten und dem Yolov3-standard-trainierten Netz ziehen zu könne, und obige Werte einordnen zu könne. Wurden beide Netze einmal auf ein Bild aus dem Miniaturwunderland angewendet. Jede Bounding Box ist, wie oben mehrfach erklärt, mit einem Wahrscheinlichkeit versehen, dass in ihr ein Objekt für eine Klasse liegt. Standardweise werden in Yolo nur Objekte mit einer Wahrscheinlichkeit x >= 0.25 angezeigt. Für diesen Wert zeigte mein nach 7000 Iterationen (der höchsten Stelle im Graphen) trainiertes Netz keine Ausgabe. Das vom Yolov3-Autor auf dem MSCOCO-Datensatz trainierte Netz, welches 80 verschiedenen Klassen kennt zeigte die Ausgabe in 9. Mein trainiertes Netz zeigt die beste Ausgabe bei ungefähr Iterationen = 2500 (Das erste Maximum im Graphen), zu sehen in Abbildung 8. - Ein klarer Fall von Overfitting. Dennoch schlägt sich das MS-Coco-Netz besser. Dem sei jedoch hinzuzufügen, dass bei niedrigeren Schwellwerten der Box-Wahrscheinlichkeit mein trainiertes Netz führt: Es erkennt bei 10 alle Personen und zwar nur diese. Das Coco-Netz hat bei solchen Werten viele false-positives. 3. Fazit Abschließend ist also zu bemerken, dass auf den ersten Blick das von den Machern von Yolo trainierte Netz das bessereïst. Allerdings sind in den Dokumentationen zu Yolo einige Punkte offen geblieben. Es gibt einige Blog-Einträge, die über weitere Parameter und Layer berichten, die während des Trainings gesetzt bzw. verändert werden um noch bessere

Personenerkennung mithilfe von Yolo (v3) 8/10 Ergebnisse zu erzielen. Abbildung 8. Die Ausgabe meines trainierten Netzes bei Iteration2500. Abbildung 9. Die Ausgabe des vom Autor yon Yolov3 trainierten Netzes.

Personenerkennung mithilfe von Yolo (v3) 9/10 [Ale] Literatur AlexeyAB. Alexeyab/darknet: Windows and linux version of darknet yolo v3 & v2 neural networks for object detection (tensor cores are used). https:// github.com/alexeyab/darknet. (Accessed on 03/02/2019). [Bou] Christopher Bourez. Bounding box object detectors: understanding yolo, you look only once. http://christopher5106.github. io/object/detectors/2017/08/10/ bounding-box-object-detectorsunderstanding-yolo.html. [Des] Adit Deshpande. A beginner s guide to understanding convolutional neural networks adit deshpande cs undergrad at ucla ( 19). https://adeshpande3. github.io/adeshpande3.github.io/a- Beginner s-guide-to-understanding- Convolutional-Neural-Networks/. [ea] enrique a. Object detection with yolo: implementations and how to use them. https://medium. com/@monocasero/object-detectionwith-yolo-implementations-and-howto-use-them-5da928356035. [Hsi] Liang-Chi Hsieh. Yolo: A very simple tutorial liang-chi hsieh medium. https://medium.com/@viirya/yolo-avery-simple-tutorial-8d573a303480. [Huia] Jonathan Hui. Real-time object detection with yolo, yolov2 and now yolov3. https: //medium.com/@jonathan_hui/realtime-object-detection-with-yoloyolov2-28b1b93e2088. [Huib] Jonathan Hui. Real-time object detection with yolo, yolov2 and now yolov3. https: //medium.com/@jonathan_hui/realtime-object-detection-with-yoloyolov2-28b1b93e2088. [Huic] Jonathan Hui. Understanding feature pyramid networks for object detection (fpn). https://medium.com/@jonathan_hui/ understanding-feature-pyramid- networks-for-object-detection-fpn- 45b227b9106c. [HZRS] Kaiming He, Xiangyu Zhang, Shaoqing Ren, and Jian Sun. Deep residual learning for image recognition. [Jad] Vijay Jadhav. Yolo for detection of bounding boxes - tensorflow kaggle. https://www.kaggle. com/vijaybj/yolo-for-detectionof-bounding-boxes-tensorflow/code. [Jay] Prakash Jay. Understanding and implementing architectures of resnet and resnext for state-of-the-art image.... https://medium. com/@14prakash/understanding-andimplementing-architectures-ofresnet-and-resnext-for-state-ofthe-art-image-cf51669e1624. (Accessed on 03/02/2019). [Kapa] Divakar Kapil. Yolo v1 : Part 1 escapades in machine learning medium. https://medium.com/adventures- with-deep-learning/yolo-v1-part-1- cfb47135f81f. [Kapb] Divakar Kapil. Yolo v1: Part 2 divakar kapil medium. https://medium.com/@divakar_ 239/yolo-v1-part-2-bfc686ae5560. [Kata] [Katb] Ayoosh Kathuria. How to implement a yolo (v3) object detector from scratch in pytorch: Part 1. https://www.kdnuggets.com/2018/05/ implement-yolo-v3-object-detectorpytorch-part-1.html. Ayoosh Kathuria. How to implement a yolo (v3) object detector from scratch in pytorch: Part 2. https://blog.paperspace.com/howto-implement-a-yolo-v3-objectdetector-from-scratch-in-pytorchpart-2/. [Katc] Ayoosh Kathuria. What s new in yolo v3? towards data science. https: //towardsdatascience.com/yolov3-object-detection-53fb7d3bfe6b. [LCY] [LDG + ] Min Lin, Qiang Chen, and Shuicheng Yan. Network in network. Tsung-Yi Lin, Piotr Dollár, Ross Girshick, Kaiming He, Bharath Hariharan, and Serge Belongie. Feature pyramid networks for object detection. [Mur] Manivannan Murugavel. How to train yolov3 to detect custom objects manivannan murugavel medium. https: //medium.com/@manivannan_data/howto-train-yolov3-to-detect-customobjects-ccbcafeb13d2. [NDR] NDR. miniaturwunderland.jpg. https: //www.ndr.de/ratgeber/reise/

Personenerkennung mithilfe von Yolo (v3) 10/10 [Pjra] [Pjrb] [Pra] [RDGF] hamburg/miniaturwunderland113_vvierspaltig.jpg. 03/02/2019). Pjreddie. pjreddie/darknet: Convolutional neural networks. https://github.com/pjreddie/ darknet. Pjreddie. Yolo: Real-time object detection. https: //pjreddie.com/darknet/yolo/. (Accessed on Aaditya Prakash. One by one [ 1 x 1 ] convolution - counter-intuitively useful aaditya prakash (adi) random musings of a deep learning grad student. https://iamaaditya.github.io/2016/ 03/one-by-one-convolution/. (Accessed on Joseph Redmon, Santosh Divvala, Ross Girshick, and Ali Farhadi. You only look once: Unified, realtime object detection. [Red16] Joseph Redmon. Darknet: Open source neural networks in c. http://pjreddie.com/ darknet/, 2013 2016. [RFa] [RFb] [SLJ + ] Joseph Redmon and Ali Farhadi. Yolo9000: Better, faster, stronger. Joseph Redmon and Ali Farhadi. Yolov3: An incremental improvement. Christian Szegedy, Wei Liu, Yangqing Jia, Pierre Sermanet, Scott Reed, Dragomir Anguelov, Dumitru Erhan, Vincent Vanhoucke, and Andrew Rabinovich. Going deeper with convolutions. [SZL + 18] Shuai Shao, Zijian Zhao, Boxun Li, Tete Xiao, Gang Yu, Xiangyu Zhang, and Jian Sun. Crowdhuman: A benchmark for detecting human in a crowd. arxiv preprint arxiv:1805.00123, 2018.