YOLOv8訓練デプロイガイド
文書情報
本チュートリアルでは、物体検出モデルYOLOv8の学習方法、およびCSUN RV1126B基板へのデプロイ手順について説明します。
| 項目 | 内容 |
|---|---|
| 文書名 | YOLOv8訓練デプロイガイド |
| 会社 | 株式会社日昇テクノロジー |
| URL | http://www.dragonwake.com |
| info@dragonwake.com | |
| 作成日 | 2026/06/05 |
| バージョン | Ver1.0 |
| 修正内容 | 新規作成 |
1. YOLOv8概要
YOLOv8は、Ultralytics社が2023年1月10日にオープンソースとして公開した、YOLOv5をベースに更新された次世代のYOLO主要バージョンです。現在、画像分類、物体検出、インスタンスセグメンテーションなどのタスクに対応しています。YOLOv5で蓄積された実績を背景に、YOLOv8は公開前から多くのユーザーに注目されていました。主なネットワーク構成は次の図を参照してください。

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

図1-2 YOLOv8訓練・変換・デプロイの全体フロー
2. 資料ダウンロード
本マニュアルで使用する資料およびソースコードは、以下のリンクからダウンロードしてください。
解凍後のディレクトリ構成は次のとおりです。
02-training トレーニング用ソースコード03-model_convert AIモデル変換用ソースコード04-AI_deploy AIモデルデプロイ用ソースコード
図2-1 YOLOv8資料パッケージのディレクトリ構成
3. YOLOv8物体検出アルゴリズムの学習
3.1 学習用ソースコードのダウンロード
Gitを使用して、PC側でリモートリポジトリをクローンします。ネットワーク状況によっては時間がかかる場合があります。本チュートリアルでは、RV1126B向けに演算子を調整したYOLOv8リポジトリを使用します。
RV1126B Docker開発環境で、以下のコマンドを実行します。
cd ~/linuxshare/work/rv1126b/jp/embedded/images/develop_environment./run.sh 2204
cd /opt/linuxshare/work/rv1126b/jp/AI/demo/Tutorial/yolov8/02-traininggit clone https://github.com/airockchip/ultralytics_YOLOv8.git
図3-1 YOLOv8学習ソースコードのクローン実行例
実行完了後、次のようなファイルが得られます。

図3-2 Ultralytics YOLOv8ソースディレクトリ
3.2 モデル学習
本節では、YOLOv8の物体検出モデルを学習する手順について説明します。ここでは学習フローの確認を目的として、Ultralyticsに標準で用意されている小規模データセット coco8.yaml を使用し、YOLOv8mモデルの学習を行います。
coco8.yaml は動作確認用の小規模データセットであり、実運用向けの検出精度を得るためのデータセットではありません。実際の製品やアプリケーションで使用する場合は、検出対象に合わせて独自の画像データおよびアノテーションデータを準備し、専用の data.yaml を作成して学習してください。
3.2.1 学習用ディレクトリへ移動
まず、RV1126B Docker開発環境でYOLOv8の学習用ディレクトリへ移動します。
cd /opt/linuxshare/work/rv1126b/jp/AI/demo/Tutorial/yolov8/02-training/ultralytics_YOLOv8以下のコマンドで、coco8.yaml が存在することを確認します。
ls ultralytics/cfg/datasets/coco8.yaml
図3-3 coco8.yamlファイルの確認結果
coco8.yaml は、YOLOv8の学習処理を簡単に確認するためのサンプルデータセット設定ファイルです。
3.2.2 YOLOv8mモデルの学習
本環境では yolo コマンドが登録されていない場合があるため、Pythonスクリプトから学習を実行します。以下の内容で train_coco8_yolov8m.py を作成します。
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作成したスクリプトを実行して学習を開始します。
python train_coco8_yolov8m.py学習実行時の例を以下に示します。

図3-4 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 から確認できます。

図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 を作成します。
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変換を実行します。
python export_yolov8m_onnx.py
図3-7 YOLOv8mモデルのONNX変換結果
変換が正常に完了すると、runs/train/coco8_yolov8m/weights ディレクトリに best.onnx が生成されます。RKNN変換用のモデル名として使用する場合は、yolov8m.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. 資料ダウンロード』で取得したパッケージに含まれています。次のコマンドで展開します。
cd /data/project/sales/csun/rv1126b/jp/AI/demo/Tutorial/yolov8/03-model_convertunzip quant_dataset.ziptar -xJf yolov8_model_convert.tar.xz
図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デバイスをコンテナへマウントします。
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
図4-2 RKNN-Toolkit2 Docker環境の起動結果
4.2.3 量子化画像リストの生成
Docker環境内でモデル変換作業ディレクトリへ移動します。
cd /test/yolov8/03-model_convert/yolov8_model_convertgen_list.py を実行して、量子化画像リストを生成します。
python gen_list.py
図4-3 量子化画像リスト生成コマンドの実行結果
生成された量子化画像リストは、pic_path.txt として保存されます。

図4-4 生成されたpic_path.txtファイル
4.2.4 ONNXモデルをRKNNモデルへ変換
rknn_convert.py は、デフォルトでINT8量子化を行います。主なスクリプト内容は次のとおりです。
import sysfrom 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.onnx を yolov8_model_convert ディレクトリへ配置し、以下のコマンドでモデル変換を実行します。
python rknn_convert.py
図4-5 YOLOv8m RKNNモデル変換の端末出力
変換に成功すると、CSUN RV1126B基板で実行可能なRKNNモデルが生成されます。

図4-6 生成されたYOLOv8m RKNNモデルファイル
5. YOLOv8モデルデプロイ
5.1 モデルデプロイ例の説明
本節では、YOLOv8モデルをRV1126B基板へデプロイする手順について説明します。本チュートリアルで使用するモデルは、動作確認を目的として簡易的に学習したサンプルモデルです。そのため、実運用レベルのモデル精度は保証しません。
5.2 準備作業
5.2.1 ハードウェア準備
RV1126B基板、Type-Cデータケーブル、LANケーブルを用意し、MobaXtermなどを使用してSSHでRV1126B基板にログインします。詳細な接続手順については、『入門ガイド』を参照してください。
LANケーブルで接続する場合の構成例を以下に示します。

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

図5-2 RV1126B基板のType-Cシリアル接続構成
5.2.2 開発環境の準備
本書を初めて読む場合は、『入門ガイド』を参照し、記載された手順に従ってコンパイル環境を構築してください。
PC側のUbuntuシステムで run.sh を実行し、RV1126Bコンパイル環境に入ります。手順は次のとおりです。
cd ~/develop_environment./run.sh 2204
図5-3 RV1126B Docker開発環境の起動結果
5.3 サンプルプログラムのビルド
ダウンロードしたパッケージをRV1126B Docker開発環境へ移動した後、次のコマンドを実行して展開します。
cd /opt/linuxshare/work/rv1126b/jp/AI/demo/Tutorial/yolov8/04-AI_deploytar -xJf yolov8_detect_C_demo.tar.xz展開後のディレクトリ例を以下に示します。

図5-4 YOLOv8 C Demo展開後のディレクトリ
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/yolov8/04-AI_deploy/yolov8_detect_C_demo/./build.sh
図5-5 YOLOv8 C Demoのビルド結果
コンパイルに成功した後、実行プログラムディレクトリ yolov8_detect_demo_release/ をRV1126B基板の /userdata ディレクトリへコピーします。
cp yolov8_detect_demo_release/ /mnt/userdata/ -rf5.4 開発ボードでYOLOv8モデルを実行する
シリアルデバッグまたはSSHデバッグによりボード側シェルへ入り、サンプルプログラムのデプロイ先へ移動します。
cd /userdata/yolov8_detect_demo_release
図5-6 ボード側のYOLOv8 Demo実行ディレクトリ
サンプルプログラムの実行コマンドは次のとおりです。
chmod 777 yolov8_detect_demo./yolov8_detect_demo yolov8m_rv1126b.rknn test.jpg実行結果の例を以下に示します。アルゴリズムの実行時間は約106 msです。

図5-7 RV1126B上でのYOLOv8 Demo実行結果
実行結果画像は、RV1126Bコンパイル環境から以下のコマンドで取得できます。
cp /mnt/userdata/yolov8_detect_demo_release/result.jpg .
図5-8 YOLOv8推論結果画像のコピーコマンド
取得した検出結果画像の例を以下に示します。

図5-9 YOLOv8物体検出結果画像
以上で、YOLOv8物体検出サンプルはCSUN RV1126B基板上で正常に実行されました。