YOLO Vision 2026:

Albumentationsを使用してYOLO26のトレーニング用データセットを拡張する#

コンピュータビジョンモデルを構築する際、トレーニングデータの品質と多様性は、モデルのパフォーマンスに大きな影響を与えます。Albumentationsは、現実世界のシナリオへのモデルの適応力を向上させる、幅広い画像変換を適用するための高速、柔軟かつ効率的な方法を提供します。Ultralytics YOLO26とシームレスに統合され、オブジェクト検出セグメンテーション、および分類タスクに向けた堅牢なデータセットの作成を支援します。

Albumentationsを使用することで、幾何学的変換や色調整などのテクニックを用いて、YOLO26のトレーニングデータを強化できます。この記事では、Albumentationsがデータ拡張プロセスをどのように改善し、YOLO26プロジェクトをさらに効果的なものにするかを見ていきます。それでは始めましょう!

画像拡張のためのAlbumentations#

Albumentationsは、2018年6月に作成されたオープンソースの画像拡張ライブラリです。コンピュータビジョンにおける画像拡張プロセスを簡素化および加速化するように設計されています。パフォーマンスと柔軟性を念頭に置いて作成されており、回転や反転といった単純な変換から、明度やコントラストの変更といったより複雑な調整まで、多様な拡張テクニックをサポートしています。Albumentationsは、画像分類オブジェクト検出、およびセグメンテーションなどのタスクに向けて、開発者が豊かで多様なデータセットを生成するのを支援します。

Albumentationsを使用すると、画像、セグメンテーションマスクバウンディングボックス、およびキーポイントに拡張を簡単に適用でき、データセットのすべての要素が確実に一緒に変換されます。PyTorchTensorFlowなどの人気のあるディープラーニングフレームワークとシームレスに連携するため、幅広いプロジェクトでアクセスしやすくなっています。

また、Albumentationsは、小規模なデータセットを扱う場合でも大規模なコンピュータビジョンタスクを扱う場合でも、データ拡張のための優れた選択肢です。迅速かつ効率的な処理を保証し、データ準備に費やす時間を削減します。同時に、モデルのパフォーマンスの向上を支援し、現実世界のアプリケーションでモデルをより効果的にします。

Albumentationsの主な特徴#

Albumentationsは、幅広いコンピュータビジョンアプリケーション向けに複雑な画像拡張を簡素化する、多くの便利な機能を提供します。主な機能の一部を以下に示します。

  • 幅広い変換: Albumentationsは、幾何学的変更(例:回転、反転)、色調整(例:明度、コントラスト)、ノイズの追加(例:ガウスノイズ)など、70種類以上の異なる変換を提供します。複数の選択肢を持つことで、非常に多様で堅牢なトレーニングデータセットの作成が可能になります。

Albumentations augmentation examples

  • 高性能な最適化: OpenCVとNumPyに基づいて構築されたAlbumentationsは、SIMD(単一命令複数データ)のような高度な最適化技術を使用しており、複数のデータポイントを同時に処理することで処理速度を向上させます。大規模なデータセットを迅速に処理できるため、画像拡張において利用可能な最も高速な選択肢の一つです。

  • 3つの拡張レベル: Albumentationsは、ピクセルレベル、空間レベル、ミキシングレベルの3つのレベルの拡張をサポートしています。ピクセルレベルの変換は、マスク、バウンディングボックス、キーポイントを変更することなく、入力画像のみに影響を与えます。一方、空間レベルの変換を使用すると、画像とその要素(マスクやバウンディングボックスなど)の両方が変換されます。さらに、ミキシングレベルの変換は、複数の画像を1つに結合するため、データを拡張する独自の手段となります。

Overview of the Different Levels of Augmentations

  • ベンチマーク結果: ベンチマークに関して、Albumentationsは他のライブラリを一貫して上回るパフォーマンスを発揮します。特に大規模なデータセットにおいてその傾向が顕著です。

なぜVision AIプロジェクトでAlbumentationsを使用すべきなのか?#

画像拡張に関して、Albumentationsはコンピュータビジョンのタスクにおける信頼性の高いツールとして際立っています。Vision AIプロジェクトでこれの使用を検討すべき主な理由は以下の通りです。

  • 使いやすいAPI: Albumentationsは、画像、マスク、バウンディングボックス、キーポイントに対して幅広い拡張を適用するための、単一でシンプルなAPIを提供します。さまざまなデータセットに簡単に適応するように設計されており、データ準備をよりシンプルかつ効率的にします。

  • 厳格なバグテスト: 拡張パイプラインのバグは入力データを密かに破損させることがあり、気づかれないまま最終的にモデルのパフォーマンスを低下させる可能性があります。Albumentationsは、開発の初期段階でバグを特定するのに役立つ徹底的なテストスイートによってこれに対処しています。

  • 拡張性: Albumentationsを使用して新しい拡張を容易に追加し、組み込みの変換とともに単一のインターフェースを通じてコンピュータビジョンのパイプラインで使用できます。

YOLO26トレーニングのためにAlbumentationsを使用してデータを拡張する方法#

Albumentationsとは何か、何ができるのかについて説明しましたので、次はYOLO26モデルのトレーニングに向けてデータを拡張するためにそれを使用する方法を見ていきましょう。Ultralyticsのトレーニングモードに直接統合されており、Albumentationsパッケージがインストールされていれば自動的に適用されるため、セットアップは簡単です。

インストール#

YOLO26でAlbumentationsを使用するには、まず必要なパッケージがインストールされていることを確認してください。Albumentationsがインストールされていないと、トレーニング中に拡張は適用されません。セットアップが完了すれば、モデルを自動的に強化するためにAlbumentationsが統合された、拡張済みデータセットを作成する準備が整います。

インストール
# Install the required packages
pip install albumentations ultralytics

インストールプロセスに関する詳細な手順とベストプラクティスについては、Ultralyticsインストールガイドをご確認ください。YOLO26に必要なパッケージのインストール中に問題が発生した場合は、一般的な問題ガイドを参照して解決策とヒントを確認してください。

このページのカスタム変換の例では、Albumentations 1.4.22 以降、および Python 3.9 以降が必要です。

使用方法#

必要なパッケージをインストールした後、YOLO26でAlbumentationsを使用する準備が整いました。YOLO26をトレーニングする際、Albumentationsとの統合を通じて一連の拡張が自動的に適用されるため、モデルのパフォーマンスを簡単に強化できます。

使用方法
from ultralytics import YOLO

# Load a pretrained model
model = YOLO("yolo26n.pt")

# Train the model with default augmentations
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)

次に、トレーニング中に適用される具体的な拡張について詳しく見ていきましょう。

ぼかし#

AlbumentationsのBlur変換は、小さな正方形の領域(カーネル)内のピクセル値を平均化することにより、画像に単純なぼかし効果を適用します。これはOpenCVの cv2.blur 関数を使用して行われ、画像のノイズを軽減するのに役立ちますが、画像の詳細もわずかに低下します。

この統合で使用されるパラメータと値は以下の通りです。

  • blur_limit: ぼかし効果のサイズ範囲を制御します。デフォルトの範囲は(3, 7)であり、ぼかしのカーネルサイズが3から7ピクセルの間で変化し、ぼかしを中央に保つために奇数のみが許可されます。

  • p: ぼかしを適用する確率です。統合ではp=0.01となっており、各画像にこのぼかしが適用される確率は1%です。この低い確率は、時折ぼかし効果を導入し、画像を過度にぼかすことなくモデルの汎化を助けるための変化をもたらします。

Albumentations Blur augmentation result

メディアンぼかし (Median Blur)#

AlbumentationsのMedianBlur変換は、画像にメディアンぼかし効果を適用します。これはノイズを低減しつつエッジを保持するのに特に有効です。一般的なぼかし手法とは異なり、MedianBlurはメディアンフィルタを使用するため、エッジ周辺の鮮明さを維持しながらソルト・アンド・ペッパーノイズを除去するのに特に効果的です。

この統合で使用されるパラメータと値は以下の通りです。

  • blur_limit: このパラメータは、ぼかしカーネルの最大サイズを制御します。この統合では、デフォルトで範囲が(3, 7)となっており、ぼかしのカーネルサイズは3から7ピクセルの間でランダムに選択され、適切な配置を確保するために奇数値のみが許可されます。

  • p: メディアンぼかしを適用する確率を設定します。ここではp=0.01であり、各画像にこの変換が適用される確率は1%です。この低い確率は、メディアンぼかしが控えめに使用されることを保証し、ノイズが低減されエッジが保持された画像を時折モデルに見せることで汎化を助けます。

下の画像は、この拡張を適用した例を示しています。

Albumentations MedianBlur augmentation

グレースケール#

AlbumentationsのToGray変換は、画像をグレースケールに変換してシングルチャネル形式に縮小し、オプションでこのチャネルを複製して指定された出力チャネル数に合わせます。単純な平均化から、コントラストと明るさを現実的に認識するための高度な手法まで、グレースケールの明るさを計算する方法を調整できます。

この統合で使用されるパラメータと値は以下の通りです。

  • num_output_channels: 出力画像のチャネル数を設定します。この値が1より大きい場合、単一のグレースケールチャネルが複製され、マルチチャネルのグレースケール画像が作成されます。デフォルトでは3に設定されており、3つの同一チャネルを持つグレースケール画像になります。

  • method: グレースケール変換方法を定義します。デフォルトの"weighted_average"メソッドは、人間の知覚に近く自然なグレースケール効果を提供する式(0.299R + 0.587G + 0.114B)を適用します。"from_lab"、"desaturation"、"average"、"max"、"pca"などの他のオプションは、速度、明るさの強調、または詳細の保持といったさまざまなニーズに基づいてグレースケール画像を作成するための代替方法を提供します。

  • p: グレースケール変換が適用される頻度を制御します。p=0.01の場合、各画像がグレースケールに変換される確率は1%であり、カラー画像とグレースケール画像の混合によりモデルの汎化が促進されます。

下の画像は、このグレースケール変換を適用した例を示しています。

Albumentations grayscale conversion

コントラスト制限付き適応ヒストグラム均等化 (CLAHE)#

AlbumentationsのCLAHE変換は、コントラスト制限付き適応ヒストグラム均等化 (CLAHE) を適用します。これは、画像全体ではなく局所的な領域(タイル)でヒストグラムを均等化することで画像のコントラストを高める手法です。CLAHEはバランスの取れた強調効果を生み出し、特に低コントラストの領域において標準的なヒストグラム均等化から生じる過度のコントラスト増幅を回避します。

この統合で使用されるパラメータと値は以下の通りです。

  • clip_limit: コントラスト強調範囲を制御します。デフォルトの範囲(1, 4)に設定されており、各タイルで許可される最大コントラストを決定します。値が高いほどコントラストは強まりますが、ノイズが発生する可能性もあります。

  • tile_grid_size: タイルのグリッドサイズを通常(行, 列)として定義します。デフォルト値は(8, 8)で、画像が8x8のグリッドに分割されることを意味します。タイルサイズが小さいほど局所的な調整が可能になり、大きいほどグローバルな均等化に近い効果が得られます。

  • p: CLAHEを適用する確率です。ここでp=0.01は強調効果を1%の確率で導入し、トレーニング画像に時折変化を与えるためにコントラスト調整が控えめに適用されることを保証します。

下の画像は、このCLAHE変換を適用した例を示しています。

Albumentations CLAHE contrast enhancement

カスタムAlbumentations変換の使用#

デフォルトの Albumentations 統合でも充実したデータ拡張を利用できますが、特定のユースケースに合わせて変換をカスタマイズしたい場合もあります。Ultralytics YOLO26 では、augmentations パラメータを使用して Python API 経由でカスタムの Albumentations 変換を簡単に渡すことができます。このセクションの例では、Albumentations 1.4.22 以降が必要です。

カスタム変換の定義方法#

独自のAlbumentations変換のリストを定義し、それをトレーニング関数に渡すことができます。これにより、他のすべてのYOLOの拡張(hsv_hdegreesmosaicなど)をアクティブに保ったまま、デフォルトのAlbumentations変換が置き換えられます。

より高度な変換を使用した例を以下に示します。

import albumentations as A

from ultralytics import YOLO

# Load model
model = YOLO("yolo26n.pt")

# Define custom transforms with various augmentation techniques
custom_transforms = [
    # Blur variations
    A.OneOf(
        [
            A.MotionBlur(blur_limit=7, p=1.0),
            A.MedianBlur(blur_limit=7, p=1.0),
            A.GaussianBlur(blur_limit=7, p=1.0),
        ],
        p=0.3,
    ),
    # Noise variations
    A.OneOf(
        [
            A.GaussNoise(std_range=(0.0124, 0.0277), p=1.0),
            A.ISONoise(color_shift=(0.01, 0.05), intensity=(0.1, 0.5), p=1.0),
        ],
        p=0.2,
    ),
    # Color and contrast adjustments
    A.CLAHE(clip_limit=4.0, tile_grid_size=(8, 8), p=0.5),
    A.RandomBrightnessContrast(brightness_limit=0.3, contrast_limit=0.3, p=0.5),
    A.HueSaturationValue(hue_shift_limit=20, sat_shift_limit=30, val_shift_limit=20, p=0.5),
    # Simulate occlusions
    A.CoarseDropout(num_holes_range=(1, 8), hole_height_range=(8, 32), hole_width_range=(8, 32), fill=0, p=0.2),
]

# Train with custom transforms
results = model.train(
    data="coco8.yaml",
    epochs=100,
    imgsz=640,
    augmentations=custom_transforms,
)

重要な考慮事項#

カスタムAlbumentations変換を使用する際は、以下の点に留意してください。

  • Python APIのみ: カスタム変換はPython APIを通じてのみ渡すことができ、CLIやYAML設定ファイル経由では渡せません。
  • デフォルトの置換: カスタム変換はデフォルトのAlbumentations変換を完全に置き換えます。他のYOLO拡張はアクティブなままです。
  • バウンディングボックスの処理: Ultralyticsはほとんどの変換に対してバウンディングボックスの調整を自動的に処理しますが、複雑な空間変換には追加のテストが必要になる場合があります。
  • パフォーマンス: 一部の変換は計算コストが高いため、トレーニング速度を監視し、必要に応じて調整してください。
  • タスクの互換性: カスタムAlbumentations変換は検出タスクおよびセグメンテーションタスクでは機能しますが、分類タスク(異なる拡張パイプラインを使用)では機能しません。

カスタム変換のユースケース#

アプリケーションに応じて、適した拡張戦略は異なります。

  • 医療画像: 弾性変形、グリッド歪み、特殊なノイズパターンを使用します。
  • 航空/衛星画像: さまざまな高度、気象条件、照明角度をシミュレートする変換を適用します。
  • 低照度シナリオ: 困難な照明環境に対応できる堅牢なモデルをトレーニングするために、ノイズ付加と明るさ調整を強調します。
  • 産業検査: 品質管理アプリケーションのためにテクスチャのバリエーションやシミュレートされた欠陥を追加します。

利用可能な変換とそのパラメータの完全なリストについては、Albumentationsドキュメントをご覧ください。

YOLO26でカスタムAlbumentations変換を使用する詳細な例とベストプラクティスについては、YOLOデータ拡張ガイドをご覧ください。

Albumentationsについてさらに学ぶ#

Albumentationsについてさらに詳しく知りたい場合は、詳細な説明と例について以下のリソースを確認してください。

重要なポイント#

このガイドでは、画像拡張に最適なPythonライブラリであるAlbumentationsの重要な側面を説明しました。幅広い変換機能、最適化されたパフォーマンス、そして次のYOLO26プロジェクトでそれを使用する方法について議論しました。

また、他のUltralytics YOLO26の統合について詳しく知りたい場合は、統合ガイドページをご覧ください。そこで貴重なリソースや洞察を見つけることができます。

よくある質問 (FAQ)#

  • AlbumentationsはYOLO26とシームレスに統合されており、パッケージがインストールされていればトレーニング中に自動的に適用されます。開始方法は以下の通りです。

    # Install required packages
    # !pip install albumentations ultralytics
    from ultralytics import YOLO
    
    # Load and train model with automatic augmentations
    model = YOLO("yolo26n.pt")
    model.train(data="coco8.yaml", epochs=100)

    この統合には、モデルのパフォーマンスを向上させるために注意深く調整された確率を持つ、ぼかし、メディアンぼかし、グレースケール変換、CLAHEなどの最適化された拡張が含まれています。

  • Albumentationsはいくつかの理由で際立っています。

    1. パフォーマンス: OpenCVとNumPyに基づいて構築されており、SIMD最適化により優れた速度を実現します。
    2. 柔軟性: ピクセルレベル、空間レベル、ミキシングレベルの拡張全体で70以上の変換をサポートしています。
    3. 互換性: PyTorchTensorFlowなどの人気のあるフレームワークとシームレスに連携します。
    4. 信頼性: 網羅的なテストスイートにより、データの密かな破損を防ぎます。
    5. 使いやすさ: すべての拡張タイプに対して単一の統一されたAPIを提供します。
  • Albumentationsは、以下を含むさまざまなコンピュータビジョンタスクを強化します。

    このライブラリの多様な拡張オプションは、堅牢なモデルのパフォーマンスを必要とするあらゆるビジョンタスクにおいて価値があります。

コメント