複数の画像を組み合わせるオーグメンテーション (mixup, CutMix)

複数の画像を組み合わせたオーグメンテーションであるmixupとCutMixについてまとめます。

mixup

2枚の画像をラベルともどもブレンドするのがmixup1です。次に紹介するCutMixの論文の図がわかりやすいです。

f:id:ohke:20200711115406p:plain
[2] Table 1 抜粋

入力  x_i x_j を重みλで足し合わせて、新たな入力  \tilde{x} とします。ラベルも同様に重みλで加算して  \tilde{y} を得ます。

  • λは Beta(α, α) 分布に従う (αはハイパパラメータで \alpha \in (0, \infty))
  • 入力として画像だけでなく音声やテーブルデータへも適用できる

f:id:ohke:20200711115024p:plain
[1] 抜粋

Beta分布は以下のような確率密度となっており、α < 1.0ではλがいずれかのラベルに寄りやすくなります。

  • αに関する指針は特に示されていませんでしたが、ImageNetでは0.1〜0.4、CIFAR-10・CIFAR-100では1.0で改善 (大きくしすぎるとunderfittingが見られた)

f:id:ohke:20200711131553p:plain

またmixupを適用するにあたって、以下のポイントも示されていました。

  • 同じラベル間でmixupしても性能向上に寄与しない (異なるラベル間でmixupする必要がある)
  • 実装ではランダムサンプリングされたミニバッチ内でmixupすると楽

CutMix

複数の画像の一部を切り取ってつなぎ合わせて1枚の入力画像にするオーグメンテーションが CutMix2 です。

入力  x_{A}, x_{B} ( x^{W \times H \times C} \in \mathbb{R}) とラベル  y_{A}, y_{B}を以下の式で接続します。

  •  M \in {0, 1}^{W \times H}はマスク (⦿はアダマール積)
  • λは面積比で、(0, 1)の一様分布でサンプリング

f:id:ohke:20200711145211p:plain
[2] 式 (1) 抜粋

以前紹介した画像の一部を隠すオーグメンテーションでは、マスク部分を (0, 0, 0) やランダムノイズで塗りつぶしてしまうため、ロス計算やバッチ正則化の観点で学習の効率を低下させてしまいます。 またmixupでは異なる画像をピクセル単位で足し合わせてしまうため、局所的には不自然で曖昧な入力となり、物体検出では精度改善につながりません。

学習データ同士をラベルとともに繋ぎ合わせることで、学習効率の低下を防ぎつつ入力領域のドロップアウトと同等の効果を得る一方、局所的な入力信号を維持することで物体検出にも使えるオーグメンテーションにする、というのがCutMixのモチベーションです。実際、画像分類・物体検出のいずれでもmixupやCutoutよりも高い精度をマークしてます。

f:id:ohke:20200711115406p:plain
[2] Table 1 抜粋