Albumentationsを使用してデータセットを強化し、YOLO26をトレーニングする#
コンピュータービジョンモデルを構築する際、トレーニングデータの品質と多様性は、モデルの性能を大きく左右します。Albumentationsを使用すると、幅広い画像変換を高速かつ柔軟、効率的に適用でき、モデルが現実世界のシナリオに適応する能力を向上させられます。Ultralytics YOLO26と簡単に統合でき、物体検出、セグメンテーション、分類タスク向けの堅牢なデータセットの作成に役立ちます。
Albumentationsを使用すると、幾何学的変換や色調整などの手法でYOLO26のトレーニングデータを強化できます。この記事では、Albumentationsによってデータ拡張プロセスを改善し、YOLO26プロジェクトをさらに効果的にする方法を見ていきます。始めましょう。
画像拡張のためのAlbumentations#
Albumentationsは、2018年6月に作成されたオープンソースの画像拡張ライブラリです。コンピュータービジョンにおける画像拡張プロセスを簡素化し、高速化するよう設計されています。パフォーマンスと柔軟性を重視して作られており、回転や反転などの単純な変換から、明るさやコントラストの変更などの複雑な調整まで、多様な拡張手法をサポートしています。Albumentationsは、画像分類、物体検出、セグメンテーションなどのタスク向けに、豊富で多様なデータセットを開発者が生成できるよう支援します。
Albumentationsを使用すると、画像、セグメンテーションマスク、バウンディングボックス、キーポイントに拡張機能を簡単に適用し、データセットのすべての要素が一緒に変換されるように確実に処理できます。PyTorchやTensorFlowのような人気のディープラーニングフレームワークとシームレスに連携するため、幅広いプロジェクトで利用しやすくなっています。
また、小規模なデータセットを扱う場合でも、大規模なコンピュータービジョンタスクを扱う場合でも、Albumentationsは拡張に適した優れた選択肢です。高速かつ効率的な処理により、データ準備にかかる時間を短縮します。同時に、モデルのパフォーマンスの向上にも役立ち、実世界のアプリケーションでモデルをより効果的にします。
Albumentationsの主な機能#
Albumentationsには、幅広いコンピュータービジョンアプリケーション向けの複雑な画像拡張を簡素化する便利な機能が多数あります。主な機能を以下に示します。
- 幅広い変換: Albumentationsは、幾何学的変化(回転、反転など)、色調整(明るさ、コントラストなど)、ノイズ追加(ガウシアンノイズなど)を含む、70種類を超える変換を提供します。複数の選択肢により、非常に多様で堅牢なトレーニングデータセットを作成できます。
-
高性能な最適化: OpenCVとNumPyを基盤とするAlbumentationsは、SIMD(単一命令・複数データ)などの高度な最適化技術を使用し、複数のデータポイントを同時に処理して処理速度を向上させます。大規模なデータセットも高速に処理できるため、画像拡張で利用できる最速の選択肢の一つです。
-
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に必要なパッケージのインストール中に問題が発生した場合は、解決策とヒントについて一般的な問題のガイドを参照してください。
このページのカスタム変換の例には、Albumentations 1.4.22以降、したがって Python 3.9以降が必要です。
使用方法#
必要なパッケージをインストールしたら、AlbumentationsをYOLO26で使用し始める準備が整います。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のMedianBlur変換は、画像にメディアンぼかし効果を適用します。これはエッジを保持しながらノイズを低減する場合に特に有用です。一般的なぼかし方法とは異なり、MedianBlurはメディアンフィルターを使用するため、エッジ周辺の鮮明さを維持しながらごま塩ノイズを除去するのに特に効果的です。
この統合で使用されるパラメーターと値は次のとおりです。
-
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変換は、コントラスト制限適応ヒストグラム均等化(CLAHE)を適用します。これは画像全体ではなく、局所領域(タイル)ごとにヒストグラムを均等化して画像のコントラストを高める手法です。CLAHEはバランスの取れた強調効果を生み、特に初期コントラストが低い領域で、標準的なヒストグラム均等化によって生じる過度なコントラスト増幅を回避します。
この統合で使用されるパラメーターと値は次のとおりです。
-
clip_limit: コントラスト強調の範囲を制御します。デフォルトの範囲は (1, 4) に設定され、各タイルで許容される最大コントラストを決定します。値を高くするとコントラストが強くなりますが、ノイズが発生する可能性もあります。
-
tile_grid_size: 通常は (行, 列) として、タイルグリッドのサイズを定義します。デフォルト値は (8, 8) で、画像が8x8のグリッドに分割されることを意味します。タイルサイズを小さくするとより局所的な調整になり、大きくすると全体均等化に近い効果になります。
-
p: CLAHEを適用する確率です。ここではp=0.01であるため、強調効果が適用されるのは1%のみで、トレーニング画像に時折変化を加えるため、コントラスト調整が控えめに適用されます。
以下の画像は、CLAHE変換を適用した例を示しています。
カスタムAlbumentations変換の使用#
デフォルトのAlbumentations統合では十分な拡張セットが提供されますが、特定のユースケースに合わせて変換をカスタマイズしたい場合があります。Ultralytics YOLO26では、augmentations パラメーターを使用し、Python API経由でカスタムAlbumentations変換を簡単に渡せます。このセクションの例には、Albumentations 1.4.22以降が必要です。
カスタム変換の定義方法#
独自のAlbumentations変換リストを定義し、トレーニング関数に渡せます。これによりデフォルトのAlbumentations変換が置き換えられますが、hsv_h、degrees、mosaic など、その他すべてのYOLO拡張は有効なままです。
より高度な変換を使用した例を示します。
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を使用してカスタムトランスフォームオブジェクトを構築します。シリアライズされたトランスフォームは、トレーニングの再開時を含め、CLIまたはYAML設定ファイルを介して渡すこともできます。
- デフォルトを置き換え: カスタム変換はデフォルトのAlbumentations変換を完全に置き換えます。その他のYOLO拡張は引き続き有効です。
- ラベル処理:
A.OneOfまたはA.Composeにネストされたものを含む空間トランスフォームは、バウンディングボックス、ポリゴン、キーポイント、深度またはセマンティックマスクを画像と一緒に移動します。A.RandomGridShuffleはポリゴンやキーポイントのトポロジを保持できず、セグメンテーション、ポーズ、OBBサンプルでエラーを発生させます。 - パフォーマンス: 変換によっては計算コストが高くなります。トレーニング速度を監視し、それに応じて調整してください。
- タスクの互換性: カスタムAlbumentationsトランスフォームは、検出、セグメンテーション、セマンティックセグメンテーション、深度、ポーズ、OBBのトレーニングでは動作しますが、分類(異なるオーグメンテーションパイプラインを使用します)では動作しません。
カスタム変換のユースケース#
用途によって異なる拡張戦略が有効です。
- 医療画像: 弾性変形、グリッド歪み、特殊なノイズパターンを使用します
- 航空・衛星画像: 高度、気象条件、光の入射角の違いをシミュレートする変換を適用します
- 低照度シナリオ: ノイズの追加と明るさの調整を重視し、厳しい照明条件に対応できる堅牢なモデルをトレーニングします
- 産業検査: 品質管理アプリケーション向けに、テクスチャの変化とシミュレートした欠陥を追加します
利用可能な変換とそのパラメーターの完全な一覧については、Albumentationsドキュメントをご覧ください。
YOLO26でカスタムAlbumentations変換を使用する詳細な例とベストプラクティスについては、YOLOデータ拡張ガイドをご覧ください。
Albumentationsについてさらに学ぶ#
Albumentationsについて詳しく学びたい場合は、より詳細な手順と例を確認できる次のリソースをご覧ください。
-
Albumentationsドキュメント: 公式ドキュメントでは、サポートされている変換と高度な使用方法を網羅しています。
-
Ultralytics Albumentationsガイド: この統合を実現する関数の詳細を確認できます。
-
Albumentations GitHubリポジトリ: リポジトリには、拡張のカスタマイズを始めるための例、ベンチマーク、ディスカッションが含まれています。
主なポイント#
このガイドでは、画像拡張向けの優れた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が際立っている理由はいくつかあります。
- パフォーマンス: OpenCVとNumPyを基盤とし、SIMD最適化により優れた速度を実現します
- 柔軟性: ピクセルレベル、空間レベル、ミキシングレベルの拡張にわたる70種類以上の変換をサポートします
- 互換性: PyTorchやTensorFlowなどの一般的なフレームワークとシームレスに連携します
- 信頼性: 包括的なテストスイートにより、気付かないデータ破損を防ぎます
- 使いやすさ: あらゆる拡張タイプに対応する、単一の統合APIを提供します
Albumentationsは、次のようなさまざまなコンピュータービジョンタスクを強化します。
- 物体検出: 照明、スケール、向きの変化に対するモデルの堅牢性を向上させます
- インスタンスセグメンテーション: 多様な変換により、マスク予測の精度を高めます
- 分類: 色と幾何学的な拡張により、モデルの汎化性能を向上させます
- 姿勢推定: モデルが異なる視点や照明条件に適応できるよう支援します
このライブラリの多様な拡張オプションは、堅牢なモデルパフォーマンスが求められるあらゆるビジョンタスクで役立ちます。