ココアのお勉強ブログ

技術職の一般人です。趣味でコード書いたりソフト触ったり。

ChainerでCutMix実装

CutMixをChainerで実装してCifar-10で実験してみました。
割と無理やりなコードなのでそのうちちゃんと書き直したいと思います...

github.com

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.78291

  • ResNet50(Manifold Mixup + resize, random_rotate, random_flip) validation accuracy : 0.814062

  • ResNet50(CutMix) validation accuracy : 0.833285

tags: Cutmix Chainer