YOLOv5訓練デプロイガイド
文書情報
本チュートリアルでは、物体検出モデル YOLOv5 の学習方法、および CSUN RV1126B 基板へのデプロイ手順について説明します。
| 項目 | 内容 |
|---|---|
| 文書名 | YOLOv5訓練デプロイガイド |
| 会社 | 株式会社日昇テクノロジー |
| URL | http://www.dragonwake.com |
| info@dragonwake.com | |
| 作成日 | 2026/06/04 |
| バージョン | Ver1.0 |
| 修正内容 | 新規作成 |
1. YOLOv5概要
YOLOv5モデルは、Ultralytics社により2020年6月9日に公開された物体検出モデルです。YOLOv3をベースに改良されており、YOLOv5s、YOLOv5m、YOLOv5l、YOLOv5xの4種類のモデルが提供されています。
YOLOv4と比較すると、検出精度の低下を抑えながら、平均的な重みファイルサイズが小さく、学習時間および推論時間が短いという特徴があります。YOLOv5のネットワーク構造は、入力部、Backbone、Neck、Headの4つの部分で構成されます。
本チュートリアルでは、YOLOv5物体検出アルゴリズムの学習方法、およびCSUN RV1126B基板へのデプロイ手順について説明します。データのアノテーション方法については、別途公開済みの記事を参照してください。

図1-1 YOLOv5訓練およびデプロイの全体フロー
2. 資料ダウンロード
本マニュアルに必要な資料およびソースコードは、以下のリンクからダウンロードしてください。
https://dl.dragonwake.com/download/rv1126b/AI/demo/yolov5/AIDemo_yolov5_All.zip
解凍後のディレクトリ構成は次のとおりです。
|-- 01-data データセット|-- 02-training トレーニング用ソースコード|-- 03-model_convert AIモデル変換用ソースコード|-- 04-AI_deploy AIモデルデプロイ用ソースコード
図2-1 AIDemo_yolov5_All.zip解凍後のディレクトリ構成
3. データセットの準備
3.1. データセットのダウンロード
「2. 資料ダウンロード」からパッケージをダウンロードした後、01-dataディレクトリで以下のコマンドを実行してデータセットを展開します。
unzip mask.zip展開後、以下のファイルまたはフォルダが得られます。
images:学習および検証に使用する画像ファイルlabels:各画像に対応するYOLO形式のラベルファイルlist_dataset_file.py:学習用・検証用のパスリストを生成するスクリプト

図3-1 データセット展開後のファイル構成
3.2. パスリストの生成
RV1126BのDocker開発環境に入り、データセットディレクトリでlist_dataset_file.pyを実行します。
cd ~/linuxshare/work/rv1126b/jp/embedded/images/develop_environment./run.sh 2204cd /opt/linuxshare/work/rv1126b/jp/AI/demo/Tutorial/yolov5/01-data/python list_dataset_file.py実行すると、学習サンプルリストtrain.txtと検証サンプルリストvalid.txtが生成されます。

図3-2 list_dataset_file.py実行結果
これらのリストファイルは、後続の学習設定ファイルから参照されます。

図3-3 生成されたtrain.txtとvalid.txt
4. YOLOv5物体検出アルゴリズムの学習
4.1. 学習用ソースコードのダウンロード
PC側でGitを使用し、会社GitHubのリモートリポジトリをクローンします。ネットワーク状況により処理に時間がかかる場合があります。
git clone https://github.com/csunltd/rv1126b-yolov5.git
図4-1 YOLOv5リポジトリのクローン
クローン完了後、次のようなディレクトリ構成が得られます。

図4-2 YOLOv5学習用ソースコードのディレクトリ構成
4.2. モデル学習
YOLOv5の作業ディレクトリへ移動し、マスク検出モデルを学習する例を示します。学習前に、data/mask.yaml内のtrain.txtおよびvalid.txtのパスを、実際のデータセット配置に合わせて修正してください。
# Train/val/test setspath: ../../01-data
train: train.txtval: valid.txttest: valid.txt
# Classesnc: 2names: ['head', 'mask']
図4-3 mask.yaml設定例
学習に必要なPythonモジュールをインストールします。
pip install PyYAML tqdm ultralytics pandas seaborn次のコマンドで学習を開始します。
python train.py --data mask.yaml --cfg yolov5s.yaml --weights "" --batch-size 64学習を開始すると、端末にエポック、損失、精度などの情報が表示されます。学習結果は./runs/train/exp*/に保存され、精度結果はresults.csvから確認できます。

図4-4 YOLOv5学習中の端末出力
4.3. PC側でのモデル推論
学習完了後、検証セットで最も良い結果を得たモデルは、通常./runs/train/exp*/weights/best.ptとして生成されます。以下のコマンドで推論を実行し、モデルの検出効果を簡易評価します。
python detect.py --source data/images --weights ./runs/train/exp8/weights/best.pt --conf 0.5推論結果は./runs/detect/exp*/に保存されます。

図4-5 PC側YOLOv5マスク検出結果
4.4. ptモデルをONNXモデルへ変換
CSUN RV1126B基板へアルゴリズムをデプロイするには、最終的にRKNNモデルへ変換する必要があります。RKNNへ変換する前段階として、PyTorchのptモデルをONNXモデルへ変換します。同時にbest.anchors.txtも生成されます。
python export.py --include onnx --rknpu RV1126 --weights ./runs/train/exp8/weights/best.ptRV1126B向けのRKNN変換互換性を重視する場合は、以下のように--opset 12を明示することを推奨します。
python export.py --include onnx --rknpu RV1126 --opset 12 --weights ./runs/train/exp8/weights/best.ptONNXモデルファイルは、best.ptと同じフォルダに生成されます。

図4-6 ONNX変換後に生成されたファイル
5. rknn-toolkitモデル変換
5.1. rknn-toolkitモデル変換環境の構築
ONNXモデルをCSUN RV1126B基板で実行するには、RKNNモデルへ変換する必要があります。そのため、事前にrknn-toolkitモデル変換ツールの環境を構築します。TensorFlow、TensorFlow Lite、Caffe、Darknetなどのモデルも同様の流れで変換できますが、本チュートリアルではONNXモデルを例に説明します。
モデル変換環境の構築手順は、「AIモデル変換環境構築ガイド」を参照してください。
5.2. ONNXモデルをRKNNモデルへ変換
.rknn拡張子のモデルは、CSUN RV1126B基板上で評価および実行できます。TensorFlow、TensorFlow Lite、Caffe、Darknet、ONNX、PyTorchなど一般的な学習済みモデルは、提供されるRKNN-Toolkit2を用いてRKNNモデルへ変換できます。その他のフレームワークで学習したモデルも、一度ONNX形式へ変換してからRKNNへ変換できます。
詳しい変換手順は、「RKNNモデル変換チュートリアル例」を参照してください。
5.2.1. モデル変換Demoの展開
モデル変換Demoは、「2. 資料ダウンロード」からダウンロードして展開します。
cd /data/project/sales/csun/rv1126b/jp/AI/demo/Tutorial/yolov5/03-model_convertunzip quant_dataset.ziptar -xJf yolov5_model_convert.tar.xz
図5-1 モデル変換Demo展開後のディレクトリ
5.2.2. モデル変換ツールDocker環境へ入る
以下のコマンドで作業ディレクトリをDockerコンテナへマウントします。/data/project/sales/csun/rv1126b/jp/AI/demo/Tutorialを作業領域とし、コンテナ内では/testとして参照します。また、/dev/bus/usb:/dev/bus/usbによりUSBデバイスをコンテナへマウントします。
docker run -t -i --privileged \ -v /dev/bus/usb:/dev/bus/usb \ -v /data/project/sales/csun/rv1126b/jp/AI/demo/Tutorial:/test \ rknn-toolkit2:2.3.2-cp38 /bin/bash
図5-2 rknn-toolkit2 Docker環境への入室
5.2.3. 量子化画像リストの生成
Docker環境内でモデル変換作業ディレクトリへ移動します。
cd /test/yolov5/03-model_convert/yolov5_model_convertgen_list.pyを実行して、量子化画像リストを生成します。
python gen_list.py
図5-3 量子化画像リスト生成コマンドの実行結果
生成された量子化画像リストは、pic_path.txtとして保存されます。

図5-4 生成されたpic_path.txt
5.2.4. ONNXモデルをRKNNモデルへ変換
rknn_convert.pyは、デフォルトでint8量子化を行います。主なスクリプト内容は次のとおりです。
import osimport urllibimport tracebackimport timeimport sysimport numpy as npimport cv2from rknn.api import RKNN
ONNX_MODEL = 'best.onnx'RKNN_MODEL = './yolov5_mask_rv1126b.rknn'DATASET = './pic_path.txt'QUANTIZE_ON = True
if __name__ == '__main__': rknn = RKNN(verbose=True)
if not os.path.exists(ONNX_MODEL): print('model not exist') exit(-1)
print('--> Config model') rknn.config( mean_values=[[0, 0, 0]], std_values=[[255, 255, 255]], target_platform='rv1126b' ) print('done')
print('--> Loading model') ret = rknn.load_onnx(model=ONNX_MODEL) if ret != 0: print('Load yolov5 failed!') exit(ret) print('done')
print('--> Building model') ret = rknn.build(do_quantization=QUANTIZE_ON, dataset=DATASET) if ret != 0: print('Build yolov5 failed!') exit(ret) print('done')
print('--> Export RKNN model') ret = rknn.export_rknn(RKNN_MODEL) if ret != 0: print('Export yolov5 rknn failed!') exit(ret) print('done')best.onnxをyolov5_model_convertディレクトリへ配置し、以下のコマンドでモデル変換を実行します。
python rknn_convert.py
図5-5 RKNNモデル変換中の端末出力
変換に成功すると、CSUN RV1126B基板で実行可能なRKNNモデルが生成されます。

図5-6 生成されたRKNNモデルファイル
6. YOLOv5モデルデプロイ
6.1. モデルデプロイ例の説明
本節では、YOLOv5モデルをRV1126B基板へデプロイする手順を説明します。本モデルは簡単なトレーニングのみを行ったサンプル用モデルであり、モデル精度を保証するものではありません。
6.2. 準備作業
6.2.1. ハードウェア準備
RV1126B基板、Type-Cデータケーブル、LANケーブルを用意します。MobaXtermなどを使用して、SSHでRV1126B基板にログインできます。詳細は入門ガイドを参照してください。
LANケーブルで接続します。

図6-1 RV1126B基板のLAN接続例
Type-Cシリアルケーブルで接続します。

図6-2 RV1126B基板のType-Cシリアル接続例
6.2.2. 開発環境の準備
本書を初めて読む場合は、「入門ガイド」を参照し、記載された手順に従ってコンパイル環境を構築してください。
PC側のUbuntuシステムでrun.shを実行し、RV1126Bコンパイル環境に入ります。
cd ~/develop_environment./run.sh 2204
図6-3 RV1126B Docker開発環境への入室結果
6.3. サンプルプログラムのビルド
ダウンロードしたパッケージをRV1126B Docker開発環境へ移動した後、次のコマンドを実行して展開します。
cd /opt/linuxshare/work/rv1126b/jp/AI/demo/Tutorial/yolov5/04-AI_deploytar -xvf yolov5_detect_C_demo.tar.bz2
図6-4 YOLOv5検出デモ展開後のディレクトリ
RV1126B Docker開発環境上でサンプルプログラムのディレクトリに入り、ビルドを実行します。
sudo mount -t nfs -o vers=3,proto=tcp,mountproto=tcp,nolock,retrans=5,timeo=5 192.168.11.85:/ /mntcd /opt/linuxshare/work/rv1126b/jp/AI/demo/Tutorial/yolov5/04-AI_deploy/yolov5_detect_C_demo/./build.sh
図6-5 YOLOv5検出デモのビルド結果
コンパイルに成功した後、実行プログラムディレクトリyolov5_detect_demo_release/をRV1126B基板の/userdataディレクトリへコピーします。
cp yolov5_detect_demo_release/ /mnt/userdata/ -rf
図6-6 YOLOv5検出デモを開発ボードへコピー
6.4. 開発ボードでYOLOv5モデルを実行
シリアルデバッグまたはSSHデバッグでボード側シェルに入り、サンプルプログラムのデプロイ先へ移動します。
cd /userdata/yolov5_detect_demo_release/サンプルプログラムを実行します。
chmod 777 yolov5_detect_demosudo ./yolov5_detect_demo実行結果は次のとおりです。アルゴリズムの実行時間は約48msです。

図6-7 RV1126B基板上でYOLOv5検出デモを実行
RV1126Bコンパイル環境から、以下のコマンドでテスト画像を取得できます。
cp /mnt/userdata/yolov5_detect_demo_release/result.jpg .
図6-8 検出結果画像をコンパイル環境へコピー
テスト結果は次のとおりです。

図6-9 RV1126B基板上のYOLOv5マスク検出結果
以上で、YOLOv5物体検出サンプルはボード上で正常に実行されました。