Slide 1

Slide 1 text

2.5Dモデルのすべて GO株式会社 内田祐介 (@yu4u)

Slide 2

Slide 2 text

© 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モデラーに!

Slide 3

Slide 3 text

© GO Inc. 5 2.5Dモデル https://medium.com/@junkoda/2-5d-model-%E3%81%A3%E3%81%A6%E4%BD%95-56a2ab8e5d1d

Slide 4

Slide 4 text

© GO Inc. 6 2.5Dモデル 個人的には これ派ですが 実践的にはこちらの モデリングが重要なので こちらの話をします https://medium.com/@junkoda/2-5d-model-%E3%81%A3%E3%81%A6%E4%BD%95-56a2ab8e5d1d 3次元データを入力として 既存の2Dモデルを活用しているモデル

Slide 5

Slide 5 text

© GO Inc. 7 2.5Dモデルの作り方 ◼ タスクからモデルの出力を考える ▪ キーポイント検出なのでヒートマップを出力させようとか ▪ キーポイント検出やオブジェクト検出を行ったあと、cropしてクラス分 類といった2-stageパイプラインを採用する場合はそれぞれ考える ◼ モデルの入出力からモデルアーキテクチャを考える ▪ データやタスクの特徴を考慮

Slide 6

Slide 6 text

© GO Inc. 8 解くべきタスクとモデル出力 モデル入力 モデル出力 タスク クラス分類 スライスレベルの クラス分類 特定スライスの セグメンテーション セグメンテーション、 オブジェクト検出、 キーポイント検出 (D, H, W) (D, H, W) (1, H, W) (D, 1, 1) (1, 1, 1)

Slide 7

Slide 7 text

© 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

Slide 8

Slide 8 text

© 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)

Slide 9

Slide 9 text

© GO Inc. 11 Intermediate Block ◼ 統一的な名前があるわけではない ◼ 2Dモデルの特徴マップは深さ方向の特徴を 抽出できないので、3D conv、LSTM、 Transformer blockなどで深さ方向に特徴を 混ぜ合わせる Intermediate Block

Slide 10

Slide 10 text

© GO Inc. 12 Decoder ◼ U-Net的なdecoder ▪ 2D or 3D ◼ オリジナルのvoxelと同じ解像度の出力が必 要なセグメンテーションタスク等では必要 ▪ 本当にフル解像度の出力が必要かは落ち着 いて考えよう(e.g. 火山コンペ) Decoder

Slide 11

Slide 11 text

© GO Inc. 13 事例紹介 ◼ 以降では実際にKaggleコンペで利用された2.5Dモデルを コンペ・モデルの特徴を交えて紹介

Slide 12

Slide 12 text

© 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

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

© GO Inc. 16 1st Place Solution ◼ 2Dモデルを事前に学習し、(複数の)2Dモデルのembedding or logitを系列データとしてGRUに入力 ▪ メタデータから取得できるスライス間隔を特徴として追加すると精度向上 https://www.kaggle.com/competitions/rsna-intracranial-hemorrhage-detection/discussion/117210

Slide 15

Slide 15 text

© GO Inc. 17 2nd Place Solution ◼ 1st とほぼ同じく事前学習したモデルのembeddingをLSTMに入力 https://www.kaggle.com/competitions/rsna-intracranial-hemorrhage-detection/discussion/117228

Slide 16

Slide 16 text

© 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

Slide 17

Slide 17 text

© GO Inc. 19 1st Place Solution ◼ 3Dモデルでセグメンテーション、cropして2.5Dモデルクラス分類 ◼ 上位はだいたいこれ https://www.kaggle.com/competitions/rsna-2022-cervical-spine-fracture-detection/discussion/362607

Slide 18

Slide 18 text

© GO Inc. 20 火山コンペ ◼ 巻物を3D X線でスキャンしvoxelに展開したデータから インク領域をセグメンテーションする ◼ xy方向は数千pxと高解像度、z方向は65 slice https://www.kaggle.com/competitions/vesuvius-challenge-ink-detection

Slide 19

Slide 19 text

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

Slide 20

Slide 20 text

© GO Inc. 22 2nd Place Solution ◼ たぶんこう Encoder Decoder Intermediate Block 3D CNN + pooling

Slide 21

Slide 21 text

© GO Inc. 23 飛行機雲コンペ ◼ 衛星画像から飛行機雲の領域をセグメンテーションするタスク ◼ 予測対象の前後の時刻の画像8枚が入力(全部使わなくても良い) https://www.kaggle.com/competitions/google-research-identify-contrails-reduce-global-warming/

Slide 22

Slide 22 text

© 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

Slide 23

Slide 23 text

© 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のみ

Slide 24

Slide 24 text

© 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

Slide 25

Slide 25 text

© GO Inc. 27 3rd Place Solution ◼ たぶんこう Encoder Decoder Intermediate Block

Slide 26

Slide 26 text

© 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

Slide 27

Slide 27 text

© 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 ← ケロッピ先生考案

Slide 28

Slide 28 text

© 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

Slide 29

Slide 29 text

© GO Inc. 31 アカデミック界における2.5Dモデル(おまけ) ◼ Kaggleでは2.5Dモデルのほうが性能が出ることが多いという共通認 識がある気がするが、アカデミック界では3D CNNがもてはやされて いる印象 ▪ https://github.com/Project-MONAI/MONAI ▪ https://github.com/MIC-DKFZ/nnUNet ◼ アカデミック界における2.5Dモデルを見てみよう!

Slide 30

Slide 30 text

© 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発見!

Slide 31

Slide 31 text

© 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.

Slide 32

Slide 32 text

© 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.

Slide 33

Slide 33 text

© 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.

Slide 34

Slide 34 text

© 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.

Slide 35

Slide 35 text

© 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.

Slide 36

Slide 36 text

© 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. やりすぎ では!? 飛行機雲コンペに めっちゃ効きそう

Slide 37

Slide 37 text

© 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.