環境準備
Python 3.9以上を推奨。まずpipのミラーを国内に切り替えておくと以降のライブラリ導入が高速化されます。
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
pip config set install.trusted-host mirrors.aliyun.com
1. データセット作成:LabelImgを使ったアノテーション
1.1 LabelImgの取得
- GitHubリポジトリ:
https://github.com/tzutalin/labelImg - ZIPをダウンロード後、パスに日本語が含まれない場所へ展開(例:C:\tools\labelimg)
1.2 依存ライブラリのインストール
pip install lxml PyQt5
1.3 起動手順
cd C:\tools\labelimg
pyrcc5 -o libs/resources.py resources.qrc
python labelimg.py
初回起動時にresources.qrcをコンパイルするのを忘れないこと。
1.4 YOLO形式でラベリング
- 右下の「PascalVOC」ボタンを押して「YOLO」に切り替える。
- 「Open Dir」で画像フォルダを指定、「Change Save Dir」でラベル保存先を指定。
- 「W」キーで矩形を描画し、クラス名を入力。事前に
data/predefined_classes.txtを編集しておくと効率的。 - 「Auto Save mode」にチェックを入れて作業時間を短縮。
2. YOLOv8学習フロー
2.1 ライブラリ導入
pip install ultralytics
2.2 ディレクトリ構成例
project/
├─ data/
│ ├─ cat.yaml
│ ├─ train/
│ │ ├─ images/*.jpg
│ │ └─ labels/*.txt
│ ├─ val/
│ │ ├─ images/*.jpg
│ │ └─ labels/*.txt
│ └─ test/
│ ├─ images/*.jpg
│ └─ labels/*.txt
└─ yolov8n.pt
2.3 cat.yaml(データ設定ファイル)
train: data/train
val: data/val
test: data/test
nc: 1
names: ['cat']
パスは日本語を含まない絶対パスで記述。
2.4 学習実行
CLIからワンライナーで開始:
yolo task=detect mode=train model=yolov8n.pt data=data/cat.yaml epochs=100 imgsz=640
途中で中断した場合はresume=Trueを付与して再開:
yolo task=detect mode=train model=runs/detect/train/weights/last.pt data=data/cat.yaml resume=True
3. よくある疑問(FAQ)
- labels.cacheは何?
- 画像パスとアノテーションをメモリ上にキャッシュし、エポックごとの読み込み時間を削減するためのファイルです。削除しても自動再生成されます。
- 画像とラベルは同じフォルダ?
- 推奨は「images」「labels」というサブフォルダに分ける構成です。ファイル名が同じであれば読み込みに成功します。
- データセットの推奨規模
- 1クラスあれば最低でも数百枚、現実的には1000枚以上を確保し、7:2:1でtrain/val/testに分割。エポック数は50〜200程度で検証精度が頭打ちになる手前でストップ。
- 消費電力は?
- GPUを使うと電力は増加しますが、RTX 3060以上のGPUであれば1時間あたり0.3〜0.5 kWh程度。省電力設定やバッチサイズの最適化で抑制可能。
- なぜYAMLにlabelパスを書かなくても動く?
- YOLOv8は画像と同名の
.txtを同階層のlabelsフォルダから自動検索する仕様です。 - 学習後のモデルを別環境へ移植するには?
yolo export model=best.pt format=onnxでONNX形式に変換すると、TensorRT、OpenVINO、ONNX Runtimeなど多様な推論環境へ展開可能になります。