ココアのお勉強ブログ

理工学研究科の大学院1年生です。主に深層学習を中心に勉強/研究しています。まだまだ初心者なので優しくしてくれると嬉しいです。きまぐれでイラストも描きます。イラスト : https://hotcocoagallery.jimdosite.com/

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