2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

IBM PowerAI Vision で作成した物体検知モデルを使用して Jetson Nanoで推論してみた

Last updated at Posted at 2020-03-12

はじめに

ブラウザ操作のみで、画像認識のAIモデルが作れる「IBM PowerAI Vision」(以下、PowerAI Visionと表記します。)で作成した物体検知モデルをTensorRTの形式でエクスポートしたものを、Jetson Nanoで、取り込み推論させてみました。
PowerAI Visionでは、Faster R-CNN と Single Shot Detector のモデルが、TensorRT形式でエクスポートできますが、今回はSingle Shot Detectorを試してみました。
また、推論のプログラムは、下記Github上にあるサンプルを利用しました。
https://github.com/IBM/powerai/tree/master/vision/tensorrt-samples/samples/python/sampleSSD

実際にためしてみた手順

手順1. 事前準備(Python仮想環境と必要ライブラリの導入、サンプルコードの取得)
(注意)Jetson Nanoの標準ではPython2.7とPython3.6が使用できるが、Python3.6では上記Github上にあるサンプルコードはエラーが発生し実行できませんでした。そのため以下の手順ではPython2.7を使用する手順になります。

$ sudo apt-get update
$ sudo apt-get install python-pip
$ sudo pip install virtualenv                 # Python仮想環境作成のためvirtualenvを導入
$ virtualenv --system-site-packages aivision-infer-env    # 「aivison-infer-env」というPython仮想環境作成
$ source aivision-infer-env/bin/activate                  # 上記で作成した仮想環境に入る
$ export PATH=$PATH:/usr/local/cuda/bin                   # cudaのディレクトリをPATHに追加。これをしないと、この後の「pip install pycuda」でエラーが発生し、pycudaを導入できない
$ pip install cython
$ pip install pycuda
$ git clone https://github/com/IBM/powerai.git            # サンプルコードの取得

手順2.PowerAI Visionのモデルをコピー
PowerAI Visionでエクスポートしたモデルは、tar.gzで圧縮されているので展開し、展開されたファイルをscp等でJetson Nano上にコピーしします。今回はサンプルコードの下にmodelというディレクトリを作成し、そこにコピーしました。

手順3. 推論の実施

$ cd powerai/vision/tensorrt-samples/samples/python/sampleSSD
$ python detector_deploy.py --model_def ./model/deploy_trt.prototxt --model_weights ./model/model.caffemodel --labelmap_file ./model/labelmap.prototxt --image_name ./model/work_test_2.jpeg   # --image_nameに推論したい画像ファイルを指定してください

実行結果
以下の通り、見つかった物体(label)と位置(xmin,ymin,xmax,ymaxで囲まれる長方形の領域)、確信度(confidence)のリストが表示されます。

Image inference time: 4534 ms for 1 images
[{'confidence': 0.983039319515223, 'ymax': 80, 'label': 'no_safety_vest', 'image_id': 0, 'xmax': 238, 'xmin': 150, 'ymin': 6},
 {'confidence': 0.948571979995422, 'ymax': 309, 'label': 'safety_vest', 'image_id': 0, 'xmax': 299, 'xmin': 139, 'ymin': 88},
 'confidence': 0.5469774007797241, 'ymax': 298, 'label': 'no_helmet', 'image_id': 0, 'xmax': 341, 'xmin': 216, 'ymin': 94}]

(注1)初回実行時は、TensorRTのエンジンをビルドするのに時間がかかります。(検証時点では、30分かかりました。2回目以降違う画像を推論する場合は、ビルドされたエンジンが使われるのですぐに結果がでます。)
(注2)Jetson NanoのカメラインターフェースにRaspberry PI用のカメラをつなげて、--image_nameに「Camera」をしていると、カメラ画像からのリアルタイム処理になりますが、GPU使用率が常に100%になり、物体検出結果の画面描画の処理が間に合いませんでした。上位機種のTX2を使用してみてください。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?