目次
はじめに
i-PROカメラアプリケーション開発環境の構築が完成していることを前提に説明します。
開発環境の構築が準備できていない場合、こちらを参考に完成させてください。
また、このチュートリアルではSDKのインストールディレクトリを${SDK_DIR}
として記載します。
動作概要
yuv_yolo_appはカメラ上のモデルにオブジェクト名と枠を描画するサンプルアプリです。
動作に必要な外部ライブラリ
Pythonでビルドする場合は下記が必要です。
numpy
外部ライブラリの利用については、後ほど説明します。
サンプルアプリのディレクトリパス
C/C++のソースコードは下記に格納されています。
${SDK_DIR}/src/adamapp/yuv_yolo_app
Pythonのソースコードは下記に格納されています。
${SDK_DIR}/src/adamapp-py/yuv_yolo_app
サンプルアプリのビルド方法(C/C++)
SDKのインストールディレクトリでビルド用環境設定ファイルの読み込みを実施します。
$ cd ${SDK_DIR} $ source setup_env.sh ipro-ambaCV2X
ビルド用環境設定は各環境に合わせて実施してください。
ここでは、ipro-ambaCV2X
を指定します。
次にサンプルアプリのディレクトリに移動し、makeします。
$ cd src/adamapp/yuv_yolo_app $ make
${SDK_DIR}/src/adamapp/yuv_yolo_app に.extファイルが作成されていれば成功です。
カメラにインストールします(例:下記画像の緑枠からインストール可能)。作成した.extファイルを選択してインストールしてください。
アプリ画面を開きます(下記画像の赤枠ボタン)。
カメラの映像が表示されていれば成功です。
サンプルアプリのビルド方法(Python)
Pythonでビルドする場合はこちらを参照してください。
サンプルアプリの使用方法
サンプルアプリの解像度初期値は1920×1080です。カメラの解像度設定が1920×1080でない場合は動作しません。詳細は下記を確認ください。
ADAM_DevYcVideo_Create()の呼び出しに失敗する - Technology Partner - Confluence (atlassian.net)
カメラにて何らかのモデルを撮影してください。下記の例ではモデル(手と指)が枠で囲まれ、オブジェクト名(person)が表示されていることが確認できます。
補足情報
・設定の変更
このアプリケーションには、ユーザーが変更できるいくつかの設定があります。 一部の設定を変更する場合は、「ADAM OPERATION UI」HTMLページの「AppPrefs」ボタンを押してください。
以下は、ユーザーが現在変更できる設定のリストです。
Resoultion:
YUV 画像を取得するための解像度。HD(1280x720)またはFHD(1920x1080)を指定してください。ただし、カメラの性能によっては指定した値で動作しない場合があります。Frame rate:
YUV画像を取得するためのフレームレート。 1以上を指定してください。 ただし、カメラの性能によっては指定された値で動作しない場合があります。
・AIモデルの変更方法
data/cnn/*.bin をご使用のモデルに置き換えてください。
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 <高さスケール値>モデルに応じて"objectname" (label-objectname matrix)を記述してください。
・利用ポート
このアプリケーションは、WebSocket 通信に 8083 ポートを使用します。