Ultralytics YOLOを使用したデータ拡張
はじめに
データ拡張 は、既存の画像にさまざまな変換を適用してトレーニングデータセットを人工的に拡張する、コンピュータビジョンにおける重要なテクニックです。Ultralytics YOLOのような深層学習 モデルをトレーニングする場合、データ拡張はモデルの堅牢性を向上させ、過学習を軽減し、現実世界のシナリオへの一般化を強化するのに役立ちます。
VIDEO
見る: Ultralytics YOLO モデルをより良く一般化するために、Mosaic、MixUp、その他のデータ補強をどのように使うか 🚀。
データ拡張が重要な理由
データ拡張は、コンピュータビジョンモデルのトレーニングにおいて、複数の重要な目的を果たします。
拡張されたデータセット : 既存の画像のバリエーションを作成することで、新しいデータを収集せずに、トレーニングデータセットのサイズを効果的に増やすことができます。
汎化性能の向上 : モデルはさまざまな条件下でオブジェクトを認識することを学習し、実際のアプリケーションでより堅牢になります。
過学習の抑制 :学習データに多様性を取り入れることで、モデルが特定の画像特性を記憶する可能性を低減します。
パフォーマンスの向上 : 適切な拡張でトレーニングされたモデルは、通常、検証セットとテストセットでより良い精度 を達成します。
Ultralytics YOLOの実装は、包括的な拡張手法スイートを提供し、それぞれが特定の目的を果たし、さまざまな方法でモデルのパフォーマンスに貢献します。このガイドでは、各拡張パラメータについて詳しく説明し、プロジェクトでいつ、どのように効果的に使用するかを理解するのに役立ちます。
構成例
各パラメータは、python API、コマンドラインインターフェース(CLI)、または設定ファイルを使用してカスタマイズできます。以下は、各方法でデータ拡張を設定する方法の例です。
構成例
Python CLI
from ultralytics import YOLO
# Load a model
model = YOLO ( "yolo11n.pt" )
# Training with custom augmentation parameters
model . train ( data = "coco.yaml" , epochs = 100 , hsv_h = 0.03 , hsv_s = 0.6 , hsv_v = 0.5 )
# Training without any augmentations (disabled values omitted for clarity)
model . train (
data = "coco.yaml" ,
epochs = 100 ,
hsv_h = 0.0 ,
hsv_s = 0.0 ,
hsv_v = 0.0 ,
translate = 0.0 ,
scale = 0.0 ,
fliplr = 0.0 ,
mosaic = 0.0 ,
erasing = 0.0 ,
auto_augment = None ,
)
# Training with custom augmentation parameters
yolo detect train data = coco8.yaml model = yolo11n.pt epochs = 100 hsv_h = 0 .03 hsv_s = 0 .6 hsv_v = 0 .5
設定ファイルを使用しています
拡張を含むすべてのトレーニングパラメータをYAML設定ファイル(例:)で定義できます。 train_custom.yaml
)。 mode
parameterは、CLIを使用する場合にのみ必要です。この新しいYAMLファイルは、 デフォルトのもの にあります。 ultralytics
パッケージを参照してください。
# train_custom.yaml
# 'mode' is required only for CLI usage
mode : train
data : coco8.yaml
model : yolo11n.pt
epochs : 100
hsv_h : 0.03
hsv_s : 0.6
hsv_v : 0.5
次に、Python APIでトレーニングを開始します。
カラースペースの拡張
色相調整(hsv_h
)
範囲 : 0.0
- 1.0
デフォルト : 0.015
使用法 : 色の関係を維持しながら、画像の色をシフトさせます。 hsv_h
ハイパーパラメータはシフトの大きさ(shift magnitude)を定義し、最終的な調整はランダムに選択されます。 -hsv_h
および hsv_h
。たとえば、 hsv_h=0.3
、シフトはランダムに選択されます。-0.3
宛先 0.3
。を超える値の場合 0.5
色相シフトはカラーホイール上でラップアラウンドするため、拡張は同じように見えます。 0.5
および -0.5
.
目的 : 特に照明条件がオブジェクトの外観に劇的な影響を与える可能性のある屋外シナリオに役立ちます。たとえば、バナナは明るい日光の下ではより黄色く見えるかもしれませんが、屋内ではより緑がかって見えます。
Ultralyticsの実装 : RandomHSV
彩度調整(hsv_s
)
範囲 : 0.0
- 1.0
デフォルト : 0.7
使用法 : 画像内の色の強度を変更します。 hsv_h
ハイパーパラメータはシフトの大きさ(shift magnitude)を定義し、最終的な調整はランダムに選択されます。 -hsv_s
および hsv_s
。たとえば、 hsv_s=0.7
強度はランダムに選択されます-0.7
宛先 0.7
.
目的 : モデルがさまざまな気象条件とカメラ設定を処理するのに役立ちます。たとえば、赤い交通標識は晴れた日には非常に鮮やかに見えるかもしれませんが、霧の多い状態では鈍く色あせて見えます。
Ultralyticsの実装 : RandomHSV
明るさ調整(hsv_v
)
範囲 : 0.0
- 1.0
デフォルト : 0.4
使用法 は、画像の明るさを変更します。 hsv_v
ハイパーパラメータはシフトの大きさ(shift magnitude)を定義し、最終的な調整はランダムに選択されます。 -hsv_v
および hsv_v
。たとえば、 hsv_v=0.4
強度はランダムに選択されます-0.4
宛先 0.4
.
目的 : さまざまな照明条件で実行する必要があるモデルをトレーニングするために不可欠です。たとえば、赤いリンゴは日光の下では明るく見えるかもしれませんが、日陰でははるかに暗く見えます。
Ultralyticsの実装 : RandomHSV
回転(degrees
)
範囲 : 0.0
宛先 180
デフォルト : 0.0
使用法 : 指定された範囲内で画像をランダムに回転させます。 degrees
ハイパーパラメータは回転角度を定義し、最終的な調整はランダムに選択されます。 -degrees
および degrees
。たとえば、 degrees=10.0
、回転はランダムに選択されます。-10.0
宛先 10.0
.
目的 : オブジェクトがさまざまな方向に出現する可能性のあるアプリケーションにとって重要です。たとえば、航空ドローン imagery では、車両はどの方向にも向いている可能性があり、モデルは回転に関係なくオブジェクトを認識する必要があります。
Ultralyticsの実装 : RandomPerspective
Translation(translate
)
範囲 : 0.0
- 1.0
デフォルト : 0.1
使用法 : 画像サイズに対するランダムな割合で画像を水平方向および垂直方向にシフトさせます。 translate
ハイパーパラメータはシフトの大きさ(shift magnitude)を定義し、最終的な調整は範囲内で2回(各軸に1回)ランダムに選択されます。 -translate
および translate
。たとえば、 translate=0.5
、平行移動はランダムに選択されます。-0.5
宛先 0.5
x軸上で、別の独立したランダム値がy軸上の同じ範囲内で選択されます。
目的 : モデルが部分的に表示されているオブジェクトを検出し、オブジェクトの位置に対する堅牢性を向上させるのに役立ちます。たとえば、車両の損傷評価アプリケーションでは、写真家の位置と距離に応じて、車の部品がフレーム内に完全または部分的に表示される場合があります。並進拡張は、モデルにそれらの完全性または位置に関係なく、これらの特徴を認識するように教えます。
Ultralyticsの実装 : RandomPerspective
注 : 簡略化のため、以下に適用される変換は、毎回両方に対して同じです。 x
および y
軸。値 -1.0
および 1.0
は、画像を完全にフレームから外してしまうため、表示されません。
スケール(scale
)
範囲 : ≥0.0
デフォルト : 0.5
使用法 : 指定された範囲内でランダムな係数で画像のサイズを変更します。 scale
ハイパーパラメータはスケーリングファクターを定義し、最終的な調整はランダムに選択されます。 1-scale
および 1+scale
。たとえば、 scale=0.5
、スケーリングはランダムに選択されます。0.5
宛先 1.5
.
目的 : モデルがさまざまな距離とサイズでオブジェクトを処理できるようにします。たとえば、自動運転アプリケーションでは、車両はカメラからさまざまな距離で表示される可能性があり、モデルはサイズに関係なくそれらを認識する必要があります。
Ultralyticsの実装 : RandomPerspective
注 :
値 -1.0
は画像が消えてしまうため表示されませんが、 1.0
単純に2倍にズームするだけです。
以下の表に表示されている値は、ハイパーパラメータを通して適用される値です。 scale
最終的なスケールファクターではありません。
もし scale
より大きい 1.0
スケーリングファクターはランダムに選択されるため、画像は非常に小さくしたり、反転させたりすることができます。 1-scale
および 1+scale
。たとえば、 scale=3.0
、スケーリングはランダムに選択されます。-2.0
宛先 4.0
。負の値を選択すると、画像が反転します。
シア(shear
)
範囲 : -180
宛先 +180
デフォルト : 0.0
使用法 : 画像をx軸とy軸の両方に沿って歪ませる幾何学的変換を導入し、平行線を維持しながら画像の一部を一方向に効果的にシフトさせます。 shear
ハイパーパラメータはせん断角度を定義し、最終的な調整はランダムに選択されます。 -shear
および shear
。たとえば、 shear=10.0
、シアー(せん断)はランダムに選択されます。-10
宛先 10
x軸上で、別の独立したランダム値がy軸上の同じ範囲内で選択されます。
目的 : わずかな傾きまたは斜めの視点によって引き起こされる視野角の変化に対して、モデルが一般化するのに役立ちます。たとえば、交通監視では、車や道路標識などのオブジェクトは、垂直でないカメラの配置により傾いて見える場合があります。せん断拡張を適用すると、モデルはこのような歪んだ歪みにもかかわらずオブジェクトを認識することを学習します。
Ultralyticsの実装 : RandomPerspective
注 :
shear
値は画像を急速に歪める可能性があるため、最初は小さな値から始めて徐々に大きくすることをお勧めします。
パースペクティブ変換とは異なり、せん断は奥行きや消失点を導入しませんが、対向する辺を平行に保ちながら角度を変更してオブジェクトの形状を歪めます。
パースペクティブ(perspective
)
範囲 : 0.0
- 0.001
デフォルト : 0.0
使用法 は、x軸とy軸の両方に沿って完全な遠近法変換を適用し、異なる深度または角度から見たときのオブジェクトの見え方をシミュレートします。 perspective
ハイパーパラメータは遠近法の大きさ(perspective magnitude)を定義し、最終的な調整はランダムに選択されます。 -perspective
および perspective
。たとえば、 perspective=0.001
パースペクティブはランダムに選択されます-0.001
宛先 0.001
x軸上で、別の独立したランダム値がy軸上の同じ範囲内で選択されます。
目的 : パースペクティブ拡張は、特に遠近法の変化によってオブジェクトが短縮されたり歪んだりして見えるシナリオにおいて、極端な視点の変化を処理するために重要です。例えば、ドローンベースの物体検出では、建物、道路、車両がドローンの傾きや高度に応じて引き伸ばされたり圧縮されたりして見えることがあります。パースペクティブ変換を適用することで、モデルはこれらのパースペクティブによる歪みにもかかわらずオブジェクトを認識することを学習し、実際の環境での展開における堅牢性を向上させます。
Ultralyticsの実装 : RandomPerspective
-0.001
-0.0005
0.0
0.0005
0.001
上下反転(flipud
)
範囲 : 0.0
- 1.0
デフォルト : 0.0
使用法 : y軸に沿って画像を反転させることにより、垂直方向の反転を実行します。この変換は、画像全体を上下逆にミラーリングしますが、オブジェクト間のすべての空間的関係を保持します。 flipudハイパーパラメータは、変換を適用する確率を定義します。値は flipud=1.0
すべての画像が確実に反転され、次の値になるようにし、 flipud=0.0
変換を完全に無効にします。たとえば、 flipud=0.5
各画像は、上下に50%の確率で反転されます。
目的 : オブジェクトが逆さまに見える可能性のあるシナリオに役立ちます。例えば、ロボットビジョンシステムでは、コンベヤーベルトやロボットアーム上のオブジェクトが持ち上げられ、さまざまな向きで配置されることがあります。垂直方向の反転は、モデルがオブジェクトの上下の位置に関係なく認識するのに役立ちます。
Ultralyticsの実装 : RandomFlip
flipud
オフ
flipud
オン
左右反転(fliplr
)
範囲 : 0.0
- 1.0
デフォルト : 0.5
使用法 : x軸に沿って画像をミラーリングすることにより、水平方向の反転を実行します。この変換は、左右を入れ替えながら空間的な一貫性を維持し、モデルがミラーリングされた向きで表示されるオブジェクトに一般化するのに役立ちます。 fliplr
ハイパーパラメータは変換の適用確率を定義し、値は次のようになります。 fliplr=1.0
すべての画像が確実に反転され、次の値になるようにし、 fliplr=0.0
変換を完全に無効にします。たとえば、 fliplr=0.5
各画像は、左右に50%の確率で反転されます。
目的 : 水平方向の反転は、オブジェクト検出、ポーズ推定、および顔認識で広く使用されており、左右の変動に対する堅牢性を向上させます。たとえば、自動運転では、車両と歩行者は道路の両側に表示される可能性があり、水平方向の反転により、モデルは両方の方向でそれらを同様に認識できます。
Ultralyticsの実装 : RandomFlip
fliplr
オフ
fliplr
オン
BGRチャンネルスワップ(bgr
)
範囲 : 0.0
- 1.0
デフォルト : 0.0
使用法 : 画像の色チャネルをRGBからBGRにスワップし、色の表現順序を変更します。 bgr
ハイパーパラメータは変換の適用確率を定義し、 bgr=1.0
すべての画像が確実にチャネルスワップされるようにし、 bgr=0.0
それを無効にします。たとえば、 bgr=0.5
各画像は、RGBからBGRに50%の確率で変換されます。
目的 : さまざまなカラーチャネルの順序に対する堅牢性を高めます。たとえば、RGB および BGR 形式が一貫して使用されていないさまざまなカメラシステムおよび画像ライブラリで動作する必要があるモデルをトレーニングする場合、または入力カラー形式がトレーニングデータと異なる環境にモデルをデプロイする場合。
Ultralyticsの実装 : Format
bgr
オフ
bgr
オン
モザイク(mosaic
)
範囲 : 0.0
- 1.0
デフォルト : 1.0
使用法 は、4つのトレーニング画像を1つに結合します。 mosaic
ハイパーパラメータは変換の適用確率を定義し、 mosaic=1.0
すべての画像が確実に結合されるようにし、 mosaic=0.0
変換を無効にします。たとえば、 mosaic=0.5
各画像は、他の3つの画像と50%の確率で結合されます。
目的 : 小さなオブジェクトの検出とコンテキストの理解を向上させるのに非常に効果的です。たとえば、動物がさまざまな距離とスケールで表示される可能性のある野生生物保護プロジェクトでは、モザイク拡張は、限られたデータから多様なトレーニングサンプルを人工的に作成することにより、モデルがさまざまなサイズ、部分的なオクルージョン、および環境コンテキストで同じ種を認識することを学習するのに役立ちます。
Ultralyticsの実装 : Mosaic
注 :
たとえ mosaic
データ拡張はモデルをよりロバストにする一方で、トレーニングプロセスをより困難にする可能性もあります。
The mosaic
トレーニングの終わりに近づくと、augmentationを無効にすることができます。 close_mosaic
完了前のエポック数に対して、いつオフにするかを設定します。例えば、もし epochs
に設定されています 200
および close_mosaic
に設定されています 20
、 mosaic
データ拡張は、以下の後に無効になります。 180
エポックの場合。 close_mosaic
に設定されています 0
、 mosaic
データ拡張は、トレーニングプロセス全体で有効になります。
生成されたモザイクの中心はランダムな値を使用して決定され、画像の内側または外側のいずれかに配置できます。
現在の実装の mosaic
augmentationは、データセットからランダムに選択された4つの画像を組み合わせます。データセットが小さい場合、同じ画像が同じモザイク内で複数回使用されることがあります。
mosaic
オフ
mosaic
オン
Mixup(mixup
)
範囲 : 0.0
- 1.0
デフォルト : 0.0
使用法 は、与えられた確率で2つの画像とそのラベルをブレンドします。 mixup
ハイパーパラメータは変換の適用確率を定義し、 mixup=1.0
すべての画像が確実に混合されるようにし、 mixup=0.0
変換を無効にします。たとえば、 mixup=0.5
各画像は、別の画像と50%の確率で混合されます。
目的 : モデルの堅牢性を向上させ、過剰適合を軽減します。たとえば、小売製品認識システムでは、mixup は、モデルが異なる製品の画像をブレンドすることにより、より堅牢な特徴を学習するのに役立ち、混雑した店の棚にある他の製品によって部分的に表示または不明瞭になっている場合でも、アイテムを識別するように教えます。
Ultralyticsの実装 : Mixup
注 :
The mixup
ratioはランダムに選択された値です。 np.random.beta(32.0, 32.0)
ベータ分布。各画像が約50%寄与し、わずかな変動があります。
最初の画像、 mixup
オフ
2番目の画像 mixup
オフ
mixup
オン
CutMix(cutmix
)
範囲 : 0.0
- 1.0
デフォルト : 0.0
使用法 : ある画像から長方形の領域を切り取り、指定された確率で別の画像に貼り付けます。 cutmix
ハイパーパラメータは変換の適用確率を定義し、 cutmix=1.0
すべての画像が確実にこの変換を受けるようにし、 cutmix=0.0
完全に無効にします。たとえば、 cutmix=0.5
各画像は、別の画像からのパッチで領域が置き換えられる確率が50%あります。
目的 : ローカルな特徴の整合性を維持しながら、現実的なオクルージョンシナリオを作成することにより、モデルのパフォーマンスを向上させます。たとえば、自動運転システムでは、cutmix は、他のオブジェクトによって部分的に遮られている場合でも、車両または歩行者を認識するようにモデルを学習させ、オブジェクトが重複する複雑な現実世界の環境での検出精度を向上させるのに役立ちます。
Ultralyticsの実装 : CutMix
注 :
カット領域のサイズと位置は、アプリケーションごとにランダムに決定されます。
ピクセル値をグローバルにブレンドするmixupとは異なり、 cutmix
カット領域内の元のピクセル強度を維持し、ローカルな特徴を保持します。
領域は、既存のバウンディングボックスと重ならない場合にのみ、ターゲット画像に貼り付けられます。さらに、少なくとも 0.1
貼り付けられた領域内で元の領域の(10%)が保持されます。
この最小バウンディングボックス領域の閾値は、現在の実装では変更できず、以下に設定されています。 0.1
デフォルトで。
最初の画像、 cutmix
オフ
2番目の画像 cutmix
オフ
cutmix
オン
セグメンテーション特有の拡張
コピー&ペースト (copy_paste
)
範囲 : 0.0
- 1.0
デフォルト : 0.0
使用法 : セグメンテーションタスクでのみ機能し、この拡張は、指定された確率に基づいて、画像内または画像間でオブジェクトをコピーします。 copy_paste_mode
。 copy_paste
ハイパーパラメータは変換の適用確率を定義し、 copy_paste=1.0
すべての画像が確実にコピーされるようにし、 copy_paste=0.0
変換を無効にします。たとえば、 copy_paste=0.5
各画像は、別の画像からオブジェクトがコピーされる確率が50%あります。
目的 : 特にインスタンスセグメンテーションタスクとまれなオブジェクトクラスに役立ちます。たとえば、特定の種類の欠陥が発生頻度が低い産業用欠陥検出では、コピーペースト拡張は、ある画像から別の画像にコピーすることにより、これらのまれな欠陥の発生を人為的に増やすことができ、モデルが追加の欠陥サンプルを必要とせずに、これらの過小評価されたケースをより適切に学習するのに役立ちます。
Ultralyticsの実装 : CopyPaste
注 :
下のgif画像に示すように、 copy_paste
augmentationを使用して、ある画像から別の画像にオブジェクトをコピーできます。
オブジェクトがコピーされると、 copy_paste_mode
そのIntersection over Area(IoA)は、ソース画像のすべてのオブジェクトで計算されます。すべてのIoAが以下の場合 0.3
(30%)の場合、オブジェクトはターゲット画像に貼り付けられます。IoAが上記の場合のみ 0.3
オブジェクトはターゲット画像に貼り付けられません。
IoAのしきい値は、現在の実装では変更できず、に設定されています 0.3
デフォルトで。
copy_paste
オフ
copy_paste
オン copy_paste_mode=flip
可視化 copy_paste
プロセス
コピー&ペーストモード (copy_paste_mode
)
オプション : 'flip'
, 'mixup'
デフォルト : 'flip'
使用法 : 使用する方法を決定します。 コピー&ペースト データ拡張。以下に設定されている場合 'flip'
オブジェクトは同じ画像から取得されますが、 'mixup'
オブジェクトを異なる画像からコピーできます。
目的 : コピーされたオブジェクトをターゲット画像に統合する方法に柔軟性を持たせます。
Ultralyticsの実装 : CopyPaste
注 :
IoAの原則はどちらも同じです copy_paste_mode
ただし、オブジェクトのコピー方法が異なります。
画像サイズによっては、オブジェクトがフレームの外に部分的または完全にコピーされることがあります。
ポリゴンアノテーションの品質によっては、コピーされたオブジェクトの形状がオリジナルと比較してわずかに異なる場合があります。
参照画像
選択された画像: copy_paste
copy_paste
オン copy_paste_mode=mixup
分類固有の拡張
Auto Augment (auto_augment
)
オプション : 'randaugment'
, 'autoaugment'
, 'augmix'
, None
デフォルト : 'randaugment'
使用法 は、分類のための自動拡張ポリシーを適用します。 'randaugment'
オプションはRandAugmentを使用し、 'autoaugment'
はAutoAugmentを使用し、 'augmix'
はAugMixを使用します。設定を None
自動拡張を無効にします。
目的 : 分類タスクのために拡張戦略を自動的に最適化します。違いは次のとおりです。
AutoAugment : このモードでは、ImageNet、CIFAR10、SVHNなどのデータセットから学習した定義済みの拡張ポリシーが適用されます。ユーザーはこれらの既存のポリシーを選択できますが、Torchvision内で新しいポリシーをトレーニングすることはできません。特定のデータセットに最適な拡張戦略を見つけるには、外部ライブラリまたはカスタム実装が必要になります。AutoAugmentに関する論文 を参照してください。
RandAugment : 一様な大きさで変換をランダムに選択して適用します。このアプローチは、広範な検索フェーズの必要性を減らし、計算効率を高めながら、モデルの堅牢性を向上させます。RandAugment論文 への参照。
AugMix : AugMixは、単純な変換をランダムに組み合わせることによって多様な画像のバリエーションを作成し、モデルの堅牢性を高めるデータ拡張手法です。AugMixに関する論文 を参照してください。
Ultralyticsの実装 : classify_augmentations()
注 :
基本的に、3つの方法の主な違いは、拡張ポリシーが定義および適用される方法です。
3つの方法の詳細な比較については、この記事 を参照してください。
Random Erasing(erasing
)
範囲 : 0.0
- 0.9
デフォルト : 0.4
使用法 : 分類トレーニング中に画像の一部をランダムに消去します。 erasing
ハイパーパラメータは変換の適用確率を定義し、 erasing=0.9
ほとんどすべての画像が確実に消去されるようにし、 erasing=0.0
変換を無効にします。たとえば、 erasing=0.5
各画像は、一部が50%の確率で消去されます。
目的 : モデルが堅牢な特徴を学習し、特定の画像領域への過度の依存を防ぐのに役立ちます。たとえば、顔認識システムでは、ランダム消去は、モデルがサングラス、フェイスマスク、または顔の特徴を部分的に覆う可能性のある他のオブジェクトのような部分的なオクルージョンに対してより堅牢になるのに役立ちます。これにより、隠されている可能性のある特徴的な特徴だけに依存するのではなく、複数の顔の特徴を使用して個人を識別することにより、現実世界のパフォーマンスが向上します。
Ultralyticsの実装 : classify_augmentations()
注 :
The erasing
データ拡張には、以下のような効果があります。 scale
, ratio
、および value
の変更できないハイパーパラメータ 現在の実装 のデフォルト値は、 (0.02, 0.33)
, (0.3, 3.3)
、および 0
それぞれ、PyTorchに記載されているとおり ドキュメンテーション .
上限値 erasing
ハイパーパラメータはに設定されています。 0.9
すべての画像に変換を適用することを避けるため。
erasing
オフ
erasing
オン (例 1)
erasing
オン (例 2)
erasing
オン (例 3)
よくある質問
選択できる拡張があまりにも多いです。どれを使用すればよいかわかりますか?
適切なデータ拡張の選択は、特定のユースケースとデータセットによって異なります。以下に、決定を支援するための一般的なガイドラインをいくつか示します。
ほとんどの場合、色と明るさのわずかな変化は有益です。デフォルト値は hsv_h
, hsv_s
、および hsv_v
は、良い出発点となります。
カメラの視点が一定で、モデルのデプロイ後に変更されない場合は、次のような幾何学的変換を省略できます。 rotation
, translation
, scale
, shear
、または perspective
。ただし、カメラの角度が変化する可能性があり、モデルをより堅牢にする必要がある場合は、これらの拡張を維持することをお勧めします。
以下を使用します mosaic
部分的に遮られたオブジェクトや、1つの画像に複数のオブジェクトが存在することが許容され、ラベルの値を変更しない場合にのみ、データ拡張を使用してください。あるいは、 mosaic
アクティブですが、 close_mosaic
トレーニングプロセスでより早く無効にするための値。
要するに、シンプルに保ちます。まず、小さな拡張セットから始めて、必要に応じて徐々に追加していきます。目標は、モデルの一般化と堅牢性を向上させることであり、トレーニングプロセスを複雑にしすぎることではありません。また、適用する拡張が、モデルが本番環境で遭遇するのと同じデータ分布を反映していることを確認してください。
トレーニングを開始すると、以下が表示されます。 albumentations: Blur[...]
参照。これは、Ultralytics YOLOがぼかしのような追加の拡張を実行することを意味しますか?
もし、 albumentations
パッケージがインストールされている場合、Ultralyticsはそれを使用して一連の追加の画像拡張を自動的に適用します。これらの拡張は内部で処理され、追加の構成は必要ありません。
適用される変換の完全なリストは、 技術ドキュメント 、および私たちの Albumentations統合ガイド 。確率のある拡張のみが p
より大きい 0
がアクティブです。これらは、ぼかしやグレースケール効果など、現実世界の視覚的なアーティファクトを模倣するために、意図的に低い頻度で適用されます。
トレーニングを開始しても、albumentationsへの参照が表示されません。なぜですか?
以下を確認してください albumentations
パッケージがインストールされています。インストールされていない場合は、以下を実行してインストールできます。 pip install albumentations
。インストールが完了すると、パッケージはUltralyticsによって自動的に検出され、使用されるはずです。
データ拡張をカスタマイズするにはどうすればよいですか?
カスタムデータセットクラスとトレーナーを作成することで、拡張をカスタマイズできます。たとえば、デフォルトのUltralytics分類拡張をPyTorchのtorchvision.transforms.Resize やその他の変換に置き換えることができます。実装の詳細については、カスタムトレーニングの例 を分類ドキュメントで参照してください。
ツイート
共有