Upgrade to Pro — share decks privately, control downloads, hide ads and more …

画像コンペでのベースラインモデルの育て方

Avatar for tattaka tattaka
August 07, 2025

 画像コンペでのベースラインモデルの育て方

イベント「上位Kagglerに学ぶ~画像コンペの戦い方~」で発表したLTの資料です。

Avatar for tattaka

tattaka

August 07, 2025
Tweet

More Decks by tattaka

Other Decks in Programming

Transcript

  1. 2025/08/07 上位Kagglerに学ぶ~画像コンペの戦い方 ~ 2 自己紹介 名前:tattaka - kaggle: https://www.kaggle.com/tattaka -

    Twitter: https://x.com/tattaka_sun 趣味: • 熱帯魚飼育 ◦ 南米の中型肉食魚 • ランニング ◦ 暑いのでサボりがち Kaggleはほぼ画像系のみ・仕事でも画像認識をやっています
  2. 2025/08/07 上位Kagglerに学ぶ~画像コンペの戦い方 ~ 6 良いベースラインモデルとは 前提として、実験を重ねる前に良いベースラインモデルを 作ることが大事 - 実装について把握できている -

    リークしていない - Trust CVかTrust LBかの方針を定めた上で、 適切に評価ができている - など - 参考: 競技としてのKaggle、役に立つKaggle
  3. 2025/08/07 上位Kagglerに学ぶ~画像コンペの戦い方 ~ 7 I/O・CPU処理を高速化する(1/2) 細かい試行を重ねるためには実験の高速化が必須 意外とモデルの学習部分よりI/OやCPU処理がボトルネックに なっていることも多い - jpg・pngをnumpy形式で保存する

    - 精度低下しないならfloat16・uint8で保存する - tfrecord・hdf5・np.memmapなど部分的にデータを読み込める 形式を使う - DataLoaderクラスのnum_workers・prefetch_factor の設定を見直す
  4. 2025/08/07 上位Kagglerに学ぶ~画像コンペの戦い方 ~ 9 ハイパラチューニングの勘所(1/5) モデル設計まわり - 事前学習済みモデル(timm models)の選び方 -

    以下から選ぶことが多いです - CNN系統 - ResNet-RS・ResNeSt・ConvNeXt V1/V2・ConvFormer・ EfficientNet V1/V2・RDNet・InceptionNeXt - ViT系統 - SwinT V1/V2・CAFormer・MaxViT・EfficientViT_b*/l* - ResNet系統は学習しやすく、初手で使いがち - 3DタスクだとResNet*-irCSN など
  5. 2025/08/07 上位Kagglerに学ぶ~画像コンペの戦い方 ~ 1 0 ハイパラチューニングの勘所(2/5) - drop_path_rate - 学習時にモデルのlayerの一部をskipすることで汎化性能を上げる

    DropPathの適用割合を決めるパラメータ - 一部のモデルでは使えない(EfficientViT_b*/l*・ResNeStなど) - headの設計 - 何層にするか - Dropout・BatchNormを入れるか - (分類の場合)どのPooling層を使うか - UNet系ならどのAttentionを使うか(CBAM・SCSEなど)
  6. 2025/08/07 上位Kagglerに学ぶ~画像コンペの戦い方 ~ 11 ハイパラチューニングの勘所(3/5) 学習設定まわり - optimizer - AdamW・AdamWがうまくいかない場合はSGD

    - 最近だとMuonも良いらしいですが使ったことがないので試してみたい - 学習率のチューニング - AdamWだと1e-3 ~ 1e-5でいいところを探す - 事前学習済み部分とそれ以外で学習率を変えた方が良いことも - 個人的には事前学習済み部分を小さめに設定することが多い - warmup - 多くの場合入れた方が学習が安定する
  7. 2025/08/07 上位Kagglerに学ぶ~画像コンペの戦い方 ~ 1 2 ハイパラチューニングの勘所(4/5) - AdamWのパラメータ - weight

    decay: 1e-2 ~ 1e-5の間でチューニング - eps: 1e-6 ~1e-8でチューニング - 小さいと性能は良いが安定性が悪くなることが多い印象 - fp32の時は1e-8・fp16の時は1e-6をよく使います - epoch数 - なるべくEarly Stoppingはしないようにチューニングする (のが理想) - last = bestにならない場合も多いので様子を見ながら調整する - batch size - 大きい方が良い場合・小さい方が良い場合どちらもあるので調整する
  8. 2025/08/07 上位Kagglerに学ぶ~画像コンペの戦い方 ~ 1 3 ハイパラチューニングの勘所(5/5) 入力画像への前処理 - data augmentation

    - Flip・Rot90を基本に処理後の画像を目視で確認しながら追加していく - ShiftScaleRotate・RandomBrightnessContrast・CouarseDropout あたりは良く使う - 入力画像の解像度を変える - 計算リソース上の制限(batch size・学習時間)を見比べながら調整 - 入力画像の正規化 - 基本的にはデータセット全体の統計で正規化 - 画像単位・画像系列単位の統計で正規化すると良いことも
  9. 2025/08/07 上位Kagglerに学ぶ~画像コンペの戦い方 ~ 1 4 すぐに使える色々なテクニック(1/5) - 公開モデルを改造する - bilzardさんの記事が参考になる:

    野生のモデルを飼い慣らす - よくやるのは浅い層のconv層のstrideを小さくして実質的に解像度を 上げるなど(計算量には注意) - 地震波コンペの公開Notebook
  10. 2025/08/07 上位Kagglerに学ぶ~画像コンペの戦い方 ~ 1 5 すぐに使える色々なテクニック(2/5) - Exponential Moving Average(EMA)

    - 学習中にstepごとにモデルウェイトの移動平均を取る手法 - 収束は遅くなるが、val_loss・metricが安定する - epoch数と一緒に調整する - 汎化性能も上がってそう(お気持ち)なので EMA前提でベースライン構築をすることも多い - timm.utils.ModelEmaV3 が便利 - Label Smoothing - 0/1ラベルを0.1/0.9のように変換し、モデルがラベルノイズに対して 敏感にならないようにする
  11. 2025/08/07 上位Kagglerに学ぶ~画像コンペの戦い方 ~ 1 6 すぐに使える色々なテクニック(3/5) - Mixup・CutMix - 2つの学習データを混合して新しい学習データを作る手法

    - 入力画像を混ぜる代わりに中間層の出力を混ぜる Manifold Mixupも有効なことがある - 最終層でMIXUPしたら良さげだった件 - targetを混ぜる・lossを混ぜるのどちらもある - 個人的には後者が好きだが、タスクによって改造しやすいのは前者 - targetを重み付け和ではなく論理和で混ぜる例: SETIコンペ 2nd solution
  12. 2025/08/07 上位Kagglerに学ぶ~画像コンペの戦い方 ~ 1 7 すぐに使える色々なテクニック(4/5) データ不均衡への対処 - FocalLoss・Online Hard

    Example Mining(OHEM) - 少数クラス=学習が難しいサンプルとみなして重みを増やす手法 - BCEWithLogitsLossのpos_weight、CrossEntropyLossのweight を調整して少数クラスの重みを増やす - オーバー・ダウンサンプリング - 少数データを水増しする or 多数データを間引く - 適切なepoch数も変わってくるので適宜修正
  13. 2025/08/07 上位Kagglerに学ぶ~画像コンペの戦い方 ~ 1 8 すぐに使える色々なテクニック(5/5) - 閾値の最適化 - メトリック計算に閾値が必要な場合、0.5などを決めうちで閾値を切る

    よりもscipy.optimize.minimizeを使ってCVに最適化する方が良いこと が多い(オーバーフィットには注意) - パーセンタイルベースの閾値設定 - 固定値で閾値を切るのではなく、出力値のパーセンタイルで 閾値を設定する手法 - モデルごとの出力値の分布のズレに頑健になる - train・val/testのGTの分布が大きく異なる時は 固定値の方が良いことも
  14. 2025/08/07 上位Kagglerに学ぶ~画像コンペの戦い方 ~ 1 9 アイディアを出すために(1/2) - コンペのOverviewやDataの説明をよく読みましょう - ドメイン知識を深める

    - ホストが書いたコンペ設計に関する論文を探して読む - アノテーションルールはどうなっているのか? - 外部データはあるかどうか - etc…
  15. 2025/08/07 上位Kagglerに学ぶ~画像コンペの戦い方 ~ 2 0 アイディアを出すために(2/2) - 似た過去コンペの解法を参考にする - ベースラインを作る時にも有用

    - Discussionは基本全て目を通した方が良い - vote数が少なくても重要な情報が書かれていることもある - EDA Notebookもあれば見ておく・自分でも動かす - エラーケース分析 - FN/FPどちらの間違え方をしているかなどを見る - 可視化して間違え方に特徴がないかを探す