viola-jones gesichtserkennung mit webgl · viola-jones gesichtserkennung mit webgl tobias groß,...

28
Viola-Jones Gesichtserkennung mit WebGL Tobias Groß, Björn Meier Hardware/Software Co-Design, University of Erlangen-Nuremberg 18. Juli 2013

Upload: duongphuc

Post on 30-Jul-2018

228 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Viola-Jones Gesichtserkennung mit WebGL · Viola-Jones Gesichtserkennung mit WebGL Tobias Groß, Björn Meier Hardware/Software Co-Design, University of Erlangen-Nuremberg 18. Juli

Viola-Jones Gesichtserkennung mitWebGL

Tobias Groß, Björn Meier

Hardware/Software Co-Design, University of Erlangen-Nuremberg

18. Juli 2013

Page 2: Viola-Jones Gesichtserkennung mit WebGL · Viola-Jones Gesichtserkennung mit WebGL Tobias Groß, Björn Meier Hardware/Software Co-Design, University of Erlangen-Nuremberg 18. Juli

Outline

Motivation

Viola-JonesFunktionsweiseBlockbewertungIntegralbildPhasen

Implementierung GPUEinschränkungen und Besonderheiten von WebGLImplementierung mit WebGL

EvaluierungBeispieleAuswertungFazit

18. Juli 2013 | Tobias Groß, Björn Meier | Hardware/Software Co-Design | Viola-Jones mit WebGL 2

Page 3: Viola-Jones Gesichtserkennung mit WebGL · Viola-Jones Gesichtserkennung mit WebGL Tobias Groß, Björn Meier Hardware/Software Co-Design, University of Erlangen-Nuremberg 18. Juli

Motivation

Verwendung von Gesichtserkennung:

• Bei der Fotografie (Fokussierung)• Zuordnung von Personen auf Bildern• Automatisierte Überwachung

Herausforderungen:

• Fehlerkennung vermeiden• Laufzeit der Erkennung verringern

Lösungsansatz:

• Viola Jones zur Gesichtserkennung einsetzen• Algorithmen auf der GPU ausführen

18. Juli 2013 | Tobias Groß, Björn Meier | Hardware/Software Co-Design | Viola-Jones mit WebGL 3

Page 4: Viola-Jones Gesichtserkennung mit WebGL · Viola-Jones Gesichtserkennung mit WebGL Tobias Groß, Björn Meier Hardware/Software Co-Design, University of Erlangen-Nuremberg 18. Juli

Outline

Motivation

Viola-JonesFunktionsweiseBlockbewertungIntegralbildPhasen

Implementierung GPUEinschränkungen und Besonderheiten von WebGLImplementierung mit WebGL

EvaluierungBeispieleAuswertungFazit

18. Juli 2013 | Tobias Groß, Björn Meier | Hardware/Software Co-Design | Viola-Jones mit WebGL 4

Page 5: Viola-Jones Gesichtserkennung mit WebGL · Viola-Jones Gesichtserkennung mit WebGL Tobias Groß, Björn Meier Hardware/Software Co-Design, University of Erlangen-Nuremberg 18. Juli

Funktionsweise

• Bild wird blockweise untersucht(hier Blockgröße von 24x24px)• Dabei ist jeder Block ein

potentielles Gesicht• Um Gesichter unterschiedlicher

Größe zu erkennen, wird das Bildskaliert.• Blockgröße bleibt konstant!

TrainingTrainingsalgorithmus ermittelt Wertefür Schwellenwerte, Filter, etc.Hier wurde keineTrainingsalgorithmus implementiert.Es wurden schon berechnete Werteverwendet.

18. Juli 2013 | Tobias Groß, Björn Meier | Hardware/Software Co-Design | Viola-Jones mit WebGL 5

Page 6: Viola-Jones Gesichtserkennung mit WebGL · Viola-Jones Gesichtserkennung mit WebGL Tobias Groß, Björn Meier Hardware/Software Co-Design, University of Erlangen-Nuremberg 18. Juli

Skalierung

while image_size >= block_window_size docalculate integralimagefor all stages do

stage_sum = 0for all filter in stage do

filter_value = calculate filterif filter_value > filter_threshold then

stage_sum += filter_alpha2else

stage_sum += filter_alpha1if stage_sum < stage_threshold

face = -1break

elseface = 1

if face == 1face detected

scale image

18. Juli 2013 | Tobias Groß, Björn Meier | Hardware/Software Co-Design | Viola-Jones mit WebGL 6

Page 7: Viola-Jones Gesichtserkennung mit WebGL · Viola-Jones Gesichtserkennung mit WebGL Tobias Groß, Björn Meier Hardware/Software Co-Design, University of Erlangen-Nuremberg 18. Juli

Blockbewertung

Haar Filter• Bestehen aus 2 bis 4 Flächen• Flächenwert berechnet sich aus

Pixelwertsumme• Wert eines Filters berechnet sich,

indem die hellen Flächen vonden dunklen subtrahiert werden• Filter wird positiv gewertet, wenn

festgelegter Schwellenwertüberschritten ist• Haar Filter ermöglichen es,

entweder Kanten oderHelligkeitsunterschiede zuerkennen

18. Juli 2013 | Tobias Groß, Björn Meier | Hardware/Software Co-Design | Viola-Jones mit WebGL 7

Page 8: Viola-Jones Gesichtserkennung mit WebGL · Viola-Jones Gesichtserkennung mit WebGL Tobias Groß, Björn Meier Hardware/Software Co-Design, University of Erlangen-Nuremberg 18. Juli

Integralbild

Wofür wird es benötigt?

• Ermöglicht die Berechnung der Pixelwertsumme einer Fläche durch dieBetrachtung von 4 Werten• Dies ist deutlich performanter, als das Aufsummieren aller Pixel einer

Teilfläche

Aufbau:

Abbildung: Quelle: http://www12.informatik.uni-erlangen.de/edu/map/ss11/talks/violajones.pdf18. Juli 2013 | Tobias Groß, Björn Meier | Hardware/Software Co-Design | Viola-Jones mit WebGL 8

Page 9: Viola-Jones Gesichtserkennung mit WebGL · Viola-Jones Gesichtserkennung mit WebGL Tobias Groß, Björn Meier Hardware/Software Co-Design, University of Erlangen-Nuremberg 18. Juli

Integralbild

Pixelwertsummenberechnung

Benötigte Fläche S:

S = B−C−D+A18. Juli 2013 | Tobias Groß, Björn Meier | Hardware/Software Co-Design | Viola-Jones mit WebGL 9

Page 10: Viola-Jones Gesichtserkennung mit WebGL · Viola-Jones Gesichtserkennung mit WebGL Tobias Groß, Björn Meier Hardware/Software Co-Design, University of Erlangen-Nuremberg 18. Juli

Filterberechnung

while image_size >= block_window_size docalculate integralimagefor all stages do

stage_sum = 0for all filter in stage do

filter_value = calculate filterif filter_value > filter_threshold thenstage_sum += filter_alpha2

elsestage_sum += filter_alpha1

if stage_sum < stage_thresholdface = -1break

elseface = 1

if face == 1face detected

scale image

18. Juli 2013 | Tobias Groß, Björn Meier | Hardware/Software Co-Design | Viola-Jones mit WebGL 10

Page 11: Viola-Jones Gesichtserkennung mit WebGL · Viola-Jones Gesichtserkennung mit WebGL Tobias Groß, Björn Meier Hardware/Software Co-Design, University of Erlangen-Nuremberg 18. Juli

Phasen

• Eine Phase gruppiert mehrere Haar Filter• Jeder Filter wird hierbei gewichtet (je ein Wert für positive/negative

Erkennung)• Summe dieser Werte ergibt den Wert der Phase• Dieser Wert wird mit dem Schwellenwert verglichen und entscheidet über die

positive oder negative Erkennung eines Gesichts in einem Block• Wird eine Phase als negativ gewertet, wird der gesamte Block sofort

verworfen• Bei positiver Bewertung wird die nächste Phase ausgeführt• Werden alle Phasen positiv durchlaufen, befindet sich ein Gesicht im

aktuellen Block

18. Juli 2013 | Tobias Groß, Björn Meier | Hardware/Software Co-Design | Viola-Jones mit WebGL 11

Page 12: Viola-Jones Gesichtserkennung mit WebGL · Viola-Jones Gesichtserkennung mit WebGL Tobias Groß, Björn Meier Hardware/Software Co-Design, University of Erlangen-Nuremberg 18. Juli

Phasen

18. Juli 2013 | Tobias Groß, Björn Meier | Hardware/Software Co-Design | Viola-Jones mit WebGL 12

Page 13: Viola-Jones Gesichtserkennung mit WebGL · Viola-Jones Gesichtserkennung mit WebGL Tobias Groß, Björn Meier Hardware/Software Co-Design, University of Erlangen-Nuremberg 18. Juli

Phasen

while image_size >= block_window_size docalculate integralimagefor all stages do

stage_sum = 0for all filter in stage do

filter_value = calculate filterif filter_value > filter_threshold then

stage_sum += filter_alpha2else

stage_sum += filter_alpha1if stage_sum < stage_thresholdface = -1break

elseface = 1

if face == 1face detected

scale image

18. Juli 2013 | Tobias Groß, Björn Meier | Hardware/Software Co-Design | Viola-Jones mit WebGL 13

Page 14: Viola-Jones Gesichtserkennung mit WebGL · Viola-Jones Gesichtserkennung mit WebGL Tobias Groß, Björn Meier Hardware/Software Co-Design, University of Erlangen-Nuremberg 18. Juli

Outline

Motivation

Viola-JonesFunktionsweiseBlockbewertungIntegralbildPhasen

Implementierung GPUEinschränkungen und Besonderheiten von WebGLImplementierung mit WebGL

EvaluierungBeispieleAuswertungFazit

18. Juli 2013 | Tobias Groß, Björn Meier | Hardware/Software Co-Design | Viola-Jones mit WebGL 14

Page 15: Viola-Jones Gesichtserkennung mit WebGL · Viola-Jones Gesichtserkennung mit WebGL Tobias Groß, Björn Meier Hardware/Software Co-Design, University of Erlangen-Nuremberg 18. Juli

Einschränkungen und Besonderheiten von WebGL

Frei lesbarer SpeicherZusätzliche Daten werden im Shader durch Texturpuffer bereitgestellt.Diese bestehen jedoch aus vec4 (4 Bytes). Werte, die nicht in ein Byte passen,müssen geteilt und in den 4 Bytes kodiert werden.Lesen vom Texturpuffer und Schreiben von Ergebnissen erzeugt durch dieKodierung/Dekodierung zusätzlichen Overhead.

Undefiniertes Verhalten• Browser verhalten sich nicht gleich• Genauigkeit highp wird nicht von jeder/m Hardware/Treiber unterstützt⇒

Überlauf

18. Juli 2013 | Tobias Groß, Björn Meier | Hardware/Software Co-Design | Viola-Jones mit WebGL 15

Page 16: Viola-Jones Gesichtserkennung mit WebGL · Viola-Jones Gesichtserkennung mit WebGL Tobias Groß, Björn Meier Hardware/Software Co-Design, University of Erlangen-Nuremberg 18. Juli

Einschränkungen und Besonderheiten von WebGL

Schleifengrenzen müssen statisch seinProvisorische Lösung:

for (int i = 0; i < 300; ++i) {if (i >= act_num_filter) {

break;}...

}

Keine Bitoperatoren verfügbarDie Bitoperatoren und (&), oder (|), exklusives oder (^), nicht (~), rechts schieben(> >), links schieben (< <) sind nicht verfügbar

multiply 255.0 bug

18. Juli 2013 | Tobias Groß, Björn Meier | Hardware/Software Co-Design | Viola-Jones mit WebGL 16

Page 17: Viola-Jones Gesichtserkennung mit WebGL · Viola-Jones Gesichtserkennung mit WebGL Tobias Groß, Björn Meier Hardware/Software Co-Design, University of Erlangen-Nuremberg 18. Juli

Implementierung mit WebGL

18. Juli 2013 | Tobias Groß, Björn Meier | Hardware/Software Co-Design | Viola-Jones mit WebGL 17

Page 18: Viola-Jones Gesichtserkennung mit WebGL · Viola-Jones Gesichtserkennung mit WebGL Tobias Groß, Björn Meier Hardware/Software Co-Design, University of Erlangen-Nuremberg 18. Juli

Integralberechnung GPU

Zwei Phasen:• Reihenweise Addition• Spaltenweise Addition

Problem:• Es können keine umliegenden

Werte verändert werden.• Für jeden zu ändernden Wert

muss ein Shader aufgerufenwerden.• Jeder Shader muss alle

benötigten Werte berechnen.

⇒ Es werden Werte vielfachberechnet.

18. Juli 2013 | Tobias Groß, Björn Meier | Hardware/Software Co-Design | Viola-Jones mit WebGL 18

Page 19: Viola-Jones Gesichtserkennung mit WebGL · Viola-Jones Gesichtserkennung mit WebGL Tobias Groß, Björn Meier Hardware/Software Co-Design, University of Erlangen-Nuremberg 18. Juli

Parallele Erkennung

Jede Blockposition ist eineeigene Aufgabe:Anzahl Blockpositionen:(Breite−Blockbreite+1)×(Hohe−Blockhohe+1)Jeder Block wird in einem eigenemShader berechnet.

Problem:Die Größe des Speicherbereichs mit den Ergebnissen entspricht der AnzahlBlöcke.Jedoch: gefundene Gesichter � SpeicherbereichDer gesamte Speicherbereich muss zur Auswertung auf den Host kopiertwerden.⇒ unnötige Daten müssen zwischen Host und GPU kopiert werden.

18. Juli 2013 | Tobias Groß, Björn Meier | Hardware/Software Co-Design | Viola-Jones mit WebGL 19

Page 20: Viola-Jones Gesichtserkennung mit WebGL · Viola-Jones Gesichtserkennung mit WebGL Tobias Groß, Björn Meier Hardware/Software Co-Design, University of Erlangen-Nuremberg 18. Juli

Outline

Motivation

Viola-JonesFunktionsweiseBlockbewertungIntegralbildPhasen

Implementierung GPUEinschränkungen und Besonderheiten von WebGLImplementierung mit WebGL

EvaluierungBeispieleAuswertungFazit

18. Juli 2013 | Tobias Groß, Björn Meier | Hardware/Software Co-Design | Viola-Jones mit WebGL 20

Page 21: Viola-Jones Gesichtserkennung mit WebGL · Viola-Jones Gesichtserkennung mit WebGL Tobias Groß, Björn Meier Hardware/Software Co-Design, University of Erlangen-Nuremberg 18. Juli

Beispiele

Hardware:Intel Core i5 CPU 750 @ 2.67GHzATI Radeon HD 5850

Beispiel 1: 1100×750 Pixel

18. Juli 2013 | Tobias Groß, Björn Meier | Hardware/Software Co-Design | Viola-Jones mit WebGL 21

Page 22: Viola-Jones Gesichtserkennung mit WebGL · Viola-Jones Gesichtserkennung mit WebGL Tobias Groß, Björn Meier Hardware/Software Co-Design, University of Erlangen-Nuremberg 18. Juli

CPU: 2609 ms und 307 TrefferS

chrit

t

Inte

gral

Det

ektio

n

Ges

amt

1 147 639 786 ms2 98 480 579 ms3 72 325 397 ms4 52 211 263 ms5 39 147 186 ms6 27 101 128 ms7 14 68 82 ms8 14 46 60 ms9 9 33 42 ms10 6 21 27 ms11 5 14 19 ms12 4 9 13 ms13 3 6 9 ms14 2 3 5 ms15 2 1 3 ms16 2 1 3 ms17 0 1 1 ms18 1 0 1 ms19 1 0 1 ms

GPU: 2175 ms und 277Treffer

Sch

ritt

Hos

t-GP

U

Inte

gral

Det

ektio

n

GP

U-H

ost

Ges

amt

1 253 177 290 35 799 ms2 57 73 227 25 417 ms3 39 47 166 20 295 ms4 28 30 76 18 165 ms5 23 19 39 15 106 ms6 19 13 26 12 80 ms7 13 9 18 9 56 ms8 14 7 20 6 52 ms9 11 5 13 4 37 ms10 8 6 9 4 30 ms11 6 5 21 3 37 ms12 4 5 7 2 20 ms13 2 4 6 2 16 ms14 2 5 3 1 13 ms15 2 4 2 2 10 ms16 2 4 2 1 9 ms17 1 3 3 1 9 ms18 1 3 3 1 9 ms19 1 4 2 1 8 ms

18. Juli 2013 | Tobias Groß, Björn Meier | Hardware/Software Co-Design | Viola-Jones mit WebGL 22

Page 23: Viola-Jones Gesichtserkennung mit WebGL · Viola-Jones Gesichtserkennung mit WebGL Tobias Groß, Björn Meier Hardware/Software Co-Design, University of Erlangen-Nuremberg 18. Juli

Beispiel 2: 600×337 Pixel

18. Juli 2013 | Tobias Groß, Björn Meier | Hardware/Software Co-Design | Viola-Jones mit WebGL 23

Page 24: Viola-Jones Gesichtserkennung mit WebGL · Viola-Jones Gesichtserkennung mit WebGL Tobias Groß, Björn Meier Hardware/Software Co-Design, University of Erlangen-Nuremberg 18. Juli

CPU: 514 ms und 24 Treffer

Sch

ritt

Inte

gral

Det

ektio

n

Ges

amt

1 82 115 197 ms2 29 78 107 ms3 21 48 69 ms4 11 30 41 ms5 8 20 28 ms6 6 13 19 ms7 5 9 14 ms8 4 6 10 ms9 2 4 6 ms10 1 3 4 ms11 1 9 10 ms12 1 2 3 ms13 1 2 3 ms14 0 1 1 ms15 0 0 0 ms

GPU: 640 ms und 25 Treffer

Sch

ritt

Hos

t-GP

U

Inte

gral

Det

ektio

n

GP

U-H

ost

Ges

amt

1 47 54 85 21 216 ms2 24 17 32 12 95 ms3 14 9 17 7 55 ms4 15 8 15 6 50 ms5 12 6 8 4 35 ms6 9 6 6 3 27 ms7 6 5 4 3 21 ms8 5 5 4 2 18 ms9 4 4 4 1 15 ms10 2 5 4 1 13 ms11 2 4 14 2 23 ms12 2 4 15 1 22 ms13 1 4 14 1 21 ms14 1 4 13 1 20 ms15 0 4 1 1 7 ms

18. Juli 2013 | Tobias Groß, Björn Meier | Hardware/Software Co-Design | Viola-Jones mit WebGL 24

Page 25: Viola-Jones Gesichtserkennung mit WebGL · Viola-Jones Gesichtserkennung mit WebGL Tobias Groß, Björn Meier Hardware/Software Co-Design, University of Erlangen-Nuremberg 18. Juli

Beispiel 3: 3630×2230 Pixel

18. Juli 2013 | Tobias Groß, Björn Meier | Hardware/Software Co-Design | Viola-Jones mit WebGL 25

Page 26: Viola-Jones Gesichtserkennung mit WebGL · Viola-Jones Gesichtserkennung mit WebGL Tobias Groß, Björn Meier Hardware/Software Co-Design, University of Erlangen-Nuremberg 18. Juli

CPU: 25247 ms und 1111Treffer

Sch

ritt

Inte

gral

Det

ektio

n

Ges

amt

1 1165 7130 8295 ms2 811 4717 5528 ms3 588 2944 3532 ms4 443 1910 2353 ms5 290 1342 1632 ms6 197 854 1051 ms7 187 588 775 ms8 109 450 559 ms9 70 369 439 ms10 55 266 321 ms11 42 171 213 ms12 25 97 122 ms13 20 64 84 ms14 15 41 56 ms15 11 31 42 ms16 7 20 27 ms17 5 13 18 ms18 3 8 11 ms19 3 6 9 ms20 2 3 5 ms21 2 2 4 ms22 1 1 2 ms23 1 1 2 ms24 1 0 1 ms25 1 0 1 ms

GPU: 18131 ms und 1097Treffer

Sch

ritt

Hos

t-GP

U

Inte

gral

Det

ektio

n

GP

U-H

ost

Ges

amt

1 1721 3780 779 421 7140 ms2 573 1715 591 221 3257 ms3 516 1084 484 155 2349 ms4 284 657 368 83 1470 ms5 198 392 272 63 989 ms6 137 231 218 49 679 ms7 95 139 216 43 523 ms8 66 85 211 31 417 ms9 48 52 187 22 332 ms10 35 31 154 19 248 ms11 26 21 93 18 165 ms12 19 14 51 13 104 ms13 15 10 18 9 61 ms14 14 7 18 7 50 ms15 11 6 14 4 39 ms16 9 6 8 4 30 ms17 7 5 7 2 25 ms18 4 6 4 2 19 ms19 4 4 4 2 15 ms20 2 5 4 2 15 ms21 2 5 2 2 12 ms22 1 4 3 1 10 ms23 1 5 2 1 10 ms24 1 5 2 1 9 ms25 0 4 3 1 9 ms

18. Juli 2013 | Tobias Groß, Björn Meier | Hardware/Software Co-Design | Viola-Jones mit WebGL 26

Page 27: Viola-Jones Gesichtserkennung mit WebGL · Viola-Jones Gesichtserkennung mit WebGL Tobias Groß, Björn Meier Hardware/Software Co-Design, University of Erlangen-Nuremberg 18. Juli

Auswertung

Speedup S:

0.8 < S < 1.5

Identifizierte Probleme• Host - GPU Kopieroperationen• Größe der Speicherbereiche für Ergebnisse• Umrechnung von 4 Byte Vektoren in Integer und umgekehrt• Um Werte zu schreiben muss ein Shader aufgerufen werden

Verbesserungsmöglichkeiten

• Bildskalierung auf der GPU→ ab Schritt 2 entfällt die Kopieroperation auf dieGPU• Block skalieren statt dem Bild→ erneute Integralberechnung entfällt

18. Juli 2013 | Tobias Groß, Björn Meier | Hardware/Software Co-Design | Viola-Jones mit WebGL 27

Page 28: Viola-Jones Gesichtserkennung mit WebGL · Viola-Jones Gesichtserkennung mit WebGL Tobias Groß, Björn Meier Hardware/Software Co-Design, University of Erlangen-Nuremberg 18. Juli

References

[1] 5KK73 GPU 2012.5kk73 gpu assignment 2012, 2012.[Online; accessed 19-Jul-2013].

[2] Paul Viola and Michael Jones.Robust real-time face detection.International Journal of Computer Vision, 57:137–154, 2004.

18. Juli 2013 | Tobias Groß, Björn Meier | Hardware/Software Co-Design | Viola-Jones mit WebGL 28