世の中はYOLO2やOpenPoseなどになっているのは承知しているが、
あえて上半身検出器の作り方について調査してみる。
今回はHOG特徴量をRealAdaBoostで学習させます。
特徴量はHaar-like、LBP、HOG
学習手法はAdaboost関係のものが4種類あります(詳しくは調べてませんサーセン)。
お好きなものを使ってください。opencv_createsample と opencv_traincascadeです。
今回学習に使用した画像は正サンプル2600枚、負サンプル5100枚でした。
うまく検出した例を載せましたが、実際はもっと誤検出が多かったりします。。。
OpenCV 3.3 Cascade Classifier Training
OpenCV のアノテーションツールのソースコードは以下のものです。
./opencv/apps/annotation/opencv_annotation.cpp
それをビルドすると次のツールができあがります。
./opencv/build/bin/opencv_annotation
Using OpenCV's integrated annotation tool は上記のドキュメントに中に使い方が書いてあります。
HaarCascadeのオブジェクト検出プログラムは、検出されるオブジェクトの数が多いほど、検出に要する時間が増えます。また、対象のオブジェクトに紛らわしいものが写っていればいるほど、検出にかかる時間が増えます。そのため、処理時間のワーストケースが読めません。
他方、DNNによるオブジェクト検出では、検出されるオブジェクトの数に関係のない検出時間となります。
- slideShare 統計的学習手法による人検出 2012 年
HOGDescriptor の人物検出器はどう学習しているのか調査しよう
HOG + SVMで人物検出【OpenCV & Python】
Upper-body detector
このサイトでは INRIA Object Localization Toolkit を使うことを前提にしたSVMの訓練結果を提供しているようです。
NOTE: this detector is now obsolete. We recommend instead to use the UB detector based on Felzenszwalb et al. and a face detector. This is available at: http://www.vision.ee.ethz.ch/~calvin/calvin_upperbody_detector/
It is:
much easier to install,
more portable, and
performs better.
と言っています。
それでも使いたい場合は
We provide the dectector as a pre-trained SVM ready to be plugged in the INRIA Object Localization Toolkit (OLT). The upper-body detector can be downloaded in three formats:
only the SVM files for the OLT software;
both the SVM files and the OLT framework in a single package;
or,
the SVM files, the OLT framework and Matlab code to track upper-body detections in a sequence, all in a single package.
なお
calvin upper-body detector v1.04自体はリンク先が変更になっています。
dlib HOG - How to make it work on external images. Using SCAN FHOG
-
Youtube Test of OpenCV haarcascade upperbody detection
- 追跡の分野では有名なテスト動画に対してOpenCVの上半身検出器を用いた結果のようです。
- haarcascade_upperbody.xml
上半身検出器のページをたどっていくと、学習に用いたデータベースの記載にたどりつくことができます。
Upper-body frontal training data samples. http://www.robots.ox.ac.uk/~vgg/software/UpperBody/upperbodyfrontal_dataset.zip
Upper-body profile training data samples http://www.robots.ox.ac.uk/~vgg/software/UpperBody/upperbodyprofile_dataset.zip
上半身画像の DataSet
https://drive.google.com/folderview?id=0BzuiGHpNJIxCOEx3SUxrMDl2QlU&usp=sharing
この画像を見る限り、バストショットでの「上半身」検出器です。
2015 年 上半身検出の手法とその評価
My Opencv LBP cascade for people detection
OpenCV ベースの検出で、異なる学習結果のXMLファイルを提供しています。
Youtube Pedestrian Detection based on Cascade Classifiers and Saliency Maps
HOG+Saliency がHOG単独よりもよい検出結果を与えるとするものです。
歩行者検出
Caltech Pedestrian Detection Benchmark
OpenCVの全身検出器
haarcascade_fullbody.xml
RPN+(Tensorflow) for people detection
https://github.com/huangshiyu13/RPNplus
Tensorflow Object Detection API
https://github.com/tensorflow/models/tree/master/research/object_detection
Creating your own Haar Cascade OpenCV Python Tutorial