Black_kitten092のブログ

初心者の置き場

Anaconda

condaダウンロード

こちらから www.anaconda.com

Enterを押すと規約なんかが出てくる。 pathはそのままで設定するとhomeディレクトリにAnaconda3ファイルができる。 initするか聞かれるので"yes" 端末閉じてもう一度端末を起動すると使えるようになってる。

コマンド

# 環境作成
conda create -n [name] python=[version] [library]

# 環境確認
conda info -e

# 環境に入る
conda activate [name]

# 環境から出る
deactivate [name]

# 環境削除
conda remove -n [name] --all

端末に出る(base)を消す方法

conda config --set auto_activate_base False

参考

qiita.com

cocosynthでcocoモデルを作る方法

cocosynth

合成画像を使ってcocoモデルを作れるよってツール。

github.com

環境と必要なもの

  • Ubuntu18.04
  • Anaconda

  • 背景画像

  • (切り抜いた)物体画像

使い方

git colne https://github.com/akTwelve/cocosynthしてくる。

github.com

Getting Startedを見るとSetup方法が書いてある。

# Linux
cd 
git colne https://github.com/akTwelve/cocosynth
conda create -n cocosynth python=3.6
source activate cocosynth
conda install -c conda-forge shapely
cd cocosynth
pip install -r requirements.txt

ディレクトリ構造

.
├── datasets
│   └── README.md
├── docs
│   └── getting-started.md
├── LICENSE
├── notebooks
│   ├── coco_image_viewer.ipynb
│   └── train_mask_rcnn.ipynb
├── python
│   ├── coco_json_utils.py
│   └── image_composition.py
├── README.md
└── requirements.txt

4 directories, 9 files

物体画像と背景画像

画像についてはスマホまたは(Web)カメラなどで撮影しておいてください。

物体画像

  1. 認識したい物体をいろんな角度から撮影。枚数は任意です。

  2. 撮影できたらGIMPなどで物体のみ切り抜きをおこなってください。

  3. 切り抜きが終わればdatasets内に任意のファイルを作成し(今回はobjectsとした)、その中にinputファイルを作成して、各物体ごと(例:books,boxes,bottles)に名前をつけたファイルを用意してその中に保存してください。 3の例のように作成するとこんな感じになっているはずです。

.
├── datasets
│   ├── objects
│   │   └── input
│   │       ├── books
│   │       ├── bottles
│   │       └── boxes
│   └── README.md
├── docs
│   └── getting-started.md
├── LICENSE
├── notebooks
│   ├── coco_image_viewer.ipynb
│   └── train_mask_rcnn.ipynb
├── python
│   ├── coco_json_utils.py
│   └── image_composition.py
├── README.md
└── requirements.txt

9 directories, 9 files

合成画像作成

cd ~/cocosynth/
source activate cocosynth
python ./python/image_composition.py --input_dir ./datasets/objects/input --output_dir ./datasets/objects/output --count 100 --width 512 --height 512

Ubuntuのログインループ

ログインループ

Ubuntuのログイン画面からログインするけど、ログイン画面にもどされるときの対処法。

環境

やること

  1. 仮想コンソールを開く
  2. unity-tweak-toolを再インストール
  3. GPUを対応させる

仮想コンソールを開く

Ctrl+Alt+F2で仮想コンソールを開く

unity-tweak-toolを再インストール

$ sudo apt install unity-tweak-tool
$ unity-tweak-tool --reset-unity

GPUを対応させる

# ドライバを確認する
$ dpkg -l | grep nvidia

# 自動でドライバーをインストール
$ sudo ubuntu-drivers autoinstall

# 認識できてるかの確認
$ nvidia-smi

# 再起動
$ sudo reboot

参考

qiita.com

codechacha.com

【導入方法】cmake-guiでopenposeを導入(windows)

目次

使うもの

openpose(Github

github.com

Download visual studio

visualstudio.microsoft.com

Windows win64-x64 Installer

cmake.org

Download CUDA Toolkit 10.0

developer.nvidia.com

Download cuDNN

developer.nvidia.com

導入方法

cuDNN、CUDAのダウンロード

cuDNN、CUDAもバージョンを確認しながらセットアップしておく。

セットアップ方法は

qiita.com

などが参考になる。

cuDNN,CUDA versionについて www.tensorflow.org

openposeの取得

openposeをGithubから取ってくる。
以下のコマンドで取得できる。

cd c:\tools
git clone --recursive https://github.com/CMU-Perceptual-Computing-Lab/openpose

cmake-gui の実行

パスの入力

  • Where is the sorce code:「openposeファイルのある場所(今回ならc:/tools/openpose)」

  • Where to build the binaries:「openposeファイルのある場所/build(今回ならc:/tools/openpose/build)」

Configureボタンを押すと以下のような画面がでるので自分の環境でFinishを押す。

f:id:Black_kitten092:20200803004751p:plain

終わったら下のような感じになる。

f:id:Black_kitten092:20200803003428p:plain

必須

  • DDOWNLOAD_BODY_COCO_MODELをON

  • DDOWNLOAD_BODY_MPI_MODELをON

任意

  • PYTHONを使うなら --> BUILD_PYTHONをONにする。

  • UNITYを使うなら --> BUILD_UNITY_SUPPORTをONにする。

そのままOpen Projectを押すとvisual studioが開くのでreleaseモードで実行しておく。

ファイルの移動

  • C:\tools\openpose\build\x64\Release内の「OpenPoseDemo.exe」や「openpose.dll」など全てをC:\tools\openpose-16\build\binへ移動。

  • C:\tools\openpose\modelsをC:\tools\openpose\build内へ移動。

  • C:\tools\openpose\examples\mediaをC:\tools\openpose\build\examplesへ移動。

姿勢推定する

cd C:\tools\openpose\build
bin\OpenPoseDemo.exe --video examples\media\video.avi

f:id:Black_kitten092:20200803161458p:plain

openposeを使って姿勢推定してみる

目次

画面サイズを指定してデモの動画で姿勢推定

デモの動画にオプションでnet_resolutionを指定。
サイズは16の倍数のみ選択可能で256x256に指定してみる。

bin\OpenPoseDemo.exe --video examples\media\video.avi --net_resolution 256x256

処理中

f:id:Black_kitten092:20200803180814p:plainf:id:Black_kitten092:20200803180926p:plainf:id:Black_kitten092:20200803180936p:plain

終了時のログ

f:id:Black_kitten092:20200803181534p:plain

結果

  • GPUGTX 1660 SUPER:約33fps

  • 発見した人の最大数:たぶん8人

  • Total time:平均で約7.7seconds.

考察

  • fpsが上がる代わりに発見した人の数は減った。

  • ほぼ手前の人の認識になって奥の人にの認識は難しい

  • 観客がいる場面でopenpose使うときとかでは使えそう

画面サイズを指定してデモの画像で姿勢推定

デモの画像にオプションでnet_resolutionを指定。

bin\OpenPoseDemo.exe --image_dir examples\media --net_resolution 256x256

処理中

f:id:Black_kitten092:20200804001027p:plainf:id:Black_kitten092:20200804001032p:plainf:id:Black_kitten092:20200804001043p:plain

終了時のログ

f:id:Black_kitten092:20200804001229p:plain

結果

  • GPUGTX 1660 SUPER:約31fps

  • Total time:平均で約2.2seconds.

考察

  • 高速化はできたがおそらく動画のときと同じく扱える距離範囲は短くなっていると思われる。

  • 動画もFrame単位で認識しているので、画像で認識するときと同じ結果になる感じだと思う。

姿勢推定と顔の推定

デモの動画に-faceオプションで顔も推定してもらう。

bin\OpenPoseDemo.exe --video examples\media\video.avi -face

処理中

f:id:Black_kitten092:20200804004251p:plainf:id:Black_kitten092:20200804004255p:plainf:id:Black_kitten092:20200804004300p:plain

終了時のログ

f:id:Black_kitten092:20200804004656p:plain

結果

  • GPUGTX 1660 SUPER:約4~5fps

  • Total time:平均で約5.8seconds.

考察

  • 斜めでも可能だが真横からは難しい

  • マスクなどで見えない場合も難しいのではないかと思う。

  • ちなみに動画でも適応してみたがGPUGTX 1660 SUPER:約3.5~1.7fpsで動いた。

  • けれども動画の方は全く顔を推定していない感じ。

  • なのである程度は近い距離でないと顔と認識されないみたい。

  • net_resolutionで256x256にすると約6fpsなので、顔がメインの推定では距離も近くでないといけないでのこっちの方が良さそう。

姿勢推定と手の推定

デモの動画に-handオプションで手も推定してもらう。

bin\OpenPoseDemo.exe --video examples\media\video.avi -hand

処理中

f:id:Black_kitten092:20200804005931p:plainf:id:Black_kitten092:20200804005954p:plainf:id:Black_kitten092:20200804010017p:plain

終了時のログ

f:id:Black_kitten092:20200804010158p:plain

結果

  • GPUGTX 1660 SUPER:約2fps

  • Total time:平均で約5.8seconds.

考察

  • 1枚目は右手にものを持っているが手と認識できている。

  • しかしながら3枚目の電話を持つ手は認識できていない。

  • ちなみに3枚目、右奥の人の右手は認識されている。

  • 顔に近いから認識できていない??

  • ちなみに動画でも適応してみたがGPUGTX 1660 SUPER:約1.2fpsで動いた。

  • net_resolutionで256x256にすると2.7fps

結果をjson形式で保存する

--write_jsonで保存できる。そのあとの引数で保存先を指定できる。

bin\OpenPoseDemo.exe --image_dir examples\media --write_json .

例えば・・・(000000000294のファイル)

{"version":1.3,"people":[{"person_id":[-1],"pose_keypoints_2d":[147.623,133.47,0.828164,134.641,202.894,0.275354,96.9949,189.968,0.382705,237.01,278.232,0.761661,287.596,201.683,0.81592,172.3,220.526,0.195833,214.664,344.126,0.385928,324.114,334.721,0.766747,119.354,405.308,0.0580295,74.6502,405.31,0.0576441,0,0,0,0,0,0,164.075,404.14,0.0518642,0,0,0,0,0,0,134.645,118.234,0.902725,162.906,118.242,0.905918,108.738,131.141,0.873463,179.365,131.13,0.800111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"face_keypoints_2d":[],"hand_left_keypoints_2d":[],"hand_right_keypoints_2d":[],"pose_keypoints_3d":[],"face_keypoints_3d":[],"hand_left_keypoints_3d":[],"hand_right_keypoints_3d":[]}]}

のように座標情報を保存できる。

【導入方法】コマンドのみでopenposeを使って姿勢推定してみる(windows)

目次

openpose

openposeは人骨格検出して姿勢推定できるもの。

注意点としてはある程度のスペックのPC・GPUが必要です。
低スペックだと1フレームでも時間がかかってコマ送りになってしまう。

使うもの

openpose(Github

github.com

Download visualstudio

visualstudio.microsoft.com

Download CUDA Toolkit 10.0

developer.nvidia.com

Download cuDNN

developer.nvidia.com

導入方法

cuDNN、CUDAのダウンロード

cuDNN、CUDAもバージョンを確認しながらセットアップしておく。

セットアップ方法は

qiita.com

などが参考になる。

cuDNN,CUDA versionについて www.tensorflow.org

openposeの取得

openposeをGithubから取ってくる。
以下のコマンドで取得できる。

cd c:\tools
git clone --recursive https://github.com/CMU-Perceptual-Computing-Lab/openpose

cmake の実行

Visual Studio 15 2017 Win64" -T host=x64」の部分は使用しているVisual Studio*1を選択してほしい。

cd c:\tools\openpose
del CMakeCache.txt
cmake -G "Visual Studio 15 2017 Win64" -T host=x64 ^
-DDOWNLOAD_BODY_25_MODEL=ON ^
-DDOWNLOAD_BODY_COCO_MODEL=ON ^
-DDOWNLOAD_BODY_MPI_MODEL=ON ^
-DBUILD_PYTHON=ON ^
.

ビルド

releaseモードでビルドする。

cmake --build . --config release

ファイルをコピー

binファイルに x64\release内にあるものをコピーする。

cd c:\tools\openpose
copy x64\release\*.* bin

姿勢推定してみる

デモの動画で姿勢推定

examples\media内にデモの動画があるのでそれを使ってみる。

bin\OpenPoseDemo.exe --video examples\media\video.avi

処理中

f:id:Black_kitten092:20200803161458p:plain f:id:Black_kitten092:20200803161505p:plain f:id:Black_kitten092:20200803161516p:plain

終了時のログ

f:id:Black_kitten092:20200803161523p:plain

結果

  • GPUGTX 1660 SUPER:約13fps

  • 発見した人の最大数:たぶん16人

  • Total time:平均で約17seconds.

考察

  • 奥の横断歩道の手前までは認識しているが、奥は認識していない。
    つまり認識できる限界距離が横断歩道の手前までの距離。

  • 1枚目に関して、手前の人と人が重なっているところは認識できていない。
    つまり人から見ても人と判断しにくいところは認識できない場合がある。

  • 3枚目の画像の左半分にある複雑になっているところにいる黒い服の人は認識できていない。
    動画でみるとたまに認識(骨格が付いたり消えたりしている)

  • 手前の人達は骨格が安定していたが、奥になる(小さい骨格)の人は骨格が小刻みに揺れていた。

デモの画像で姿勢推定

examples\mediai内に複数のデモ画像があるのでそれを使ってみる。

bin\OpenPoseDemo.exe --image_dir examples\media

処理中

f:id:Black_kitten092:20200803170035p:plainf:id:Black_kitten092:20200803170040p:plainf:id:Black_kitten092:20200803170124p:plainf:id:Black_kitten092:20200803170044p:plainf:id:Black_kitten092:20200803170051p:plainf:id:Black_kitten092:20200803170058p:plainf:id:Black_kitten092:20200803170637p:plainf:id:Black_kitten092:20200803170643p:plainf:id:Black_kitten092:20200803170103p:plainf:id:Black_kitten092:20200803170109p:plainf:id:Black_kitten092:20200803170114p:plainf:id:Black_kitten092:20200803170648p:plainf:id:Black_kitten092:20200803170118p:plain

デモ画像の総数は20枚なんだけど、目視では確認できなかった画像もあった。
なので画像を目視で確認するには画像の保存か骨格のデータ保存が必要そう。

終了時のログ

f:id:Black_kitten092:20200803171447p:plain

結果

  • デモ画像の総数は20枚に対して、録画して目視できるのは10枚ほど

  • GPUGTX 1660 SUPER:約11fps(録画したので若干下がってるかも)

  • 発見した人の最大数:(8Frameの赤い服の電話しているおじさんで)9人

  • Total time:平均で約3seconds.

*1:Visual Studio 2019 64 ビット版:cmake -G "Visual Studio 16 2019" -A x64 -T host=x64