Hand 検出について調査中


Hand　検出について調査中です。

追記 2022.01.13 時点では、代表的なプラットフォームで、hand poseの検出の学習済みモデルが提供されるようになってきています。あなたが利用しようとするプラットフォームで、検索してみてください。

次に示すmediapipeのライブラリにもhand poseの検出を含んでいます。Android	iOS	C++	Python	JSの各環境で利用することができます。

https://google.github.io/mediapipe/

追記　2019.6.25時点で私が使えそうに思っているのは
TensorFlow での実装です。
そのため、記述の順序を入れ替えました。

追記　2019.10.4  github で hand-detection についての一覧があります。

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

## [How to Build a Real-time Hand-Detector using Neural Networks (SSD) on Tensorflow](https://towardsdatascience.com/how-to-build-a-real-time-hand-detector-using-neural-networks-ssd-on-tensorflow-d6bac0e4b2ce)

### The Egohands Dataset を利用している。

### github https://github.com/victordibia/handtracking

### [victordibia/handtracking](https://github.com/victordibia/handtracking/tree/master/hand_inference_graph)

github をcloneして動作させるとよい。

```
$ pip install tensorflow

# 引数の指定がないときは、ビデオ入力を処理する。
$ python detect_single_threaded.py


```

<img src="https://raw.githubusercontent.com/victordibia/handtracking/master/images/hand1.gif" width="33.3%"><img src="https://raw.githubusercontent.com/victordibia/handtracking/master/images/hand2.gif" width="33.3%"><img src="https://raw.githubusercontent.com/victordibia/handtracking/master/images/hand3.gif" width="33.3%">


## Youtube [Hand recognition full source code OpenCV](https://www.youtube.com/watch?v=5zgLtQh5_lk)
![Hand_recognition_full_source_code_OpenCV.png](https://qiita-image-store.s3.amazonaws.com/0/83761/e13ba1e6-a543-b073-0359-a93e43b1d92b.png)

Youtube のサイトから、ソースコードへのリンクが貼ってある。

顔を検出してから、それを元に肌色の領域を検出している。
2値化した領域を
[凸包(Convex Hull)](http://labs.eecs.tottori-u.ac.jp/sd/Member/oyamada/OpenCV/html/py_tutorials/py_imgproc/py_contours/py_contour_features/py_contour_features.html)
の情報を元に、ハンドジェスチャを判断していると見られます。

---

## Youtube [Hand detection using opencv](https://www.youtube.com/watch?v=nxbrH0LfR30)

![Hand_detection_using_opencv.png](https://qiita-image-store.s3.amazonaws.com/0/83761/1500613c-f201-da24-399d-c13b0008504a.png)
これも、肌色の領域を求めて判断するアルゴリズムです。


---

## Youtube [Basic Hand Detection Finger Counter with C++ and OpenCV (source code included)](https://www.youtube.com/watch?v=QsYxUqY5rLU)

動画を、見ると固定カメラを用いて、しかも画像中の固定の領域で処理をしており、輪郭処理によって指の本数を数えている。


### github https://github.com/redbeardanil/Estimation-of-the-number-of-real-time-hand-fingers-with-image-processing

上記のYoutubeに対応するGithub のサイトです。

BackgroundSubtractorMOG2()
を使って領域を求めているので、どうやら、カメラが固定されていることが必須の条件となります。

convexHull 点集合に対する凸包 を作って、convexityDefects 輪郭の凹状欠損を見つけています。見つけた凹状欠損の数を元に、指を何本広げているのかを判定しています。

手を検出するということ自体に役に立つことではないけれども、見つけた後に輪郭情報を使って、広げた指の本数を判定するのに役立てることができます。

---
## Youtube [Hand detection + Gesture recognition by YOLOv2](https://www.youtube.com/watch?v=JJPsHpVt_lA)


Hand detection + Gesture recognition by YOLOv2
と書かれています。
対応するソースコードと学習に何を用いたのかの情報にたどり着けていません。

---

## Youtube [Real-time hand detection, tracking and segmentation](https://www.youtube.com/watch?v=bk3-Om2ENVQ)

2012/11/27 に公開

> Hand detection using random forrests, handtracking using a particle filter, hand segmentation using active contours. The background in this demo video is rather simple; I'm mainly testing the tracking and segmentation behaviour in bad illumination conditions (where for instance pure skin color based tracking or detection would fail)

コードにはたどり着けていません。


---

## Youtube [Joint Hand Detection and Rotation Estimation Using CNN](https://www.youtube.com/watch?v=4pB8mVqQG10)

Youtube のページからProject webpage　にたどり着けます。

### http://www.idengxm.com/handdetection/index.html

> The rotation annotation of hand detection dataset will be available.

と言ってくれているので、dataset の公開が待たれます。

paper http://www.idengxm.com/handdetection/TIP2018_handdeteciton_cameraready.pdf

---
## www [Hand detection using multiple proposals](http://www.robots.ox.ac.uk/~vgg/research/hands/)

![](http://www.robots.ox.ac.uk/%7Evgg/research/hands/hand_detection_files/0.png)
![](http://www.robots.ox.ac.uk/%7Evgg/research/hands/hand_detection_files/3.png)

データが次の場所から入手できます。
Visual Geometry Group [Hand Dataset](http://www.robots.ox.ac.uk/~vgg/data/hands/index.html)

またソースコードが以下の場所からダウンロードできます。
Visual Geometry Group [A reference implementation of the hand detection](http://www.robots.ox.ac.uk/~vgg/software/hands/index.html)
2012 年時点の実装です。

輪郭についてはHOG特徴量を使っています。深層学習以前の実装です。
深層学習では、エッジ特徴も色の特徴も同時に扱える枠組みです。
hand検出が深層学習で実装されているのに着目すべきでしょう。

---

## Github [Real-time Hand-Detection using Neural Networks (SSD) on Tensorflow](https://github.com/victordibia/handtracking#real-time-hand-detection-using-neural-networks-ssd-on-tensorflow)

DNNを用いた実装です。

> This repo documents steps and scripts used to train a hand detector using Tensorflow (Object Detection API). As with any DNN based task, the most expensive (and riskiest) part of the process has to do with finding or creating the right (annotated) dataset.

と言っており、ここでも、適切なデータセットを見つける、あるいは自前で作ることが重要になっている。
このページでは以下の２つのデータセットを用いている。

dataset http://www.robots.ox.ac.uk/~vgg/data/hands/

dataset http://vision.soic.indiana.edu/projects/egohands/

---

## WWW [Welcome to the VIVA Hand Detection Challenge!](http://cvrr.ucsd.edu/vivachallenge/index.php/hands/hand-detection/)

> Welcome to the VIVA hand detection benchmark! The dataset consists of 2D bounding boxes around driver and passenger hands from 54 videos collected in naturalistic driving settings of illumination variation, large hand movements, and common occlusion. There are 7 possible viewpoints, including first person view. Some of the data has been captured in our testbeds, while some was kindly provided by YouTube.

![](http://cvrr.ucsd.edu/vivachallenge/wp-content/uploads/2015/01/exampleAlex2-300x225.png)

このような車の中での運転者と同乗者の手の画像のデータセットです。

このチャレンジに応募した人の論文に、上記のホームページからたどることができます。

paper http://adas.cvc.uab.es/cvvt2017/wp-content/uploads/sites/14/2014/03/5.pdf


---

## Github [Hand Tracking : Tracking hands using SSD with MobilenetV1](https://github.com/EvilPort2/Hand-Tracking)

Tensorflow Object Detection API [Tensorflow Object Detection API Tutorial](https://pythonprogramming.net/introduction-use-tensorflow-object-detection-api-tutorial/)
を使ったHand 検出です。

このgithub のリポジトリの著者は、自分で手のデータとアノテーションを用意して、このリポジトリにデータを公開しています。
hand sign についても開発を進めています。

### Github https://github.com/EvilPort2/Sign-Language

GithubのREADME.md にはYouTubeの動画にリンクが示しています。
![Hand_sign.png](https://qiita-image-store.s3.amazonaws.com/0/83761/f52f3251-5426-955d-3063-9b799e183e0a.png)

この動画の様子をみれば、手の領域がどのあたりにあるのかは予め与えていて、手の画像で手話のどの表現になっているかの判定に集中しているものらしいことがわかります。背景は、手との分離がしやすい壁画像になっています。



---

## [Deep Convolutional Neural Networkによる手形状領域の抽出](http://mprg.jp/publications/f146)

paper [Deep Convolutional Neural Network による手形状領域の抽出](http://www.vision.cs.chubu.ac.jp/MPRG/F_group/F146_yamashita2014.pdf)


---
### Github https://github.com/PierfrancescoSoffritti/Handy

![](https://camo.githubusercontent.com/b4f08a5f0d548453853a5dac1a547b9c88b47422/68747470733a2f2f6a2e676966732e636f6d2f70516d4a386d2e676966)

A few assumptions have been made:

- The camera is supposed to be static.
- The camera has no automatic regulations, such as auto-focus etc.
- The user is not moving in the frame (eg: he sits at his desk in front of the camera).
- There are no particular constraints on the color of the background, but it should be approximately static (no moving objects/strong changes of illumination in the background).

となっており、固定カメラであることを仮定しているのは、用途が限られる。

---
## Youtube [Real-time hand detection and tracking using OpenCV and Python](https://www.youtube.com/watch?v=P3dUePye_-k)

![Screenshot from 2018-11-28 00-46-08.png](https://qiita-image-store.s3.amazonaws.com/0/83761/413bbada-a72f-1547-8b0d-98826aa4faf4.png)

### Github https://github.com/amarlearning/Finger-Detection-and-Tracking

HSV 色空間でのヒストグラムで処理しているらしい。


---

Youtube [Hand Detection using OpenCV](https://www.youtube.com/watch?v=MySnaPqPgVo)


---

Youtube [Hand tracking using Tensorflow Object Detection API (In Progress)](https://www.youtube.com/watch?v=-klQ_bEPwfs)


Youtube [Hand Gestures Detection, Tiny Yolo vs SSD_Mobilenet Comparison](https://www.youtube.com/watch?v=AsZs9Vthj5g)

Youtube [YoloV2 Realtime Object Detection on iOS](https://www.youtube.com/watch?v=p3-3kN_fIz0)


Youtube [Hand Detection using Deep Learning](https://www.youtube.com/watch?v=RZqK-q1QFFI)

Github [hand detection with OpenCV and Qt ](https://github.com/angelobacchini/handDetection)

`Hue distance from the reference skin tone` という表現があるので、色をベースとして手の領域を求めているようだ。

## WWW [Handy, hand detection with OpenCV](https://medium.com/@soffritti.pierfrancesco/handy-hands-detection-with-opencv-ac6e9fb3cec1)

### Github [Handy](https://medium.com/@soffritti.pierfrancesco/handy-hands-detection-with-opencv-ac6e9fb3cec1)


---

----
[Training a Hand Detector with TensorFlow Object Detection API](https://jkjung-avt.github.io/hand-detection-tutorial/)

---
## [Hands Detection](https://github.com/loicmarie/hands-detection)

これも、TensorFlowを用いた検出器。
次の動画を参照するとよい。


YouTube https://www.youtube.com/watch?v=-klQ_bEPwfs&feature=youtu.be

---

Youtube [Mobile Hand Tracking](https://www.youtube.com/watch?v=uBdvL6F0hLE)

ステレオカメラを用いたうえで、手を検出している。
動画の冒頭に、使用しているステレオカメラを示している。
DUO MLX
https://duo3d.com/product/duo-minilx-lv1


-----

GANerated Hands for Real-Time 3D Hand Tracking from Monocular RGB

http://openaccess.thecvf.com/content_cvpr_2018/papers/Mueller_GANerated_Hands_for_CVPR_2018_paper.pdf


Context-aware Deep Feature Compression for High-speed Visual Tracking

http://openaccess.thecvf.com/content_cvpr_2018/papers/Choi_Context-Aware_Deep_Feature_CVPR_2018_paper.pdf


Correlation Tracking via Joint Discrimination and Reliability Learning

http://openaccess.thecvf.com/content_cvpr_2018/papers/Sun_Correlation_Tracking_via_CVPR_2018_paper.pdf


[ Deep Hand:
How to Train a CNN on 1 Million Hand Images When Your Data Is Continuous and Weakly Labelled
CVPR 2016 Oral](http://www-i6.informatik.rwth-aachen.de/~koller/1miohands/)


github [XRDrive-Sim](https://github.com/TebogoNakampe/XRDriveSim) hand gesture applications using Intel® RealSense™ D400 depth cameras.


[Intelさんがまた褒めてくれたヽ(ﾟ∀ﾟ)ﾉ ｲｴｧ RaspberryPi3でMobileNet-SSD(MobileNetSSD)物体検出とRealSense測距(640x480) 再生フレームレート25FPS以上 ＋ 予測レート12FPSを達成したよ](https://qiita.com/PINTO/items/40abcf33af3ae7ef579d)

---
追記(2020.12.01)
[Training a Custom Object Detector with DLIB & Making Gesture Controlled Applications](https://www.learnopencv.com/training-a-custom-object-detector-with-dlib-making-gesture-controlled-applications/)
これにも手検出が書かれている。

https://github.com/spmallick/learnopencv/tree/master/Training_a_custom_hand_detector_with_dlib

https://github.com/spmallick/learnopencv/blob/master/Training_a_custom_hand_detector_with_dlib/Training_a_custom_hand_Detector.ipynb