...
data/cnn/*.bin をご使用のモデルに置き換えてください。
main.cppの以下の部分を機種に合わせて変更してください。 cppの以下の部分をモデルの仕様に合わせて変更してください。
#define OUTSIZE_HEIGHT <モデルの入力高さ>
#define OUTSIZE_WIDTH <モデルの入力幅>
#define NETNAME <モデルのファイル名>
#define LAYERNAMEIN <モデルのレイヤー名を入力> <モデルの入力レイヤー>
#define LAYERNAMEOUT_CONV1037 <モデルの出力レイヤー名>
#define <特徴マップ(ストライド 32)のレイヤー名>
LAYERNAMEOUT_CONV1017 <モデルの出力レイヤー名>
#define <特徴マップ(ストライド 16)のレイヤー名>
LAYERNAMEOUT_CONV997 <モデルの出力レイヤー名>
#define <特徴マップ(ストライド 8)のレイヤー名>
TOTAL_CLS <モデルのクラス数>
モデルに応じて"names" (label-objectname matrix)を記述してください。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 ポートを使用します。
...