前回のおさらい

前回は組み込みデバイス上での推論を可能にするオープンソースのディープ ラーニング フレームワークであるTensorFlow Lite をVxWorks 7 21.07 + イノテック社製VX-6020ボード上で動作させ、その使用感などをレポートさせていただきました。

現状GPU対応がなくCPUのみで判定を行っていたため、Bay Trail E3800シリーズではTensorFlow Liteでの判定にはやはりパワー不足は否めませんでした。

詳細は下記記事を再読ください。

VxWorksでTensorFlow Liteを試す

デモの構成

今回は前回のイノテック社製VX-6020ボードの後継機であるAX-1020ボードを使用してデモを構築しております。

Bay Trail E3800 → Elkhart Lake x6000E となることで、どの程度判定に掛かる時間が変わるか気になるところです。

前回と同様、ボード以外に必要な機材は起動用のUSBと画像を撮るためのUSBカメラです。

TensolFlow Lite & リアルタイムOS & ボード構成図

デモの準備

  • 「VxWorks Source Build」の設定&ビルド

「VxWorks Source Build」プロジェクトを作成し、「TENSORFLOW_LITE」「TENSORFLOW_LITE_EXAMPLE」を追加します。

TensorFlow Liteそのものは上記で使用できますが、デモに必要な機能「OPENCV」「FBDEV」「ITLI915」を追加してビルドします。リアルタイムOS VxWorksのライブラリ設定画面

  • 「VxWorks Image Project」の設定&ビルド

前述の「VxWorks Source Build」を指定して「VxWorks Image Project」のプロジェクトを作成し、以下のコンポーネントを追加、設定してビルドを行います。

※Component
INCLUDE_EHCI_INIT
INCLUDE_USB_GEN2_VIDEO_INIT
INCLUDE_USB_GEN2_STORAGE_INIT
INCLUDE_DOSFS
INCLUDE_TENSORFLOW_LITE_SUPPORT
INCLUDE_FBDEV_INIT
INCLUDE_FBDEV_ITLGMC_0
INCLUDE_RAM_DISK
INCLUDE_RAM_DISK_FORMAT_DOSFS
DRV_PCI_SDHC_CTRL
DRV_TIMER_MC146818
※Parameter
CONSOLE_NAME “/ttyS0”
CONSOLE_BAUD_RATE (115200)
FILESYSTEM_SYMLINK_CONFIG_STR “<def>=/bd0a/deploy;/bin=<def>/bin;/usr=<def>/usr;/etc=<def>/etc;/lib=<def>/lib;”
ITLGMC_FBDEV_DISPLAY_0 “DP”
USB_MEM_PART_SIZE 0x2000000
RAM_DISK_SIZE 0x400000

RTOS VxWorksのカーネル設定画面

  • 「Real Time Process」アプリケーションの設定&ビルド

前述の「VxWorks Source Build」を指定して「Real Time Process」のプロジェクトを作成し、プロパティに「opencv」「tbb」「gfxJpeg」ライブラリを追加してアプリケーションを作成します。

今回作成するモデルやラベルは以下のTensorFlow Liteのsampleで使用されているものを流用して物体認識を行います。

  • Model : mobilenet_v1_1.0_224.tflite
  • Labels : mobilenet_v1_1.0_224/labels.txt

アプリケーションは以下の2つを作成します。

  1. tflitedemo     …   USBカメラから映像を取得し、ディスプレイへ投影。「shutter」が実行されるとその時の映像を用いて物体認識を行う
  2. shutter         …   「tflitedemo」へシグナルを送信し、物体認識を行わせる

 

アプリケーションの起動

TensorFlow LiteのデモはRTPで実行する必要があるためLinuxライクな「cmd」シェルからの実行が便利です。

「cmd」コマンドでシェルを移行し、「tflitedemo &」コマンドを使い、TensorFlow LiteとUSBカメラ、ディスプレイの初期化をバックグラウンドで実行します。

Target Name: vxTarget

 _________            _________
 \........\          /......../
  \........\        /......../
   \........\      /......../
    \........\    /......../
     \........\   \......./
      \........\   \...../              VxWorks SMP 64-bit
       \........\   \.../
        \........\   \./     Release version: 21.07
         \........\   -      Build date: Jun 14 2022 11:46:25
          \........\
           \......./         Copyright Wind River Systems, Inc.
            \...../   -                 1984-2022
             \.../   /.\
              \./   /...\
               -   -------

                   Board: x86_64 Processor (ACPI_BOOT_OP) SMP/SMT
               CPU Count: 4
          OS Memory Size: ~7577MB
        ED&R Policy Mode: Deployed
 Adding 11854 symbols for standalone.

-> cmd
[vxWorks *]# tflitedemo &
Launching process 'tflitedemo' ...
Process 'tflitedemo' (process Id = 0xffff800000656b00) launched.
Attachment number for process 'tflitedemo' is %1.

「shutter」コマンドを使って、その際に映像を入力画像として物体認識をさせます。下記のログは以下の画像が映っている時の解析結果です。

ログを見ると550msの時間を掛けて、48.97%の確率でPC用マウスとして認識しています。

[vxWorks *]# shutter
Launching process 'shutter' ...
Process 'shutter' (process Id = 0xffff80000078c070) launched.
Shutter pressed !
[vxWorks *]# INFO: Loaded model /usr/share/mobilenet_v1_1.0_224.tflite
INFO: resolved reporter
INFO: invoked
INFO: average time: 550 ms 
INFO: 0.48978: 674:mouse, computer mouse
INFO: 0.115095: 837:sunglass
INFO: 0.081512: 623:lens cap, lens cover
INFO: 0.0648948: 519:crash helmet
INFO: 0.0346326: 675:mousetrap

 

まとめ

今回はBay Trail E3800/Elkhart Lake x6000Eのパフォーマンス測定という形になりましたが同じATOMであっても、その性能差が大きく見えました。

TensorFlow Liteでの判定を1600ms→550msと1/3近くの時間で行うことができております。

VX-6020 AX-1020
実行速度 1600ms 550ms

リアルタイム処理で使用するにはGPUの対応などHW的な支援が必要になるとは思いますが、この速度で判定ができるのであれば用途次第では実用も可能なのではないでしょうか。

※ Wind RiverおよびVxWorksは、Wind River Systemsの登録商標です。

※ TensorFlow、TensorFlowロゴ、その他関連するマークはGoogle Inc.の商標又は登録商標です。

 

    お問い合わせは​こちら

    メールマガジンの登録はこちら

     
    ※ご登録いただきましたメールアドレスは弊社の掲げる個人情報保護方針に沿って管理し、
     お客様の同意なく第三者に開示・提供することはございません。
     詳細につきましては、当サイトの「個人情報保護方針」をご参照ください。

      製品リストはこちら