ラベル openpose の投稿を表示しています。 すべての投稿を表示
ラベル openpose の投稿を表示しています。 すべての投稿を表示

2019年4月24日水曜日

Jetson Nano に TensorFlow版のOpenpose入れてみる

連日のお試しシリーズ、リアルタイムOpenposeの2FPSをもうすこしなんとかならないかなと思って、TensorFlow版のOpenposeでやってみることにしました。
というのも、CPUでも2FPS位出るみたいな記事を見かけたので、GPUにしたらもちょっと出るんじゃないかなという単純な発想です。


セットアップ


セットアップは、これらやった前提で。
https://toramamma.blogspot.com/2019/04/jetson-nano-darknet.html
https://toramamma.blogspot.com/2019/04/jetson-nano-openpose.html


インストール



tf-pose-estimationのインストール


とりあえず言われるまま入れてみます。

https://github.com/ildoonet/tf-pose-estimation

ただ、この通りにやると失敗するもんで、先に必要なライブラリを入れたほうが良いです。
ものっそい時間かかるので、コレを先に・・・

$ pip3 install --upgrade cython
$ sudo apt-get -yV install libopenblas-dev
$ sudo apt-get -yV install liblapacke-dev
$ sudo apt-get -yV install gfortran
$ sudo apt-get -yV install llvm-7*
$ echo 'export PATH="/usr/lib/llvm-7/bin:$PATH"' >> ~/.bash_profile
$ source ~/.bash_profile

参ります。

$ git clone https://github.com/ildoonet/tf-pose-estimation.git
$ cd tf-pose-estimation
$ pip3 install -r requirements.txt

失敗したログしかないけど、正しくできてれば、Failedがないものが出力されると思います。
Successfully built dill fire matplotlib numba psutil pycocotools scikit-image msgpack numpy pyzmq tabulate termcolor kiwisolver PyWavelets networkx pillow
Failed to build scipy llvmlite
Installing collected packages: argparse, dill, six, fire, cycler, setuptools, kiwisolver, numpy, pyparsing, python-dateutil, matplotlib, llvmlite, numba, psutil, pycocotools, urllib3, idna, chardet, certifi, requests, PyWavelets, pillow, imageio, decorator, networkx, scipy, scikit-image, slidingwindow, tqdm, msgpack, msgpack-numpy, pyzmq, tabulate, termcolor, tensorpack

次はコレをやれというので

https://github.com/ildoonet/tf-pose-estimation/tree/master/tf_pose/pafprocess
$ cd tf_pose/pafprocess
$ sudo apt install swig
$ swig -python -c++ pafprocess.i && python3 setup.py build_ext --inplace

素直に実行。


TensorFlowのインストール


で、ここでTensorFlow入れてないの思い出して、入れてみます。

$ pip3 install tensorflow-gpu
Could not find a version that satisfies the requirement tensorflow-gpu (from versions: )

嘘だろ。。
※ サックっとスルーしますが、ここで相当ヤラレタ。。

色々漁ってたら、ぴったりな記事あったので参考に。

https://qiita.com/tsutof/items/77b49f71ed81344b9d16

$ sudo apt-get install libhdf5-serial-dev hdf5-tools
$ sudo apt-get install python3-pip
$ sudo apt-get install zlib1g-dev zip libjpeg8-dev libhdf5-dev
$ sudo pip3 install -U numpy grpcio absl-py py-cpuinfo psutil portpicker grpcio six mock requests gast h5py astor termcolor
$ sudo pip3 install --pre --extra-index-url https://developer.download.nvidia.com/compute/redist/jp/v42 tensorflow-gpu

で、TensorFlowの動作確認まで。

$ python3
Python 3.6.7 (default, Oct 22 2018, 11:32:17)
[GCC 8.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import tensorflow as tf
>>> print(tf.__version__)
1.13.1
>>>exit()


学習済みモデルのダウンロード


次は、学習済みモデルをダウンロード。
見出しと同じことをもう一度書くスタイル。

$ cd ~/tf-pose-estimation
$ cd models/graph/cmu
$ bash download.sh


実行


やっと実行ですが、ライブラリ足りず落ちたのでコレを先に。

$ pip3 install tqdm
$ pip3 install slidingwindow
$ pip3 install pycocotools

※ でもコレ最初の pip3 install -r requirements.txt で入ってるっぽいんだけどな。。
  ここに来るまでTensorFlow関連で色々いじったので普通にやってれば再現しないかも。

やっと実行!!!

$ python3 run_webcam.py --model=mobilenet_thin --resize=432x368 --camera=1

ガーン!!
動いたけど・・・まさかの2FPS。
パフォーマンス変わらず。。。

まだだ、諦めるのは早い!
モデルを「mobilenet_v2_small」に変えてみよう!

$ python3 run_webcam.py --model=mobilenet_v2_small --resize=432x368 --camera=1

でたーっ!3.5FPS!
なかなか良いね!




お前の力はこんなモンじゃないはずだ。
前回のOpenposeに読み込み画像サイズを合わせてみよう。

$ python3 run_webcam.py --model=mobilenet_v2_small --resize=320x176 --camera=1

出ました。
7〜8FPS!


でも、精度だいぶ落ちるんよね〜

あと、--camera=1はラズパイカメラ同居しているので、ロジクールのを使う設定です。
通常は0です(だと思います)


感想


サイズ合わせて3.5倍達成しました。
精度重視でも1.5倍は早くなりました。
労力はこの比ではありませんでしたw

でも、折角TensorFlow入れたので、ネタが増えました。
サンプルたたきマンでももう少しなにか出来るかな。

Virtualenv?知らん、何かあればイメージ焼き直す!!


メモ


TensorFlow入んなくて、ほんと色々イジったので、メモ程度に現状残しておく。

$ pip3 list --format=columns
Package                       Version            
----------------------------- -------------------
absl-py                       0.7.1              
apt-clone                     0.2.1              
apturl                        0.5.2              
asn1crypto                    0.24.0             
astor                         0.7.1              
beautifulsoup4                4.6.0              
blinker                       1.4                
Brlapi                        0.6.6              
certifi                       2019.3.9           
chardet                       3.0.4              
cryptography                  2.1.4              
cupshelpers                   1.0                
cycler                        0.10.0             
Cython                        0.29.7             
defer                         1.0.6              
devscripts                    2.17.12ubuntu1.1   
dill                          0.2.9              
distro-info                   0.18ubuntu0.18.04.1
feedparser                    5.2.1              
fire                          0.1.3              
gast                          0.2.2              
gpg                           1.10.0             
graphsurgeon                  0.3.2              
grpcio                        1.20.0             
h5py                          2.9.0              
html5lib                      0.999999999        
httplib2                      0.9.2              
idna                          2.8                
Keras-Applications            1.0.7              
Keras-Preprocessing           1.0.9              
keyring                       10.6.0             
keyrings.alt                  3.0                
kiwisolver                    1.0.1              
language-selector             0.1                
launchpadlib                  1.10.6             
lazr.restfulclient            0.13.5             
lazr.uri                      1.0.3              
llvmlite                      0.28.0             
louis                         3.5.0              
lxml                          4.2.1              
macaroonbakery                1.1.3              
Mako                          1.0.7              
Markdown                      3.1                
MarkupSafe                    1.0                
matplotlib                    3.0.3              
mock                          2.0.0              
numpy                         1.16.3             
oauth                         1.0.1              
oauthlib                      2.0.6              
olefile                       0.45.1             
PAM                           0.4.2              
pbr                           5.1.3              
Pillow                        5.1.0              
pip                           9.0.1              
portpicker                    1.3.1              
protobuf                      3.7.1              
psutil                        5.6.1              
py-cpuinfo                    5.0.0              
pycairo                       1.16.2             
pycocotools                   2.0.0              
pycrypto                      2.6.1              
pycups                        1.9.73             
pygobject                     3.26.1             
PyICU                         1.9.8              
PyJWT                         1.5.3              
pymacaroons                   0.13.0             
PyNaCl                        1.1.2              
pyparsing                     2.4.0              
pyRFC3339                     1.0                
python-apt                    1.6.3+ubuntu1      
python-dateutil               2.8.0              
python-debian                 0.1.32             
python-magic                  0.4.16             
pytz                          2018.3             
pyxdg                         0.25               
PyYAML                        3.12               
requests                      2.21.0             
requests-unixsocket           0.1.5              
scipy                         1.2.1              
SecretStorage                 2.3.1              
setuptools                    41.0.1             
simplejson                    3.13.2             
six                           1.12.0             
slidingwindow                 0.0.13             
ssh-import-id                 5.7                
system-service                0.3                
systemd-python                234                
tensorboard                   1.13.1             
tensorflow-estimator          1.13.0             
tensorflow-gpu                1.13.1+nv19.4      
tensorrt                      5.0.6.3            
termcolor                     1.1.0              
tqdm                          4.31.1             
ubuntu-drivers-common         0.0.0              
uff                           0.5.5              
unattended-upgrades           0.1                
unidiff                       0.5.4              
unity-scope-calculator        0.1                
unity-scope-chromiumbookmarks 0.1                
unity-scope-colourlovers      0.1                
unity-scope-devhelp           0.1                
unity-scope-firefoxbookmarks  0.1                
unity-scope-manpages          0.1                
unity-scope-openclipart       0.1                
unity-scope-texdoc            0.1                
unity-scope-tomboy            0.1                
unity-scope-virtualbox        0.1                
unity-scope-yelp              0.1                
unity-scope-zotero            0.1                
urllib3                       1.24.2             
wadllib                       1.3.2              
webencodings                  0.5                
Werkzeug                      0.15.2             
wheel                         0.30.0             
xkit                          0.0.0              
zope.interface                4.3.2       

2019年4月22日月曜日

Jetson Nano に Openpose 入れてみる

jetson nano 買ったからにはガンガン使わなくてはという謎の使命感から、僕でも知ってる超有名シリーズ「nightmare」「yolo」に続き、「Openpose」を入れてみることにしました。


セットアップ


セットアップは、こっちの前半に書いてあります。

https://toramamma.blogspot.com/2019/04/jetson-nano-darknet.html


インストール


基本はここを参考に、実際に打ったコマンドを書き残しておくスタンス。

https://qiita.com/myoshimi/items/cf64c91cd22c516bb49b


cmakeをインストール


$ sudo apt-get install qtbase5-dev build-essential gdebi libopencv-dev
$ wget https://github.com/Kitware/CMake/releases/download/v3.13.4/cmake-3.13.4.tar.gz
$ tar xzvf cmake-3.13.4.tar.gz
$ cd cmake-3.13.4
$ ./configure --qt-gui
$ ./bootstrap
$ make -j6
$ sudo make install


GPGPU関連


GPGPU関連のセットアップは終わってるものとしてスルー


Openposeのビルド


今までのもHome直下に入れてるので、若干パスをいじって入れる。

$ git clone https://github.com/CMU-Perceptual-Computing-Lab/openpose
$ cd openpose
$ sudo bash ./scripts/ubuntu/install_deps.sh
$ mkdir build
$ cd build
$ cmake ..
$ make -j4
$ sudo make install


実行


まずはサンプル動画をやってみまあす

$ cd ~/
$ ./build/examples/openpose/openpose.bin --write_json outputJSON/ --display 0 --model_folder ./models --video "./examples/media/video.avi" --write_video outputVideo.avi
OpenPose demo successfully finished. Total time: 1198.628352 seconds.

20分かかりました(汗)


では、リアルタイムをば・・・

$ ./build/examples/openpose/openpose.bin --model_folder ./models
Starting OpenPose demo...
Configuring OpenPose...
Starting thread(s)...
Auto-detecting camera index... Detected and opened camera 0.
Auto-detecting all available GPUs... Detected 1 GPU(s), using 1 of them starting at GPU 0.
Gtk-Message: 12:50:18.435: Failed to load module "canberra-gtk-module"

なんか、落ちたのでライブラリ入れます。

$ sudo apt install canberra-gtk*

実行してみます。

$ ./build/examples/openpose/openpose.bin --model_folder ./models

出ました!
0.2FPS!!

メモリ食いつぶしてますね。


解像度を下げてやってみます。

$ ./build/examples/openpose/openpose.bin --model_folder ./models --net_resolution 320x176

これで、2.3FPS達成!!
このくらい出ると、まあまぁ遊べるかな。


ホネホネが自分に合わせて動くサマを見ていると、あらためてすごい技術だなぁと思いました。

ちなみに、--face と --hand はリアルタイムでは動作しませんでした。
というのも、--face_net_resolution、--hand_net_resolutionを低めに設定しないと読み込まれず、低くすると精度悪くて検出できないようです。

次は何動かしてみようかな。