画像の一部をマスクするオーグメンテーションのまとめ (Random Erasing, Cutout, Hide-and-Seek, GridMask)

画像の一部をマスクすることでオーグメンテーションする手法について代表的なものをまとめました。

そもそも: なぜ画像の一部をマスクするのか?

オーグメンテーション全体に言えることですが、モデルの汎化能力を向上させることが目的です。

他のオーグメンテーション手法と比較して、遮蔽やノイズに対してロバストにする点が特徴的です。

  • ランダムフリップと異なり、情報を損失する
  • ランダムクロップと異なり、対象の全体的な構造をキープ
  • ドロップアウトと異なり、連続した矩形領域の情報を落とす

また、これらオーグメンテーション手法と相補的で、組み合わせて使うこともできます。

Random erasing

大きさがランダムの矩形領域で画像をマスクするのが Random erasing1 です。矩形領域のRGBにはランダムな値 (0〜255となる一様分布で生成) で埋められます。

  • 必要なハイパパラメータは3つ
    • 画像全体に対するマスク領域の面積比の最小・最大
    • マスク領域の縦横比のレンジ
    • Random erasingを適用する確率
  • 固定値ではなくランダムな値で埋めることで、ノイズとして機能している
    • 固定値 (0や255) で埋めるよりも精度が高くなることをCIFAR-10で確認
    • 後述する Hide-and-Seek では学習データの平均値を使うことを推奨してます

[1] Figure 1 抜粋

物体検出タスクでは、画像全体をマスクする、物体ごとにマスクする、両方を組み合わせてマスクする、という3パターンの適用方法をオプションとして提案しています。

  • VOC2007 testでは3番目が一番高いmAPをマークしてます (面積比0.02〜0.2、縦横比0.3、確率0.5を用いた場合)

[1] Figure 2 抜粋

Cutout

Random erasingとほぼ時同じくして提案された Cutout2 はもっとシンプルで、画像中のランダムな位置を中心として正方形領域 (辺の長さは固定) を固定値0でマスクします。3

  • 位置によっては全ての正方形領域を含まない (画像外にはみ出す) ケースがある
    • 常に正方形領域が画像内に収まるように調整するよりも、パフォーマンスは良かった (画像の大部分を残すことが重要)
  • Cutoutの適用確率は50%

[2] Figure 1 抜粋

画像分類タスク (CIFAR-10, CIFAR-100など) において精度改善が見られる。正方形領域の辺の長さ (下図Patch Length) が重要で、同じ画像サイズ (32 x 32) でもより細かな情報が必要となるタスクの場合は短く設定するなどのチューニングが必要です。

[2] Figure 3 抜粋

中間層の活性化度合いの偏りを見たところ、Cutoutを導入することでより広範囲の特徴を利用するように均されていることがわかります。

[2] Figure 4 抜粋

Hide-and-Seek

Random erasingやCutoutでは、重要な情報を落としすぎたり、逆に全く意味のない情報を落としてしまったりといったことが発生してしまいます。

画像を小さな正方形で分割し、このグリッドの各マスを一定確率でマスクするアルゴリズムとして Hide-and-Seek4 が提案されています。グリッド分割することよって、対象物全体を削除したり、あるいは、全く関係のない部分を削除してしまうといった問題を低減しています。

[4] Figure 2 抜粋

GridMask

Hide-and-Seekでも、連続したグリッドがたまたまマスクされることで、重要な情報を落としてしまうといったことが起こりえます。

重要な情報を落としすぎない = 隠されていない部分でなんとか学習できるくらいの"ちょうど良い" 大きさでマスクし、かつ極めて簡単に実装できるアルゴリズムとして GridMask5 が提案されてます。以下のように四角形のマスクを縦横一定の間隔でかけることで、このちょうど良さを実現しようとします。

  • この逆に、正方形領域を残す (グリッド枠の部分をマスクする) などのバリエーションがあります

[5] Figure 1 抜粋

GridMaskのハイパパラメータ4つです。それぞれ指針が示されています。

  • マスクされない領域の辺の長さの割合 (r)
    • rが小さくなるほどマスク領域は大きくなる
    • 一定の割合でマスクされるように固定する
    • 複雑なデータセットほどrを大きくとることで細かな情報まで得られやすいようにする
  • 1グリッドの辺の長さ (d)
    • rが一定ならば、dが大きくなるほど1つのマスク領域が大きくなる
    • 最小値・最大値を定めてランダムにセットするのが効果的 (ただし小さすぎると畳み込み演算でかき消されてしまうため無意味になる)
  • マスクとなる長方形の縦横の長さ ( delta_y, delta_x)
    • dとrを満たすようにランダムにセット

[5] Figure 4 抜粋

まとめ

画像の一部をマスクするオーグメンテーションアルゴリズムを4つ紹介しました。


  1. [1708.04896] Random Erasing Data Augmentation

  2. [1708.04552] Improved Regularization of Convolutional Neural Networks with Cutout

  3. Cutoutの初期構想はもっと複雑で、フォワード後の特徴マップをアップサンプリングして活性化された領域 (= 重要な特徴となっている領域) を特定し、次のエポックでその領域をマスクするというものだったようです。これはこれで上手くいったのですが、固定サイズをランダムに除去した場合と大差はなかったとのこと。

  4. [1811.02545] Hide-and-Seek: A Data Augmentation Technique for Weakly-Supervised Localization and Beyond

  5. [2001.04086] GridMask Data Augmentation