Top Banner
Igor Markov Face Detection and Classification on Mobile Devices
25

Igor Markov Face Detection and Classification on Mobile Devices.

Dec 14, 2015

Download

Documents

Whitney Caple
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Igor Markov Face Detection and Classification on Mobile Devices.

Igor Markov

Face Detection and Classification on Mobile

Devices

Page 2: Igor Markov Face Detection and Classification on Mobile Devices.

2

AgendaIntroductionAlgorithmsThe projectFree frameworks

2

Page 3: Igor Markov Face Detection and Classification on Mobile Devices.

3

What is face detection for?Camera focusingTagging faces on photosMarketing studiesSurveillanceSpecial effects (Augmented Reality)Robotics

3

Page 4: Igor Markov Face Detection and Classification on Mobile Devices.

4

On mobile devices?The same thing.

4

Page 5: Igor Markov Face Detection and Classification on Mobile Devices.

5

Face classificationGenderAgeEmotionEthnic group

5

Page 6: Igor Markov Face Detection and Classification on Mobile Devices.

6

Face trackingIs this the same person in the next video frame?

6

Page 7: Igor Markov Face Detection and Classification on Mobile Devices.

7

Traditional algorithmsSearch for eyes, nose, mouth, etcEstimate relative positions of these points... or, comparison with templates

EigenfacesLinear Discriminate AnalysisElastic Bunch Graph MatchingMultilinear Subspace LearningDynamic link matching

7

Page 8: Igor Markov Face Detection and Classification on Mobile Devices.

8

Proposed in 2001 by Paul Viola and Michael JonesReal-time enoughA face can be rotated by angle up to 30°Good for embedded solutionsLearning is rather slow

8

Viola–Jones Object Detection Framework

Page 9: Igor Markov Face Detection and Classification on Mobile Devices.

9

Sub-windowSize is 24×24Moves through all possible positions

9

Page 10: Igor Markov Face Detection and Classification on Mobile Devices.

10

The light part is addedThe dark part is subtracted

10

Haar-like features

Page 11: Igor Markov Face Detection and Classification on Mobile Devices.

11

Haar Feature Example

11

Page 12: Igor Markov Face Detection and Classification on Mobile Devices.

12

Integral Image

12

Page 13: Igor Markov Face Detection and Classification on Mobile Devices.

13

Classifiers Cascade

13

Page 14: Igor Markov Face Detection and Classification on Mobile Devices.

14

Learning: Photo SetAt&T FacedatabaseYale Facedatabase AExtended Yale Facedatabase BFERET

14

Page 15: Igor Markov Face Detection and Classification on Mobile Devices.

15

Machine LearningBoostingAdaBoost

15

Page 16: Igor Markov Face Detection and Classification on Mobile Devices.

16

ClassificationLearning: AdaBoostClassifications: Local Binary Patterns, EigenFaces, etc.

16

?

?

Page 17: Igor Markov Face Detection and Classification on Mobile Devices.

17

Use CaseFace detection and classification for marketing studyVideo stream from a camera, real timeUsing Android phoneHigh performance

17

Page 18: Igor Markov Face Detection and Classification on Mobile Devices.

18

Generic scheme on AndroidScheme - camera, native, overlays

18

Page 19: Igor Markov Face Detection and Classification on Mobile Devices.

19

OptimizationsAvoid large data copyingdouble ➙ intEarly exit from loopsParallelizationSIMD

19

Page 20: Igor Markov Face Detection and Classification on Mobile Devices.

20

Parallel DetectionThread pool (max threads = CPU cores number)For each possible sub-window size:

Put a task to the thread poolWait for results

20

Page 21: Igor Markov Face Detection and Classification on Mobile Devices.

21

NEON code

21

loop: vldmia %0!, {%%d8, %%d9} //q4 <- data[i][j] vldmia %3!, {%%d28, %%d29} //q14 <- integral_fi[i-1][j] vldmia %5!, {%%d30, %%d31} //q15 <- sq_integral_fi[i-1][j] vmul.f32 %%q5, %%q4, %%q4 //q5 <- data^2 vmov %%d1, %%d8 // q0[2-3] <- q4[0-1] vadd.f32 %%q4, %%q0 vext.32 %%d3, %%d8, %%d9, #1 // q1[2-3] <- q4[1-2] vmov %%s5, %%s16 // q1[1] <- q4[0] vadd.f32 %%q4, %%q1 //data is summed in q4 vmov %%d5, %%d10 // q2[2-3] <- q5[0-1] vadd.f32 %%q5, %%q2 vext.32 %%d7, %%d10, %%d11, #1 // q3[2-3] <- q5[1-2] vmov %%s13, %%s20 // q3[1] <- q5[0]

Page 22: Igor Markov Face Detection and Classification on Mobile Devices.

22

Public FrameworksOpenCV (FaceRecognizer)Android SDK (Camera Face Listener)iOS SDK (Core Image)Lots of them (facedetection.com)

22

Page 23: Igor Markov Face Detection and Classification on Mobile Devices.

23

OpenCVOpen sourceC++Many useful algorithms and primitives

23

FaceRecognizer model = createEigenFaceRecognizer();

....

int predictedLabel = model->predict(testSample);

Page 24: Igor Markov Face Detection and Classification on Mobile Devices.

24

Android SDK Face Detection

24

class MyFaceDetectionListener implements Camera.FaceDetectionListener {

    public void onFaceDetection(Face[] faces, Camera camera) { int i = 0;

        for (Face face : faces) {

            Log.i("FD", "face detected: " + (++i) + " of " + faces.length +                    "X: " + faces.rect.centerX() +                    "Y: " + faces.rect.centerY());

        }    }}

Page 25: Igor Markov Face Detection and Classification on Mobile Devices.

25

iOS Core Image

25

CIContext *context = [CIContext contextWithOptions:nil];

NSDictionary *opts = @{ CIDetectorAccuracy : CIDetectorAccuracyHigh };

CIDetector *detector = [CIDetector detectorOfType:CIDetectorTypeFace context:context options:opts]; opts = @{ CIDetectorImageOrientation : [[myImage properties] valueForKey:kCGImagePropertyOrientation] };

NSArray *features = [detector featuresInImage:myImage options:opts];