Ubuntuに入れるもの
コマンド
sudo apt install git
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
参考
cocosynthでcocoモデルを作る方法
cocosynth
合成画像を使ってcocoモデルを作れるよってツール。
環境と必要なもの
- Ubuntu18.04
Anaconda
背景画像
- (切り抜いた)物体画像
使い方
git colne https://github.com/akTwelve/cocosynth
してくる。
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)カメラなどで撮影しておいてください。
物体画像
認識したい物体をいろんな角度から撮影。枚数は任意です。
撮影できたらGIMPなどで物体のみ切り抜きをおこなってください。
切り抜きが終われば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のログイン画面からログインするけど、ログイン画面にもどされるときの対処法。
環境
やること
- 仮想コンソールを開く
- unity-tweak-toolを再インストール
- 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
参考
【導入方法】cmake-guiでopenposeを導入(windows)
目次
使うもの
openpose(Github)
Download visual studio
Windows win64-x64 Installer
Download CUDA Toolkit 10.0
Download cuDNN
導入方法
cuDNN、CUDAのダウンロード
cuDNN、CUDAもバージョンを確認しながらセットアップしておく。
セットアップ方法は
などが参考になる。
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を押す。
終わったら下のような感じになる。
必須
DDOWNLOAD_BODY_COCO_MODELをON
DDOWNLOAD_BODY_MPI_MODELを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
openposeを使って姿勢推定してみる
目次
画面サイズを指定してデモの動画で姿勢推定
デモの動画にオプションでnet_resolutionを指定。
サイズは16の倍数のみ選択可能で256x256に指定してみる。
bin\OpenPoseDemo.exe --video examples\media\video.avi --net_resolution 256x256
処理中
終了時のログ
結果
GPUGTX 1660 SUPER:約33fps
発見した人の最大数:たぶん8人
Total time:平均で約7.7seconds.
考察
fpsが上がる代わりに発見した人の数は減った。
ほぼ手前の人の認識になって奥の人にの認識は難しい
観客がいる場面でopenpose使うときとかでは使えそう
画面サイズを指定してデモの画像で姿勢推定
デモの画像にオプションでnet_resolutionを指定。
bin\OpenPoseDemo.exe --image_dir examples\media --net_resolution 256x256
処理中
終了時のログ
結果
GPUGTX 1660 SUPER:約31fps
Total time:平均で約2.2seconds.
考察
高速化はできたがおそらく動画のときと同じく扱える距離範囲は短くなっていると思われる。
動画もFrame単位で認識しているので、画像で認識するときと同じ結果になる感じだと思う。
姿勢推定と顔の推定
デモの動画に-faceオプションで顔も推定してもらう。
bin\OpenPoseDemo.exe --video examples\media\video.avi -face
処理中
終了時のログ
結果
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
処理中
終了時のログ
結果
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)
Download visualstudio
Download CUDA Toolkit 10.0
Download cuDNN
導入方法
cuDNN、CUDAのダウンロード
cuDNN、CUDAもバージョンを確認しながらセットアップしておく。
セットアップ方法は
などが参考になる。
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
処理中
終了時のログ
結果
GPUGTX 1660 SUPER:約13fps
発見した人の最大数:たぶん16人
Total time:平均で約17seconds.
考察
奥の横断歩道の手前までは認識しているが、奥は認識していない。
つまり認識できる限界距離が横断歩道の手前までの距離。1枚目に関して、手前の人と人が重なっているところは認識できていない。
つまり人から見ても人と判断しにくいところは認識できない場合がある。3枚目の画像の左半分にある複雑になっているところにいる黒い服の人は認識できていない。
動画でみるとたまに認識(骨格が付いたり消えたりしている)手前の人達は骨格が安定していたが、奥になる(小さい骨格)の人は骨格が小刻みに揺れていた。
デモの画像で姿勢推定
examples\mediai内に複数のデモ画像があるのでそれを使ってみる。
bin\OpenPoseDemo.exe --image_dir examples\media
処理中
デモ画像の総数は20枚なんだけど、目視では確認できなかった画像もあった。
なので画像を目視で確認するには画像の保存か骨格のデータ保存が必要そう。
終了時のログ
結果
デモ画像の総数は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