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       

0 件のコメント:

コメントを投稿