YOLO Vision 2026:

アノテーション済みコンピュータビジョンデータのためのデータ前処理技術#

データの前処理を行うことで、アノテーション済みの生画像を、computer visionモデルの学習に必要なクリーンで一貫性のある入力に変換できます。Ultralytics YOLO26では、RGB変換、[0, 1]へのスケーリング、リサイズといった中心的なピクセル処理がトレーニングパイプライン内で自動的に実行されるため、残りの作業は、データセットの適切な分割、クラスのバランス調整、およびデータ拡張の選択となります。このガイドでは、リサイズ、正規化、データセットの分割、データ拡張、および探索的データ分析(EDA)という重要なテクニックについて解説します。



Watch: How to Use Data Preprocessing and Augmentation to Improve Model Accuracy in Real-World Scenarios 🚀

このステップは、プロジェクトの目標を定義し、データを収集してアノテーション付けした後に実行され、コンピュータービジョンプロジェクトのワークフローの早い段階に位置づけられます。

前処理が重要な理由#

前処理により、計算負荷を軽減しモデルのパフォーマンスを向上させる形式にデータを整えることができます。これは、未加工データに見られる以下の3つの一般的な問題に対処します。

  • ノイズ: データに含まれる無関係またはランダムな変動。
  • 不整合: 画像サイズ、フォーマット、品質のばらつき。
  • 不均衡: データセット全体におけるクラスやカテゴリの分布の偏り。

前処理技術#

主な技術には、リサイズ、正規化、データセットの分割、データ拡張があります。YOLO26では最初の2つは自動的に行われますが、分割とデータ拡張はユーザーの選択が最も重要になる部分です。

画像のサイズ変更#

多くのモデルは一定の入力サイズを必要とするため、リサイズによって画像を統一し、計算の複雑さを軽減します。よく使われる2つの補間方法は以下の通りです。

  • 双一次補間(バイリニア補間): 最も近い4つの画素の加重平均を計算し、画素値を滑らかにします。
  • 最近傍補間: 平均化を行わずに最も近い画素の値をコピーします。高速ですが、画像がブロック状になりやすいという特徴があります。

OpenCVやPIL (Pillow) などのライブラリがこれらの機能を提供しますが、YOLO26では通常、手動でリサイズする必要はありません。モデルのトレーニング時の imgsz 引数がこれを処理します。640 などの値に設定すると、YOLOはアスペクト比を維持しながら最大辺が640ピクセルになるように各画像をスケーリングし、正方形の 640 × 640 入力にするために短い方の辺にパディング(デフォルトはグレー、値は114)を追加します。

画素値の正規化#

正規化は画素値を標準的な範囲にスケーリングする処理であり、学習中のモデルの収束を早めるのに役立ちます。よく使われる2つの技術は以下の通りです。

  • ミニマックス・スケーリング: 画素値を0から1の範囲にスケーリングします。
  • Zスコア正規化: 平均と標準偏差に基づいて画素値をスケーリングします。

YOLO26は前処理パイプラインの一部として正規化を自動的に処理します。画像をRGBに変換し、255で除算する(ミニマックススケーリング)ことで、ピクセル値を [0, 1] の範囲にスケーリングします。YOLOはデフォルトではImageNetスタイルの平均/標準偏差(Zスコア)正規化を適用しないため、手動での正規化ステップは不要です。

データセットの分割#

データを学習用、検証用、テスト用に分割することで、未知のデータに対してモデルを評価し、汎化性能を測定できるようになります。一般的な分割比率は、学習用70%、検証用20%、テスト用10%です。scikit-learnTensorFlowなどのツールを使用すると、これを簡単に行うことができます。

分割の際は以下の点に注意してください。

  • クラス分布の維持: 各クラスが学習用、検証用、テスト用の各セットで比例して含まれるようにしてください。
  • クラスのバランス調整: 不均衡なデータセットの場合は、学習用セット内においてのみ、マイノリティクラスのオーバーサンプリングやマジョリティクラスのアンダーサンプリングを検討してください。
データリークの回避

データセットの分割は、データ拡張やその他の前処理を適用するに行い、それらの変換は学習用セットにのみ適用してください。分割前に拡張を行うと、検証用やテスト用画像のデータが学習に影響を与えてしまい、実際のデータでは機能しないにもかかわらず、誤解を招くほど高いスコアが表示される原因となります。

データセットの拡張#

データ拡張は、既存の画像の修正バージョンを作成することで、データセットのサイズを人工的に増やします。これにより過学習(オーバーフィッティング)を抑制し、汎化性能を向上させることができ、以下のようなメリットがあります。

  • より堅牢なモデル: 照明、向き、スケールの変化により、モデルは実世界の歪みに対して強くなります。
  • 費用対効果: 新しいデータの収集やラベル付けを行わずに、学習セットを拡張できます。
  • データの有効活用: 1つのアノテーション済み画像から、複数の学習用バリエーションを作成できます。

Examples of data augmentation techniques including flips, rotations, scaling, and color adjustments applied to a sample image

YOLO26では、データセットのパス、クラス名、分割などのデータセットのメタデータを定義するデータセットYAMLを編集するのではなく、model.train() または同等のCLIフラグに渡されるトレーニング引数を通じて拡張(augmentation)が制御されます。組み込みの拡張機能には以下が含まれます。

  • モザイク、MixUp、CutMixmosaicmixupcutmix):複数の画像を1つの学習用サンプルに結合します。
  • 反転fliplrflipud):画像を水平または垂直に反転させます。
  • 幾何学的変換degreestranslatescaleshearperspective):画像の回転、平行移動、ズーム、ワープを行います。
  • HSV色ジッターhsv_hhsv_shsv_v):色相、彩度、明度を変化させます。
  • コピー&ペーストcopy_paste):セグメンテーションのために、画像間でオブジェクトをコピー&ペーストします。
学習時のデータ拡張強度の設定
from ultralytics import YOLO

model = YOLO("yolo26n.pt")

# Augmentation is configured with training arguments, not the dataset YAML
model.train(data="coco8.yaml", epochs=10, hsv_h=0.015, fliplr=0.5, mosaic=1.0, degrees=10.0)

データ拡張の引数とそのデフォルト値の完全なリストについては、拡張設定のリファレンスと専用のYOLOデータ拡張ガイドを参照してください。albumentationsパッケージがインストールされている場合、YOLOはAlbumentationsベースの組み込みデータ拡張も自動的に有効にします。

ケーススタディ:車両検出のための前処理#

バウンディングボックスとラベルが付けられた画像から始めて、YOLO26を使用して交通画像内の車両を検出し分類するプロジェクトを考えてみましょう。各前処理の決定は以下のようになります。

  • リサイズ: 手動での作業は不要です。YOLO26はトレーニング中に imgsz にリサイズします。
  • 正規化: 手動での作業は不要です。YOLO26は自動的にピクセル値を [0, 1] にスケーリングします。
  • 分割: データセットを70%の学習用、20%の検証用、10%のテスト用に分割し、すべての分割でクラス分布を維持します。
  • データ拡張: 交通シーンに適したトレーニング引数を設定します。例えば、方向の不変性のために fliplr、昼夜の照明変化のために hsv_v、さまざまなオブジェクト密度に対応するために mosaic を設定します。

これらの決定事項により、データセットは探索的データ分析(EDA)の準備が整います。

探索的データ分析(EDA)#

EDAは統計と可視化を用いてデータのパターンと分布を明らかにし、クラスの不均衡や異常値といった問題を学習前に発見するのに役立ちます。

統計的EDA技術#

統計的なEDAは、画素強度の分布などのプロパティに対して計算される平均、中央値、標準偏差、範囲といった基本的な指標から始まります。これらはデータセットの品質の概要を素早く把握し、初期段階で不規則なデータを見つけるのに役立ちます。

視覚的EDA技術#

可視化を行うことで、要約統計量では見逃されるクラスの不均衡や異常値などのパターンが明らかになります。よく使われるツールは以下の通りです。

  • ヒストグラムとボックスプロット: 画素値の分布を示し、強度や特徴分布の異常値にフラグを立てます。
  • 棒グラフ: 各クラスのサンプル数を比較することで、クラスの不均衡を明らかにします。
  • 散布図: 画像の特徴やアノテーション間の関係を探索します。
  • ヒートマップ: 画素強度の分布や、画像全体におけるアノテーションの空間的な分布を可視化します。

EDAのためのUltralyticsプラットフォーム#

コードを書かずにEDAを行うアプローチとしては、Ultralytics Platformにデータセットをアップロードする方法があります。データセットの Charts タブでは、分割分布、上位クラスのカウント、画像幅/高さのヒストグラム、アノテーションの位置と画像サイズの2Dヒートマップなど、主要なEDAの視覚化が自動的に生成されます。Images タブを使用すると、アノテーションのオーバーレイ付きでグリッド、コンパクト、またはテーブルビューでデータを閲覧できるため、コードを書かずに誤ったラベルの付いたサンプルやクラスの不均衡を簡単に見つけることができます。

結論#

適切に分割、正規化、および拡張されたデータは、ノイズを減らし汎化性能を高め、生の画像コレクションを信頼性の高い学習用セットに変換します。データセットの前処理が完了したら、次のステップはモデルの学習です。途中で疑問が生じた場合は、Ultralytics GitHubリポジトリまたはUltralytics Discordサーバーのコミュニティに質問してください。

よくある質問 (FAQ)#

  • 前処理により、データがクリーンで一貫性があり、学習に最適化されたフォーマットになります。生データ内のノイズ、不整合、クラスの不均衡に対処することで、リサイズ、正規化、データ拡張、データセット分割などのステップにより計算負荷が軽減され、モデルのパフォーマンスが向上します。これがより広いワークフローにどのように適合するかについては、コンピュータービジョンプロジェクトのステップを参照してください。

  • データセットYAMLではなく、トレーニング引数を通じてデータ拡張を設定します。fliplrmosaichsv_hdegrees などの引数を model.train()(または対応するCLIフラグ)に渡し、各変換の確率と強度を設定します。これらは拡張設定で定義されており、YOLOデータ拡張ガイドで説明されています。

  • 最も一般的な2つの技術は、最小最大スケーリング(画素を0から1の範囲に再スケーリングする)と、zスコア正規化(平均と標準偏差に基づいて再スケーリングする)です。YOLO26は自動的に最小最大スケーリングを適用し(画像をRGBに変換し、画素値を255で割る)、手動での正規化ステップは不要です。デフォルトではzスコア正規化は適用されません。

  • 一般的なプラクティスは、学習用に70%、検証用に20%、テスト用に10%割り当てることです。3つの分割すべてでクラス分布を維持し、分割後に学習セットに対してのみデータ拡張を適用することで、データリークを回避してください。scikit-learnやTensorFlowなどのツールを使用すると、分割を効率的に処理できます。上流のデータセットの準備については、データ収集とアノテーションガイドを参照してください。

  • はい。imgsz 引数は、アスペクト比を維持しながら最大辺が指定サイズ(例:640ピクセル)に一致するようにトレーニングおよび推論時に画像をリサイズし、短い方の辺にパディングを追加します。自分で画像を手動でリサイズする必要はありません。詳細については、モデルの学習のドキュメントを参照してください。

コメント