Ultralytics YOLO27:
Get Started

Albumentationsでデータセットを強化し、YOLO26をトレーニングする#

コンピュータービジョンモデルを構築する際、トレーニングデータの品質と多様性は、モデルの性能を大きく左右します。Albumentationsを使うと、さまざまな画像変換を高速かつ柔軟、効率的に適用でき、実環境の状況にモデルが適応する能力を高められます。Ultralytics YOLO26に簡単に統合でき、物体検出、セグメンテーション、分類タスク向けの堅牢なデータセット作成に役立ちます。

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

画像拡張のためのAlbumentations#

Albumentationsは、2018年6月に作成されたオープンソースの画像拡張ライブラリです。コンピュータービジョンにおける画像拡張プロセスを簡素化し、高速化するために設計されています。パフォーマンスと柔軟性を重視しており、回転や反転などの基本的な変換から、明るさやコントラストの変更などの複雑な調整まで、多様な拡張手法をサポートしています。Albumentationsを使うと、画像分類、物体検出、セグメンテーションなどのタスク向けに、多様で豊富なデータセットを作成できます。

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

また、小規模なデータセットでも、大規模なコンピュータービジョンタスクでも、Albumentationsは優れた拡張手段です。高速かつ効率的な処理により、データ準備にかかる時間を短縮できます。同時に、モデルの性能向上にも役立ち、実環境のアプリケーションでモデルの有効性を高めます。

Albumentationsの主な機能#

Albumentationsには、幅広いコンピュータービジョンアプリケーション向けの複雑な画像拡張を簡素化する便利な機能が多数あります。主な機能は次のとおりです。

  • 幅広い変換:Albumentationsは、幾何学的変換(回転、反転など)、色調整(明るさ、コントラストなど)、ノイズの追加(ガウシアンノイズなど)を含む70種類以上の変換を提供します。複数の選択肢を活用することで、多様で堅牢なトレーニングデータセットを作成できます。

Albumentations augmentation examples

  • 高性能な最適化:OpenCVとNumPyを基盤とするAlbumentationsは、SIMD(単一命令・複数データ)などの高度な最適化手法を利用します。SIMDは複数のデータポイントを同時に処理して、処理を高速化します。大規模なデータセットも迅速に処理できるため、画像拡張に利用できる最速の選択肢の1つです。

  • 3つのレベルの拡張:Albumentationsは、ピクセルレベル、空間レベル、ミキシングレベルの3つの拡張レベルをサポートしています。ピクセルレベルの変換は、マスク、バウンディングボックス、キーポイントを変更せず、入力画像のみに影響します。一方、空間レベルの変換では、画像とマスクやバウンディングボックスなどの要素の両方が変換されます。また、ミキシングレベルの変換は、複数の画像を1つに組み合わせる独自のデータ拡張手法です。

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

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

Vision AIプロジェクトでAlbumentationsを使う理由#

画像拡張に関して、Albumentationsはコンピュータービジョンタスク向けの信頼性の高いツールです。Vision AIプロジェクトでの利用を検討すべき主な理由をいくつか紹介します。

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

  • 徹底したバグテスト:拡張パイプラインのバグは、入力データを気付かれないまま破損させ、最終的にモデルの性能を低下させることがあります。Albumentationsは、開発の早い段階でバグを検出できる、包括的なテストスイートでこの問題に対処します。

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

AlbumentationsでYOLO26のトレーニングデータを拡張する方法#

Albumentationsの概要と機能を確認したところで、YOLO26モデルのトレーニング用データを拡張する方法を見ていきましょう。Albumentationsパッケージがインストールされていれば、Ultralyticsのトレーニングモードに直接統合され、自動的に適用されるため、簡単に設定できます。

インストール#

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

# 事前トレーニング済みモデルを読み込む
model = YOLO("yolo26n.pt")

# デフォルトの拡張を使用してモデルをトレーニングする
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

メディアンブラー#

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では、Python APIを使用してaugmentationsパラメーター経由でカスタムAlbumentations変換を簡単に渡せます。このセクションの例には、Albumentations 1.4.22以降が必要です。

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

独自のAlbumentations変換リストを定義し、トレーニング関数に渡すことができます。これにより、デフォルトのAlbumentations変換は置き換えられますが、他のYOLO拡張機能(hsv_h、degrees、mosaicなど)は引き続き有効です。

より高度な変換処理を使用した例を示します。

import albumentations as A

from ultralytics import YOLO

# モデルを読み込む
model = YOLO("yolo26n.pt")

# さまざまな拡張手法を使ってカスタム変換を定義する
custom_transforms = [
    # ぼかしのバリエーション
    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,
    ),
    # ノイズのバリエーション
    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,
    ),
    # 色とコントラストの調整
    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),
    # 遮蔽をシミュレートする
    A.CoarseDropout(num_holes_range=(1, 8), hole_height_range=(8, 32), hole_width_range=(8, 32), fill=0, p=0.2),
]

# カスタム変換を使ってトレーニングする
results = model.train(
    data="coco8.yaml",
    epochs=100,
    imgsz=640,
    augmentations=custom_transforms,
)

重要な考慮事項#

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

  • 設定: Python APIを使用してカスタム変換オブジェクトを構築します。シリアライズした変換は、トレーニング再開時も含め、CLIまたはYAML設定ファイル経由で渡すこともできます。
  • デフォルト設定の置き換え: カスタム変換を使用すると、デフォルトのAlbumentations変換は完全に置き換えられます。他のYOLO拡張機能は引き続き有効です。
  • ラベルの処理: A.OneOfまたはA.Compose内にネストされたものを含む空間変換では、画像に合わせてバウンディングボックス、ポリゴン、キーポイント、深度マスクまたはセマンティックマスクが移動します。A.RandomGridShuffleではポリゴンやキーポイントのトポロジーを保持できないため、セグメンテーション、ポーズ、OBBのサンプルではエラーが発生します。
  • パフォーマンス: 計算コストの高い変換もあります。トレーニング速度を監視し、それに応じて調整してください。
  • タスクとの互換性: カスタムAlbumentations変換は、検出、セグメンテーション、セマンティックセグメンテーション、深度、ポーズ、OBBのトレーニングで使用できますが、異なる拡張パイプラインを使用する分類には対応していません。

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

用途によって、効果的な拡張方法は異なります。

  • 医用画像: 弾性変形、グリッド歪み、専用のノイズパターンを使用します
  • 航空写真・衛星画像: 高度、気象条件、照明角度の違いをシミュレートする変換を適用します
  • 低照度環境: ノイズの追加や明るさの調整を重視し、厳しい照明条件に強いモデルをトレーニングします
  • 産業検査: 品質管理用途に向けて、テクスチャのバリエーションやシミュレーションした欠陥を追加します

利用可能な変換とそのパラメーターの一覧は、Albumentationsのドキュメントをご覧ください。

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

Albumentationsについてさらに学ぶ#

Albumentationsについて詳しく知りたい場合は、詳細な手順や例を紹介する次のリソースをご覧ください。

主なポイント#

このガイドでは、画像拡張に優れたPythonライブラリであるAlbumentationsの主な特徴を解説しました。幅広い変換機能や最適化されたパフォーマンス、次のYOLO26プロジェクトでの活用方法について説明しました。

また、Ultralytics YOLO26の他の統合について詳しく知りたい場合は、統合ガイドページをご覧ください。役立つリソースや知見を確認できます。

よくある質問#

  • AlbumentationsはYOLO26とシームレスに統合され、パッケージがインストールされていればトレーニング中に自動的に適用されます。次の手順で始められます。

    # 必要なパッケージをインストールする
    # !pip install albumentations ultralytics
    from ultralytics import YOLO
    
    # モデルを読み込み、自動拡張を使ってトレーニングする
    model = YOLO("yolo26n.pt")
    model.train(data="coco8.yaml", epochs=100)

    この統合には、ぼかし、メディアンブラー、グレースケール変換、CLAHEなどの最適化された拡張機能が含まれており、モデルのパフォーマンスを高めるために確率が慎重に調整されています。

  • Albumentationsには、次のような特長があります。

    1. パフォーマンス: OpenCVとNumPyを基盤とし、SIMD最適化によって優れた速度を実現します
    2. 柔軟性: ピクセルレベル、空間レベル、ミキシングレベルの拡張にわたる70種類以上の変換をサポートします
    3. 互換性: PyTorchやTensorFlowなどの主要なフレームワークとシームレスに連携します
    4. 信頼性: 充実したテストスイートにより、気付かないデータ破損を防ぎます
    5. 使いやすさ: あらゆる種類の拡張に対応する統一APIを提供します
  • Albumentationsは、次のようなさまざまなコンピュータービジョンタスクを強化します。

    多様な拡張オプションを備えたこのライブラリは、モデルのロバストなパフォーマンスが求められるビジョンタスクに役立ちます。Ultralytics YOLO26では、分類トレーニングに独自のtorchvisionベースの拡張パイプラインを使用するため、Albumentations変換は適用されません。

コメント