YOLOv8で検出結果を画像として保存する方法|再学習用データセット作成

投稿日:2025年12月7日日曜日 最終更新日:

Google Colab MathJax Ultralytics YOLOv8

X f B! P L
アイキャッチ画像 YOLOv8で検出物を切り出す(crop)方法

この記事でできること

  • YOLOv8で検出した物体をクラス別に自動切り出し
  • 切り出し画像の保存場所とフォルダ構成を理解
  • 再学習・データセット作成への活用方法が分かる

なぜ検出結果を crop するのか?

YOLOv8の検出結果を切り出す処理は、単なる可視化ではなく、再学習用データセットの作成アノテーション作業の省力化に使われます。

  • 検出結果をそのまま学習データとして再利用したい
  • 人物・動物など特定クラスだけを集めたい
  • 大量画像から必要な部分だけを抽出したい

このような用途では、save_crop=True による自動切り出しが非常に有効です。

インストール

!pip install ultralytics

検出と切り出し

コードは以下の2 行だけあれば動きます。save_crop=Trueを指定するだけで、自動で切り出しが行われます。

from ultralytics import YOLO

model = YOLO("yolov8n.pt")
results = model("input.jpg", save_crop=True)

モデルや入力画像を変更する場合

学習済みモデルや入力画像を変更したい場合は、以下のように指定します。


model = YOLO("best.pt")   # 独自学習モデル
results = model("images/*.jpg", save_crop=True)

複数画像をまとめて処理した場合でも、クラス別に自動で切り出し画像が保存されます。

切り出し画像の保存場所

実行後、切り出し画像は自動的に以下のフォルダに保存されます。

runs/detect/フォルダ以下に、実行ごとに連番のフォルダ(例: predictpredict2)が作成され、その中のcrops/に格納されます。

出力例

runs/
 └ detect/
     └ predict/
         ├ labels/
         └ crops/
             ├ person/
             ├ dog/
             └ cat/

切り出し画像を表示する

保存された画像をまとめて表示するためのコード例です。globを使って、連番のpredict*フォルダ全体から画像ファイルを検索しています。

import glob
import matplotlib.pyplot as plt
from PIL import Image

# Paths to cropped images (folder name changes depending on run: predict, predict2, etc.)
paths = glob.glob("runs/detect/predict/crops/*/*.jpg")

# Layout settings (example: display in 8 columns)
cols = 8
rows = (len(paths) + cols - 1) // cols

plt.figure(figsize=(5, 2 * rows))

for i, p in enumerate(paths):
    img = Image.open(p)
    plt.subplot(rows, cols, i + 1)
    plt.imshow(img)
    plt.axis("off")
    plt.title(p.split("/")[-2])   # Display class name as title

plt.tight_layout()
plt.show()

分割した画像

分割した画像

よくある質問:座標だけ取得したい場合

画像を切り出さずに、バウンディングボックスの座標 \(x_1, y_1, x_2, y_2\) だけを取得したい場合は、save_crop=Trueを指定せずにresultsオブジェクトから情報を取得します。

results = model("input.jpg")
for box in results[0].boxes:
    print(box.xyxy)  # x1, y1, x2, y2

まとめ

YOLOv8では save_crop=True を指定するだけで、 検出した物体をクラス別に自動で切り出し、画像として保存できます。

この機能は、再学習用データセットの作成や、 大量画像からの特徴抽出など、実務でも非常に役立ちます。

検出 → 切り出し → 再学習という流れを作ることで、 YOLOv8をより実践的に活用できるようになります。