プロジェクト概要
SAM(Segment Anything Model)は2D自然画像のセグメンテーションにおいて優れた性能を発揮しますが、3Dボリューム医用画像に対しては性能が限界に達し、予測が不安定で、満足のいく結果を得るために大量のプロンプトポイントが必要となるという問題があります。これらの問題は、SAMを医療データで微調整するだけでは解決できません。なぜなら、その元の2D構造は3D特徴を無視しているからです。
このギャップを埋めるために、SAM-Med3Dを導入します。これは3D医用画像に最適化された次世代モデルで、元のSAMの2Dアーキテクチャを強化し、三次元空間の特性に適応させました。さらに、必要なプロンプトポイントの数を最大100倍まで削減し、セグメンテーションの精度と効率を大幅に向上させました。SAM-Med3Dは、現在最も包括的な3D医用画像データセットでトレーニングされており、131,000を超える3Dマスクと247の異なる分類を備えています。これにより、幅広いアプリケーションシナリオを効率的に処理できます。
プロジェクトのクイックスタート
環境の準備
システムにPythonおよび関連する依存ライブラリがインストールされていることを確認してください。
ステップ1: 仮想環境の作成
python3 -m venv sam_med3d_env
source sam_med3d_env/bin/activate # UnixまたはmacOSの場合
sam_med3d_env\Scripts\activate # Windowsの場合
ステップ2: SAM-Med3Dリポジトリのクローン
git clone https://github.com/uni-medical/SAM-Med3D.git
cd SAM-Med3D
ステップ3: 依存パッケージのインストール
pip install -r requirements.txt
アプリケーション例とベストプラクティス
アプリケーション例
器官と脳のセグメンテーション
事前学習済みのSAM-Med3D-turboを使用して、器官や脳のセグメンテーションタスクにおける具体的な改善効果を確認します。
python inference.py --checkpoint <path_to_sam_med3d_turbo_ckpt> --config-file configs/sam_med3d_turbo.yml
<path_to_sam_med3d_turbo_ckpt>を、ダウンロードしたチェックポイントファイルのパスに置き換えてください。
ベストプラクティス
最少のプロンプトポイントで高精度なセグメンテーションを実現します。以下の例は、1つのプロンプトポイントを使用してセグメンテーションを行う方法を示しています。
import torch
from sam_med3d import load_medical_segmentation_model
device = 'cuda' if torch.cuda.is_available() else 'cpu'
model = load_medical_segmentation_model(config_file='configs/sam_med3d_turbo.yml', device=device)
model.eval()
medical_volume = ... # 3D医用画像を読み込み、準備します
single_point = ... # 1つのプロンプトポイントを準備します
segmentation_result, _, _ = model.predict(medical_volume, point=single_point)