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

Backboneとしてのtimm2025

Avatar for yu4u yu4u
August 23, 2025

 Backboneとしてのtimm2025

関東Kaggler会の発表資料
https://kanto-kaggler.connpass.com/event/362280/

timmの基本的な使い方から、timmの便利なモジュールの紹介、smpのTimmUniversalEncoderを参照しながら抽出できる特徴マップのバリエーション等を紹介しています。

Avatar for yu4u

yu4u

August 23, 2025
Tweet

More Decks by yu4u

Other Decks in Technology

Transcript

  1. © GO Drive Inc. 4 backboneとしてのtimm入門 ◼ みんな大好きな神資料 ◼ 改めて見てみたらこれでいいじゃんになった(完)

    https://www.slideshare.net/TakujiTahara/20210817-lt-introduction-to-pytorch-image-models-as- backbone-tawara-249996209
  2. © GO Drive Inc. 5 timm ◼ PyTorch Image Models

    ◼ CNNからVision Transformerまで大量の画像認識モデル が学習済みの重みとセットで簡単に使える ▪ 便利な様々な機能がある https://github.com/huggingface/pytorch-image-models/
  3. © GO Drive Inc. 7 pretrainedモデルも色々 ①Fully Convolutional Masked Autoencoder

    (FCMAE) で学習して、 ②ImageNet-22kでfinetuneして、 ③最後にImageNet-1kでfinetuneしたよ ④入力画像サイズは384だよ とりあえずin22k_in1kを使っておけば良い ① ② ③ ④
  4. © GO Drive Inc. 9 クラス分類モデル (H, W, 3) (H/2,

    W/2) (H/4, W/4) (H/8, W/8) (H/16, W/16) (H/32, W/32) stage1 stage2 stage3 stage4 stem pool (1000,) GAP (1000,)
  5. © GO Drive Inc. 10 入力チャネル・出力クラス数変更 (H, W, 5) (H/2,

    W/2) (H/4, W/4) (H/8, W/8) (H/16, W/16) (H/32, W/32) stage1 stage2 stage3 stage4 stem pool (10,) GAP (10,)
  6. © GO Drive Inc. 11 特徴抽出後のヘッドを自分で定義したいとき (H, W, 3) (H/2,

    W/2) (H/4, W/4) (H/8, W/8) (H/16, W/16) (H/32, W/32) stage1 stage2 stage3 stage4 stem pool (1000,) GAP (512,)
  7. © GO Drive Inc. 12 空間情報を活用したいとき (H, W, 3) (H/2,

    W/2) (H/4, W/4) (H/8, W/8) (H/16, W/16) (H/32, W/32) stage1 stage2 stage3 stage4 stem pool (1000,) GAP (512, 7, 7)
  8. © GO Drive Inc. 13 マルチスケール特徴マップを使いたいとき (H, W, 3) (H/2,

    W/2) (H/4, W/4) (H/8, W/8) (H/16, W/16) (H/32, W/32) stage1 stage2 stage3 stage4 stem pool (1000,) GAP (256, 14, 14) (128, 28, 28) (512, 7, 7) (64, 56, 56) (64, 112, 112)
  9. © GO Drive Inc. ◼ img_size ▪ 固定入力のみのモデル作成時に対応入力サイズを変更 ▪ 引数が非対応のモデルに入力するとエラーになる

    ◼ drop_rate ▪ クラス分類ヘッドのdropout率 ◼ drop_path_rate ▪ droppath (stochastic depth) のdrop率 15 その他のオプション
  10. © GO Drive Inc. 17 ModelEmaV3 ◼ Exponential Moving Average

    (EMA) ▪ 学習時に一定間隔 (step) 毎にEMAモデルをアップデート ▪ 汎化性能が向上 ▪ 最近は常に使っています
  11. © GO Drive Inc. 21 create_optimizer_v2 ◼ optimizerのfactory関数 ▪ PyTorchにないoptimizerもあったりする

    地味に便利 omegaconfのConfig コマンドラインから変更できて便利
  12. © GO Drive Inc. 22 create_scheduler_v2 ◼ schedulerのfactory関数 epochではなく stepでupdate

    pytorch-lightning で使うときのおまじない batch_size, GPU数, grad_accを考慮した step数
  13. © GO Drive Inc. 23 DropPath ◼ Stochastic depthとも ◼

    skip connectionと組み合わせ、sample毎一定確率で入力をdrop ◼ 擬似的なアンサンブル効果を生み出し汎化能力向上
  14. © GO Drive Inc. 25 smpのTimmUniversalEncoderに学ぶbackboneのパターン ◼ segmentation_models.pytorch (smp) ▪

    様々なセマンティックセグメンテーションモデルの実装 ▪ 個人的にはUNetばっかり。UPerNetも見ますね ▪ 損失関数や評価関数も色々ある ◼ TimmUniversalEncoder ▪ timmをセマンティックセグメンテーションモデルの汎用エンコ ーダとして利用するためのラッパークラス https://github.com/qubvel-org/segmentation_models.pytorch/
  15. © GO Drive Inc. 26 TimmUniversalEncoderの大幅アップデートPR ◼ セマンティックセグメンテーションでは複数解像度の特 徴マップを利用する必要がある ◼

    timmの出力特徴マップの形式は様々で TimmUniversalEncoderで吸収している ◼ このPRで利用できるtimmのモデルが大幅に増加 ▪ https://github.com/qubvel- org/segmentation_models.pytorch/pull/1004
  16. © GO Drive Inc. 32 2.5Dモデル ◼ CZII 4th Solution

    ▪ 2Dエンコーダの各stageを部分的にforwardしつつ stage毎の出力をdepth方向にpoolする ▪ 2Dエンコーダ内でdepth方向のreceptive fieldを拡大できる