コンテンツにスキップ

Albumentationsを使用してYOLO26をトレーニングするためにデータセットを強化する

コンピュータービジョンモデルを構築する際、トレーニングデータの品質と多様性は、モデルのパフォーマンスに大きく影響します。Albumentationsは、モデルが現実世界のシナリオに適応する能力を向上させる、幅広い画像変換を高速かつ柔軟かつ効率的に適用する方法を提供します。Ultralytics YOLO26と簡単に統合でき、object detectionsegmentation、およびclassificationタスク向けの堅牢なデータセットの作成に役立ちます。

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

画像拡張のためのAlbumentations

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

Albumentationsを使用すると、画像、セグメンテーションマスクバウンディングボックス、およびキーポイントに簡単に拡張を適用し、データセットのすべての要素がまとめて変換されるようにすることができます。PyTorchTensorFlowなどの一般的な深層学習フレームワークとシームレスに連携するため、幅広いプロジェクトで利用できます。

また、Albumentationsは、小規模なデータセットを扱う場合でも、大規模なコンピュータビジョンタスクを扱う場合でも、拡張に最適な選択肢です。高速かつ効率的な処理を保証し、データ準備にかかる時間を短縮します。同時に、モデルの性能向上を支援し、モデルを実際のアプリケーションでより効果的に活用できるようにします。

Albumentationsの主な機能

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

  • 広範囲な変換: Albumentationsは、幾何学的変化(回転、反転など)、色の調整(明るさ、コントラストなど)、ノイズの追加(ガウスノイズなど)を含む70種類以上の変換を提供します。複数のオプションを持つことで、非常に多様で堅牢なトレーニングデータセットを作成できます。

アルブメンテーションの拡張例

  • 高性能最適化: OpenCVとNumPyを基盤として構築されているAlbumentationsは、SIMD(Single Instruction, Multiple Data)のような高度な最適化技術を使用しており、複数のデータポイントを同時に処理することで処理速度を向上させます。これにより、大規模なデータセットを迅速に処理でき、画像拡張において利用可能な最速のオプションの1つとなっています。

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

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

  • ベンチマーク結果: ベンチマークに関して言えば、Albumentationsは、特に大規模なデータセットで、他のライブラリよりも一貫して優れた性能を発揮します。

ビジョン 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に必要なパッケージをインストールする際に問題が発生した場合は、解決策とヒントについてよくある問題ガイドを参照してください。

使用法

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

from ultralytics import YOLO

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

# Define custom Albumentations transforms
custom_transforms = [
    A.Blur(blur_limit=7, p=0.5),
    A.GaussNoise(var_limit=(10.0, 50.0), p=0.3),
    A.CLAHE(clip_limit=4.0, p=0.5),
    A.RandomBrightnessContrast(brightness_limit=0.2, contrast_limit=0.2, p=0.5),
]

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

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

ぼかし

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

この統合で使用されるパラメータと値を以下に示します。

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

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

アルブメンテーションズ ぼかし補正結果

中央値ぼかし

AlbumentationsのMedianBlur変換は、画像にメディアンぼかし効果を適用します。これは、エッジを保持しながらノイズを低減するのに特に役立ちます。一般的なぼかし方法とは異なり、MedianBlurはメディアンフィルターを使用します。これは、エッジの鮮明さを維持しながら、特にsalt-and-pepperノイズを除去するのに効果的です。

この統合で使用されるパラメータと値を以下に示します。

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

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

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

アルブメンテーションズメディアンブラー拡張

グレースケール

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%であり、カラー画像とグレースケール画像を混在させることで、モデルの汎化性能を向上させることができます。

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

アルブメンテーションによるグレースケール変換

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

AlbumentationsのCLAHE変換は、Contrast Limited Adaptive Histogram Equalization(CLAHE)を適用します。これは、画像全体ではなく、局所的な領域(タイル)でヒストグラムを均等化することにより、画像のコントラストを強調する手法です。CLAHEは、特に初期コントラストが低い領域で、標準的なヒストグラム均等化から生じる可能性のある過度に増幅されたコントラストを回避し、バランスの取れた強調効果を生み出します。

この統合で使用されるパラメータと値を以下に示します。

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

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

  • p: CLAHEを適用する確率。ここでは、p=0.01とすることで、コントラスト強調効果が適用されるのは1%の時間のみとなり、学習画像に時折変化を与えるために、コントラスト調整は控えめに適用されます。

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

アルブメンテーションズ CLAHE コントラスト強調

カスタムAlbumentations変換の使用

デフォルトのAlbumentations統合は堅牢なオーグメンテーションセットを提供しますが、特定のユースケースに合わせて変換をカスタマイズしたい場合があります。Ultralytics YOLO26では、Python APIを使用してカスタムAlbumentations変換を簡単に渡すことができます。 augmentations パラメータ。

カスタム変換の定義方法

独自のAlbumentations変換リストを定義し、それを訓練関数に渡すことができます。これにより、デフォルトのAlbumentations変換が置き換えられ、他のすべてのYOLO拡張(例: hsv_h, degrees, mosaicなど)がアクティブになります。

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

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変換はdetectおよびsegmentタスクで機能しますが、分類(異なる拡張パイプラインを使用)では機能しません。

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

異なるアプリケーションは、異なる拡張戦略から恩恵を受けます。

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

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

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

Albumentationsについてさらに学ぶ

Albumentationsの詳細については、次のリソースで詳細な手順と例を確認してください。

主なポイント

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

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

よくある質問

データ拡張を改善するために、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. パフォーマンス: OpenCVとNumPyを基盤とし、SIMD最適化により優れた速度を実現
  2. 柔軟性:ピクセルレベル、空間レベル、およびミキシングレベルの拡張において70以上の変換をサポート
  3. 互換性: PyTorchTensorFlow などの一般的なフレームワークとシームレスに連携します。
  4. 信頼性:広範なテストスイートにより、サイレントデータ破損を防止
  5. 使いやすさ:すべての拡張タイプに対応する単一の統一API

Albumentationsの拡張は、どのような種類のコンピュータビジョンタスクに役立ちますか?

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

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

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



📅 1年前に作成 ✏️ 5日前に更新
glenn-jocherRizwanMunawarpderrengeronuralpszrabirami-vina

コメント