浮世絵作者予測 1位解法

参加者の皆様&運営さんお疲れさまでした。

先に0.940を出して一位だったCamaroさんが途中で消えて、なんだろうと思っていたら辞退だったようで、辛うじて一位になれたようで嬉しいです。

途中10個くらいモデル作ってましたが、最終的に2モデルの平均で0.940が出ました。

ソースコードはこちらです。 https://github.com/ak110/probspace_ukiyoe

  • ネットワーク: 40層くらいのResNet+Erase ReLU+MaxBlurPool+GeMPooling+その他諸々入ったオリジナルなやつ
  • Data Augmentation: mixup+RandomErasingとその他適当に(affine, blur, unsharpmask, brightness, などなど)。
  • Epoch数: 1800 + Refined Data Augmentationを50epochくらいしたりしなかったり
  • optimizer: SGD+Nesterov momentum
  • lr: 1e-3 * バッチサイズ * GPU数 + Cosine Annealing without restart
  • バッチサイズ: 16
  • GPU数: 2
  • L2: 1e-4
  • TTA: 25crops × mirror
  • アンサンブル: 5-FoldのCV×2モデルの平均

10個くらい作ったのは上記の範囲内の細かいバリエーションで、CVスコアは大体0.90~0.92くらいでした。

そのうち3モデルくらい以上で平均を取るとLBで0.929~0.937くらいは安定して出てましたが、テストデータが少ないためにCVスコアとの相関はほとんど無く、最後(0.937→0.940)は配合を変えて投げまくる感じになってしまいました。

Refined Data Augmentationは学習率などのハイパーパラメータにかなり敏感な感じがしますが、うまくいけば効果的な気がしてます。

Epoch数はくずし字の時の反省からほぼずっと1800epochでやってました。途中300epochでも実験してみましたがCVスコアが0.88くらいに落ちたので(少なくとも自分の実装では)それなりに回す必要がありそうでした。(普段別のデータセットで1800epochで調整してるのでData Augmentationの強さとかが影響されてるかも)

一応このデータに特化した話として、元々が224x224と小さいので、ネットワークの最初の方を(GPUメモリの許す範囲で)出来るだけ手厚くするのが有効だった気がします。(CVスコアを見た限りでは。LB上は誤差でした…。)

Favicon
new user
コメントするには 新規登録 もしくは ログイン が必要です。