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(Single Instruction, Multiple Data)のような高度な最適化手法を使用しており、複数のデータポイントを同時に処理して処理を高速化します。大規模なデータセットを迅速に処理できるため、画像拡張において利用可能な最も高速なオプションの1つとなっています。

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

さまざまなレベルの拡張の概要

  • ベンチマーク結果: ベンチマークに関しては、Albumentationsは特に大規模なデータセットにおいて、他のライブラリを一貫して上回ります。

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

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

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

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

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

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

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

インストール

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

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

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

使用方法

必要なパッケージをインストールした後、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)

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

ぼかし (Blur)

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

Grayscale

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

Contrast Limited Adaptive Histogram Equalization (CLAHE)

AlbumentationsのCLAHE変換は、CLAHE(Contrast Limited Adaptive Histogram Equalization)を適用します。これは、画像全体ではなく局所的な領域(タイル)でヒストグラムを均一化することにより、画像のコントラストを強化する手法です。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変換リストを定義し、それをトレーニング関数に渡すことができます。これにより、デフォルトのAlbumentations変換が置き換えられますが、他のすべてのYOLO拡張(hsv_hdegreesmosaicなど)はアクティブなまま維持されます。

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

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(var_limit=(10.0, 50.0), 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(
        max_holes=8, max_height=32, max_width=32, min_holes=1, min_height=8, min_width=8, fill_value=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と統合するにはどうすればよいですか?

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の主な利点は何ですか?

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

  1. パフォーマンス:SIMD最適化を備えたOpenCVとNumPyに基づいて構築されており、優れた速度を実現
  2. 柔軟性:ピクセルレベル、空間レベル、混合レベルの拡張にわたる70以上の変換をサポート
  3. 互換性:PyTorchTensorFlowのような一般的なフレームワークとシームレスに連携
  4. 信頼性:広範なテストスイートがデータ破損を未然に防ぐ
  5. 使いやすさ:すべての拡張タイプに対する単一の統合API

どのようなコンピュータビジョンタスクがAlbumentationsの拡張から恩恵を受けることができますか?

Albumentationsは、以下を含むさまざまなコンピュータビジョンタスクを強化します。

  • 物体検出:照明、スケール、向きの変化に対するモデルの堅牢性を向上
  • インスタンスセグメンテーション:多様な変換を通じてマスク予測の精度を向上
  • 分類:色と幾何学的な拡張によりモデルの汎化能力を向上
  • 姿勢推定:モデルがさまざまな視点や照明条件に適応するのを支援

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

コメント