物体検出:SnapdragonでSSD MobileNetを動かしてみた

クアルコム社Snapdragon搭載のエッジAI端末で物体検出

クアルコム社の組み込み向けSoCを搭載したエッジAIコンピューティング端末(以下EB2)に、様々なAIモデルを実装して推論処理を試していきます。今回は物体検出をテーマに、TensorFlow Liteフレームワークを用いたSSD MobileNet v1モデルを組み込んでいきたいと思います。

 

AIモデルにはTensorFlow.orgTensorFlow Liteのチュートリアルで公開している学習済みモデル(COCO SSD MobileNet v1)を使用します。

AIモデルを端末に格納

EB2に実装されているGStreamerには、TensorFlow Liteフレームワークのモデルを用いたAI画像処理を実行するためのQualcomm独自のプラグイン(qtimletflite)が用意されています。このプラグインで前処理から後処理までをおこないます。前処理とは、画像/動画のダウンスケール、色変換、パディングなどをおこなうフェーズのことで、後処理とは分類、検出、セグメンテーションなどの処理をおこなうフェーズのことを指しています。

GStreamerでqtimletfliteプラグインを使用するにあたって、AIモデルとラベルデータを読み込ませる必要があるので、ダウンロードしておいたAI学習済みモデル(ssd_mobilenet_v1_1_metadata_1.tflite)COCOデータセットのラベル一覧のテキストファイル(labelmap.txt)を任意のディレクトリーに格納します。今回は"/data/misc/camera/"にしました


labelmap.txtの内容は下のリンクから参照できます。

AI推論処理

GStreamerコマンド例 (AI処理結果をmp4ファイルで保存)

root@tc-eb2:/data/misc/camera# ls
labelmap.txt ssd_mobilenet_v1_1_metadata_1.tflite test.mp4
root@tc-eb2:/data/misc/camera# gst-launch-1.0 filesrc location=/data/misc/camera/test.mp4 ! qtdemux name=demux demux. ! h264parse ! queue ! qtivdec ! qtimletflite model=/data/misc/camera/ssd_mobilenet_v1_1_metadata_1.tflite labels=/data/misc/camera/labelmap.txt postprocessing=detection ! qtioverlay ! video/x-raw\(memory:GBM\) ! queue ! omxh264enc control-rate=max-bitrate target-bitrate=6000000 interval-intraframes=29 periodicity-idr=1 ! queue ! h264parse ! mp4mux ! queue ! filesink location="/data/misc/camera/test_bbox.mp4"
root@tc-eb2:/data/misc/camera# ls
labelmap.txt ssd_mobilenet_v1_1_metadata_1.tflite test.mp4 test_bbox.mp4

コマンドを実行し処理が完了するとfilesinklocationに指定したディレクトリーに動画ファイル(test_bbox.mp4)が生成されました。この動画ファイルには検出結果のラベルとバウンディングボックスが描画されています。チュートリアル用のサンプルモデルのため精度に改善の余地はありそうですが、コマンド1つで簡単に物体検出のアルゴリズムを走らせることができました。

今回は入力をあらかじめ端末に保存しておいた動画ファイルとし、出力も動画ファイルとして端末内に保存しましたが、GStreamerには様々なプラグインがあり、入力ソースをカメラからのリアルタイム映像にしたり、AI処理後にバウンディングボックスを描画した映像をディスプレイに出力するようなプラグインもありますので、ユースケースによって柔軟に組み合わせることが可能です。

例えば、ラベル付与とバウンディングボックスを描写後にそのままHDMIディスプレイに出力する場合はGStreamerコマンドの後半部分を少し変更し、このように記述することで実行できます。

GStreamerコマンド例 (AI処理結果をHDMIディスプレイ出力)

root@tc-eb2:/data/misc/camera# ls
labelmap.txt ssd_mobilenet_v1_1_metadata_1.tflite test.mp4
root@tc-eb2:/data/misc/camera# gst-launch-1.0 filesrc location=/data/misc/camera/test.mp4 ! qtdemux name=demux demux. ! h264parse ! queue ! qtivdec ! qtimletflite model=/data/misc/camera/ssd_mobilenet_v1_1_metadata_1.tflite labels=/data/misc/camera/labelmap.txt postprocessing=detection ! qtioverlay ! video/x-raw\(memory:GBM\) ! waylandsink sync=false fullscreen=true

今後も様々なAIモデル/アルゴリズムの実行例を紹介していきます。AIを実装できるプラットフォームとしてEB2以外にも様々なラインナップを取り揃えていますので、Qualcomm Snapdragon関連の詳しい製品情報をお求めの方はぜひお問い合わせください。

お問い合わせ/お見積もり

本ページの内容に関するご質問や製品詳細情報をご希望の方はこちらからお問い合わせください。

クアルコム メーカー情報Topへ