コンテンツにスキップ

YOLOv8訓練デプロイガイド

文書情報

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

項目内容
文書名YOLOv8訓練デプロイガイド
会社株式会社日昇テクノロジー
URLhttp://www.dragonwake.com
E-mailinfo@dragonwake.com
作成日2026/06/05
バージョンVer1.0
修正内容新規作成

1. YOLOv8概要

YOLOv8は、Ultralytics社が2023年1月10日にオープンソースとして公開した、YOLOv5をベースに更新された次世代のYOLO主要バージョンです。現在、画像分類、物体検出、インスタンスセグメンテーションなどのタスクに対応しています。YOLOv5で蓄積された実績を背景に、YOLOv8は公開前から多くのユーザーに注目されていました。主なネットワーク構成は次の図を参照してください。

YOLOv8のネットワーク構成

図1-1 YOLOv8のネットワーク構成

本チュートリアルでは、YOLOv8物体検出モデルの学習方法、およびCSUN RV1126B基板へのデプロイ手順について説明します。データのアノテーション方法については、別途公開済みの記事を参照してください。

YOLOv8の訓練、変換、デプロイ全体フロー

図1-2 YOLOv8訓練・変換・デプロイの全体フロー

2. 資料ダウンロード

本マニュアルで使用する資料およびソースコードは、以下のリンクからダウンロードしてください。

AIDemo_yolov8_All.zip

解凍後のディレクトリ構成は次のとおりです。

02-training トレーニング用ソースコード
03-model_convert AIモデル変換用ソースコード
04-AI_deploy AIモデルデプロイ用ソースコード

YOLOv8資料パッケージのディレクトリ構成

図2-1 YOLOv8資料パッケージのディレクトリ構成

3. YOLOv8物体検出アルゴリズムの学習

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

Gitを使用して、PC側でリモートリポジトリをクローンします。ネットワーク状況によっては時間がかかる場合があります。本チュートリアルでは、RV1126B向けに演算子を調整したYOLOv8リポジトリを使用します。

RV1126B Docker開発環境で、以下のコマンドを実行します。

Terminal window
cd ~/linuxshare/work/rv1126b/jp/embedded/images/develop_environment
./run.sh 2204
cd /opt/linuxshare/work/rv1126b/jp/AI/demo/Tutorial/yolov8/02-training
git clone https://github.com/airockchip/ultralytics_YOLOv8.git

YOLOv8学習ソースコードのクローン実行例

図3-1 YOLOv8学習ソースコードのクローン実行例

実行完了後、次のようなファイルが得られます。

Ultralytics YOLOv8ソースディレクトリ

図3-2 Ultralytics YOLOv8ソースディレクトリ

3.2 モデル学習

本節では、YOLOv8の物体検出モデルを学習する手順について説明します。ここでは学習フローの確認を目的として、Ultralyticsに標準で用意されている小規模データセット coco8.yaml を使用し、YOLOv8mモデルの学習を行います。

coco8.yaml は動作確認用の小規模データセットであり、実運用向けの検出精度を得るためのデータセットではありません。実際の製品やアプリケーションで使用する場合は、検出対象に合わせて独自の画像データおよびアノテーションデータを準備し、専用の data.yaml を作成して学習してください。

3.2.1 学習用ディレクトリへ移動

まず、RV1126B Docker開発環境でYOLOv8の学習用ディレクトリへ移動します。

Terminal window
cd /opt/linuxshare/work/rv1126b/jp/AI/demo/Tutorial/yolov8/02-training/ultralytics_YOLOv8

以下のコマンドで、coco8.yaml が存在することを確認します。

Terminal window
ls ultralytics/cfg/datasets/coco8.yaml

coco8.yamlの存在確認

図3-3 coco8.yamlファイルの確認結果

coco8.yaml は、YOLOv8の学習処理を簡単に確認するためのサンプルデータセット設定ファイルです。

3.2.2 YOLOv8mモデルの学習

本環境では yolo コマンドが登録されていない場合があるため、Pythonスクリプトから学習を実行します。以下の内容で train_coco8_yolov8m.py を作成します。

Terminal window
cat > train_coco8_yolov8m.py <<'PY'
from ultralytics import YOLO
if __name__ == "__main__":
model = YOLO("yolov8m.pt")
model.train(
data="ultralytics/cfg/datasets/coco8.yaml",
imgsz=640,
epochs=10,
batch=4,
workers=4,
device=0,
project="runs/train",
name="coco8_yolov8m",
)
PY

作成したスクリプトを実行して学習を開始します。

Terminal window
python train_coco8_yolov8m.py

学習実行時の例を以下に示します。

YOLOv8m学習開始時の端末出力

図3-4 YOLOv8mモデル学習開始時の端末出力

学習完了時の例を以下に示します。

YOLOv8m学習完了時の端末出力

図3-5 YOLOv8mモデル学習完了時の端末出力

上記のスクリプトでは、YOLO("yolov8m.pt") によりYOLOv8mの事前学習済みモデルを読み込みます。カレントディレクトリに yolov8m.pt が存在しない場合、Ultralyticsにより初回実行時に自動的にダウンロードされます。

ここで使用する yolov8m.pt は、学習開始前の事前学習済みモデルです。一方、学習実行後に生成される best.pt および last.pt は、今回の学習結果として保存されるモデルファイルです。

モデルファイルは ./runs/train/coco8_yolov8m に保存されます。学習結果の精度情報は、./runs/train/coco8_yolov8m/results.csv から確認できます。

YOLOv8m学習後のweightsディレクトリ

図3-6 YOLOv8m学習後のweightsディレクトリ

主な出力ファイルは次のとおりです。

best.pt : 検証データに対して最も良い評価結果を得たモデル
last.pt : 最終エポック終了時点のモデル

通常、推論やONNX変換に使用する場合は、検証結果が最も良い best.pt を使用します。学習を途中から再開する場合は、last.pt を使用します。

3.3 PTモデルをONNXモデルへ変換

学習済みの best.pt をONNX形式に変換します。以下のコマンドで、Pythonスクリプト export_yolov8m_onnx.py を作成します。

Terminal window
cat > export_yolov8m_onnx.py <<'PY'
from ultralytics import YOLO
if __name__ == "__main__":
model = YOLO("./runs/train/coco8_yolov8m/weights/best.pt")
model.export(
format="onnx",
imgsz=640,
opset=12,
half=False,
simplify=False,
dynamic=False,
)
PY

以下のコマンドでONNX変換を実行します。

Terminal window
python export_yolov8m_onnx.py

YOLOv8m ONNX変換の端末出力

図3-7 YOLOv8mモデルのONNX変換結果

変換が正常に完了すると、runs/train/coco8_yolov8m/weights ディレクトリに best.onnx が生成されます。RKNN変換用のモデル名として使用する場合は、yolov8m.onnx に変更してください。

生成されたbest.onnxファイル

図3-8 生成されたbest.onnxファイル

4. RKNN-Toolkitモデル変換

4.1 RKNN-Toolkitモデル変換環境の構築

ONNXモデルをCSUN RV1126B基板で実行するには、RKNNモデルへ変換する必要があります。そのため、事前にRKNN-Toolkitモデル変換ツールの環境を構築します。TensorFlow、TensorFlow Lite、Caffe、Darknetなどのモデルも同様の流れで変換できますが、本チュートリアルではONNXモデルを例に説明します。

モデル変換環境の構築手順は、『AIモデル変換環境構築ガイド』を参照してください。

4.2 ONNXモデルをRKNNモデルへ変換

EASY-EAI Nano-TBでは、.rknn 拡張子のモデル評価および実行をサポートしています。TensorFlow、TensorFlow Lite、Caffe、Darknet、ONNX、PyTorchなど一般的な学習済みモデルは、RKNN-Toolkit2を使用してRKNNモデルへ変換できます。その他のフレームワークで学習したモデルも、一度ONNX形式へ変換してからRKNNへ変換できます。

詳しい変換手順は、『RKNNモデル変換チュートリアル例』を参照してください。

4.2.1 モデル変換Demoの展開

モデル変換Demoは、『2. 資料ダウンロード』で取得したパッケージに含まれています。次のコマンドで展開します。

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

YOLOv8モデル変換Demoの展開結果

図4-1 YOLOv8モデル変換Demoの展開結果

4.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環境の起動

図4-2 RKNN-Toolkit2 Docker環境の起動結果

4.2.3 量子化画像リストの生成

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

Terminal window
cd /test/yolov8/03-model_convert/yolov8_model_convert

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

Terminal window
python gen_list.py

量子化画像リストの生成

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

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

生成されたpic_path.txt

図4-4 生成されたpic_path.txtファイル

4.2.4 ONNXモデルをRKNNモデルへ変換

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

import sys
from rknn.api import RKNN
ONNX_MODEL = 'yolov8m.onnx'
DATASET = './pic_path.txt'
RKNN_MODEL = './yolov8m_rv1126b.rknn'
QUANTIZE_ON = True
if __name__ == '__main__':
rknn = RKNN(verbose=False)
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 model failed!')
exit(ret)
print('done')
print('--> Building model')
ret = rknn.build(do_quantization=QUANTIZE_ON, dataset=DATASET)
if ret != 0:
print('Build model failed!')
exit(ret)
print('done')
print('--> Export rknn model')
ret = rknn.export_rknn(RKNN_MODEL)
if ret != 0:
print('Export rknn model failed!')
exit(ret)
print('done')
rknn.release()

学習で得られた yolov8m.onnxyolov8_model_convert ディレクトリへ配置し、以下のコマンドでモデル変換を実行します。

Terminal window
python rknn_convert.py

YOLOv8m RKNN変換の端末出力

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

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

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

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

5. YOLOv8モデルデプロイ

5.1 モデルデプロイ例の説明

本節では、YOLOv8モデルをRV1126B基板へデプロイする手順について説明します。本チュートリアルで使用するモデルは、動作確認を目的として簡易的に学習したサンプルモデルです。そのため、実運用レベルのモデル精度は保証しません。

5.2 準備作業

5.2.1 ハードウェア準備

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

LANケーブルで接続する場合の構成例を以下に示します。

RV1126B基板のLAN接続構成

図5-1 RV1126B基板のLAN接続構成

Type-Cケーブルでシリアル接続する場合の構成例を以下に示します。

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

図5-2 RV1126B基板のType-Cシリアル接続構成

5.2.2 開発環境の準備

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

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

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

RV1126B Docker開発環境の起動

図5-3 RV1126B Docker開発環境の起動結果

5.3 サンプルプログラムのビルド

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

Terminal window
cd /opt/linuxshare/work/rv1126b/jp/AI/demo/Tutorial/yolov8/04-AI_deploy
tar -xJf yolov8_detect_C_demo.tar.xz

展開後のディレクトリ例を以下に示します。

YOLOv8 C Demoの展開後ディレクトリ

図5-4 YOLOv8 C Demo展開後のディレクトリ

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/yolov8/04-AI_deploy/yolov8_detect_C_demo/
./build.sh

YOLOv8 C Demoのビルド結果

図5-5 YOLOv8 C Demoのビルド結果

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

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

5.4 開発ボードでYOLOv8モデルを実行する

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

Terminal window
cd /userdata/yolov8_detect_demo_release

ボード側のYOLOv8 Demo実行ディレクトリ

図5-6 ボード側のYOLOv8 Demo実行ディレクトリ

サンプルプログラムの実行コマンドは次のとおりです。

Terminal window
chmod 777 yolov8_detect_demo
./yolov8_detect_demo yolov8m_rv1126b.rknn test.jpg

実行結果の例を以下に示します。アルゴリズムの実行時間は約106 msです。

RV1126B上でのYOLOv8 Demo実行結果

図5-7 RV1126B上でのYOLOv8 Demo実行結果

実行結果画像は、RV1126Bコンパイル環境から以下のコマンドで取得できます。

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

YOLOv8推論結果画像のコピーコマンド

図5-8 YOLOv8推論結果画像のコピーコマンド

取得した検出結果画像の例を以下に示します。

YOLOv8物体検出結果画像

図5-9 YOLOv8物体検出結果画像

以上で、YOLOv8物体検出サンプルはCSUN RV1126B基板上で正常に実行されました。