コンテンツにスキップ

YOLOv11-seg訓練デプロイガイド

文書情報

本チュートリアルでは、インスタンスセグメンテーションモデル YOLOv11-seg の学習方法、および CSUN RV1126B 基板へのデプロイ手順について説明します。

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

修正履歴

NOバージョン修正内容修正日
1Ver1.0新規作成2026/06/08

この文書の情報は、文書を改善するため、事前の通知なく変更されることがあります。最新版は弊社ホームページ https://www.dragonwake.com をご参照ください。

株式会社日昇テクノロジーの書面による許可のない複製は、いかなる形態においても厳重に禁じられています。

1. YOLOv11-seg 概要

YOLOv11-seg は、YOLO(You Only Look Once)シリーズの最新メンバーであり、リアルタイムインスタンスセグメンテーション向けに設計されています。YOLO ファミリーの高速推論性能を維持しながら、ネットワーク構造とセグメンテーションヘッドにより、ピクセルレベルの物体検出・分割を行います。自動運転、医用画像、産業検査など、精度と速度が求められる場面に適しています。

本手順書では、インスタンスセグメンテーションアルゴリズム YOLOv11-seg の学習、および CSUN RV1126B 基板へのデプロイ手順について説明します。データアノテーション方法については、過去の記事を参照してください。

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

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

2. 資料ダウンロード

本マニュアルに必要な資料およびソースコードは、次のリンクからダウンロードしてください。

AIDemo_yolov11-seg_All.zip

解凍後の構成は次のとおりです。

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

図2-1 ダウンロード資料を展開した後のディレクトリ構成

図2-1 ダウンロード資料を展開した後のディレクトリ構成

3. YOLOv11-seg モデルの学習

YOLOv11-seg の学習ソースコードは、エクスポート部分が Ultralytics 社の GitHub 版から一部変更されています。そのため、本資料で指定する学習ソースコードの利用を推奨します。

3.1 データセットの準備

YOLOv11-seg の訓練を開始する前に、crack(ひび割れデータセット)などの訓練用データを準備します。このデータセットは学習プロジェクトの圧縮パッケージ内にも含まれています。ディレクトリ構成は次の図を参照してください。

図3-1 crack-segデータセットのディレクトリ構成

図3-1 crack-segデータセットのディレクトリ構成

crack-seg のラベルデータ形式は次の図を参照してください。先頭の値はクラス ID、後続の値は輪郭を表す polygon 座標です。

図3-2 YOLOセグメンテーションラベルの形式(クラスと輪郭座標)

図3-2 YOLOセグメンテーションラベルの形式(クラスと輪郭座標)

JSON 形式のアノテーションデータを label 形式へ変換する必要がある場合は、./data/json_2_yolo.py スクリプトを使用できます。

3.2 訓練パラメータの設定

データ変換後、モデル訓練用の data.yamldefault.yamlyolo11.yaml を設定します。

  • data.yaml: 学習データと検証データのパス、クラス数、クラス名を指定します。
  • default.yaml: YOLO11 の訓練パラメータを指定します。必要に応じて調整できます。
  • yolo11.yaml: YOLO11 のモデル構造を定義するファイルです。モデル訓練時にはクラス数を変更する必要があります。

3.3 モデル訓練

上記の手順が完了したら、train.py を開き、data.yamldefault.yamlyolo11.yaml のパスを設定します。

from pathlib import Path
import os
from ultralytics import YOLO
import ultralytics.data.utils as data_utils
# OMP 関連エラー(例: "OMP: Hint This means...")が発生する場合に使用します。
os.environ["KMP_DUPLICATE_LIB_OK"] = "TRUE"
# Ultralytics のデータセット基準ディレクトリを相対パスに設定します。
# これにより、data.yaml の path: ../demo/crack-seg が
# ./datasets/../demo/crack-seg として解釈され、最終的に ./demo/crack-seg を参照します。
data_utils.DATASETS_DIR = Path("datasets")
if __name__ == '__main__':
# 学習設定ファイル、データセット設定ファイル、モデル構造ファイルを指定します。
# 本スクリプトは ultralytics_yolo11 のプロジェクトルートで実行してください。
cfg = "./demo/crack-seg/default.yaml"
data = "./demo/crack-seg/data.yaml"
# weight = "./demo/weights/yolo11n-seg.pt" # .pt または yolo11-seg.yaml を指定できます。
weight = "./demo/crack-seg/yolo11-seg.yaml"
print("YOLO11-seg セグメンテーションモデルの学習を開始します。")
print(f"学習設定ファイル: {cfg}")
print(f"データセット設定ファイル: {data}")
print(f"モデルファイル: {weight}")
model = YOLO(weight)
results = model.train(
data=data,
cfg=cfg
)
print("YOLO11-seg セグメンテーションモデルの学習が完了しました。")

訓練を開始するには、RV1126B Docker 開発環境で次のコマンドを実行します。

Terminal window
cd /home/csun/linuxshare/work/rv1126b/jp/embedded/images/develop_environment
./run.sh 2204
cd /opt/linuxshare/work/rv1126b/jp/AI/demo/Tutorial/yolov11-seg/02-training/ultralytics_yolo11
python train.py

図3-3 YOLOv11-seg訓練開始時のターミナル出力

図3-3 YOLOv11-seg訓練開始時のターミナル出力

訓練完了後の評価結果は次のとおりです。

図3-4 YOLOv11-seg訓練完了時の評価結果

図3-4 YOLOv11-seg訓練完了時の評価結果

生成されたモデルファイルは次のとおりです。

./crack/train2/weights/best.pt

図3-5 訓練後に生成された best.pt / last.pt ファイル

図3-5 訓練後に生成された best.pt / last.pt ファイル

3.4 PC 側でのモデル推論

学習が完了すると、default.yaml で設定した project ディレクトリに学習過程と、検証セットで最も良い結果を得たモデルが保存されます。predict-seg.py を実行すると、モデルの効果を初期確認できます。predict-seg.py では、モデルパス、入力画像、推論デバイス、画像サイズを設定し、画像前処理、モデル推論、結果描画を行います。

実際のモデルファイルパスを確認してください。

from ultralytics import YOLO
# 学習済みセグメンテーションモデルと推論画像を指定します。
# 本スクリプトは ultralytics_yolo11 のプロジェクトルートで実行してください。
model_path = "./crack/train2/weights/best.pt"
image_path = "./demo/crack-seg/test/images/3848.rf.eebe99038cd40502695607594e000258.jpg"
print("YOLO11-seg モデルの推論を開始します。")
print(f"入力モデル: {model_path}")
print(f"入力画像: {image_path}")
model = YOLO(model_path) # 学習済みモデルを読み込みます。
# モデル推論を実行します。
results = model(image_path)
for result in results:
boxes = result.boxes # 検出ボックスの出力です。
masks = result.masks # セグメンテーションマスクの出力です。
keypoints = result.keypoints # 姿勢推定キーポイントの出力です。
probs = result.probs # 画像分類の確率出力です。
obb = result.obb # 回転ボックスの出力です。
result.show() # 画面に表示します。
result.save(filename="result.jpg") # 推論結果を保存します。
print("YOLO11-seg モデルの推論が完了しました。")

実行コマンドは次のとおりです。

Terminal window
python predict-seg.py

実行結果は次の図を参照してください。

図3-6 PC側での推論実行ログ

図3-6 PC側での推論実行ログ

図3-7 PC側のYOLOv11-seg推論結果画像

図3-7 PC側のYOLOv11-seg推論結果画像

3.5 PT モデルから ONNX への変換

PC 側で export.py を実行し、PT モデルを ONNX または RKNN 変換用フォーマットへエクスポートします。コード例では format = 'rknn' を指定しています。

from ultralytics import YOLO
if __name__ == '__main__':
# エクスポート形式を指定します。
# 選択可能な形式例: 'torchscript', 'onnx', 'openvino', 'engine', 'coreml',
# 'saved_model', 'pb', 'tflite', 'edgetpu', 'tfjs', 'paddle', 'ncnn', 'rknn'
format = 'rknn'
# 学習済みモデルを指定します。
# 本スクリプトは ultralytics_yolo11 のプロジェクトルートで実行してください。
weight = "./crack/train2/weights/best.pt" # .pt または yolo11-seg.yaml を指定できます。
print("YOLO11-seg モデルのエクスポートを開始します。")
print(f"入力モデル: {weight}")
print(f"エクスポート形式: {format}")
model = YOLO(weight)
results = model.export(format=format)
print("YOLO11-seg モデルのエクスポートが完了しました。")

実行コマンドは次のとおりです。

Terminal window
python export.py

実行結果は次の図を参照してください。

図3-8 PTモデルをRKNN変換用形式へエクスポートしたターミナル出力

図3-8 PTモデルをRKNN変換用形式へエクスポートしたターミナル出力

変換後のモデルファイルは同じディレクトリに保存されます。

図3-9 エクスポート後に生成された best.onnx ファイル

図3-9 エクスポート後に生成された 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 モデルへ変換

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

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

4.2.1 モデル変換展開

モデル変換 Demo は、「2. 資料ダウンロード」よりダウンロードして展開します。

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

図4-1 モデル変換パッケージを展開した後のディレクトリ構成

図4-1 モデル変換パッケージを展開した後のディレクトリ構成

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

図4-2 RKNN-Toolkit2 Dockerコンテナの起動

図4-2 RKNN-Toolkit2 Dockerコンテナの起動

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

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

Terminal window
cd /test/yolov11-seg/03-model_convert/yolov11_seg_model_convert

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

Terminal window
python gen_list.py

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

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

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

図4-4 生成された 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 = 'best.onnx'
ONNX_MODEL = 'yolov11s.onnx'
DATASET = './pic_path.txt'
RKNN_MODEL = './yolov11s_rv1126b.rknn'
# RKNN_MODEL = './dog_rope.rknn'
QUANTIZE_ON = True
if __name__ == '__main__':
# Create RKNN object
rknn = RKNN(verbose=False)
# Pre-process config
print('--> Config model')
rknn.config(mean_values=[[0, 0, 0]], std_values=[
[255, 255, 255]], target_platform='rv1126b')
print('done')
# Load model
print('--> Loading model')
ret = rknn.load_onnx(model=ONNX_MODEL)
if ret != 0:
print('Load model failed!')
exit(ret)
print('done')
# Build model
print('--> Building model')
ret = rknn.build(do_quantization=QUANTIZE_ON, dataset=DATASET)
if ret != 0:
print('Build model failed!')
exit(ret)
print('done')
# Export rknn model
print('--> Export rknn model')
ret = rknn.export_rknn(RKNN_MODEL)
if ret != 0:
print('Export rknn model failed!')
exit(ret)
print('done')
# Release
rknn.release()

best.onnx をモデル変換ディレクトリへ配置し、以下のコマンドでモデル変換を実行します。

Terminal window
cp ../../02-training/ultralytics_yolo11/crack/train2/weights/best.onnx ./
python rknn_convert.py

図4-5 ONNXモデルからRKNNモデルへの変換ログ

図4-5 ONNXモデルからRKNNモデルへの変換ログ

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

図4-6 変換後に生成された RKNN モデルファイル

図4-6 変換後に生成された RKNN モデルファイル

5. YOLOv11-seg モデルデプロイ

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

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

5.2 準備作業

5.2.1 ハードウェア準備

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

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

図5-1 LANケーブルによるネットワーク接続構成

図5-1 LANケーブルによるネットワーク接続構成

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

図5-2 Type-Cシリアルケーブルによる接続構成

図5-2 Type-Cシリアルケーブルによる接続構成

5.2.2 開発環境の準備

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

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

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

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

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

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

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

Terminal window
cd /opt/linuxshare/work/rv1126b/jp/AI/demo/Tutorial/yolov11-seg/04-AI_deploy
tar -xJf yolov11_seg_C_demo.tar.xz

ダウンロードファイルを展開すると、次のようになります。

図5-4 AIデプロイ用サンプルプログラムの展開結果

図5-4 AIデプロイ用サンプルプログラムの展開結果

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/yolov11-seg/04-AI_deploy/yolov11_seg_C_demo/
./build.sh

図5-5 YOLOv11-segサンプルプログラムのビルド結果

図5-5 YOLOv11-segサンプルプログラムのビルド結果

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

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

5.4 開発ボードで YOLOv11-seg モデルを実行

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

Terminal window
cd /userdata/yolov11_seg_demo_release/

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

Terminal window
chmod 777 yolov11_seg_demo
./yolov11_seg_demo yolov11n_seg_rv1126b.rknn crack.jpg

実行結果は次の図に示します。

図5-6 開発ボード上でのYOLOv11-segデモ実行結果

図5-6 開発ボード上でのYOLOv11-segデモ実行結果

アルゴリズム実行時間は約 117 ms です。

図5-7 開発ボード上でのアルゴリズム実行時間

図5-7 開発ボード上でのアルゴリズム実行時間

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

Terminal window
cp /mnt/userdata/yolov11_seg_demo_release/result.jpg .
cp /mnt/userdata/yolov11_seg_demo_release/mask_bgr.jpg .

図5-8 推論結果画像をPC側へコピーするコマンド

図5-8 推論結果画像をPC側へコピーするコマンド

図5-9 ボード側で生成されたセグメンテーションマスク画像

図5-9 ボード側で生成されたセグメンテーションマスク画像

図5-10 ボード側で生成されたひび割れセグメンテーション結果画像

図5-10 ボード側で生成されたひび割れセグメンテーション結果画像

以上で、YOLOv11-seg モデルはボード上で正常に実行されました。