...
Pythonでビルドする場合は下記が必要です。
numpy
OpenCV
Info |
---|
外部ライブラリの利用については、後ほど説明します。 |
...
下記からAIモデル変換ツールを取得し、環境構築してください。
AIモデル変換ツール - Technology Partner - Confluence (atlassian.net)
Info |
---|
お問い合わせからご提供までは数日お時間をいただいております。 |
環境構築が完了しましたら、下記を参考にyolov5サンプルモデルの変換を行ってください。
AIモデル変換ツール:ONNX(PyTorch)編 - Technology Partner - Confluence (atlassian.net)
ここでは、モデル変換したファイルを「yolov5_cavalry.bin」として説明します。
サンプルアプリのビルド方法(C/C++)
...
Info |
---|
ここでは、AdamAppとしてビルドする方法を記載しています。 Container AdamApp for Azure IoT Edgeとしてビルドする場合は下記を参照ください。 チュートリアル(Container AdamApp for Azure IoT Edge編) - Technology Partner - Confluence (atlassian.net) |
SDKのインストールディレクトリでビルド用環境設定ファイルの読み込みを実施します。
...
次にサンプルアプリのディレクトリに、モデル変換したyolov5_cavalry.binファイルを下記の構成でコピーします。binファイルを下記の構成で配置します。
[ambaCV2Xアプリの場合]
${SDK_DIR}/src/adamapp/yuv_yolov5_app/data_CV2X/cnn/yolov5_cavalry.bin
[ambaCV5Xアプリの場合]
${SDK_DIR}/src/adamapp/yuv_yolov5_app/data_CV5X/cnn/yolov5_cavalry.bin
makeします。
...
カメラにインストールします(例:下記画像の緑枠からインストール可能)。作成した.extファイルを選択してインストールしてください。
アプリ画面を開きます(下記画像の赤枠ボタン)。
...
インストール後、管理ログ画面でAIモデルの読み込みが完了するまで待ちます。数分かかる場合があります。
...
カメラの映像が表示されていれば成功です。
サンプルアプリのビルド方法(Python)
...
Info |
---|
ここでは、AdamAppとしてビルドする方法を記載しています。 Container AdamApp for Azure IoT Edgeとしてビルドする場合は下記を参照ください。 チュートリアル(Container AdamApp for Azure IoT Edge編) - Technology Partner - Confluence (atlassian.net) |
サンプルアプリのディレクトリに、モデル変換したyolov5_cavalry.binファイルを下記の構成で配置します。
[ambaCV2Xアプリの場合]
${SDK_DIR}/src/adamapp-py/yuv_yolov5_app/data_CV2X/cnn/yolov5_cavalry.bin
[ambaCV5Xアプリの場合]
${SDK_DIR}/src/adamapp-py/yuv_yolov5_app/data_CV5X/cnn/yolov5_cavalry.bin
Pythonでビルドする場合はこちらを参照してください。
インストール後、管理ログ画面でAIモデルの読み込みが完了するまで待ちます。数分かかる場合があります。
...
サンプルアプリの使用方法
...
Info |
---|
サンプルアプリの解像度初期値はC/C++は1920×1080、Pythonは1280x720です。カメラの解像度設定がC/C++は1920×1080、Pythonは1280x720でない場合は動作しません。詳細は下記を確認ください。 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_CV2X/cnn/*.bin
および
data_CV5X/cnn/*.bin
をご使用のモデルに置き換えてください。main.cppの以下の部分をモデルの仕様に合わせて変更してください。
#define OUTSIZE_HEIGHT <モデルの入力高さ>
#define OUTSIZE_WIDTH <モデルの入力幅>
#define NETNAME <モデルのファイル名>
#define LAYERNAMEIN <モデルの入力レイヤー>
#define LAYERNAMEOUT_CONV1037 <特徴マップ(ストライド 32)のレイヤー名>
#define LAYERNAMEOUT_CONV1017 <特徴マップ(ストライド 16)のレイヤー名>
#define LAYERNAMEOUT_CONV997 <特徴マップ(ストライド 8)のレイヤー名>
#define TOTAL_CLS <モデルのクラス数>
char const *names (pymain.py では object_name_list)
モデルの仕様に合わせて変更してください
const float anchors (pymain.py では anchors_list)
以下URLの、 anchors の値を使用しています。
https://github.com/ultralytics/yolov5/blob/master/models/yolov5s.yaml
モデルによっては値が異なることがありますので、モデルの仕様をご確認ください。
・LAYERNAMEOUTに設定するレイヤー名について
yuv_yolov5_app (および yuv_yolo_app) は、特徴マップがAIモデルの出力となっている前提で作られています。
例:入力解像度 640x640 の yolov5s
最後段のconv層(3つ)が、特徴マップを出力するレイヤーとなります。
c : 3×(5+クラス数)。この例の場合、c=255なのでクラス数は80になります。
h, w : 特徴マップのグリッド数。入力解像度を stride で割った値となります。
...
したがって LAYERNAMEOUT の設定は以下になります。
#define LAYERNAMEOUT_CONV1037 "418" // stride 32
#define LAYERNAMEOUT_CONV1017 "372" // stride 16
#define LAYERNAMEOUT_CONV997 "326" // stride 8
・利用ポート
このアプリケーションは、WebSocket 通信に 8083 ポートを使用します。