ごはんと飲み物は紙一重

あんまり更新できてないです

Jetson TX2 環境構築 リベンジマッチ(JetPack3.2.1) ~Openposeを導入するまで~

環境構築と戦う男

twdlab.hatenablog.com

半年ぶりくらいにですが、リベンジする機会があったので。というのも、半年前に構築した環境ではOpenposeが中途半端に動く(gstremerをつかってカメラでモデル実行はできるが動画を読み込ませて解析させるとエラーで落ちる)ということで、改善を試したのですがあんまり良くならなかったので一から入れ直すことに。

前記事同様、アーキテクチャaarch64であるため一筋縄ではいかないため、工夫する必要が。

Jetsont TX2のインストール環境

host環境

TX2 環境

  • JetPack 3.2.1
    • Ubuntu 16.04 LTS
    • CUDA 9.0
    • cuDNN 7.0.5
    • Python3.5.2 & Tensorflow 1.9.0rc0
    • Opencv 3.4.0

VMUbuntuをインストールからJetpackをTX2にインストールまで

前回記事を参考にしながら勧めていきます。

Tensorflowのインストール

半年前の記事からだいぶ時間も立ってJetPack3.2用に作成されたwhlが配布されていたりしたため、このへんはbazelを使わずともスムーズに行けました。

【2018年8月22日編集】

以下nvidiaのTopicより1.7から1.9までのtensorflowのwhlが配布されていますのでダウンロードして

https://devtalk.nvidia.com/default/topic/1031300/tensorflow-1-8-wheel-with-jetpack-3-2-/devtalk.nvidia.com

sudo pip3 install てんそるふろーのwheel.whl

することで、pipの中にtensorflowが入ります。圧倒的感謝・・・!

OpenCV3.4.0のインストール

jkjung-avt.github.io

ご丁寧に細かい説明や必要ライブラリから導入してくれるわかりやすいサイトでした。これを見ながらOpenCV3.4をMake・Installしていきます。

【2018年8月22日追記

ちなみにpipでpythonを管理している方は、そのままだと /usr/local/lib/ 下のpythonのsite-packageにインストールされるので、自分の使っているバージョンで使用する場合には ln -s /usr/local/lib/python3.5/site-packages/cv2.cpython-35m-aarch64-linux-gnu.so /home/ユーザ名/.pyenv/versions/3.5.2/lib/python3.5/site-packages/cv2.cpython-35m-aarch64-linux-gnu.so の一手間を加えるとpyenv管理下のpythonでcv2が使えるようになります。

caffeのインストール

jkjung-avt.github.io

同様にcaffeも入れていきます。途中でrequirement.txtをつかってpip3にインストールする手順があるのですが、scikit-imageがうまく入らない方は、sudo apt-get install -y python-skimage Cythonでscikit-imageとCythonを入れてからpip3に入れてみましょう。

【2018年8月23日追記

openposeの3rdparty内のcaffeを入れる場合boostが必要になるため、apt-getをつかってboostに関連するライブラリをインストールする必要があります。なので、boost 関連で躓いた方は以下のサイトを参考にすると良いかと思います。

github.com

openposeのインストール

github.com

installation.mdを見ながら環境構築を進めますが、このときに

  • Make.config の CAFFE_DIR をインストールしたcaffeのディレクトリに設定する

caffeのときにオプション周りを細かく設定しているので、それをopenposeに適用させるだけなので難しい話ではなかったです。あとは、

cd build
cmake ..
ccmake .. # オプション周りが出ますが、基本[c]onfigure して [g]enerateすればok
make -j`nproc`
sudo make install

と手順を踏んで行くことでビルドできます。

openposeにembed cameraを認識させる。

jetsonの壁ですね。opencvcv2.VideoCapture(0)でembed cameraを認識してくれず、

Error:
No camera found.

となってしまうわけです。これを改善するために調べてみたのですが、

github.com

どうやら相性が良くないらしい。OpenCVで数値指定(defaultなら0)するやつは、全部ダメ臭くソースから細かくコマンドを入れなきゃいけない模様。動かないわけではないけど、ビルドするたびにソースを書き換えるのは億劫。

海外のnvidia質問サイトをみても、声を揃えて「面倒だからusbカメラつけてやったほうがええで」という感じ。

どうしてもやりたければ、上記サイトから変更する感じですね。

まとめ

今回はしっかりリベンジできたのではないかと。半年たった今だと環境構築記事が増えていたおかげか、だいぶ楽に構築することができました。onboardカメラを使わなければ動作はするので、今の所どうしてもカメラを使わなければ行けないという状況ではないため、ここに時間をさくのはやめようかと。

というわけでお次あたりは、

shiropen.com

こんな面白いものが発表されたのでこちらも環境構築してみようかなって感じです。