yuv_yolov8_appの動作説明

はじめに


i-PROカメラアプリケーション開発環境の構築が完成していることを前提に説明します。
開発環境の構築が準備できていない場合、こちらを参考に完成させてください。
また、このチュートリアルではSDKのインストールディレクトリを${SDK_DIR}として記載します。

 

動作概要


yuv_yolov8_appはカメラ上のモデルにオブジェクト名と枠を描画するサンプルアプリです。

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


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

${SDK_DIR}/src/adamapp/yuv_yolov8_app

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

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

 

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


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

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

AIモデル変換ツール

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

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

AIモデル変換ツール:ONNX(PyTorch)編

ここでは、モデル変換したファイルを「yolov8s_cavalry.bin」として説明します。

 

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


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

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

チュートリアル(Container AdamApp for Azure IoT Edge編) - Technology Partner - Confluence (atlassian.net)

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

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

ビルド用環境設定は各環境に合わせて実施してください。
ここでは、ipro-ambaCV2X を指定します。

 

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

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

makeします。

$ cd src/adamapp/yuv_yolov8_app $ make

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

 

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

image-20240524-065012.png

インストール後、管理ログ画面でAIモデルの読み込みが完了するまで待ちます。数分かかる場合があります。

image-20240524-065219.png

アプリ画面を開きます(下記画像の赤枠ボタン)。

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

 

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


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

[ambaCV2Xアプリの場合]
${SDK_DIR}/src/adamapp-py/yuv_yolov8_app/data_CV2X/cnn/yolov8s_cavalry.bin
[ambaCV5Xアプリの場合]
${SDK_DIR}/src/adamapp-py/yuv_yolov8_app/data_CV5X/cnn/yolov8s_cavalry.bin

Pythonでビルドする場合はこちらを参照してください。

 

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


カメラにて何らかのモデルを撮影してください。下記の例ではモデル(手と指)が枠で囲まれ、オブジェクト名(person)が表示されていることが確認できます。

 

補足情報


設定の変更

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

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

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

AIモデルの変更方法

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

  2. main.cppの以下の部分をモデルの仕様に合わせて変更してください。
    #define NETNAME <モデルのファイル名>
    #define LAYERNAMEIN <モデルの入力レイヤー>
    #define LAYERNAMEOUT <モデルの出力レイヤー>

    char const *names (pymain.py では object_name_list)
    モデルの仕様に合わせて変更してください。

利用ポート

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