OpenCV
DeepLearning
画像認識
深層学習

OpenCV 以外の場所にある深層学習ベースの顔検出を調査中

OpenCV 以外の場所にある深層学習ベースの顔検出 を別記事にしました。
学習済みのファイルが提供されているものもあれば、そうでないものもあります。
論文に関連付けられてあるものもあれば、そうでないのもあります。

Tensorflow Face Detector

https://github.com/yeephycho/tensorflow-face-detection

Effect
以下のYouTubeをみるように言っています。
https://www.youtube.com/watch?v=gw4CVz7SPEs&feature=youtu.be

手順の補足:
 

Know Issue

Please view that issue here if your output video is blank. A brief reminder is: check the input codec and check the input/output resolution, since this part is irrelevant to the algorithm, no modification will be made to master branch.

ダウンロードしたスクリプトのままでは、入力のcodecと入出力の解像度のために動かない場合があると述べています。

学習済みのファイルが含まれていますので、自分で画像ファイルを用意して試してみることができます。

inference_video_face.py
のVideoCapture()の入力を変更することで、USBカメラの入力で動作させることができました。

変更前
cap = cv2.VideoCapture("./media/test.mp4")
変更後
cap = cv2.VideoCapture(0)

USB カメラを入力とする別スクリプトが追加されました。
これは、 TensoflowFaceDector というclassを導入して記述しています。

$ python inference_usbCam_face.py 0

このgit上のプロジェクトは以下の学習データを用いています。

WIDER FACE: A Face Detection Benchmark

WIDER FACE

最近の顔検出がより難しい状況での顔検出を実現していることに対応して、WIDER FACEではocclusionやmakeupも難易度が高いデータが数多く含まれています。
10年前の時期に用いられていた画像データベースでは、背景が平坦な壁であるようなものであったのに、近年のデータベースは難易度があがっています。

実行速度は、私のCudaの使えるノートPCで200 msecかかっています。
OpenCVのresnet_ssd_face_python.py に比べ大幅に時間がかかっています。その理由が何によるものか、みなさんのPCではどうなるのかが私にはわかっていません。

Face Detection with the Faster R-CNN

https://github.com/playerkk/face-py-faster-rcnn

Requirement:
Caffe

学習済みのファイルが、シェルスクリプトを利用して入手可能です。

これも WIDER face dataset をtraining dataとして用いています。

libをmake するにはcythonが必要です。

$ sudo apt-get install cython
としてから
make
することで make できました。

A Convolutional Neural Network Cascade for Face Detection

https://github.com/mks0601/A-Convolutional-Neural-Network-Cascade-for-Face-Detection
https://www.cv-foundation.org/openaccess/content_cvpr_2015/papers/Li_A_Convolutional_Neural_2015_CVPR_paper.pdf

training set: AFLW dataset(positive), COCO dataset(negative)
test data FDDB dataset

ROCカーブが書かれています。
Requirement:
tensorflow

このgitの中には学習済みのファイルが含まれていないようです。
学習するための設定、評価するための設定が書かれていますが、
データそのものは、書かれていることをヒントに設定をあわせなければならないようです。

MTCNN_face_detection_alignment

https://github.com/kpzhang93/MTCNN_face_detection_alignment

顔を検出するだけではなく、顔の器官点を求めています。

Requirement
Caffe: Linux OS: https://github.com/BVLC/caffe. Windows OS: https://github.com/BVLC/caffe/tree/windows or https://github.com/happynear/caffe-windows
Pdollar toolbox: https://github.com/pdollar/toolbox
Matlab 2014b or later
Cuda (if use nvidia gpu)

拡張子がmのファイルはMatlabのファイルです。
Matlabのライセンスを持ち合わせていないので動作をさせることが私はできていません。

DFace

https://github.com/kuaikuaikim/DFace

PyTorch

--

name URL framework input image size
Tensorflow Face Detector https://github.com/yeephycho/tensorflow-face-detection tensorflow
Face Detection with the Faster R-CNN https://github.com/playerkk/face-py-faster-rcnn Caffe
A Convolutional Neural Network Cascade for Face Detection https://github.com/mks0601/A-Convolutional-Neural-Network-Cascade-for-Face-Detection tensorflow
MTCNN_face_detection_alignment https://github.com/kpzhang93/MTCNN_face_detection_alignment

以下のリンク先は、github上のプロジェクトでface-detection のトピックのプロジェクトを示したものです。

https://github.com/topics/face-detection


mmlabについて

このmmlab Multimedia Laboratory The Chinese University of Hong Kong

Xiaoou Tang教授 MMLabを創立 の研究所で
SenseTimeグループと関連を持っています。

https://www.ie.cuhk.edu.hk/people/xotang.shtml

以下のリンクはXiaoou Tang教授 MMLab 内のページのリンクです。
- Deep Convolutional Network Cascade for Facial Point Detection


SSD Train Own Data Tutorial

Face-Resources

https://github.com/betars/Face-Resources


OpenCV 以外の場所にある深層学習ベースの顔検出を調査中(2)

深層学習ベースの顔検出についてさらに調べてみる。

OpenCV 以外の場所にある深層学習ベースの顔検出を調査中 の続編です。

深層学習ベースの顔検出は、探してみるとそれなりの数がありそうです。
そのどれが推奨の実装になるのかが、私はまだ見極めることができていません。
深層学習を実装しているものが、どのソフトウェアのどのバージョンに依存するのか
環境をそろえることが、手間になってくるからです。

dlibのCNNの顔検出

github https://github.com/davisking/dlib/blob/master/python_examples/cnn_face_detector.py

github https://github.com/davisking/dlib/blob/master/tools/python/src/cnn_face_detector.cpp

以下は、実施例です。

$ python cnn_face_detector.py 
Call this program like this:
   ./cnn_face_detector.py mmod_human_face_detector.dat ../examples/faces/*.jpg
You can get the mmod_human_face_detector.dat file from:
    http://dlib.net/files/mmod_human_face_detector.dat.bz2
$    ./cnn_face_detector.py mmod_human_face_detector.dat ../examples/faces/*.jpg

ChainerCVでFaster R-CNNを使って顔検出してみる

github Modified ChainerCV example to train on WIDER FACE dataset for face detection

依存ライブラリ
Chainer 2.0.0
CuPy 1.0.0.1
ChainerCV 0.5.1
SciPy

github Face detection with the Faster-R-CNN or R-FCN

Face Detection with the Faster R-CNN

  • Prepare training data
    • WIDER face dataset を利用した学習する手順が書かれています。

github Faster R-CNN (Python implementation) -- see https://github.com/ShaoqingRen/faster_rcnn for the official MATLAB version

github R-CNN: Regions with Convolutional Neural Network Features

github A faster pytorch implementation of faster r-cnn

--

"Scale Aware Face Detection"と"Finding Tiny Faces" (CVPR'17) の解説

その画像中の顔の大きさの分布を判断するScale Proposal network を利用することで、探索時間を減らそうとするものです。
また、小さい顔をどうやって見つけるかを述べています。

Spatio-Temporal Facial Expression Recognition Using Convolutional(Neural Networks and Conditional Random Fields

github Chainer version of Realtime Multi-Person Pose Estiamtion


付記

SlideShare 畳み込みニューラルネットワークの研究動向
スライド 71: Caffeによる各種ネットワークの実装の一覧
スライド 72: Tensorflowによる各種ネットワークの実装の一覧
スライド 73: Pytorchによる各種ネットワークの実装の一覧
スライド 74: chainerによる各種ネットワークの実装の一覧


詳しい情報をご存知の方がありましたら、お知らせいただけると幸いです。

R-CNN やfaster R-CNNはYOLOや SSD よりも古いアルゴリズムです。
高速化の点では、YOLOやSSDの方が優れているらしいので、R-CNNやfaster R-CNNは歴史的な意味しかもたないのかもしれません。


顔検出のオープンソースライブラリについて、検出率評価コードを公開しているgitHub

https://github.com/KatsunoriWa/eval_faceDetectors