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

kaggle Vesuvius Challenge - Surface Detection速報まとめ

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
Avatar for suguuuuuすぐー suguuuuuすぐー
February 28, 2026
98

kaggle Vesuvius Challenge - Surface Detection速報まとめ

なんかミスってたら修正します。claude codeに結構頼ったので。
https://www.kaggle.com/competitions/vesuvius-challenge-surface-detection

ignore labelのエラーは修正されたので不記載

Avatar for suguuuuuすぐー

suguuuuuすぐー

February 28, 2026
Tweet

More Decks by suguuuuuすぐー

Transcript

  1. 3 / 11 Competition & Dataset Vesuvius Challenge ヘルクラネウムの巻物をマイクロCTでスキャンした 3Dボリュームからパピルス表面をセグメンテーション

    Task: 3D Semantic Segmentation • 入力: 3D Volume (Z×Y×X, uint8) • 出力: Binary mask (表面=1, 背景=0) 786 Training Samples 6 Scroll IDs 320×320×320 Median Volume Size 3 Labels (BG/FG/Ignore) こんな感じのデータ (配布はただのセグデータ、可視化のためにインスタンス化)
  2. 4 / 11 Evaluation Metric Combined = 0.30 × TopoScore

    + 0.35 × SurfaceDice + 0.35 × VOI Score TopoScore (0.30) Betti Matching トポロジー構造の一致度 (成分数、穴の数) マージに厳しい SurfaceDice (0.35) 表面距離ベースのDice tolerance = 2.0 voxels ピクセル完全一致不要 位置の課訳度あり VOI Score (0.35) Connected Componentsベース 26-connectivity, alpha=1.0 マージ・スプリットを評価 マージに厳しい 複雑すぎんだろ・・・
  3. 3 / 17 Kaggle Vesuvius Challenge アプローチ:18位 属性判定 画像からボケ量・明るさ・コントラスを計算 事前設計したパラメータでウェイト計算

    1. 専門化nnUnet 明るい/コントラスト低い 画像特化 2. 専門化nnUnet ボケてる画像特化 3. 専門化nnUnet 全体カバーして学習 後処理 3x3x3の Median filter x 7回 入力画像 推論結果 ZだけResize 320=>128/160 ZだけResize 128/160 =>320 ポイント①:Zだけリサイズ圧縮 ⇒ Z方向は冗長なので。高速化目的。 ポイント②:3つの専門化nnUnetを学習、入力画像からウェイト計算し重みづけ平均 ⇒混ぜるとうまく学習できなかったので。疑似Mixture of Expert。+0.005くらい ポイント③:後処理でmedian filter x7回 ⇒偶然発見。評価関数にマッチした後処理ぽい。+0.02くらい。これ強すぎ。 w1~3 重みづけ平均 おまけ 外部データに疑似ラベルし、 事前学習して学習効率化もしたヨ
  4. 4 / 17 ②ボケ量で色分け ③明るさで色分け ①ロールIDで色分け ④Combined Scoreで色分け • 図1

    :ロールごとに特徴がかなり偏る • 図2/3 :明らかにボケ量、明るさがスキャンの仕方で異なる • 図4 :全データ学習&学習データに対しての性能を見ると、 「ぼけてる」・「明るい」が性能出づらい ⇒仮説:長Epoch or 苦手なデータを分離できるなら分けたほうが学習しやすいかも。 なぜ専門家モデルを作成したのか? 真ん中のスライスをimagenet pretrained modelで特徴量化してt-sneすると・・・?
  5. 7 / 17 Gold Solutions の共通傾向 1 nnU-Net が圧倒的主流 全上位チームがnnU-Net

    v2ベース。MONAI, DINOv3, 2D手法は全敗。「世界最強のセグメンテーション」(4th談) 2 超長期学習 (2000-8000 epochs) 1stは4000ep、3rdは8000ep。Long epochs + small batch sizeが効く。12th: 1000→4000epで+0.06改善 3 後処理がスコアの鍵 (+0.02〜0.035) 特にTopoScore改善。Hessian Ridge Detection, PCA Hole Filling, Hysteresis Thresholding が主流 4 Pseudo Labels は不要 ほぼ全チームが試して不採用。「ノイズが多すぎて性能劣化」(7th)。10thのpretrain用途のみ有効 5 Touching Sheets 問題は未解決 1st: 「解決策見つからず」。9th: De-adhesion実装するも効果なし。全チームの共通課題
  6. 8 / 17 Gold Solutions 比較表 Place Private Model Epochs

    Patch Loss Ensemble Key PP 1st 0.627 nnUNet (128→256 FT) 4000 128-256 (未記載) 4-model weighted prob Height map patch + 1-voxel LUT hole plug 2nd 0.622 (writeup未公開) 3rd 0.620 nnUNet M Cascade 3D 8000 128→19 2 CE+Dice +clDice Stage1+Stage2 Cascade 3D Hessian Ridge + EDT Dilation 4th 0.619 nnUNet 7-stage ResEnc 2000 (未記載) (未記載) Single model PCA Hole Fill + Betti hack 5th 0.619 (writeup未公開) 6th 0.618 (writeup未公開) 7th 0.618 nnUNet M 3d_lowres 2000 128 CE+Dice +SkelRecall 2-model TTA Frangi Sheet + CED Diffusion 8th 0.616 nnUNet L ResEnc 300-500 224-288 MedialSurf Recall 3-model mean fusion Anisotropic Diffusion+Hysteresis 9th 0.616 nnUNet MedialSR (未記載) 192 MedialSurf Recall Single+TTA 7段階モルフォロジ Gap/Diagonal fill 10th 0.614 ResEnc-L +Primus-B ~400 160 Dice+CE+Skel +SurfDice 3-model →Refine×3 Diffeomorphic Network 11th 0.613 nnUNet 3D Cascade (未記載) (未記載) (未記載) 2 LowRes →Cascade Public 5-step PP 12th 0.613 nnUNet lowres+fullres 2000- 4000 128 (未記載) 4-model weighted Hysteresis +Opening/Closing 18th 0.609 nnUNet×3 Specialist 500 128 CE+Dice +SkelRecall 3 Specialist Quality Route Median Filter ×7 ← Our
  7. 9 / 17 モデル学習: 何が効いたか 長期学習の効果 (12th の詳細データ) Epochs Private

    LB 改善幅 1000ep 0.552 — 2000ep 0.593 +0.041 4000ep 0.613 +0.020 Optimizer比較 (7th の実験) Optimizer Private (1000ep) SGD (default) 0.590 AdamW 0.594 (+0.004) Muon+AdamW 0.595 (+0.005) Asymmetric Patch (3rd) Train=128 / Infer=192。学習は小patchで高速、推論は大receptive fieldで精 度向上。 Label Preprocessing (7th) OrganizerのGitHubにあるtest-time前処理を学習ラベルにも適用。最も効果 効果的。 Multi-scale Ensemble (1st,8th,12th) 異なるpatch size (128-288) のモデル組合せ。受容野の多様性がスコア向上 上に直結。 Cascade 3D (3rd,11th) Stage1→Stage2で粗い予測を空間prior入力として精密化。後処理の代替に 替にもなる。
  8. 10 / 17 Loss関数: 何を使ったか Place Base Loss 追加Loss 結果

    1st, 4th, 12th CE + Dice なし(default) デフォルトでも十分。長期学習とPPでカバー 3rd CE + Dice + clDice (topology-aware) トポロジー接続性の最適化に効果 7th, 9th, 18th CE + Dice + Skeleton Recall 中心線の再現率向上。clDiceより安定 8th CE + Dice + MedialSurface Recall 表面中心のRecallに特化 10th CE + Dice + SkelRecall + Surface Dice CZII由来のSurface Dice追加 43rd CE + Dice + SurfDice → +Tversky → +TopoLoss 3段階スケジュール(ユニーク) 結論: CE+Diceのdefaultでも上位到達可能(1st, 4thが証明)。SkelRecall/clDiceは安定化に寄与するが決定的差ではない。
  9. 11 / 17 後処理: スコア差の最大要因 Hole Filling (穴埋め) 1st, 3rd,

    4th, 9th 1st: Height map linear interpolation 4th: PCA projection → binary_fill_holes → inverse 9th: Gap fill + Diagonal repair ×5回反復 Ridge Detection (構造抽出) 3rd, 7th, 8th 3rd: 3D Hessian matrix → eigenvalue filter 7th: Frangi sheetness → CED diffusion 8th: Gradient anisotropic diffusion (2回) Thresholding (閾値処理) 8th, 12th, 25th Hysteresis: T_high(0.8-0.9)で核、T_low(0.25-0.5)で拡張 8th: z方向のみ接続 (over-expansion防止) 12th: +Opening/Closingで+0.035 Morphological Ops (形態処理) ほぼ全チーム Anisotropic closing: z_radius > xy_radius Dust removal: 100-5000 voxels未満のCC除去 1st: 2×2×2 LUTで1-voxel holesをplug
  10. 12 / 17 後処理の定量効果 4th Place: 後処理のAblation 段階 Public Private

    Model + Dust除 去 0.590 0.609 + PCA Hole Fill ×2 0.602 0.622 + Betti-2 Hack — +0.001 12th Place: 各段階のスコア推移 段階 Private Baseline 1000ep 0.552 + Hysteresis PP 0.570 + 2-fold ensemble 0.590 + Opening/Closing 0.593 + fullres models 0.598 + 4-model ensemble 0.606 + TTA 0.607 + 4000ep 0.613 PP単体で+0.013〜0.021。Ensemble+PPの組合せで+0.04〜0.06。長期学習+PP+Ensembleの三位一体が上位の共通パターン パターン。
  11. 13 / 17 注目すべきユニークなアプローチ 10th 5-Stage Refinement Pipeline Stage1: 3モデルEnsemble

    (ResEnc-L + Primus-B + Primus-B V2) Stage2: [Image, 3つのmask] → Ensemble network Stage3-4: Refinement (randCoarseDropoutで穴埋め学習) Stage5: Diffeomorphic Network (シート形状・厚さ補正) Insight アルゴリズムPPの代わりにネットワークで補正。 「アルゴリズムを書く才能がないので、ネットワークに 任せた」(著者談) 3rd Cascade 3D + 超長期学習 LowRes 8000ep → Cascade 8000ep (2×H100で38時間) 推論時: Asymmetric patch (train=128, infer=192) TTA: ±15° in-plane rotation (学習時±30°の半分) Insight 最もcompute-heavyなアプローチ。 Cascade自体がリファインメントとして機能し、後処理の 負担を軽減。 4th Betti Matching → 局所PCA修復 20×20×20チャンクに分割 → betti_matching C++で局所Betti-1検出 → PCAで最適fitting plane算出 → 2Dでbinary_fill_holes → 3D逆変換 Metric hack: 意図的にBetti-2 hole作成 (Public +0.007) Insight 最もトポロジー理論に忠実なアプローチ。 Persistent homologyの実用的応用。
  12. 14 / 17 自分 (18th) との差分: 何が足りなかったか 学習Epochs Our: 18th

    500 epochs → Top Solutions 2000-8000 epochs 推定 +0.02〜0.04 最大のギャップ。12thデータから500→4000で+0.06見 込み 後処理 Our: 18th Median Filter ×7 → Top Solutions Hessian Ridge + PCA Hole Fill + Hysteresis 推定 +0.01〜0.02 Medianは効果的だが構造的な穴埋めが不足 Ensemble Our: 18th 3 Specialist (quality route) → Top Solutions Multi-scale patch + probability fusion 推定 +0.005〜0.01 Specialist routingはユニークだがpatch多様性の方が安 定 Architecture Our: 18th nnUNet default → Top Solutions ResEncL/M, Cascade, Primus-B, Diffeo 推定 +0.005 Cascade/Diffeomorphicは新パラダイム
  13. 15 / 17 What Didn't Work(各チームの失敗) ✗Pseudo Labels 7th, 10th,

    27th ノイズが多く性能劣化。Semi-supervised も不発。 唯一の成功例: 10thの外部データpretrainのみ。 ✗強いDA 7th Augmentation確率を上げるとデフォルトより悪化。 むしろ低い方が良いケースも。 ✗De-Adhesion 9th, 27th Touching sheets分離アルゴリズムを実装するも、 「高信頼CCが既にマージ済みだと無効」(9th)。 ✗SE Module 7th UNetにSE追加 → VRAMだけ増えて改善なし。 ✗2D/非nnUNet 18th, 27th Mask2Former, MedDinov3, MONAI, JAX等 → nnUNetに遠く及ばず。 ✗Metric Hack 4th Betti-2 hack: Public +0.007 → Private +0.001。 ignore maskの影響で不安定。
  14. 16 / 17 今回のまとめ nnU-Netは世界最強の3D Seg(今回のコンペにおいて) カスタムアーキテクチャは不要。defaultでも十分戦える。ただしepochsは大幅に増やすべき。 後処理 = トポロジー最適化

    評価指標がトポロジーベース → 後処理もトポロジーベースであるべき。Hessian/PCA/EDT等が有効。 Cascadeは「学習する後処理」 3rd/11th: Cascadeが後処理の代替に。10th: Refinement networkも同様の思想。今後の標準になりそう。 Touching Sheets は次のフロンティア 全チーム未解決。27th/9thのskeleton tracking、10thのDiffeomorphicが次への手がかり。 Thank you!
  15. EoF