Ultralytics YOLO27: ウェイトリストに登録する
YOLOのライセンス
Ultralytics用語集に戻る

Data Augmentation

データ拡張では、既存の画像を反転、切り抜き、色調変更などでランダムに変換し、モデルを学習させます。これにより汎化性能が向上します。

データ拡張は、既存のサンプルに反転、クロップ、リスケーリング、色調変更、画像の合成などのランダム変換を適用することで、学習データセットの多様性を高めます。変換後のコピーには元のラベルが保持されるため、視点、照明、位置が変わっても物体は同じ物体であるとモデルが学習します。新しい画像の収集やラベリングには時間とコストがかかるため、拡張は過学習を防ぐ最も低コストな手段です。現代のコンピュータービジョンモデルのほぼすべてが、データ拡張を使って学習します。

データ拡張の仕組み#

多くの学習パイプラインではオンラインで拡張を行います。データローダーがバッチを構築する際に各画像を変換し、毎回新しいランダムパラメーターを選ぶため、各エポックで画像の異なるバージョンを参照します。一方、オフライン拡張では学習前に固定数の変換済みコピーをディスクに保存するため、ストレージ使用量が増え、モデルが参照できる異なるバリエーションも大幅に少なくなります。

データ拡張でデータを損なわないためのルールは2つあります。1つ目は、ピクセルとともにラベルも移動させることです。物体検出、インスタンスセグメンテーション、姿勢推定では、幾何変換によってすべてのバウンディングボックス、マスク、キーポイントを更新する必要があります。また、水平反転では左右のキーポイントも入れ替えます。2つ目は、実世界で起こり得る変換を使うことです。垂直反転は航空画像や顕微鏡画像には適していますが、街路シーンでは推論時に現れない上下逆さまの車が生成されます。torchvisionの変換では、画像と一緒にボックスを渡すと、1つ目のルールに自動的に対応できます。

from urllib.request import urlopen

from PIL import Image
from torchvision import tv_tensors
from torchvision.transforms import v2

image = Image.open(urlopen("https://ultralytics.com/images/bus.jpg"))  # 810 x 1080 pixels
boxes = tv_tensors.BoundingBoxes([[50, 400, 250, 900]], format="XYXY", canvas_size=(1080, 810))

# Flip every time (p=1.0) and shift colors; the box must move with the pixels
augment = v2.Compose([v2.RandomHorizontalFlip(p=1.0), v2.ColorJitter(brightness=0.4, saturation=0.7)])
new_image, new_boxes = augment(image, boxes)

print(f"Original box: {boxes.tolist()}")
print(f"Flipped box:  {new_boxes.tolist()}")

画像左側の人物を囲むボックスは、幅810ピクセルの画像を基準に反転して、[50, 400, 250, 900]から[560, 400, 760, 900]へ移動します。一方、カラージッターはボックスに触れずにピクセルの色を変更します。

一般的な手法#

  • 幾何変換: 反転、回転、スケーリング、平行移動、クロップ、せん断、射影変換によって、カメラ位置や物体サイズの違いをシミュレートします。
  • フォトメトリック変換: 明るさ、コントラスト、彩度、色相の変更に加え、ぼかしやノイズを使って、照明、センサー、画像品質の違いをシミュレートします。
  • オクルージョン: ランダム消去やカットアウトで矩形領域を塗りつぶし、モデルが物体の単一の部分だけに依存できないようにします。
  • 画像の合成: MixUpは2枚の画像とそのラベルを混合し、CutMixは一方の画像のパッチをもう一方に貼り付けます。モザイクは4枚の画像を1つの学習サンプルにタイル状に配置し、コピー・ペーストはセグメンテーション済みの物体を新しい背景に移動します。
  • 自動化ポリシー: RandAugmentは、変換の数と強度という2つの設定だけで制御されるランダムな変換シーケンスを適用します。これにより、以前の学習ベースのポリシーで必要だった高コストな探索を省けます。

物体検出向けデータ拡張パイプライン#

検出パイプラインでは複数の変換を連続して適用し、それぞれに固有の確率を設定します。そのため、学習画像ごとに異なるランダムな組み合わせが適用されます。

Ultralytics YOLOの学習では、デフォルトでこのパイプラインが実行され、すべての画像にモザイク (mosaic=1.0)、50%の確率での水平反転 (fliplr=0.5)、最大±50%のスケーリング、HSV色調変更が適用されます。また、最後の10エポック (close_mosaic=10) ではモザイクを無効にし、完全で自然な見た目の画像を使ってモデルの学習を仕上げます。

from ultralytics import YOLO

# 事前学習済みYOLO26nモデルを読み込みます
model = YOLO("yolo26n.pt")

# fliplr: 水平反転の確率、scale: ズーム範囲 (+/- 70%)、degrees: 回転範囲 (+/- 5)
results = model.train(data="coco8.yaml", epochs=10, fliplr=0.5, scale=0.7, degrees=5.0)

この実行中、YOLO26のトレーナーは、最初の3つの拡張済みバッチをtrain_batch0.jpg、train_batch1.jpg、train_batch2.jpgとしてボックス付きで保存するため、長時間の実行を始める前に各設定の効果を確認できます。

  • 合成データ: レンダリングエンジン、シミュレーター、または拡散モデルを使ってゼロから生成します。データ拡張では、既存の実画像を変更します。
  • データ前処理: リサイズや正規化など、学習時と推論時のすべての画像に同じように適用する決定論的な処理です。データ拡張はランダムで、学習時にのみ実行されます。
  • テスト時拡張 (TTA): 反転やリスケーリングしたコピーなど、同じ入力を複数の拡張バージョンにして推論し、予測を統合します。わずかな精度向上と引き換えに、計算量が増加します。

ソリューションを見る

スポーツにおけるコンピュータービジョン

スポーツにおけるコンピュータービジョン

Ultralytics YOLOが、選手やボールの追跡、パフォーマンス分析、コーチングへの知見、アスリートのリハビリを通じて、スポーツビジョンをどのように支えるかをご紹介します。
詳しく見る
航空画像向けコンピュータービジョン

航空画像向けコンピュータービジョン

Ultralytics YOLOを使用して、ドローンや航空画像をリアルタイムの知見に変換し、農業、水産養殖、自然保護、地理空間分析に活用できます。
詳しく見る
航空宇宙分野のコンピュータービジョン

航空宇宙分野のコンピュータービジョン

Ultralytics YOLOを活用して航空宇宙分野でコンピュータビジョンを導入し、航空機検査、滑走路上のFOD検出、空港の地上業務、複合材の欠陥検出に活用できます。
詳しく見る
セキュリティ分野のコンピュータービジョン

セキュリティ分野のコンピュータービジョン

Ultralytics YOLOモデルであらゆる施設を保護しましょう。ビジョンAIは、周辺監視、脅威検知、ナンバープレート認識、職場の安全管理を支援します。
詳しく見る
ロボティクス分野のコンピュータービジョン

ロボティクス分野のコンピュータービジョン

Ultralytics YOLOモデルで、よりスマートなマシンを実現しましょう。ロボティクスにおけるビジョンAIは、自律ナビゲーション、認識、物体追跡、リアルタイム制御を支援します。
詳しく見る
物流におけるコンピュータービジョン

物流におけるコンピュータービジョン

Ultralytics YOLOモデルで物流を効率化しましょう。ビジョンAIにより、荷物検査、仕分け、車両追跡、倉庫のリアルタイム安全監視を実現します。
詳しく見る
小売業におけるコンピュータービジョン

小売業におけるコンピュータービジョン

Ultralytics YOLOモデルで小売のあり方を変革しましょう。ビジョンAIにより、在庫追跡、棚の監視、行列管理、より高度な顧客インサイトを実現します。
詳しく見る
医療分野におけるコンピュータービジョン

医療分野におけるコンピュータービジョン

Ultralytics YOLOモデルで医療ソリューションを構築しましょう。医療分野のビジョンAIは、医用画像処理の高速化、より高度な診断、患者モニタリングを実現します。
詳しく見る
製造業におけるコンピュータービジョン

製造業におけるコンピュータービジョン

Ultralytics YOLOモデルで製造を最適化しましょう。ビジョンAIは、品質管理、欠陥検出、PPE準拠、組立ラインの自動化を推進します。
詳しく見る
自動車分野におけるコンピュータービジョン

自動車分野におけるコンピュータービジョン

Ultralytics YOLOモデルで自動車分野にコンピュータービジョンを導入しましょう。ビジョンAIは、道路の安全性、運転支援、車両の自動化を向上させ、よりスマートな道路を実現します。
詳しく見る
農業におけるコンピュータービジョン

農業におけるコンピュータービジョン

Ultralytics YOLOモデルでスマート農業にビジョンAIを導入しましょう。作物のモニタリング、家畜の追跡、精密農業を支援し、より高く効率的な収量を実現します。
詳しく見る

AIの未来を一緒に築きましょう!

機械学習の未来に向けた歩みを始めましょう