Meet YOLO26: next-gen vision AI.

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

コンピュータビジョンモデルを構築する際、トレーニングデータの品質と多様性は、モデルのパフォーマンスを大きく左右します。Albumentationsは、高速で柔軟かつ効率的な方法で幅広い画像変換を適用し、現実世界のシナリオに適応するモデルの能力を向上させます。これはUltralytics YOLO26と容易に統合でき、物体検出セグメンテーション分類タスクのための堅牢なデータセットを作成するのに役立ちます。

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

Link to this section画像拡張のためのAlbumentations#

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

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

また、Albumentationsは小規模なデータセットを扱う場合でも、大規模なコンピュータビジョンのタスクを扱う場合でも、データ拡張の優れた選択肢です。高速かつ効率的な処理を保証し、データ準備にかかる時間を短縮します。同時に、モデルのパフォーマンス向上を助け、実際のアプリケーションにおいてモデルをより効果的にします。

Link to this sectionAlbumentationsの主な特徴#

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

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

Albumentations augmentation examples

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

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

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

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

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

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

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

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

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

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

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

Link to this sectionインストール#

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

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

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

Link to this section使用方法#

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

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

Link to this sectionぼかし#

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

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

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

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

Albumentations Blur augmentation result

Link to this sectionメディアンぼかし (Median Blur)#

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

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

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

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

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

Albumentations MedianBlur augmentation

Link to this sectionグレースケール#

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

Link to this sectionコントラスト制限付き適応ヒストグラム均等化 (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

Link to this sectionカスタムAlbumentations変換の使用#

デフォルトのAlbumentations統合は充実した拡張セットを提供しますが、特定のユースケースに合わせて変換をカスタマイズしたい場合もあるでしょう。Ultralytics YOLO26では、augmentationsパラメータを使用して、Python APIを通じてカスタムAlbumentations変換を簡単に渡すことができます。

Link to this sectionカスタム変換の定義方法#

独自の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,
)

Link to this section重要な考慮事項#

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

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

Link to this sectionカスタム変換のユースケース#

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

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

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

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

Link to this sectionAlbumentationsについてさらに学ぶ#

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

Link to this section重要なポイント#

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

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

Link to this sectionよくある質問 (FAQ)#

Link to this sectionデータ拡張を改善するために、どのように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などの最適化された拡張が含まれています。

Link to this section他の拡張ライブラリよりもAlbumentationsを使用する主な利点は何ですか?#

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

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

Link to this sectionどのようなタイプのコンピュータビジョンタスクがAlbumentationsの拡張から恩恵を受けられますか?#

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

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

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

コメント