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

2.5Dモデルのすべて

yu4u
February 15, 2025

 2.5Dモデルのすべて

Kaggleの医療画像コンペ等では3次元画像を扱うことが良くあります。
3次元画像なので3Dモデルを利用することが自然に思えるが、2.5Dモデルと呼ばれるモデルのほうが性能が高いケースが多いです。
この2.5Dモデルの構築のバリエーションを概説し、あなたも明日からオレオレ2.5Dモデラーになろうという資料です。

第3回 関東Kaggler会の資料です。
https://connpass.com/event/341085/

yu4u

February 15, 2025
Tweet

More Decks by yu4u

Other Decks in Technology

Transcript

  1. © GO Inc. 4 はじめに ◼ KaggleのRSNA等の医療系コンペでは3次元画像を扱うことが多い ◼ 3次元画像なので3Dモデルを利用することが自然に思えるが 2.5Dモデルと呼ばれるモデルのほうが性能が高いケースが多い

    ▪ 3Dモデルのほうが表現能力が高く、データ量が限られている場合には オーバフィットしやすいことが原因と言われている ▪ 事前学習済みの2Dモデルが強すぎ ▪ 行動認識分野では大規模なデータセット構築により3Dモデルが躍進 ▪ https://paperswithcode.com/sota/action-classification-on-kinetics-400 ◼ この2.5Dモデルと一体…? ◼ 2.5Dモデルの構築のバリエーションを知ることであなたも明日から オレオレ2.5Dモデラーに!
  2. © GO Inc. 6 2.5Dモデル 個人的には これ派ですが 実践的にはこちらの モデリングが重要なので こちらの話をします

    https://medium.com/@junkoda/2-5d-model-%E3%81%A3%E3%81%A6%E4%BD%95-56a2ab8e5d1d 3次元データを入力として 既存の2Dモデルを活用しているモデル
  3. © GO Inc. 7 2.5Dモデルの作り方 ◼ タスクからモデルの出力を考える ▪ キーポイント検出なのでヒートマップを出力させようとか ▪

    キーポイント検出やオブジェクト検出を行ったあと、cropしてクラス分 類といった2-stageパイプラインを採用する場合はそれぞれ考える ◼ モデルの入出力からモデルアーキテクチャを考える ▪ データやタスクの特徴を考慮
  4. © GO Inc. 8 解くべきタスクとモデル出力 モデル入力 モデル出力 タスク クラス分類 スライスレベルの

    クラス分類 特定スライスの セグメンテーション セグメンテーション、 オブジェクト検出、 キーポイント検出 (D, H, W) (D, H, W) (1, H, W) (D, 1, 1) (1, 1, 1)
  5. © GO Inc. 9 2.5Dモデルの一般形 ◼ 個人の意見です (C0, D, H,

    W) (C1, D, H/2, W/2) (C2, D, H/4, W/4) (C3, D, H/8, W/8) (C4, D, H/16, W/16) Encoder Decoder Intermediate Block
  6. © GO Inc. 10 Encoder ◼ 基本的にはtimmの2D (2.5D) モデル ◼

    入力のdepth方向をバッチ方向に積んで forward ▪ (B, C, D, H, W) -> (B * D, C, H, W) ▪ 良くバグらせる(einops使え) ◼ timmでfeatures_only= Trueでモデルを作ると階 層的な特徴マップが得られる ▪ https://www.slideshare.net/TakujiTahara/20210817-lt- introduction-to-pytorch-image-models-as-backbone- tawara-249996209 ▪ 徐々に空間解像度が小さくなりチャネルが増える ▪ 最終出力は大体1/32のサイズ ▪ これをstride 32の特徴マップという ◼ 2Dモデルに前後のスライスも入れるようにす るとencoderでも深さ情報が考慮できる ▪ 私は大体3-5slice入れています (C0, D, H, W) (C1, D, H/2, W/2) (C2, D, H/4, W/4) (C3, D, H/8, W/8) (C4, D, H/16, W/16) Encoder 2Dモデル内では (B * D, C0, H, W)
  7. © GO Inc. 11 Intermediate Block ◼ 統一的な名前があるわけではない ◼ 2Dモデルの特徴マップは深さ方向の特徴を

    抽出できないので、3D conv、LSTM、 Transformer blockなどで深さ方向に特徴を 混ぜ合わせる Intermediate Block
  8. © GO Inc. 12 Decoder ◼ U-Net的なdecoder ▪ 2D or

    3D ◼ オリジナルのvoxelと同じ解像度の出力が必 要なセグメンテーションタスク等では必要 ▪ 本当にフル解像度の出力が必要かは落ち着 いて考えよう(e.g. 火山コンペ) Decoder
  9. © GO Inc. 14 RSNA AI Challenges ◼ RSNA(北米放射線学会)が放射線診断用のAIツールの開発を促進する ために2017年から定期開催しているコンペ、2018年からKaggleで開催

    ▪ RSNA Lumbar Spine Degenerative Classification AI Challenge (2024) ▪ RSNA Abdominal Trauma Detection AI Challenge (2023) ▪ RSNA Screening Mammography Breast Cancer Detection AI Challenge (2023) ▪ RSNA Cervical Spine Fracture AI Challenge (2022) ▪ COVID-19 AI Detection Challenge (2021) ▪ Brain Tumor AI Challenge (2021) ▪ RSNA Pulmonary Embolism Detection Challenge (2020) ▪ RSNA Intracranial Hemorrhage Detection Challenge (2019) ▪ RSNA Pneumonia Detection Challenge (2018) ▪ RSNA Pediatric Bone Age Challenge (2017) ◼ 良コンペが多いと言われている(要出典) https://www.rsna.org/rsnai/ai-image-challenge
  10. © GO Inc. 15 RSNA Intracranial Hemorrhage Detection (2019) ◼

    CT画像から頭蓋内出血の有無とその種類を特定する ◼ 当初はメタデータ使用不可のような記載があったため画像分類タスク と思われていたが、何でもありになったため3Dデータとして解くこ とが可能に ▪ スライスレベルのクラス分類 https://www.kaggle.com/competitions/rsna-intracranial-hemorrhage-detection/
  11. © GO Inc. 16 1st Place Solution ◼ 2Dモデルを事前に学習し、(複数の)2Dモデルのembedding or

    logitを系列データとしてGRUに入力 ▪ メタデータから取得できるスライス間隔を特徴として追加すると精度向上 https://www.kaggle.com/competitions/rsna-intracranial-hemorrhage-detection/discussion/117210
  12. © GO Inc. 17 2nd Place Solution ◼ 1st とほぼ同じく事前学習したモデルのembeddingをLSTMに入力

    https://www.kaggle.com/competitions/rsna-intracranial-hemorrhage-detection/discussion/117228
  13. © GO Inc. 18 RSNA 2022 Cervical Spine Fracture Detection

    ◼ CTスキャン画像からC1~C7の頚椎が損傷している確率を求める ◼ 色々な解き方が考えられて楽しい ◼ RSNA 2023, 2024も楽しかった! https://www.kaggle.com/competitions/rsna-2022-cervical-spine-fracture-detection/ https://xn--o1qq22cjlllou16giuj.jp/archives/4804
  14. © GO Inc. 19 1st Place Solution ◼ 3Dモデルでセグメンテーション、cropして2.5Dモデルクラス分類 ◼

    上位はだいたいこれ https://www.kaggle.com/competitions/rsna-2022-cervical-spine-fracture-detection/discussion/362607
  15. © GO Inc. 20 火山コンペ ◼ 巻物を3D X線でスキャンしvoxelに展開したデータから インク領域をセグメンテーションする ◼

    xy方向は数千pxと高解像度、z方向は65 slice https://www.kaggle.com/competitions/vesuvius-challenge-ink-detection
  16. © GO Inc. 21 2nd Place Solution ◼ 2Dエンコーダの出力を3D CNN

    + poolingで1sliceにして予測 ◼ デコーダはなく、stride 32の特徴からダイレクトに予測 ▪ 非常に解像度が高い画像のため予測は荒くても(荒いほうが)良い https://speakerdeck.com/mipypf/kaggle-vesuvius-challenge-ink-detection-2nd-solution
  17. © GO Inc. 22 2nd Place Solution ◼ たぶんこう Encoder

    Decoder Intermediate Block 3D CNN + pooling
  18. © GO Inc. 24 1st Place Solution ◼ 予測対象+直前3フレームをタイル化してMaxVitエンコーダに入力 ▪

    Attention機構により他のフレームの情報を考慮できる ◼ t=4部分の特徴マップのみをデコーダに入力 ◼ モデルとしては2D U-Netだが面白いので紹介 https://www.kaggle.com/competitions/google-research-identify-contrails-reduce-global- warming/discussion/430618
  19. © GO Inc. 25 2nd Place Solution ◼ stride 16/32の特徴マップ(のみ)を時間方向にLSTMで集約

    ▪ フレーム間の時間のズレが大きいので解像度の高い特徴マップで時間方向の特徴 を集約するのは得策ではないという考え https://www.kaggle.com/competitions/google-research-identify-contrails-reduce-global- warming/discussion/430491 時間方向にLSTM を適用して集約 デコーダへの入力はt=4のみ
  20. © GO Inc. 26 3rd Place Solution ◼ 2D CNNをエンコーダ、予測対象の前後3フレームを入力

    ◼ デコーダの前でstride付きの3D Convで1フレームに統合し 2Dデコーダに入力 https://www.kaggle.com/competitions/google-research-identify-contrails-reduce-global- warming/discussion/430685 ※Zero-based numbering
  21. © GO Inc. 28 CZII - CryoET Object Identification ◼

    クライオ電子トモグラフィー画像からの複数種類の粒子の検出 https://www.kaggle.com/competitions/czii-cryo-et-object-identification https://www.biorxiv.org/content/10.1101/2024.11.04.621686v2
  22. © GO Inc. 29 4th Place Solution ◼ 2Dエンコーダの各stageを部分的にforwardしつつ stage毎の出力をdepth方向にpoolする

    ◼ 2Dエンコーダ内でdepth方向のreceptive fieldを拡大できる ◼ timmのAPIで一般的に書ける(by @tattakaさん) https://www.kaggle.com/competitions/czii-cryo-et-object-identification/discussion/561401 https://www.kaggle.com/code/hengck23/3d-unet-using-2d-image-encoder ← ケロッピ先生考案
  23. © GO Inc. 30 まとめ ◼ 2.5Dモデルの一般系を紹介 ◼ Kaggleコンペでの実例を紹介 ◼

    アカデミック界でも2.5Dモデルの実例がそこそこある(おまけ) ◼ Future Work ▪ 行動認識分野で2.5Dモデルはあるのか? ▪ 元々主流だったtwo-streamは2.5Dモデルとも言える? ▪ R(2+1)D とかは2D convと時間方向のconv1x1でできたモデル ▪ NFLコンペシリーズの紹介 ▪ https://www.kaggle.com/competitions/nfl-health-and-safety-helmet- assignment ▪ https://www.kaggle.com/competitions/dfl-bundesliga-data-shootout ▪ https://www.kaggle.com/competitions/nfl-player-contact-detection
  24. © GO Inc. 32 Triplanar Convolutional Neural Network ◼ Voxelの分類をxy,

    yz, zx planeを入力とした2D CNN特徴の統合によ り実現 ◼ 3D CNNとの比較もあり ◼ 2.5Dモデルとは言っていない A. Prasoon, et al., "Deep Feature Learning for Knee Cartilage Segmentation Using a Triplanar Convolutional Neural Network," in Proc. of MICCAI, 2013. typo発見!
  25. © GO Inc. 33 Random Sets of Deep CNN Observations

    ◼ 深層学習モデル観点での2.5Dという表現の初出? ◼ Voxelからxy, yz, zxの3 sliceを抽出、3チャネルの2次元画像として CNNで分類 ◼ Voxelのスケールと2軸の回転でaugmentation + TTA H. R. Roth, et al., "A New 2.5D Representation for Lymph Node Detection using Random Sets of Deep Convolutional Neural Network Observations," in Proc. of MICCAI, 2014.
  26. © GO Inc. 34 U-Net, 3D U-Net ◼ みんな大好きU-Net O.

    Ronneberger et al., "U-Net: Convolutional Networks for Biomedical Image Segmentation," in Proc. of MICCAI, 2015. Ö. Çiçek et al., "3D U-Net: Learning Dense Volumetric Segmentation from Sparse Annotation," in Proc. of MICCAI, 2016.
  27. © GO Inc. 35 Volumetric Fusion Net (VFN) ◼ オリジナルのvoxelと、xy,

    yz, zxスライスを2D CNNでセグメンテー ションした結果をstackingする3D CNN (UNet) ◼ Trainデータを分割し2D CNNの学習とVFNの学習に利用 ▪ 一部のデータセットではnested cross validationで学習 Y. Xia, et al., "Bridging the Gap Between 2D and 3D Organ Segmentation with Volumetric Fusion Net," in Proc. of MICCAI, 2018.
  28. © GO Inc. 36 2.5D Stacked Slices ◼ 隣接3スライスを2D CNNに入力

    ▪ このニュアンスで2.5Dという単語を利用したのは初出? ◼ T1-w, T2-w, FLAIR and PDといった異なる撮像条件の画像もstack H. Zhang, et al., "Multiple Sclerosis Lesion Segmentation with Tiramisu and 2.5D Stacked Slices," in Proc. of MICCAI, 2019.
  29. © GO Inc. 37 2.5Dモデルは3Dより強いのか? ◼ Are 2.5D Approaches Superior

    to 3D Deep Networks in Whole Brain Segmentation? という論文がある ▪ “While recent methodological advances across many segmentation tasks are dominated by 3D architectures, currently the strongest performing method for whole brain segmentation is FastSurferCNN, a 2.5D approach.” ▪ 結論としては色々3Dモデルを頑張ったら3Dモデルの性能が上回 ったよという話 ▪ FastSurferCNNの著者とこの論文のlast authorが同じなので 若干ポジショントーク感はある S. Roy et al., "Are 2.5D Approaches Superior to 3D Deep Networks in Whole Brain Segmentation?," in Proc. of MIDL, 2022.
  30. © GO Inc. 38 CSA-Net ◼ 前後3枚のスライスの最終層の特徴マップをself-attentionとcross- attentionでglobal特徴を抽出、更にTransformerで特徴抽出→UNet Amarjeet Kumar,

    et al., "A Flexible 2.5D Medical Image Segmentation Approach with In-Slice and Cross- Slice Attention," in Computers in Biology and Medicine, 2024. やりすぎ では!? 飛行機雲コンペに めっちゃ効きそう
  31. © GO Inc. 39 CSA-Net ◼ 前後3枚のスライスの最終層の特徴マップをself-attentionとcross- attentionでglobal特徴を抽出、更にTransformerで特徴抽出→UNet ◼ 手法はKaggleでやられてそうなアプローチだが、論文としては2.5D

    モデルの既存文献がまとめられて良い ▪ “An important, yet less explored, segmentation challenge is the 2.5D image segmentation problem.” Amarjeet Kumar, et al., "A Flexible 2.5D Medical Image Segmentation Approach with In-Slice and Cross- Slice Attention," in Computers in Biology and Medicine, 2024.