上半身検出器の作り方について調査中

世の中は[YOLO2](https://pjreddie.com/darknet/yolo/)や[OpenPose](https://github.com/CMU-Perceptual-Computing-Lab/openpose)などになっているのは承知しているが、
あえて上半身検出器の作り方について調査してみる。

- [OpenCVで上半身検出器をつくるお話](http://muramuramuramuratter.blog.fc2.com/blog-entry-4.html)

>今回はHOG特徴量をRealAdaBoostで学習させます。
特徴量はHaar-like、LBP、HOG
学習手法はAdaboost関係のものが４種類あります（詳しくは調べてませんサーセン）。
お好きなものを使ってください。

> opencv_createsample　と　opencv_traincascadeです。
今回学習に使用した画像は正サンプル2600枚、負サンプル5100枚でした。
うまく検出した例を載せましたが、実際はもっと誤検出が多かったりします。。。



OpenCV 3.3 [Cascade Classifier Training](https://docs.opencv.org/3.3.0/dc/d88/tutorial_traincascade.html)

OpenCV  のアノテーションツールのソースコードは以下のものです。
./opencv/apps/annotation/opencv_annotation.cpp

https://github.com/opencv/opencv/blob/master/apps/annotation/opencv_annotation.cpp

それをビルドすると次のツールができあがります。

./opencv/build/bin/opencv_annotation

Using OpenCV's integrated annotation tool　は上記のドキュメントに中に使い方が書いてあります。



HaarCascadeのオブジェクト検出プログラムは、検出されるオブジェクトの数が多いほど、検出に要する時間が増えます。また、対象のオブジェクトに紛らわしいものが写っていればいるほど、検出にかかる時間が増えます。そのため、処理時間のワーストケースが読めません。

他方、ＤＮＮによるオブジェクト検出では、検出されるオブジェクトの数に関係のない検出時間となります。


- slideShare [統計的学習手法による人検出 ](https://www.slideshare.net/hironobufujiyoshi/ss-15205040) 2012 年

### HOGDescriptor の人物検出器はどう学習しているのか調査しよう
[HOG + SVMで人物検出【OpenCV & Python】](http://yusuke1581.hatenablog.com/entry/2014/11/26/153901)


### [Upper-body detector](http://www.robots.ox.ac.uk/~vgg/software/UpperBody/)
このサイトでは INRIA Object Localization Toolkit　を使うことを前提にしたＳＶＭの訓練結果を提供しているようです。
>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](http://groups.inf.ed.ac.uk/calvin/calvin_upperbody_detector/)自体はリンク先が変更になっています。



- [dlib HOG - How to make it work on external images. Using SCAN FHOG ](https://sourceforge.net/p/dclib/discussion/442517/thread/008816a7/)

- Youtube [Test of OpenCV haarcascade upperbody detection](https://www.youtube.com/watch?v=O-3ojn-ZxeM)
    - 追跡の分野では有名なテスト動画に対してOpenCVの上半身検出器を用いた結果のようです。
    - haarcascade_upperbody.xml
        - https://github.com/opencv/opencv/blob/3.1.0/data/haarcascades/haarcascade_upperbody.xml

- [calvin upper-body detector v1.04](http://groups.inf.ed.ac.uk/calvin/calvin_upperbody_detector/)

上半身検出器のページをたどっていくと、学習に用いたデータベースの記載にたどりつくことができます。

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 年 [上半身検出の手法とその評価](https://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&source=web&cd=2&ved=0ahUKEwjS96PhldnXAhVLFpQKHRazC6wQFggsMAE&url=https%3A%2F%2Fipsj.ixsq.nii.ac.jp%2Fej%2F%3Faction%3Drepository_action_common_download%26item_id%3D164214%26item_no%3D1%26attribute_id%3D1%26file_no%3D1&usg=AOvVaw3eUCbgcEBhLSzyZ4LJ3RNR)


[My Opencv LBP cascade for people detection](http://funvision.blogspot.jp/2016/12/my-opencv-lbp-cascade-for-people.html)

OpenCV ベースの検出で、異なる学習結果のＸＭＬファイルを提供しています。



Youtube [Pedestrian Detection based on Cascade Classifiers and Saliency Maps](https://www.youtube.com/watch?v=KN_hVgp1_t4)
HOG+Saliency  がＨＯＧ単独よりもよい検出結果を与えるとするものです。


歩行者検出
[Caltech Pedestrian Detection Benchmark](http://www.vision.caltech.edu/Image_Datasets/CaltechPedestrians/)


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](https://www.intorobotics.com/how-to-detect-and-track-object-with-opencv/)

[Pedestrian Detection OpenCV](https://www.intorobotics.com/how-to-detect-and-track-object-with-opencv/)


[顔検出用のプログラムを動かすまでのメモ](https://qiita.com/Jey/items/334d143767aabfdc4145)


https://github.com/prakharmohan0809/OpenCV-Upper-Body-Python.git