2021年10月21日
EdgeTPUを活用した推論処理速度の高速化
パナソニック システムデザイン株式会社
パナソニック システムデザイン株式会社の田頭です。弊社はVieurekaチームと共にVieurekaプラットフォーム拡充を進めております。
Vieurekaカメラ(VRK-C301)はUSB3.0インターフェースを持っており、外部機器にも対応出来るため拡張性に優れています。今回は、Vieurekaカメラ上でのTensorFlow Lite推論処理速度の向上に向けて、USBを通じたEdgeTPU導入に取り組みました。EdgeTPUとは、Google社が設計した低電力デバイス向けのアドオンモジュールで、機械学習などの推論を高速に実行する環境を提供します。
本記事では、このEdgeTPU導入に向けたVieurekaカメラアプリの開発方法と、導入前後での推論処理速度の評価結果をお伝えします。
それではまず、EdgeTPU導入に向けたVieurekaカメラアプリの開発方法を説明します。
手順は以下の通りです。
- 推論モデルを変換
- デリゲートファイルを取得
- アプリパッケージにファイルを追加
- ソースコードを変更
まず、「1. 推論モデルを変換」する手順を説明します。
モデルの変換にはEdgeTPUコンパイラ(https://coral.ai/docs/edgetpu/compiler)を利用します。
上記リンク先を参照しながら、開発環境のUbuntuにダウンロードをしてください。
Ubuntu端末上でカレントディレクトリ内にTensorFlow Liteの推論モデル(ここではdetect.tflite)を配置して、下記の ”edgetpu_compiler ‘推論モデル名’” コマンドを実行すると、推論モデルの変換が出来ます。
変換に成功すると、TFLite推論モデルと同じディレクトリ内に、「”推論モデル名”_edgetpu.tflite」という名前でEdgeTPU向けの推論モデルを生成します。
この時注意したいのは、EdgeTPU向けに変換できる推論モデルには制約条件があることです。
(参考:https://coral.ai/docs/edgetpu/models-intro/#model-requirements)
制約条件の例:
・Tensorパラメータが量子化されていること
・Tensorサイズが動的でないこと
条件を満たしてないモデルを上記コマンドで変換しようとすると、変換に失敗します。ご注意ください。
次に、「2. デリゲートファイルを取得」する手順を説明します。
EdgeTPUのデリゲートファイルを取得するために、下記ページから「edgetpu_runtime_20210119.zip」(現時点での最新版)をダウンロードします。
https://coral.ai/software/#edgetpu-runtime
※導入のしやすさから、今回は「Windows 10 or macOS 10.15 Catalina」向けの.zipファイルをダウンロードしました。
ダウンロードファイルを解凍すると、下記パス内にデリゲートファイル「libedgetpu.so.1.0」が見つかるので、それを取得します。
※edgetpu_runtime>libedgetpu>throttled>aarch64>libedgetpu.so.1.0
続いて、「3. アプリパッケージにファイルを追加」する手順を説明をします。
アプリパッケージ内(ここでは「data」ディレクトリ)に、以下の2つのファイルを配置します。
- 手順1で変換した推論モデルファイル
- 手順2で取得したデリゲートファイル
最後に、「4. ソースコードを変更」する手順を説明します。
変更対象は、Tensorflow Liteのインタプリタを生成しているソースコードです。
(1)インタプリタを生成しているソースファイルに、EdgeTPUランタイムをインポートする行を追記します。
from tflite_runtime.interpreter import load_delegate
2)インタプリタ生成箇所で、EdgeTPUのデリゲート「libedgetpu.so.1.0」をロードします。
「変更前のソースコード」
interpreter = Interpreter(
model_path=‘推論モデルへのパス’
)
「変更後のソースコード」
interpreter = Interpreter(
model_path=‘推論モデルへのパス’,
experimental_delegates=[load_delegate(’ libedgetpu.so.1.0へのパス’)]
)
変更箇所は以上です。
続いて、推論処理速度評価を行います。
Vieurekaカメラ(VRK-C301)にEdgeTPUを導入した前後で、どれくらいの速度性能の変化があるのかについて、SDKサンプルアプリケーション(画像分類、オブジェクト検知)をベンチマークとしながら検証しました。
画像分類サンプルアプリケーションは、カメラ画像内の物や風景を推定、オブジェクト検知サンプルアプリケーションは、カメラに写っている物体とその位置を推定します。いずれも、TensorFlow Liteの推論モデルを使用しています。
EdgeTPU導入前後での、それぞれのアプリケーションの推論処理速度とその他の指標について、表1にまとめました。
この結果から、EdgeTPU導入後は大幅に推論処理速度が高速化していることが確認できます。
また、VieurekaカメラのCPU使用率を比較すると、両アプリ共にEdgeTPU導入後は10pt程度減少しています。このことから、元々VieurekaカメラのCPU上で行われていた計算処理がEdgeTPU側に委譲されていることが、うかがえます。
今回の検証を通じて、EdgeTPUがVieurekaカメラ上での推論処理速度の向上に有効であるということが確認できました。既にEdgeTPUでの開発実績がある方、より処理の重い画像解析処理をご検討されている方は、導入を検討されてみてはいかがでしょうか!
関連情報:
・Vieurekaカメラ スターターキット
・Vieurekaサンプルを組み合わせた姿勢推定アプリケーションの複数人対応
パナソニック システムデザイン株式会社
https://panasonic.co.jp/cns/psd/
ソリューション
ご専門分野: システム開発、サービス開発
問い合わせ先
〒222-0033
神奈川県横浜市港北区新横浜3丁目1番9号 アリーナタワー
TEL:(045)471-9160
(Webサイトの問い合わせフォームをご利用ください)
担当:Vieureka推進窓口
専門分野:システム開発、サービス開発