コンテンツにスキップ

YOLOv5訓練デプロイガイド

文書情報

本チュートリアルでは、物体検出モデル YOLOv5 の学習方法、および CSUN RV1126B 基板へのデプロイ手順について説明します。

項目内容
文書名YOLOv5訓練デプロイガイド
会社株式会社日昇テクノロジー
URLhttp://www.dragonwake.com
E-mailinfo@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基板へのデプロイ手順について説明します。データのアノテーション方法については、別途公開済みの記事を参照してください。

YOLOv5訓練およびデプロイの全体フロー

図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モデルデプロイ用ソースコード

AIDemo YOLOv5解凍後のディレクトリ構成

図2-1 AIDemo_yolov5_All.zip解凍後のディレクトリ構成

3. データセットの準備

3.1. データセットのダウンロード

「2. 資料ダウンロード」からパッケージをダウンロードした後、01-dataディレクトリで以下のコマンドを実行してデータセットを展開します。

Terminal window
unzip mask.zip

展開後、以下のファイルまたはフォルダが得られます。

  • images:学習および検証に使用する画像ファイル
  • labels:各画像に対応するYOLO形式のラベルファイル
  • list_dataset_file.py:学習用・検証用のパスリストを生成するスクリプト

YOLOv5データセット展開後のファイル構成

図3-1 データセット展開後のファイル構成

3.2. パスリストの生成

RV1126BのDocker開発環境に入り、データセットディレクトリでlist_dataset_file.pyを実行します。

Terminal window
cd ~/linuxshare/work/rv1126b/jp/embedded/images/develop_environment
./run.sh 2204
cd /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実行結果

これらのリストファイルは、後続の学習設定ファイルから参照されます。

生成されたtrain.txtとvalid.txt

図3-3 生成されたtrain.txtとvalid.txt

4. YOLOv5物体検出アルゴリズムの学習

4.1. 学習用ソースコードのダウンロード

PC側でGitを使用し、会社GitHubのリモートリポジトリをクローンします。ネットワーク状況により処理に時間がかかる場合があります。

Terminal window
git clone https://github.com/csunltd/rv1126b-yolov5.git

YOLOv5リポジトリのクローン実行結果

図4-1 YOLOv5リポジトリのクローン

クローン完了後、次のようなディレクトリ構成が得られます。

YOLOv5学習用ソースコードのディレクトリ構成

図4-2 YOLOv5学習用ソースコードのディレクトリ構成

4.2. モデル学習

YOLOv5の作業ディレクトリへ移動し、マスク検出モデルを学習する例を示します。学習前に、data/mask.yaml内のtrain.txtおよびvalid.txtのパスを、実際のデータセット配置に合わせて修正してください。

# Train/val/test sets
path: ../../01-data
train: train.txt
val: valid.txt
test: valid.txt
# Classes
nc: 2
names: ['head', 'mask']

mask.yaml設定例

図4-3 mask.yaml設定例

学習に必要なPythonモジュールをインストールします。

Terminal window
pip install PyYAML tqdm ultralytics pandas seaborn

次のコマンドで学習を開始します。

Terminal window
python train.py --data mask.yaml --cfg yolov5s.yaml --weights "" --batch-size 64

学習を開始すると、端末にエポック、損失、精度などの情報が表示されます。学習結果は./runs/train/exp*/に保存され、精度結果はresults.csvから確認できます。

YOLOv5学習中の端末出力

図4-4 YOLOv5学習中の端末出力

4.3. PC側でのモデル推論

学習完了後、検証セットで最も良い結果を得たモデルは、通常./runs/train/exp*/weights/best.ptとして生成されます。以下のコマンドで推論を実行し、モデルの検出効果を簡易評価します。

Terminal window
python detect.py --source data/images --weights ./runs/train/exp8/weights/best.pt --conf 0.5

推論結果は./runs/detect/exp*/に保存されます。

PC側YOLOv5マスク検出結果

図4-5 PC側YOLOv5マスク検出結果

4.4. ptモデルをONNXモデルへ変換

CSUN RV1126B基板へアルゴリズムをデプロイするには、最終的にRKNNモデルへ変換する必要があります。RKNNへ変換する前段階として、PyTorchのptモデルをONNXモデルへ変換します。同時にbest.anchors.txtも生成されます。

Terminal window
python export.py --include onnx --rknpu RV1126 --weights ./runs/train/exp8/weights/best.pt

RV1126B向けのRKNN変換互換性を重視する場合は、以下のように--opset 12を明示することを推奨します。

Terminal window
python export.py --include onnx --rknpu RV1126 --opset 12 --weights ./runs/train/exp8/weights/best.pt

ONNXモデルファイルは、best.ptと同じフォルダに生成されます。

ONNX変換後に生成されたbest.onnxとbest.anchors.txt

図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. 資料ダウンロード」からダウンロードして展開します。

Terminal window
cd /data/project/sales/csun/rv1126b/jp/AI/demo/Tutorial/yolov5/03-model_convert
unzip quant_dataset.zip
tar -xJf yolov5_model_convert.tar.xz

YOLOv5モデル変換Demo展開後のディレクトリ

図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デバイスをコンテナへマウントします。

Terminal window
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

rknn-toolkit2 Docker環境への入室結果

図5-2 rknn-toolkit2 Docker環境への入室

5.2.3. 量子化画像リストの生成

Docker環境内でモデル変換作業ディレクトリへ移動します。

Terminal window
cd /test/yolov5/03-model_convert/yolov5_model_convert

gen_list.pyを実行して、量子化画像リストを生成します。

Terminal window
python gen_list.py

量子化画像リスト生成コマンドの実行結果

図5-3 量子化画像リスト生成コマンドの実行結果

生成された量子化画像リストは、pic_path.txtとして保存されます。

生成されたpic_path.txt

図5-4 生成されたpic_path.txt

5.2.4. ONNXモデルをRKNNモデルへ変換

rknn_convert.pyは、デフォルトでint8量子化を行います。主なスクリプト内容は次のとおりです。

import os
import urllib
import traceback
import time
import sys
import numpy as np
import cv2
from 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.onnxyolov5_model_convertディレクトリへ配置し、以下のコマンドでモデル変換を実行します。

Terminal window
python rknn_convert.py

RKNNモデル変換中の端末出力

図5-5 RKNNモデル変換中の端末出力

変換に成功すると、CSUN RV1126B基板で実行可能なRKNNモデルが生成されます。

生成されたRKNNモデルファイル

図5-6 生成されたRKNNモデルファイル

6. YOLOv5モデルデプロイ

6.1. モデルデプロイ例の説明

本節では、YOLOv5モデルをRV1126B基板へデプロイする手順を説明します。本モデルは簡単なトレーニングのみを行ったサンプル用モデルであり、モデル精度を保証するものではありません。

6.2. 準備作業

6.2.1. ハードウェア準備

RV1126B基板、Type-Cデータケーブル、LANケーブルを用意します。MobaXtermなどを使用して、SSHでRV1126B基板にログインできます。詳細は入門ガイドを参照してください。

LANケーブルで接続します。

RV1126B基板のLAN接続例

図6-1 RV1126B基板のLAN接続例

Type-Cシリアルケーブルで接続します。

RV1126B基板のType-Cシリアル接続例

図6-2 RV1126B基板のType-Cシリアル接続例

6.2.2. 開発環境の準備

本書を初めて読む場合は、「入門ガイド」を参照し、記載された手順に従ってコンパイル環境を構築してください。

PC側のUbuntuシステムでrun.shを実行し、RV1126Bコンパイル環境に入ります。

Terminal window
cd ~/develop_environment
./run.sh 2204

RV1126B Docker開発環境への入室結果

図6-3 RV1126B Docker開発環境への入室結果

6.3. サンプルプログラムのビルド

ダウンロードしたパッケージをRV1126B Docker開発環境へ移動した後、次のコマンドを実行して展開します。

Terminal window
cd /opt/linuxshare/work/rv1126b/jp/AI/demo/Tutorial/yolov5/04-AI_deploy
tar -xvf yolov5_detect_C_demo.tar.bz2

YOLOv5検出デモ展開後のディレクトリ

図6-4 YOLOv5検出デモ展開後のディレクトリ

RV1126B Docker開発環境上でサンプルプログラムのディレクトリに入り、ビルドを実行します。

Terminal window
sudo mount -t nfs -o vers=3,proto=tcp,mountproto=tcp,nolock,retrans=5,timeo=5 192.168.11.85:/ /mnt
cd /opt/linuxshare/work/rv1126b/jp/AI/demo/Tutorial/yolov5/04-AI_deploy/yolov5_detect_C_demo/
./build.sh

YOLOv5検出デモのビルド結果

図6-5 YOLOv5検出デモのビルド結果

コンパイルに成功した後、実行プログラムディレクトリyolov5_detect_demo_release/をRV1126B基板の/userdataディレクトリへコピーします。

Terminal window
cp yolov5_detect_demo_release/ /mnt/userdata/ -rf

YOLOv5検出デモを開発ボードへコピー

図6-6 YOLOv5検出デモを開発ボードへコピー

6.4. 開発ボードでYOLOv5モデルを実行

シリアルデバッグまたはSSHデバッグでボード側シェルに入り、サンプルプログラムのデプロイ先へ移動します。

Terminal window
cd /userdata/yolov5_detect_demo_release/

サンプルプログラムを実行します。

Terminal window
chmod 777 yolov5_detect_demo
sudo ./yolov5_detect_demo

実行結果は次のとおりです。アルゴリズムの実行時間は約48msです。

RV1126B基板上でYOLOv5検出デモを実行

図6-7 RV1126B基板上でYOLOv5検出デモを実行

RV1126Bコンパイル環境から、以下のコマンドでテスト画像を取得できます。

Terminal window
cp /mnt/userdata/yolov5_detect_demo_release/result.jpg .

検出結果画像をコンパイル環境へコピー

図6-8 検出結果画像をコンパイル環境へコピー

テスト結果は次のとおりです。

RV1126B基板上のYOLOv5マスク検出結果

図6-9 RV1126B基板上のYOLOv5マスク検出結果

以上で、YOLOv5物体検出サンプルはボード上で正常に実行されました。