yuv_dnn_appの動作説明

 

目次


 

はじめに


i-PROカメラアプリケーション開発環境の構築が完成していることを前提に説明します。
開発環境の構築が準備できていない場合、こちらを参考に完成させてください。

また、このチュートリアルではSDKのインストールディレクトリを${SDK_DIR}として記載します。

 

動作概要


yuv_dnn_appはカメラ上のモデルを推論、結果を出力するサンプルアプリです。

 

動作に必要な外部ライブラリ


特になし。

 

サンプルアプリのディレクトリパス


C/C++のソースコードは下記に格納されています。

${SDK_DIR}/src/adamapp/yuv_dnn_app

Pythonのソースコードは下記に格納されています。

${SDK_DIR}/src/adamapp-py/yuv_dnn_app

 

AIモデル変換ツールの利用


サンプルアプリをビルドする前に、AIモデル変換ツールを利用する必要があります。

yuv_dnn_appサンプルアプリには下記ファイルを用意しているので、AIモデル変換ツールを利用しなくても動作確認は可能です。

[ambaCV2Xアプリの場合]
${SDK_DIR}/src/adamapp/yuv_dnn_app/data_CV2X/cnn/mobilenet_cavalry.bin
[ambaCV5Xアプリの場合]
${SDK_DIR}/src/adamapp/yuv_dnn_app/data_CV5X/cnn/mobilenet_cavalry.bin

下記からAIモデル変換ツールを取得し、環境構築してください。

AIモデル変換ツール - Technology Partner - Confluence (atlassian.net)

お問い合わせからご提供までは数日お時間をいただいております。

 環境構築が完了しましたら、下記を参考にサンプルモデルの変換を行ってください。

AIモデル変換ツール:Caffe編 - Technology Partner - Confluence (atlassian.net)

 

サンプルアプリのビルド方法(C/C++)


ここでは、AdamAppとしてビルドする方法を記載しています。

Container AdamAppとしてビルドする場合は下記を参照ください。

チュートリアル(Container AdamApp) - Technology Partner - Confluence

SDKのインストールディレクトリでビルド用環境設定ファイルの読み込みを実施します。

$ cd ${SDK_DIR} $ source setup_env.sh ipro-ambaCV2X

 

次にサンプルアプリのディレクトリに、モデル変換したmobilenet_cavalry.binファイルを下記の構成で配置します。

[ambaCV2Xアプリの場合]
${SDK_DIR}/src/adamapp/yuv_dnn_app/data_CV2X/cnn/mobilenet_cavalry.bin
[ambaCV5Xアプリの場合]
${SDK_DIR}/src/adamapp/yuv_dnn_app/data_CV5X/cnn/mobilenet_cavalry.bin

makeします。

$ cd src/adamapp/yuv_dnn_app $ make

${SDK_DIR}/src/adamapp/yuv_dnn_app に.extファイルが作成されていれば成功です。

 

カメラにインストールします(例:下記画像の緑枠からインストール可能)。作成した.extファイルを選択してインストールしてください。
アプリ画面を開きます(下記画像の赤枠ボタン)。

 

カメラの映像が表示されていれば成功です。

 

サンプルアプリのビルド方法(Python)


SDKのインストールディレクトリでビルド用環境設定ファイルの読み込みを実施します。

$ cd ${SDK_DIR} $ source setup_env.sh ipro-ambaCV2X

 

次にサンプルアプリのディレクトリに、モデル変換したmobilenet_cavalry.binファイルを下記の構成で配置します。

[ambaCV2Xアプリの場合]
${SDK_DIR}/src/adamapp/yuv_dnn_app/data_CV2X/cnn/mobilenet_cavalry.bin
[ambaCV5Xアプリの場合]
${SDK_DIR}/src/adamapp/yuv_dnn_app/data_CV5X/cnn/mobilenet_cavalry.bin

 

makeします。

${SDK_DIR}/src/adamapp-py/yuv_dnn_app に.extファイルが作成されていれば成功です。

 

カメラにインストールします(例:下記画像の緑枠からインストール可能)。作成した.extファイルを選択してインストールしてください。
アプリ画面を開きます(下記画像の赤枠ボタン)。

 

カメラの映像が表示されていれば成功です。

 

サンプルアプリの使用方法


画面左上にToy_poodleなど犬種の名前が表示されています。犬の画像などをカメラに映してみると、該当する犬種の数値が増加することが確認できます。各自で試してみてください。

 

補足情報


・設定の変更

このアプリケーションには、ユーザーが変更できるいくつかの設定があります。 一部の設定を変更する場合は、「ADAM OPERATION UI」HTMLページの「AppPrefs」ボタンを押してください。
以下は、ユーザーが現在変更できる設定のリストです。

Resoultion:
YUV 画像を取得するための解像度。HD(1280x720)またはFHD(1920x1080)を指定してください。ただし、カメラの性能によっては指定した値で動作しない場合があります。

Frame rate:
YUV画像を取得するためのフレームレート。 1以上を指定してください。 ただし、カメラの性能によっては指定された値で動作しない場合があります。

・AIモデルの変更方法

  1. data_CV2X/cnn/mobilenetv1_ssd_cavalry.bin
    data_CV5X/cnn/mobilenetv1_ssd_cavalry.bin
    および
    data_CV2X/cnn/mobilenet_priorbox_fp32.bin
    data_CV5X/cnn/mobilenet_priorbox_fp32.bin
    をご使用のモデルに置き換えてください。

  2. main.cppの以下の部分を機種に合わせて変更してください。
    #define OUTSIZE_HEIGHT <モデルの入力高さ>
    #define OUTSIZE_WIDTH <モデルの入力幅>

    #define NETNAME <モデルのファイル名>
    #define PRIORBOXFILE <前のボックスのファイル名>
    #define LAYERNAMEIN <モデルのレイヤー名を入力>
    #define LAYERNAMEOUT_MBOX_LOC <境界ボックスの位置を示すモデルの出力レイヤー名>
    #define LAYERNAMEOUT_MBOX_CONF_FLATTEN <境界ボックスの信頼性を示すモデルの出力レイヤー名>
    #define PROPERTY_NUMCLASSES <背景ラベルを含むクラスの数>
    #define PROPERTY_MBOXLOCSIZE <境界ボックスの数 * 4> : 4 は (x,y,w,h) を意味します
    #define PROPERTY_BACKGROUND_LABEL_ID <背景ラベル ID>

    次のパラメータは、tensorflow SSD に対してのみ有効です。 caffe SSD の場合は、これらの値を 0 に設定してください。
    #define X_SCALE <X スケール値>
    #define Y_SCALE <Yスケール値>
    #define WIDTH_SCALE <幅スケール値>
    #define HEIGHT_SCALE <高さスケール値>

  3. モデルに応じて"objectname" (label-objectname matrix)を記述してください。

・利用ポート

このアプリケーションは、WebSocket 通信に 8082 ポートを使用します。