アルバムメンテーションを使用した coco によるデータ拡張

データ増強の必要性

目前几乎所有描述最先进的图像识别模型的论文都使用了基本的增强技术

ディープ ニューラル ネットワークでは、良好な結果を達成し、過学習を防ぐために大量のトレーニング データが必要ですが、十分なトレーニング サンプルを取得することは多くの場合非常に困難であり、さまざまな理由により十分なデータの収集が困難または不可能になる場合があります。
トレーニング データセットを作成するには、画像を取得してラベルを付ける必要があります。たとえば、画像分類タスクがある場合は、正しいクラス ラベルを割り当てる必要があります。オブジェクト検出タスクの場合は、オブジェクトの周囲に境界ボックスを描画する必要があります。セマンティック セグメンテーション タスクの場合は、各入力画像ピクセルを割り当てる必要があります。正しいカテゴリー。このプロセスには手作業が必要であり、トレーニング データのラベル付けにコストがかかる場合があります。たとえば、医療画像に適切にラベルを付けるには、高価な専門分野の専門家が必要です。
場合によっては、トレーニング画像の収集さえ困難であり、医療データの処理には多くの法的制限があり、これらのデータの取得には多大な労力が必要です。場合によっては、トレーニング画像を取得する方が実現可能ですが、多額の費用がかかります。たとえば、衛星画像を取得するには、それらの写真を撮影するために衛星通信事業者に料金を支払う必要があります。道路シーン認識用の画像を取得するには、車を運転して必要なデータを収集するオペレーターが必要です。
画像補正は、既存の画像から新しいトレーニング サンプルを作成するプロセスです。新しいサンプルを作成するには、元の画像を少し変更します。たとえば、新しい画像を明るくしたり、元の画像から一部を切り取ったり、または元の画像を反転するなどして新しい画像を作成できます。
多様な画像拡張セットにより、最も一般的な変換手法をいくつかだけ使用した基本セットと比較して、ニューラル ネットワークのパフォーマンスが向上します。増幅は、過学習に対処し、分類、セグメンテーション、オブジェクト検出などのコンピューター ビジョン タスクのディープ ニューラル ネットワークのパフォーマンスを向上させるのに役立ちます。最も重要なのは、Albumentations のような画像拡張ライブラリを使用すると、最小限の労力で任意のコンピュータ ビジョン パイプラインに画像拡張を追加できるようになります。


アルバムのメリット

目前有两种类型的图像增强:像素级增强和空间级增强。

opencv と Pillow も画像データの拡張を実現できますが、一部のタスクでは画像を変換するだけでなく、それに応じてラベルを調整する必要もあります。たとえば、セグメンテーション タスクの場合、入力画像と出力マスクに対していくつかの変換を実行する必要があります。さらに、画像変換とマスク変換にも同じパラメータを使用する必要があります。
ピクセルレベルの強化の場合は、入力画像を変更するだけで済みます。空間レベルの拡張の場合、同じ変換を画像だけでなく境界ボックスの座標にも適用する必要があります。空間レベルの拡張を適用した後、拡張されたイメージ上のオブジェクトの正しい位置を表すように境界ボックスの座標を更新する必要があります。ピクセル レベルの拡張では、元の画像のピクセル値は変更されますが、画像の RGB パレットの明るさやコントラストの変更など、出力マスクは変更されません。対照的に、空間レベルの拡張では画像とマスクの両方が変更されます。入力画像の一部を反転、回転、トリミングするなどの画像変換を適用するときは、出力ラベルを正しく保つために同じ変換を出力ラベルに適用する必要があります。 。


目前Albumentations是一个非常强大且主流的数据增强库

Albumentations は、分類、セマンティック セグメンテーション、インスタンス セグメンテーション、オブジェクト検出、姿勢推定などのさまざまなコンピューター ビジョン タスクを処理する単一のインターフェイスを提供します。現在、このライブラリは業界、深層学習研究、機械学習コンテスト、オープンソース プロジェクトで広く使用されています。

pip install albumentations

アルバム化の利点:

  1. 高性能:
    Albummentations は、最大の速度とパフォーマンスを実現するために最適化されています。内部では、ライブラリはデータ処理に OpenCV と NumPy の高度に最適化された関数を使用します。最も一般的な画像変換について、一般的な画像拡張ライブラリの速度を比較するベンチマークを定期的に更新しています。ほとんどの場合、アルバムは最高のパフォーマンスを示します。

  2. さまざまな補正機能をサポート
    Albumentations は 60 種類以上の画像補正方法をサポートしています。

  3. Extensibility
    Albumentations を使用すると、新しいオーグメンターを簡単に追加し、単一のインターフェイスを介してトランスフォーマーが組み込まれたコンピューター ビジョン パイプラインでそれらを使用できます。

  4. 厳格なテスト
    増幅パイプラインのバグにより、入力データが静かに破損する可能性があります。これらは見落とされがちですが、間違ったデータでトレーニングされたモデルのパフォーマンスは低下します。Albumations には、開発中のバグの発見に役立つ広範なテスト スイートが用意されています。


Albumentations は coco でデータ拡張を実行します

本文主要是以coco数据集为例,介绍使用Albumentations目标检测任务的数据增强方法

ターゲット検出タスクとは、コンピュータ テクノロジとアルゴリズムを使用してターゲットを分類して位置を特定するコンピュータ ビジョン タスクを指します。ターゲット検出タスクでは、境界ボックスは画像上のオブジェクトをマークする長方形です。境界ボックス表現には、pascal_voc、albumentations、coco など、複数の形式があります。そしてヨロ。

  1. pascal_voc:[x_min、y_min、x_max、y_max]
  2. albumentations: [x_min / width, y_min / height, x_max / width, y_max / height]、実際には、pascal_voc に基づいて正規化されています
  3. ココ:[x_min,y_min,bbox_width,bbox_height]
  4. yolo:[x_center,y_center,bbox_width, bbox_height]

使用什么格式并不重要,处理方法是一样的,需要在下面使用到函数中的参数进行调整


cocoのアノテーションファイルを読む

path = './instances_val2014.json' # 这里需要改为个人环境中标注文件的路径
with open(instance_file, 'r') as f:
    data = json.load(f)

読み取り後の結果は、情報、画像、ライセンス、注釈、カテゴリの 5 つのキーを含む辞書になります。主に画像、注釈、カテゴリの 3 つのフィールドの内容に注目します。

  1. 画像: これはリスト タイプの結果であり、リストの長さは画像の総数です。各リスト データは辞書タイプのデータであり、主に「file_name」、「height」、「width」などの 8 つのフィールドが含まれます。そして「ID」
  2. 注釈: これはリスト タイプの結果でもあります。リストの長さは bbox の総数です。各リスト データは、'segmentation'、'area'、'iscrowd'、'image_id' などの辞書タイプのデータです。 , 'bbox', ' 7 つのフィールド category_id' および 'id'、'segmentation' はセグメンテーション タスクに使用されます。'bbox' は 4 つの要素 [x_min、y_min、bbox_width、bbox_height] を含むリスト データです。
  3. カテゴリ: これはリスト タイプの結果でもあります。リストの全長は 80 で、データ セットに合計 80 のカテゴリがあることを示します。各リスト データは、「スーパーカテゴリ」、「ID」を含む辞書タイプのデータです。 ' および '名前' フィールド

画像補正

transform = A.Compose([
    A.RandomCrop(width=320, height=320),
    A.HorizontalFlip(p=0.5),
    A.RandomBrightnessContrast(p=0.2),
], bbox_params=A.BboxParams(format='coco', min_area=500, min_visibility=0.1))

まず、データ拡張パイプラインを定義します。ここでは、例として、ランダム クロッピング、水平反転、およびランダムな明るさコントラスト変更を取り上げます。A.RandomCrop は、高さと幅の 2 つのパラメータを受け取ります。A.RandomCrop(width=320, height=320) は、A. RandomCrop を意味します。は入力画像を取得し、そこから 256 × 256 ピクセルのランダムなパッチを抽出し、その結果をパイプライン内の次のエンハンサーに渡します。
次に、水平方向の反転があります。A.horizo​​ntalFlip には、p という名前のパラメータがあります。p は、ほとんどすべての拡張機能でサポートされている特別なパラメータです。拡張機能を適用する確率を制御します。p=0.5 は、次の確率で適用されることを意味します。 50%: 50% の確率で入力画像を反転せずに画像を水平方向に反転します。
次は A.RandomBrighthntessContrast です。これもパラメータ p を持ちます。p=0.2 は、前のステップで取得した画像の明るさとコントラストが 20% の確率で変更され、画像は 80% の確率で変更されないことを意味します。 。

下の画像は強化されていない画像表示です
ここに画像の説明を挿入

上記の設定は画像分類タスクに一般的ですが、ターゲット検出タスクに適用するには、次のパラメーター (bbox_params) を追加する必要があります。このパラメーターに A.BboxParams のインスタンスを渡す必要があり、A .BboxParams はボックスの境界設定を指定します。このうち、format はバウンディング ボックスの座標の形式を設定します。これは pascal_voc、albumments、coco または yolo に設定できます。Albumentation がバウンディング ボックスの座標ソース形式を正しく拡張するためには、バウンディング ボックスの座標ソース形式を知る必要があるため、この値が必要です。

min_area および min_visibility パラメータは、エンハンスメント後に境界ボックスのサイズが変更されたときに、Albumentations がどのように処理するかを制御します。min_area はピクセル単位の値です。エンハンスメント後に bbox の面積が min_area より小さくなった場合、Albumentations はボックスを破棄して、境界ボックスのリストにはボックスは含まれません。min_visibility は 0 から 1 までの値です。拡張前 bbox 領域に対する拡張 bbox 領域の比率が min_visibility より小さい場合、Albumentations はボックスを放棄します。つまり、拡張プロセスによって bbox の大部分が切り取られる場合、このボックスは拡張境界ボックスのリストには表示されません。

ここに画像の説明を挿入

この図のように、min_visibility を大きく設定すると、トイレのオブジェクトはマークされなくなります。

ここに画像の説明を挿入

おすすめ

転載: blog.csdn.net/qq_48068259/article/details/128023906