Jetson TX2にJetPack4.2を⼊れてみた
概要
JetPack4.2がリリースされたのでさっそくJetson TX2に⼊れてみました。
TensorRT5でCaffe-SSDのサンプルが用意されたそうなので、JetPack4.2をインストールし、TensorRTを用いてCaffe-SSDを動かすところまで試してみたいと思います。
TensorRT: JetPack 4.2 Highlights
- TRT Python API
- Enables all the TRT Python samples, e.g., YOLO
- TF-TRT included in monthly TensorFlow for JetPack releases
- DLA support for FP16 — AlexNet, GoogleNet, ResNet-50, and LeNet for MNIST networks have been validated
- Support for both HMMA (FP16) and IMMA (INT8) on iGPU
- Fine grain control for scheduling layers to execute on either iGPU or DLA
- New Caffe SSD and INT8 API samples
JetPack4.2のダウンロード&インストール
- Jetson Download CenterからNVIDIA SDK Managerをダウンロードします(オレンジ枠参照)。
JetPack4.1.1までは⻘⾊枠内で「JetPack」を探し、ダウンロードしていましたが、JetPack4.2からはこの「NVIDIA SDK Manager」たるものからインストールできるみたいですね。 - NVIDIA SDK Managerのインストール
ダウンロードした「sdkmanager_x.x.xx-xxxx_amd64.deb」をインストールします。
$ sudo dpkg -i ~/Download/sdkmanager_x.x.xx-xxxx_amd64.deb
- NVIDIA SDK Managerを実⾏します。
おっ︖
めちゃめちゃ格好良くなっていますね︕
選択できる⼤まかな内容は今まで通りのようです。 - 必要な機能をインストールします。
なんだか選択できる粒度が荒くなっているような?
しばらくコーヒータイムです。(プログレス表⽰もいい感じですね) - Jetson TX2にJetPack4.2のOSをインストール
- こちらも今まで通り、USBを接続し、リカバリーモードにてインストールします。
※ 追加でパッケージをインストールする際は、USB接続だけでできるようです。
TensorRT5でCaffe-SSDを実⾏してみる
Jetson TX2上の/usr/src/tensorrt にTensorRTのソースコードが格納されています。
- Caffe SSD学習済みモデル+ネットワーク定義ファイルをダウンロード
- すでに⽤意されているモデルを⽤いて検証してみます。
- 「models_VGGNet_VOC0712_SSD_300x300.tar.gz」をこちらからダウンロードします。
- deploy.prototxtおよび、caffemodelをTensorRTのdataディレクトリにコピーします。
$ tar zxvf models_VGGNet_VOC0712_SSD_300x300.tar.gz $ sudo cp models/VGGNet/VOC0712/SSD_300x300/{deploy.prototxt,VGG_VOC0712_SSD_300x300_iter_120000.caffemodel} /usr/src/tensorrt/data/ssd/ $ # deploy.prototxtをrenameします。 $ cd /usr/src/tensorrt/data/ssd $ sudo mv deploy.prototxt ssd.prototxt
- 「ssd.prototxt」の中⾝をTensorRTの仕様に合わせます。
- FlattenレイヤをReshapeレイヤに変更する
# 変更前 layer { name: "xxxxxxxxxxxxxx_flat" type: "Flatten" bottom: "xxxxxxxxxxxxxxx_perm" top: "xxxxxxxxxxxxxx_flat" flatten_param { axis: 1 } } # 変更後 layer { name: "xxxxxxxxxxxxxx_flat" type: "Reshape" bottom: "xxxxxxxxxxxxxxx_perm" top: "xxxxxxxxxxxxxx_flat" reshape_param { shape { dim: 0 dim: -1 dim: 1 dim: 1 } } } # ↑は最低限の変更のみ。
- detection_outレイヤの出⼒にkeep_countを追加する
layer { name: "detection_out" type: "DetectionOutput" bottom: "mbox_loc" bottom: "mbox_conf_flatten" bottom: "mbox_priorbox" top: "detection_out" top: "keep_count" # ←追加 ... ... }
- FlattenレイヤをReshapeレイヤに変更する
- sampleSSDをビルド&実⾏
# ビルド $ cd /usr/src/tensorrt/samples/sampleSSD $ sudo make # 実⾏ $ cd /usr/src/tensorrt/ $ sudo ./bin/sample_ssd
実⾏後、矩形描画された画像が出⼒されます。
Jetson TX2におけるTensorRT5のCaffe-SSDサンプル速度⽐較
ざっくりとまとめ
- TensorRT化することで、倍速以上の速度を実現しました。
- FP16にすることによる精度の影響は感じられませんでした。
さいごに
Caffe-SSDを使⽤している⼈はぜひ活⽤してみてください。