API 参考#

Vista3d NIM 提供以下 API 端点

  • GET: /v1/health/live - 检查服务是否存活(可能尚未准备就绪)

  • GET: /v1/health/ready - 检查服务是否准备就绪以及模型是否准备好进行推理

  • GET: /v1/license - 返回 NIM 的许可证

  • GET: /v1/vista3d/info - 获取关于模型的详细信息,例如版本和标签

  • POST: /v1/vista3d/inference - 运行模型的推理功能,用于分割和标注人体解剖结构

推理请求负载#

推理请求负载定义如下

  • "image":此字段需要一个有效的 URL,指向 NIfTI 或 NRRD 格式的 3D 医疗图像。URL 应该是可访问且格式正确的,以确保可以检索图像进行处理。例如,一个有效的 URL 可能如下所示

https://assets.ngc.nvidia.com/products/api-catalog/vista3d/example-1.nii.gz
  • "Prompts:此可选字段允许用户提供用于运行交互式标注的特定提示。提示以字典形式给出,包含两个可能的键

    1. "classes":标签名称或索引的列表,用作类别提示。此列表可以包含字符串(例如,[“spleen”, “liver”])或整数(例如,[3, 1])。

    2. "points":一个字典,其中键是标签名称或索引,值是元组列表,表示用户点击点。每个元组包含三个整数,对应于点的坐标 (x, y, z)。例如,{"spleen": [(123, 212, 151), (123, 212, 152)]}

  • "local_working_dir":此可选字段允许用户提供一个挂载卷,用于保存推理结果。如果目录是 /path/on/host/results/,那么在推理请求负载中,local_working_dir 应该是 /path/in/container/results/

这是一个完整的负载示例

{
    "image": "https://assets.ngc.nvidia.com/products/api-catalog/vista3d/example-1.nii.gz",
    "prompts": {"classes": ["spleen"], "points": {"spleen": [[123, 212, 151], [123, 212, 152]]}},
    "local_working_dir": "/path/in/container/results/"
}

推理示例#

要使用定义的负载执行推理请求,您可以使用以下 Python 代码

import requests

base_url = 'http://127.0.0.1:8000/v1'

data = {
    "image": "https://assets.ngc.nvidia.com/products/api-catalog/vista3d/example-1.nii.gz",
    "prompts": {
        "classes": ["spleen"],
        "points": {"spleen": [(123, 212, 151), (123, 212, 152)]}
    }
}

response = requests.post(f"{base_url}/vista3d/inference", json=data)

请参考 getting-started.md 获取更多示例。