NXP プロセッサー実機検証ガイド 2 | NXP プロセッサー実機検証ガイド 4 | ||
NXP プロセッサー 実機検証ガイドまとめ | NXP プロセッサー 初心者ガイドまとめ |
もくじ
- はじめに
- 1. 事前準備:機械学習機能を含んだ Yocto Linux BSP イメージのブート、Windows 10 Host PC からの ssh ログイン
- 2. GStreamer のソースとして使うビデオファイルの用意
- 3. Posenet を使用した GStreamer のデモ (ソース:ビデオ)
- 4. Posenet を使用した GStreamer のデモ(ソース:ウェブカメラ)
- 5. おまけ NNStreamer デモ
- まとめ
はじめに
NXP 社の 8MPLUSLPD4-PEVK電力計測評価キットは i.MX 8M Plus プロセッサを包括的に評価するためのプラットフォームを提供しております。
機械学習機能のパッケージを含んだYocto Linux BSP イメージには GStreamer Plugin を使用した機械学習の推論環境も実装されています。
今回、GStreamer を使ったパイプライン処理による Posenet のデモを実行してみます。
今回用意するもの:
- NXP 社 8MPLUSLPD4-PEVK電力計測評価キット
- HDMI ケーブル / モニター
- LAN ケーブル
- ウェブカメラ
- Windows 10 PC (MicroSD への OS イメージの書き込み、デバッグ用 Host PC として使用。)
- USB メモリ
- MicroSD カード (16GB 以上を推奨)
参考:
主な手順としては、以下のとおりです。
- 事前準備:機械学習機能を含んだ Yocto Linux BSP イメージのブート、Host PC からの ssh ログイン
- Gstreamer のソースとして使うビデオファイルの用意
- Posenet を使用した Gstreamer のデモ (ソース:ビデオ)
- Posenet を使用した Gstreamer のデモ(ソース:ウェブカメラ)
1. 事前準備:機械学習機能を含んだ Yocto Linux BSP イメージのブート、Windows 10 Host PC からの SSH ログイン
下記 URL の手順を参考にして、機械学習機能を含んだ Yocto Linux BSP イメージのブート、Windows 10 Host PC から root で ssh ログインをしておきます。
参考:
NXP 社 i.MX 8M Plusプロセッサ:機械学習機能を含んだ Yocto Linux BSP イメージを使用した機械学習のデモ
2. GStreamer のソースとして使うビデオファイルの用意
ビデオファイルの保存先のディレクトリを作成します。
# mkdir /home/videos
解像度 1280x720 の mp4 を用意し USB メモリへ保存します。
USB メモリを PEVK の J17 コネクタへ差し込みます。
df コマンドで USB メモリを確認します。
# df
/run/media/sda1 がUSB メモリです。
USB メモリ内のビデオを先ほど作成したディレクトリにコピーします。 (ファイル名は用意されたビデオの名前にしてください)
# cp /run/media/sda1/dunc-1280-720.mp4 /home/videos/dunk-1280-720.mp4
GStreamer のワーキングディレクトリを作成し、そこへ移動します。
# mkdir /home/gst_work
# cd /home/gst_work
3. Posenet を使用した GStreamer のデモ (ソース:ビデオ)
GStreamer のデモがあらかじめ用意されていますので、それを試してみます。
# /usr/bin/gstnninferencedemo-posenet-video </path/to/video_file>
ビデオファイルのパスを先ほど用意した mp4 ファイルを指定してコマンドを実行します。
# /usr/bin/gstnninferencedemo-posenet-video /home/videos/dunk-1280-720.mp4
無事推論できることを確認できました。
推論性能は 105.1 FPS となっています。
コマンド実行後に表示されるメッセージから GStreamer のコマンドを確認できます。
gst-launch-1.0 -v filesrc location=/home/videos/dunk-1280-720.mp4
! decodebin ! queue max-size-time=0
! nninferencedemo rotation=none demo-mode=posenet model=/usr/share/gstnninferencedemo/google-coral/project-posenet/posenet_mobilenet_v1_075_353_481_quant_decoder.tflite label=no-label use-nnapi=true num-threads=4 display-stats=true enable-inference=true
! waylandsink sync=true
Posenet のネットワークモデルは下記にあることが判ります。
posenet model=/usr/share/gstnninferencedemo/google-coral/project-posenet/posenet_mobilenet_v1_075_353_481_quant_decoder.tflite
パラメータ等を修正してコマンドを試せるように、スクリプト gst.sh を作成します。
# nano gst.sh
gst.sh 内に下記をコピーします。
gst-launch-1.0 -v filesrc location=/home/videos/dunk-1280-720.mp4 \
! decodebin ! queue max-size-time=0 \
! nninferencedemo \
rotation=none \
demo-mode=posenet \
model=/usr/share/gstnninferencedemo/google-coral/project-posenet/posenet_mobilenet_v1_075_353_481_quant_decoder.tflite \
label=no-label \
use-nnapi=true \
num-threads=4 \
display-stats=true \
enable-inference=true \
! waylandsink sync=true
スクリプトを実行します。
# source ./gst.sh
無事推論できることを確認できました。
4. Posenet を使用した GStreamer のデモ (ソース:ウェブカメラ)
ウェブカメラが PEVK の J17 コネクタへ接続していることを確認します。
GStreamer のデモがあらかじめ用意されていますので、それを試してみます。
# /usr/bin/gstnninferencedemo-posenet-camera </dev/video?>
ウェブカメラのパスを指定してコマンドを実行します。
# /usr/bin/gstnninferencedemo-posenet-camera /dev/video3
無事推論できることを確認できました。(ここでは推論結果の画像を掲載しておりません。)
また、コマンド実行後に表示されるメッセージから gstreamer のコマンドを確認できます。
gst-launch-1.0 -v v4l2src device=/dev/video3 ! video/x-raw,width=1280,height=720
! queue max-size-time=0
! nninferencedemo rotation=horizontal-flip demo-mode=posenet model=/usr/share/gstnninferencedemo/google-coral/project-posenet/posenet_mobilenet_v1_075_353_481_quant_decoder.tflite label=no-label use-nnapi=true num-threads=4 display-stats=true enable-inference=true
! waylandsink sync=false
5. おまけ NNStreamer デモ
NNStreamerでは、GStreamer の標準的なデータ型に加えて、新しいデータ型「other/tensor」と「other/tensors」が追加されました。
これらを使って推論を実行してみます。
ssd mobilenet v2 ssd の Tensorflow Lite 量子化モデル、COCOラベルをダウンロードします。
# wget https://github.com/google-coral/test_data/raw/master/ssd_mobilenet_v2_coco_quant_postprocess.tflite
# wget https://github.com/google-coral/test_data/raw/master/coco_labels.txt
NNStreamer のスクリプト nnst.sh を作成します。
# nano ./nnst.sh
・nnst.sh の中身
gst-launch-1.0 --no-position v4l2src device=/dev/video3 \
! video/x-raw,width=640,height=480,framerate=30/1 \
! tee name=t t. \
! queue max-size-buffers=2 \
! imxvideoconvert_g2d ! video/x-raw,width=300,height=300,format=RGBA \
! videoconvert ! video/x-raw,format=RGB \
! tensor_converter \
! tensor_filter framework=tensorflow-lite \
model=/home/gst_work/ssd_mobilenet_v2_coco_quant_postprocess.tflite \
custom=Delegate:NNAPI \
! tensor_decoder mode=bounding_boxes \
option1=tf-ssd option2=/home/gst_work/coco_labels.txt option3=0:1:2:3,50 option4=640:480 option5=300:300 \
! mix. t. \
! queue max-size-buffers=2 \
! imxcompositor_g2d name=mix sink_0::zorder=2 sink_1::zorder=1 \
! waylandsink
スクリプト nnst.sh を実行します。
# sh ./nnst.sh
無事推論できることを確認できました。(ここでは推論結果の画像を掲載しておりません。)
参考:
まとめ
今回、GStreamer を使用して Posenet のデモ、NNStreamer を使用して mobilenet v2 ssd の動作を確認しました。
スクリプトを編集してぜひいろいろお試しください。
NXP プロセッサー実機検証ガイド 2 | NXP プロセッサー実機検証ガイド 4 | ||
NXP プロセッサー 実機検証ガイドまとめ | NXP プロセッサー 初心者ガイドまとめ |