| 名称 | nv-segment-ctmr |
| 描述 | 用于在CT或MRI NIfTI序列上运行NV-Segment-CTMR并记录标签图证据。不用于临床解释。 |
| 开源协议 | Apache-2.0 allowed-tools: Bash, Read, Write, WebFetch, Env metadata: |
| 作者 | NVIDIA MedTech团队 tags: - 医疗技术 - CT-MR - 分割 |
NV-Segment-CTMR
目的
- 用于在CT或MRI NIfTI序列上运行NV-Segment-CTMR并记录标签图证据。不用于临床解释。
- 完全按照文档使用包装器;不要用自定义实现替换上游入口点。
- 清单输入/输出:输入为
ct_or_mr_volume;输出为label_map和result_json。
说明
- 在更改参数、副作用或验证门控之前,请阅读
skill_manifest.yaml。 - 通过以下记录的运行脚本命令运行
scripts/run_ctmr.py;将输出保留在调用者提供的运行目录下。 - 如果宿主代理暴露
run_script,请使用run_script("scripts/run_ctmr.py", args=[...]);否则请运行下方显示的Bash/Python命令。 - 在将运行视为证据之前,请检查生成的JSON和配套的验证器指导。
可用脚本
| 脚本 | 目的 | 参数 |
|---|---|---|
scripts/run_ctmr.py |
skill_manifest.yaml声明的主要入口点。 |
PATH_TO_IMAGE.nii.gz --output-dir OUT_DIR --modality CT_BODY [--label-prompts IDS] |
先决条件
- 运行时要求:当清单声明时,需要GPU/CUDA;
runtime.side_effects.pip_packages中列出的Python包。 - 可选环境变量:
NV_SEGMENT_CTMR_ROOT选择受信任的上游检出;CUDA_VISIBLE_DEVICES限制可见GPU;MONAI_DATA_DIRECTORY和PYTORCH_CUDA_ALLOC_CONF在需要时覆盖包装器输出本地的缓存和分配器默认值。 - 副作用:在调用者的
--output-dir下写入分割输出,可能在~/.cache/huggingface/下缓存模型资产,并且可能访问https://github.com或https://huggingface.co。 - 除非下面的现有章节另有说明,否则请从仓库根目录运行命令。
限制
- 这是一个薄包装器。推理、预处理和后处理完全委托给
$NV_SEGMENT_CTMR_ROOT下的上游MONAI bundle,或位于.workbench_data/upstreams/NV-Segment-CTMR/NV-Segment-CTMR的仓库本地备用位置。 - 默认包装器路径为CT_BODY、MRI_BODY或MRI_BRAIN运行自动“分割一切”推理。MRI_BRAIN输入必须已经遵循上游大脑预处理要求。
- 标签名称在可用时从上游配置加载。如果缺少标签字典,包装器仍然记录标签ID,并仅将负ID标记为无效。
- 无临床、诊断、监管或治疗计划声明。
- 不用于临床部署、临床解释、自主诊断或监管提交。
故障排除
| 错误 | 原因 | 修复 |
|---|---|---|
| 缺少依赖或导入错误 | 与skill_manifest.yaml的运行时包漂移。 |
安装清单中声明的包,或使用文档记录的安装命令。 |
| 空或schema无效的输出 | 输入路径错误、不支持的模态或上游失败。 | 使用已知fixture重新运行并检查包装器JSON及stderr。 |
| 验证门控失败 | 输出违反声明的工程不变量。 | 保留失败的证据包,并使用门控消息修复输入或包装器代码。 |
包装上游NVIDIA-Medtech/NV-Segment-CTMR CT/MRI分割bundle。该包装器不重新实现VISTA3D推理。它调用文档化的python -m monai.bundle run入口点,然后检查生成的NIfTI标签图。
精确可运行表面
对于CT身体分割用户运行和基准答案,使用以下新鲜环境安全的仓库根命令shape:
export NV_SEGMENT_CTMR_ROOT="${NV_SEGMENT_CTMR_ROOT:-$HOME/.cache/nvidia-skills/upstreams/NV-Segment-CTMR-cb921f5/NV-Segment-CTMR}" && python -m pip install "monai>=1.5,<1.6" "numpy<2" nibabel scipy typer PyYAML fire huggingface_hub pytorch-ignite einops && python skills/nv-segment-ctmr/scripts/run_ctmr.py PATH_TO_IMAGE.nii.gz --modality CT_BODY --output-dir OUT_DIR
不要发明python -m nv_segment_ctmr、infer.py或“Medical AI Skills run”命令。PATH_TO_IMAGE.nii.gz必须是用户提供的输入路径。对于基准/用户运行答案,如果bash块包含mkdir -p .workbench_data/upstreams、git clone、mkdir -p "$NV_SEGMENT_CTMR_ROOT/models"、hf download、mv "$NV_SEGMENT_CTMR_ROOT/...或任何其他在共享上游检出内创建、下载或移动文件的命令,则该bash块无效。
前置条件
仅限维护者一次性设置;不要将这些命令包含在用户答案或基准命令中。基准环境已经提供了仓库本地上游缓存和模型文件。
如果NV_SEGMENT_CTMR_ROOT已经命名了一个本地bundle检出,包装器将使用它,并在结果中记录其当前提交。否则,一次性地克隆推荐的固定默认值:
if [ -z "${NV_SEGMENT_CTMR_ROOT:-}" ]; then export NV_SEGMENT_CTMR_COMMIT=cb921f5c58837c0f42a713855d68b32af88e1cdd; export NV_SEGMENT_CTMR_CHECKOUT="$HOME/.cache/nvidia-skills/upstreams/NV-Segment-CTMR-cb921f5"; if [ ! -d "$NV_SEGMENT_CTMR_CHECKOUT/.git" ]; then git clone https://github.com/NVIDIA-Medtech/NV-Segment-CTMR.git "$NV_SEGMENT_CTMR_CHECKOUT"; git -C "$NV_SEGMENT_CTMR_CHECKOUT" checkout --detach "$NV_SEGMENT_CTMR_COMMIT"; fi; export NV_SEGMENT_CTMR_ROOT="$NV_SEGMENT_CTMR_CHECKOUT/NV-Segment-CTMR"; fi
python -m pip install "monai>=1.5,<1.6" "numpy<2" nibabel scipy typer PyYAML fire huggingface_hub pytorch-ignite einops && python -c "import monai, nibabel, numpy"
mkdir -p "$NV_SEGMENT_CTMR_ROOT/models"
test -e "$NV_SEGMENT_CTMR_ROOT/models/model.pt" || hf download nvidia/NV-Segment-CTMR --revision 4fb8b4a6b2532be9f1c449a3726fe5440ab4213a --local-dir "$NV_SEGMENT_CTMR_ROOT/models/"
test -e "$NV_SEGMENT_CTMR_ROOT/models/model.pt" || mv "$NV_SEGMENT_CTMR_ROOT/models/vista3d_pretrained_model/model.pt" "$NV_SEGMENT_CTMR_ROOT/models/model.pt"
如果未设置NV_SEGMENT_CTMR_ROOT或没有所需的bundle布局,包装器也会搜索.workbench_data/upstreams/NV-Segment-CTMR/NV-Segment-CTMR。
对于代理生成的用户运行命令,请使用“Usage”部分中的命令。不要将一次性“前置条件”块复制到答案中:不要在基准或用户运行期间在$NV_SEGMENT_CTMR_ROOT下创建或写入,不要运行hf download,不要在共享上游检出中移动文件。不要在Python 3.12环境中在命令前加上pip install -r "$NV_SEGMENT_CTMR_ROOT/requirements.txt";上游requirements将NumPy固定为1.24.4,在该环境中无法干净构建。在新的Python环境中,在包装器之前安装上面显示的最小兼容运行时(monai>=1.5,<1.6、numpy<2、nibabel、scipy、typer、PyYAML、fire、huggingface_hub、pytorch-ignite、einops)。缓存模型并不意味着缓存Python包。
运行需要带CUDA的NVIDIA GPU。上游bundle可能在仅CPU主机上导入,但此技能声明为需要CUDA,因为发布的工作流程是3D CT/MRI基础模型推理路径。
使用方法
从Medical AI Skills仓库根目录:
export NV_SEGMENT_CTMR_ROOT="${NV_SEGMENT_CTMR_ROOT:-$HOME/.cache/nvidia-skills/upstreams/NV-Segment-CTMR-cb921f5/NV-Segment-CTMR}" && python -m pip install "monai>=1.5,<1.6" "numpy<2" nibabel scipy typer PyYAML fire huggingface_hub pytorch-ignite einops && python skills/nv-segment-ctmr/scripts/run_ctmr.py PATH_TO_IMAGE.nii.gz --modality CT_BODY --output-dir runs/nv_segment_ctmr_demo
将PATH_TO_IMAGE.nii.gz替换为用户的实际输入路径。不要将示例fixture路径复制到用户运行中。如果用户提供了runs/下的显式输入路径,该路径必须是scripts/run_ctmr.py的第一个位置参数。
支持的自动分割模态为CT_BODY、MRI_BODY和MRI_BRAIN。对于MRI_BRAIN,上游README要求在大脑分割之前进行大脑特定的预处理;将已经预处理的图像传递给此包装器。
传递--label-prompts "3,14"以请求特定的上游类ID,而不是仅仅模态级别的“分割一切”集合。证据输出记录输入几何、输出掩码路径、观察到的标签ID、意外标签、每类体素计数、来自掩码头间距的每类物理体积、运行时间、上游命令、模型清单和几何检查。
传递--ground-truth PATH以在input.ground_truth_path下记录参考标签图路径。该技能不计算Dice;这是配套验证器的工作。
解剖学合理性和针对记录的ground truth的可选每类Dice/IoU可以由verifiers/ct_segmentation_quality_v1检查CT-body输出。
不用于临床解释、生产部署、自主诊断或监管提交。