ChainerでCutMix実装
CutMixをChainerで実装してCifar-10で実験してみました。
割と無理やりなコードなのでそのうちちゃんと書き直したいと思います...
CutMixについて
論文:https://arxiv.org/abs/1905.04899
他の画像を切り取って重ねる新しめData Augmentation。(ラベル処理は多分Mixupと一緒) CutoutとMixup組み合わせたような手法。
x_A(学習画像)とx_B(貼り付ける画像)を用意して貼り付ける(以下の式)。
難しく見えるがただ他の画像を切り抜いて貼り付けているだけ。

また貼り付ける画像の大きさは以下の式で決まる。
λ∈[0,1]は、ベータ分布Beta(α,α)からのサンプリングにより取得する。
αはハイパーパラメータなので自由に設定できる。
以下はベータ分布図。

ラベルも以下の式のように足し合わせる。

まとめると以下の画像のようになる。

以下Mixup、Cutout、CutMixの比較(論文より)

結果
ResNet50モデルを使いました またα=0.2のみで試しています。
ResNet50(resize, random_rotate, random_flip)
validation accuracy : 0.78291ResNet50(Manifold Mixup + resize, random_rotate, random_flip)
validation accuracy : 0.814062ResNet50(CutMix)
validation accuracy : 0.833285
tags: Cutmix Chainer