facial analysis techniques for pythonista (and beyond!) - pycon8

38
clda.co/pycon8facialanalysis Facial Analysis Techniques for Pythonista (and beyond!) 4/9/2017 PYCON OTTO @ Florence

Upload: alex-casalboni

Post on 21-Apr-2017

99 views

Category:

Engineering


0 download

TRANSCRIPT

Page 1: Facial Analysis Techniques for Pythonista (and beyond!) - PyCon8

clda.co/pycon8-­‐facial-­‐analysis

Facial  Analysis  Techniques  for  Pythonista

(and  beyond!)

4/9/2017 PYCON  OTTO  @  Florence

Page 2: Facial Analysis Techniques for Pythonista (and beyond!) - PyCon8

About  Me

@alex_casalboni

clda.co/pycon8-­‐facial-­‐analysis

Computer  Science  Background

Master  in  Sound  &  Music  Engineering

Sr.  SoDware  Engineer  &  Web  Developer

Cloud  Evangelist  @  Cloud  Academy

Page 3: Facial Analysis Techniques for Pythonista (and beyond!) - PyCon8

Agenda

What  is  a  Face?

Problem  decomposiLon

AlternaLves  to  DIY

clda.co/pycon8-­‐facial-­‐analysis

Page 4: Facial Analysis Techniques for Pythonista (and beyond!) - PyCon8

What  is  a  Face?

You  thought  you  knew,  but  you  didn’t…  ?

clda.co/pycon8-­‐facial-­‐analysis

Page 5: Facial Analysis Techniques for Pythonista (and beyond!) - PyCon8

About  “Normal”  Faces

clda.co/pycon8-­‐facial-­‐analysis

Page 6: Facial Analysis Techniques for Pythonista (and beyond!) - PyCon8

What  about  rotaCon  invariance?

clda.co/pycon8-­‐facial-­‐analysis

Page 7: Facial Analysis Techniques for Pythonista (and beyond!) - PyCon8

What  about  animals?

clda.co/pycon8-­‐facial-­‐analysis

Page 8: Facial Analysis Techniques for Pythonista (and beyond!) - PyCon8

What  about  painCngs?

clda.co/pycon8-­‐facial-­‐analysis

Page 9: Facial Analysis Techniques for Pythonista (and beyond!) - PyCon8

What  about  masks?

clda.co/pycon8-­‐facial-­‐analysis

Page 10: Facial Analysis Techniques for Pythonista (and beyond!) - PyCon8

What  about  smilies?

clda.co/pycon8-­‐facial-­‐analysis

Page 11: Facial Analysis Techniques for Pythonista (and beyond!) - PyCon8

Problem  decomposiLon

What  are  the  main  building  blocks  for  facial  analysis?

clda.co/pycon8-­‐facial-­‐analysis

Page 12: Facial Analysis Techniques for Pythonista (and beyond!) - PyCon8

1.  Face  DetecLon

clda.co/pycon8-­‐facial-­‐analysis

Page 13: Facial Analysis Techniques for Pythonista (and beyond!) - PyCon8

Face  DetecCon

clda.co/pycon8-­‐facial-­‐analysis

Input:  1  image  &  unknown  context

Goal:  finding  faces  (how  many?)

Output:  lists  of  coordinates

Difficulty:  preUy  easy

Page 14: Facial Analysis Techniques for Pythonista (and beyond!) - PyCon8

Face  DetecCon  Results

clda.co/pycon8-­‐facial-­‐analysis

Page 15: Facial Analysis Techniques for Pythonista (and beyond!) - PyCon8

Face  DetecCon  Techniques

clda.co/pycon8-­‐facial-­‐analysis

Algorithmical  techniques

Not  too  much  “intelligence”

Real-­‐Lme  tracking

Page 16: Facial Analysis Techniques for Pythonista (and beyond!) - PyCon8

Face  DetecCon  Techniques  -­‐  HOG

clda.co/pycon8-­‐facial-­‐analysis

Histogram  of  Oriented  Gradients

Page 17: Facial Analysis Techniques for Pythonista (and beyond!) - PyCon8

HOG  w/  OpenCV  and  dlib

clda.co/pycon8-­‐facial-­‐analysis

*  Vectors  allow  for  more  advanced  analysis  (see  hUp://www.paulvangent.com/2016/08/05/emoLon-­‐recogniLon-­‐using-­‐facial-­‐landmarks/)*  That  .dat  file  is  100+MB

Page 18: Facial Analysis Techniques for Pythonista (and beyond!) - PyCon8

Face  DetecCon  Techniques  -­‐  Haar  Cascades

clda.co/pycon8-­‐facial-­‐analysis

Haar  Feature-­‐based  Cascade  Classifiers

Page 19: Facial Analysis Techniques for Pythonista (and beyond!) - PyCon8

Haar  Cascades  w/  OpenCV

clda.co/pycon8-­‐facial-­‐analysis

Page 20: Facial Analysis Techniques for Pythonista (and beyond!) - PyCon8

clda.co/pycon8-­‐facial-­‐analysis

Page 21: Facial Analysis Techniques for Pythonista (and beyond!) - PyCon8

2.  Face  RecogniLon

clda.co/pycon8-­‐facial-­‐analysis

Page 22: Facial Analysis Techniques for Pythonista (and beyond!) - PyCon8

Face  RecogniCon

clda.co/pycon8-­‐facial-­‐analysis

Input:  1  reference  and  1  target  image

Goal:  finding  facial  matches

Output:  lists  of  (potenLal)  matches

Difficulty:  medium

Page 23: Facial Analysis Techniques for Pythonista (and beyond!) - PyCon8

Facial  Encoding

clda.co/pycon8-­‐facial-­‐analysis

Vector  RepresentaLon  (128D)  *

*  could  be  learned  with  DL

Page 24: Facial Analysis Techniques for Pythonista (and beyond!) - PyCon8

Facial  Distance

clda.co/pycon8-­‐facial-­‐analysis

A  and  B  are  the  same  person  if  distance(A,  B)  <  tolerance

Page 25: Facial Analysis Techniques for Pythonista (and beyond!) - PyCon8

Face  Matching  w/  face_recogni2on

clda.co/pycon8-­‐facial-­‐analysis

Page 26: Facial Analysis Techniques for Pythonista (and beyond!) - PyCon8

3.  Facial  Analysis

clda.co/pycon8-­‐facial-­‐analysis

Page 27: Facial Analysis Techniques for Pythonista (and beyond!) - PyCon8

Facial  Analysis

clda.co/pycon8-­‐facial-­‐analysis

Input:  1  detected  face

Goal:  extracLng  high-­‐level  informaLon

Output:  gender,  age,  emoLons,  headwear,  etc.

Difficulty:  preUy  hard

Page 28: Facial Analysis Techniques for Pythonista (and beyond!) - PyCon8

Facial  Analysis

clda.co/pycon8-­‐facial-­‐analysis

ML  Model  (gender)

ML  Model  (emoLons)

ML  Model  (….)

ML  Model  (age)

ML  Model  (headwear)

Page 29: Facial Analysis Techniques for Pythonista (and beyond!) - PyCon8

Facial  Analysis

clda.co/pycon8-­‐facial-­‐analysis

How  many  training  sets?

Parallel  features  extracLon  &  predicLon

Accuracy  is  more  subjecLve  (source/target  audience)

Real-­‐Lme  is  not  guaranteed

Page 30: Facial Analysis Techniques for Pythonista (and beyond!) - PyCon8

AlternaLves  to  DIY

How  about  Facial  Analysis  services?

clda.co/pycon8-­‐facial-­‐analysis

Page 31: Facial Analysis Techniques for Pythonista (and beyond!) - PyCon8

Facial  Analysis  Services

Amazon  RekogniLon

Google  Cloud  Vision

Azure  Face  API

Face++  

Kairos

EmoVu

clda.co/pycon8-­‐facial-­‐analysis

Page 32: Facial Analysis Techniques for Pythonista (and beyond!) - PyCon8

Amazon  RekogniCon  &  Python

clda.co/pycon8-­‐facial-­‐analysis

Page 33: Facial Analysis Techniques for Pythonista (and beyond!) - PyCon8

Google  Cloud  Vision  &  Python

clda.co/pycon8-­‐facial-­‐analysis

Page 34: Facial Analysis Techniques for Pythonista (and beyond!) - PyCon8

Azure  Face  API  &  Python

clda.co/pycon8-­‐facial-­‐analysis

Page 35: Facial Analysis Techniques for Pythonista (and beyond!) - PyCon8

clda.co/pycon8-­‐facial-­‐analysis

Page 36: Facial Analysis Techniques for Pythonista (and beyond!) - PyCon8

clda.co/pycon8-­‐facial-­‐analysis

Cloud  Services  Pros

Language  agnosLc  (RESTful  APIs)

Models  are  updated  under  the  hood

No  infrastructure  to  manage

PAYG  model  (w/  free  Ler)

Great  for  embedded  systems

Granted  accuracy  (globally)

Page 37: Facial Analysis Techniques for Pythonista (and beyond!) - PyCon8

clda.co/pycon8-­‐facial-­‐analysis

Cloud  Services  Cons

Hardly  real-­‐Lme  (HTTPs  calls)

ConnecLvity  is  always  needed

Training  set  is  never  customizable

ML  Models  are  a  black  box

Page 38: Facial Analysis Techniques for Pythonista (and beyond!) - PyCon8

Thank  you  :)

jobs.cloudacademy.com

P.S.  we  are  hiring!

PYCON  OTTO  @  Florence