画像認識の環境構築にdocker を使うことがある。(たとえばJetson 用のcudaを使ったpytorchの環境構築)
そういう場合にもZED SDK を使いたいと思う。
想定する読者
- docker 環境を起動したことがある人
- stereoLabs のカメラ zed2iなどを利用している人
実施したこと
- Dockerfileの中でZED SDK のインストールを記述。
- docker build の実行
- docker run の実行
- docker runの実行後の環境内で、zed sdk を利用するプログラムの実行。
ベースとなるDockerImage
Jetpack5.1では
L4T 35.2.1 です。
それによって、CuDNN, CUDA, TensorRTのバージョンは固定されます。
それに対応するpytorch のバージョンが固定されます。
以下の例では、次のDockerImageをベースとしています。
FROM nvcr.io/nvidia/l4t-pytorch:r35.2.1-pth2.0-py3
Dockerfile の中に追記したこと
- StereoLabs で提供しているインストーラーをダウンロードする。
- zstd: Zstandard - Fast real-time compression algorithm
- ZED SDK のインストーラーは zstd がインストール済みであることを前提とする。
(追加分だけを記入してます。これだけでは動作しません)
RUN wget -O ZED_SDK_Tegra_L4T35.3_v4.1.0.zstd.run https://download.stereolabs.com/zedsdk/4.1/l4t35.2/jetsons
RUN chmod +x ZED_SDK_Tegra_L4T35.3_v4.1.0.zstd.run
RUN apt install zstd
RUN ./ZED_SDK_Tegra_L4T35.3_v4.1.0.zstd.run -- silent
改善を要する点
- wget で指定しているURLが、いつまでそのバージョンに*.run ファイルになっていてくれるかがわからない。
確認方法
- 以下の方法でzed sdk のインストールができたことを確認できる。
python3
import pyzed.sl as sl
zed = sl.Camera()
print(zed.get_sdk_version())
うれしいこと
Dockerなしの環境では
- Jetson のホスト環境自体を意図しない改変を引き起こしかねない。
- 新しいバージョンのライブラリを安全に試すことができない。
Dockerの環境では
- Jetson のホスト環境自体を破壊することなく、ソフトウェアのインストールができる。
- apt install するライブラリを記述できるので、環境構築が楽になる。
ZED SDK をもDockerfile に記述できる利点
- ZED SDK のインストール手順も docker build で実行できる。
- ホスト環境のライブラリにアクセスするために、ホスト環境のライブラリをマウントするなどという変則的なことをしなくて良い。