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

Kaggle RSNA Intracranial Aneurysm Detectionコンペ 反省会

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
Avatar for monnu monnu
November 13, 2025
390

Kaggle RSNA Intracranial Aneurysm Detectionコンペ 反省会

社内の技術共有会での発表資料です。Kaggle RSNA Intracranial Aneurysm Detectionコンペの振り返りにです。脳動脈瘤の検出タスクにおける、コンペ概要や上位陣の解法などご紹介します。

Avatar for monnu

monnu

November 13, 2025
Tweet

Transcript

  1. 6 • 背景 ◦ 脳動脈瘤は世界人口の約3%に影響 ◦ 破裂後の診断が最大50%、重度の病気や死亡につながる • 課題 ◦

    多様な種類の医用画像(CT,MRI等)から動脈瘤を検知 • データの特徴: ◦ 複数の施設、スキャナー、撮影方法を含むデータ ◦ モデルの汎化能力(多様な環境への適応力)が試される コンペ概要 : タスク設定 医用画像から脳動脈瘤の有無を検出するタスク https://www.kaggle.com/competitions/rsna-intracranial-aneurysm-detection/discussion/591648
  2. 7 コンペ概要:データ ▪ 主な提供データ ▪ 3D画像 : 約4000シリーズ ▪ 多種なモダリティ(CT,MRIなど)

    ▪ 動脈瘤の有無に関するラベル ▪ 特定の位置(13箇所)+ 全体の有無 ▪ 動脈瘤の位置座標 ▪ 血管セグメンテーション(約200シリーズのみ) ▪ trainの一部のみ提供。13クラス。 学習用に約4000シリーズの3D画像、動脈瘤有無ラベル、位置座標が提供 さらに一部のシリーズには、血管セグメンテーションも提供 https://www.kaggle.com/competitions/rsna-intracranial-aneurysm-detection/discussion/591648
  3. 8 コンペ概要:評価 ▪ 評価指標 : 重み付けROC-AUC ▪ 全体での動脈瘤有無、および13位置での有無を判定(合計14ラベル) ▪ 全体での分類は重み大

    ▪ テストデータ : 約2500シリーズ ▪ 評価システム ▪ kaggle_evaluation APIを使用 ▪ テストセットが一度に1シリーズずつ、ランダムな順序で提供 評価はテストデータ約2500シリーズに対し、重み付けROC-AUCで計算
  4. 9 2.5DCNN(推論コードのみ公開) • 前処理 ◦ 読み込み : 複数DICOMファイルをz座標でソート ◦ 正規化

    : CTとMRそれぞれ実施 ◦ リサイズ : 3D画像を固定サイズ(32x384x384)へ • モデル : EfficientNetV2-S • 入力 : 32チャンネル(深さ = チャネル) • 出力 : 14クラスのバイナリ分類 ベースラインの解法 : 公開Notebook シンプルな2.5DCNNによる解法が公開Notebookで最高精度 https://www.kaggle.com/code/yosukeyama/rsna2025-32ch-img-infer-lb-0-69-share
  5. 10 2DCNN + LSTM • 前処理 ◦ 基本的に公開Notebookと同様。30x512x512にリサイズ • 特徴抽出

    : 2DCNN(EfficientNet-b0) ◦ 30フレームを3枚ずつgroup化して3ch x 10 フレームで処理 • 分類 : 2DCNNの特徴ベクトルをLSTM + 平均pooling + headで処理 • 補助タスク : 動脈瘤座標を補助タスクとして予測 • セグメンテーション : 活用失敗.... ベースラインの解法 : 銀メダル解法(筆者) 筆者は2DCNNとLSTMによる解法で45位の銀メダル
  6. 12 1位解法 : https://www.kaggle.com/competitions/rsna-intracranial-aneurysm-detection/writeups/1st-place-solution ▪ 概要 ▪ 複数stageのパイプライン ▪ 1st

    stage: 血管セグメンテーションと関心領域(ROI)抽出 ▪ 2nd stage: 詳細な血管マスクを入力する3D分類モデル ▪ 低解像度から高解像度へ ▪ 低解像度で全体から候補領域を見つけた後、高解像度で処理 ▪ 構造ガイドとしてのセグメンテーション ▪ 分類モデルに血管マスク提供し、動脈瘤判定に集中させる ▪ nnU-Netをフル活用 ▪ セグメンテーションフレームワーク。後述
  7. 13 • nnU-Netとは? ◦ OSSのセグメンテーションフレームワーク ◦ 特定のデータに自動適応する汎用的なモデルの学習、推論が可能 • 特徴 ◦

    自動最適化 : データセットの特性(画像サイズ、ボクセル間隔等)に応じて多く のハイパーパラメータを自動的に決定。 ▪ ネットワーク構造、バッチサイズなど ◦ 高い汎用性 : 2D,3Dともに対応。特に医療画像コンペで高い性能を発揮 脱線 : nnU-Netについて https://github.com/MIC-DKFZ/nnUNet
  8. 14 ▪ 1st stage : 血管セグメンテーション ▪ 3つの3D nnU-Netモデルを利用 ▪

    最初に大まかなROIを特定、次に詳細な血管セグメンテーション生成 1位解法 : https://www.kaggle.com/competitions/rsna-intracranial-aneurysm-detection/writeups/1st-place-solution
  9. 15 ▪ 2nd stage : ROI分類(13クラス + 動脈瘤有無) ▪ セグメンテーションで事前学習されたnnU-Netバックボーンを使用

    ▪ デコーダの出力と血管セグメンテーションを結合してプーリング ▪ 補助タスクとして動脈瘤の位置もセグメンテーションとして検出 1位解法 : https://www.kaggle.com/competitions/rsna-intracranial-aneurysm-detection/writeups/1st-place-solution
  10. 16 ▪ その他 ▪ 異常シリーズ除外 : スライス間隔異常など約60シリーズを学習から削除 ▪ 分類デコーダの簡素化 :

    デコーダの最終ブロック削除し、効率化 ▪ 2つの血管セグメンテーションモデル : 通常版 + Recall重視モデル ▪ Location-Aware Transformer : 抽出された13の位置ごとの特徴ベクト ルを入力とし、異なる血管位置間の関係を学習 ▪ 補助タスクの損失関数 : 動脈瘤位置にはBalanced BCEと Focal-Tversky++ Lossの組み合わせを採用(スパースなtarget対策) 1位解法 : https://www.kaggle.com/competitions/rsna-intracranial-aneurysm-detection/writeups/1st-place-solution
  11. 17 ▪ 概要 ▪ 1位と同じくマルチステージパイプライン ▪ 1st stage : 2D

    nnU-Netで血管領域の3軸ROIを抽出 ▪ 血管領域を効率的にクロップ ▪ 2nd stage : 3D nnU-Netに基づく3Dマルチタスク学習 ▪ 血管・動脈瘤のセグメンテーションとクラス分類を同時学習 2位解法 : https://www.kaggle.com/competitions/rsna-intracranial-aneurysm-detection/writeups/2nd-place-solution
  12. 18 ▪ 1st stage: 血管領域の抽出 ▪ 各軸から計9フレーム抽出 ▪ 2D画像から血管領域をセ グメンテーション

    ▪ モデルは2D nnU-Net使用 ▪ 推論した血管領域をCrop し後段のモデルへ 2位解法 : https://www.kaggle.com/competitions/rsna-intracranial-aneurysm-detection/writeups/2nd-place-solution
  13. 19 ▪ 2nd stage: 3Dマルチタスク学習 ▪ モデル : 3D nnU-Netアーキテクチャ

    ▪ タスク: 以下の3つのタスクを同時学習 ▪ 血管セグメンテーション ▪ 動脈瘤セグメンテーション ▪ クラス分類 2位解法 : https://www.kaggle.com/competitions/rsna-intracranial-aneurysm-detection/writeups/2nd-place-solution
  14. 20 ▪ その他 ▪ Cross-Attention Pooling: 平均プーリングよりも速い収束。 ▪ Modality(CT,MRI等)分類ヘッド: 学習の安定性を向上。

    ▪ ターゲットオーバーサンプリング: 稀少な動脈瘤クラスに重点 ▪ TTA : 8倍のTTA(左右反転とラベルスワップを含む) ▪ 外部データの活用 : TopCoW,TopBrain ▪ ラベルミス修正 : いくつかのラベルミスは手動修正 2位解法 : https://www.kaggle.com/competitions/rsna-intracranial-aneurysm-detection/writeups/2nd-place-solution
  15. 21 • 概要 ◦ 他と同じくマルチス テージパイプライン • 1st stage ◦

    YOLOで血管領域抽出 • 2nd stage ◦ 3DCNNで分類 3位解法 : https://www.kaggle.com/competitions/rsna-intracranial-aneurysm-detection/writeups/3rd-place-solution
  16. 22 • 1st stage : 血管領域検出 ◦ 2軸方向(矢状面/冠状面)の MIP(最大値投影)画像生成 ◦

    2D YOLOv8n/mでBBOX検出 ▪ [email protected] : 0.95以上 ◦ 推論結果を統合し、固定サイ ズ3D ROIをクロップ 3位解法 : https://www.kaggle.com/competitions/rsna-intracranial-aneurysm-detection/writeups/3rd-place-solution
  17. 23 • 2nd stage : 3D ROI分類 ◦ モデル :

    3D ResNet-18バックボーン使用 ◦ 各特徴マップに分類ヘッドをつけ、Wighted BCEで最適化 ▪ 最終予測は空間全体でスコアを並び替え上位N個を平均 ◦ strideを調整して特徴マップのサイズを拡大して改善 3位解法 : https://www.kaggle.com/competitions/rsna-intracranial-aneurysm-detection/writeups/3rd-place-solution
  18. 24 • その他 ◦ DICOMタグへの欠損対応 ▪ テストデータにボクセル間隔を示すDICOMタグの欠損 ▪ 2.5D EfficientNet-v2sで回帰モデルを構築し推定

    ▪ LBスコアが0.84→0.85に改善 ◦ アンサンブル ▪ 異なるクロップサイズ、解像度、Stride間隔などを含む11種類の3D ResNet-18モデルをアンサンブル 3位解法 : https://www.kaggle.com/competitions/rsna-intracranial-aneurysm-detection/writeups/3rd-place-solution
  19. 25 • 概要 ◦ 他と同じくマルチステージパイプライン ◦ 1st stage : ROI領域を絞り込むための座標予測

    ◦ 2nd stage: クロップ画像に対する2Dモデルによるクラス分類 • 短期間での参加で上位入賞 ◦ コンペ終盤の14日前から参加😳 ◦ はじめは血管セグメンテーションを試みるが失敗。その後上記パイプラ インを構築したとのこと。 4位解法 : https://www.kaggle.com/competitions/rsna-intracranial-aneurysm-detection/writeups/4th-place-solution
  20. 26 • 1st stage : ROIクロップ座標予測モデル ◦ 動脈瘤が存在する血管領域をcropするため、対象領域の座標を予測 ◦ モデル

    : ViT (dinov3) ◦ 入力 : 等間隔にスライスした48枚のスライス(128x128) ◦ 効果 : ROIを大きく取ることで95%以上の動脈瘤がクロップ領域内に 4位解法 : https://www.kaggle.com/competitions/rsna-intracranial-aneurysm-detection/writeups/4th-place-solution
  21. 27 • 2nd stage : 分類モデル ◦ クロップされたROI画像を、フレーム毎に2D CNNで14ラベル分類 ◦

    モデル: CoaT-Lite-Medium (Transformerベース) ◦ 入力サイズ: 384 x 384 ◦ データセット: 約54.5万サンプル(陽性サンプル約2,200)を使用 • 工夫 ◦ 回転augmentation ◦ 2.5D入力 : 単一スライスだけでなく前後スライス(-2,0,+2)も入力 ◦ 重み付サンプリングはなし : 極度の不均衡データ(陽性率1/250)でも 学習可能 4位解法 : https://www.kaggle.com/competitions/rsna-intracranial-aneurysm-detection/writeups/4th-place-solution
  22. 28 • 基本的には関心領域(ROI)の抽出とクラス分類のマルチステージを採用 • ROIの取り方はチームによって様々 ◦ 2D or 3D セグメンテーション、物体検出、回帰で座標予測等

    • nnU-Netがセグメンテーションの強力なフレームワーク ◦ 最上位2チームが活用。医療系タスクの定番かも? • 血管そのもののセグメンテーションは必須ではない ◦ 何らかの手段で血管の領域(クロップすべきROI)さえ検知できればOK 上位解法まとめ