---
title: "maisi"
publisher: "nvidia"
type: "endpoint"
updated: "2025-03-21T13:27:14.608Z"
description: "MAISI is a pre-trained volumetric (3D) CT Latent Diffusion Generative Model."
canonical: "https://build.nvidia.com/nvidia/maisi"
---

# Model Overview

## Description:
NVIDIA MAISI (Medical AI for Synthetic Imaging) is a state-of-the-art three-dimensional (3D) Latent Diffusion Model designed for generating high-quality synthetic CT images with or without anatomical annotations. This AI model excels in data augmentation and creating realistic medical imaging data to supplement limited datasets due to privacy concerns or rare conditions. It can also significantly enhance the performance of other medical imaging AI models by generating diverse and realistic training data.

MAISI offers several key features:

- Generates high-resolution 3D CT images up to 512 × 512 × 768 voxels
- Supports variable voxel sizes ranging from 0.5mm to 5.0mm
- Capable of annotating up to 127 anatomical classes, including organs and tumors
- Allows controllable anatomy size for 10 specific classes
- Produces paired segmentation masks

By providing these capabilities, MAISI is a valuable tool for researchers advancing AI applications in healthcare. However, it is important to note that this model is intended for research purposes only and not for clinical usage.

## Terms of Use

By using this model, you are agreeing to the [terms and conditions](https://docs.nvidia.com/ai-foundation-models-community-license.pdf) of the license.

## References:
[1]Guo, P., Zhao, C., Yang, D., Xu, Z., Nath, V., Tang, Y., Simon, B., Belue, M., Harmon, S., Turkbey, B. and Xu, D., 2024. MAISI: Medical AI for Synthetic Imaging. arXiv preprint arXiv:2409.11169. https://arxiv.org/abs/2409.11169
[2] Rombach, Robin, et al. "High-resolution image synthesis with latent diffusion models." Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition. 2022. https://openaccess.thecvf.com/content/CVPR2022/papers/Rombach_High-Resolution_Image_Synthesis_With_Latent_Diffusion_Models_CVPR_2022_paper.pdf <br>
[3] Lvmin Zhang, Anyi Rao, Maneesh Agrawala; “Adding Conditional Control to Text-to-Image Diffusion Models.” Proceedings of the IEEE/CVF International Conference on Computer Vision (ICCV), 2023, pp. 3836-3847.
https://openaccess.thecvf.com/content/ICCV2023/papers/Zhang_Adding_Conditional_Control_to_Text-to-Image_Diffusion_Models_ICCV_2023_paper.pdf

## Model Architecture:
**Architecture Type:** Convolutional Neural Network (CNN) <br>
**Network Architecture:** ControlNet + 3D UNet + attention blocks <br>

## Input:
### num_output_samples
**Input Type:** Integer <br>
**Input Format:** Single integer value <br>
**Input Parameters:** Required input indicates the number of synthetic images the model will generate. <br>

### body_region
**Input Type:** List <br>
**Input Format:** Array of Strings <br>
**Input Parameters:** Required input indicates the region of body the generated CT will focus on
- Options: ["head", "chest", "thorax", "abdomen", "pelvis", "lower"]

### anatomy_list
**Input Type:** List <br>
**Input Format:** Array of Strings <br>
**Input Parameters:** Optional list of 127 anatomical classes (listed in the Additional Information section) <br>

### output_size
**Input Type:** List <br>
**Input Format:** Array of 3 Integers <br>
**Input Parameters:** Optional list of 3 numbers that indicate the x, y, and z size of the CT image.
- x- and y-axes: 128, 256, 384, 512
- z-axis: 128, 256, 384, 512, 640, 768

### spacing
**Input Type:** List <br>
**Input Format:** Array of Floats <br>
**Input Parameters:** Optional list of floats that indicate the spacing of the CT image
- Each element must be in the range: 0.5 to 5.0

### controllable_anatomy_size
**Input Type:** List <br>
**Input Format:** Array of Tuples (String, Float) <br>
**Input Parameters:** Optional list of tuples for up to 10 different anatomies. Each tuple consists of an (organ_name, size_value) pair, playground has limited numbers of anatomies, the model can support full 127 anatomies.
- organ_name options: ["liver", "gallbladder", "stomach", "pancreas", "colon", "lung tumor", "bone lesion", "hepatic tumor", "colon cancer primaries", "pancreatic tumor"]
- size_value range: 0.0 to 1.0, or -1 (means not exist/delete this organ)

## Output: 
**Output Type(s):** Image(s) <br>
**Output Format:** (Neuroimaging Informatics Technology Initiative) NIfTI, (Digital Imaging and Communications in Medicine) DICOM, and (Nearly Raw Raster Data) Nrrd <br>
**Output Parameters:** Three-Dimensional (3D) <br>
**Output Description:** Synthetic CT image with dimensions up to 512x512x768 and spacing between 0.5mm and 5.0mm, reflecting controllable anatomy sizes as specified. If requested in input parameters, an additional NIfTI file containing the corresponding label map for the anatomy_list is also provided.

## Software Integration:
**Runtime Engine(s):** 
MONAI Core v.1.3.2 <br>

**Supported Hardware Microarchitecture Compatibility:** <br>
* NVIDIA Ampere <br>
* NVIDIA Hopper <br>

**[Preferred/Supported] Operating System(s):** <br>
* Linux <br>

## Model Version(s):
0.3.1  <br>

## Inference:
**Engine:** PyTorch<br>
**Test Hardware:**
A100 with at least 80GB memory for 512x512x512 images<br>
H100 with at least 80GB memory for 512x512x512 images<br>

## Additional Information:
The current list of classes available within MAISI:<br>
"liver": 1,<br>
"spleen": 3,<br>
"pancreas": 4,<br>
"right kidney": 5,<br>
"aorta": 6,<br>
"inferior vena cava": 7,<br>
"right adrenal gland": 8,<br>
"left adrenal gland": 9,<br>
"gallbladder": 10,<br>
"esophagus": 11,<br>
"stomach": 12,<br>
"duodenum": 13,<br>
"left kidney": 14,<br>
"bladder": 15,<br>
"portal vein and splenic vein": 17,<br>
"small bowel": 19,<br>
"brain": 22,<br>
"lung tumor": 23,<br>
"pancreatic tumor": 24,<br>
"hepatic vessel": 25,<br>
"hepatic tumor": 26,<br>
"colon cancer primaries": 27,<br>
"left lung upper lobe": 28,<br>
"left lung lower lobe": 29,<br>
"right lung upper lobe": 30,<br>
"right lung middle lobe": 31,<br>
"right lung lower lobe": 32,<br>
"vertebrae L5": 33,<br>
"vertebrae L4": 34,<br>
"vertebrae L3": 35,<br>
"vertebrae L2": 36,<br>
"vertebrae L1": 37,<br>
"vertebrae T12": 38,<br>
"vertebrae T11": 39,<br>
"vertebrae T10": 40,<br>
"vertebrae T9": 41,<br>
"vertebrae T8": 42,<br>
"vertebrae T7": 43,<br>
"vertebrae T6": 44,<br>
"vertebrae T5": 45,<br>
"vertebrae T4": 46,<br>
"vertebrae T3": 47,<br>
"vertebrae T2": 48,<br>
"vertebrae T1": 49,<br>
"vertebrae C7": 50,<br>
"vertebrae C6": 51,<br>
"vertebrae C5": 52,<br>
"vertebrae C4": 53,<br>
"vertebrae C3": 54,<br>
"vertebrae C2": 55,<br>
"vertebrae C1": 56,<br>
"trachea": 57,<br>
"left iliac artery": 58,<br>
"right iliac artery": 59,<br>
"left iliac vena": 60,<br>
"right iliac vena": 61,<br>
"colon": 62,<br>
"left rib 1": 63,<br>
"left rib 2": 64,<br>
"left rib 3": 65,<br>
"left rib 4": 66,<br>
"left rib 5": 67,<br>
"left rib 6": 68,<br>
"left rib 7": 69,<br>
"left rib 8": 70,<br>
"left rib 9": 71,<br>
"left rib 10": 72,<br>
"left rib 11": 73,<br>
"left rib 12": 74,<br>
"right rib 1": 75,<br>
"right rib 2": 76,<br>
"right rib 3": 77,<br>
"right rib 4": 78,<br>
"right rib 5": 79,<br>
"right rib 6": 80,<br>
"right rib 7": 81,<br>
"right rib 8": 82,<br>
"right rib 9": 83,<br>
"right rib 10": 84,<br>
"right rib 11": 85,<br>
"right rib 12": 86,<br>
"left humerus": 87,<br>
"right humerus": 88,<br>
"left scapula": 89,<br>
"right scapula": 90,<br>
"left clavicula": 91,<br>
"right clavicula": 92,<br>
"left femur": 93,<br>
"right femur": 94,<br>
"left hip": 95,<br>
"right hip": 96,<br>
"sacrum": 97,<br>
"left gluteus maximus": 98,<br>
"right gluteus maximus": 99,<br>
"left gluteus medius": 100,<br>
"right gluteus medius": 101,<br>
"left gluteus minimus": 102,<br>
"right gluteus minimus": 103,<br>
"left autochthon": 104,<br>
"right autochthon": 105,<br>
"left iliopsoas": 106,<br>
"right iliopsoas": 107,<br>
"left atrial appendage": 108,<br>
"brachiocephalic trunk": 109,<br>
"left brachiocephalic vein": 110,<br>
"right brachiocephalic vein": 111,<br>
"left common carotid artery": 112,<br>
"right common carotid artery": 113,<br>
"costal cartilages": 114,<br>
"heart": 115,<br>
"left kidney cyst": 116,<br>
"right kidney cyst": 117,<br>
"prostate": 118,<br>
"pulmonary vein": 119,<br>
"skull": 120,<br>
"spinal cord": 121,<br>
"sternum": 122,<br>
"left subclavian artery": 123,<br>
"right subclavian artery": 124,<br>
"superior vena cava": 125,<br>
"thyroid gland": 126,<br>
"vertebrae S1": 127,<br>
"bone lesion": 128,<br>
"airway": 132<br>

## Ethical Considerations:
NVIDIA believes Trustworthy AI is a shared responsibility and we have established policies and practices to enable development for a wide array of AI applications.  When downloaded or used in accordance with our terms of service, developers should work with their internal model team to ensure this model meets requirements for the relevant industry and use case and addresses unforeseen product misuse.  Please report security vulnerabilities or NVIDIA AI Concerns [here](https://www.nvidia.com/en-us/support/submit-security-vulnerability/).

## Bias

Field                                                                                               |  Response
:---------------------------------------------------------------------------------------------------|:---------------
Participation considerations from adversely impacted groups [protected classes](https://www.senate.ca.gov/content/protected-classes) in model design and testing:  |  None
Measures taken to mitigate against unwanted bias:                                                   |  None

## Explainability

Field                                                                                                  |  Response
:------------------------------------------------------------------------------------------------------|:---------------------------------------------------------------------------------
Intended Application & Domain:                                                                         |  A generative model for creating 3D CT from Gaussian noise.
Model Type:                                                                                            |  Generation
Intended User:                                                                                         |  This model is intended for developers generating three-dimensional (3D) medical CT images and segmentation masks.
Output:                                                                                                |  3D Images
Describe how the model works:                                                                          |  Generates 3D CT images from Gaussian noise.  
Name the adversely impacted groups this has been tested to deliver comparable outcomes regardless of:  |  None
Verified to have met prescribed NVIDIA quality standards:  |  Yes
Performance Metrics:                                                                                   |  Throughput and Latency
Potential Known Risks:                                                                                 |  None Known
Licensing:                                                                                             |  [License](https://docs.nvidia.com/ai-foundation-models-community-license.pdf)

## Privacy

Field                                                                                                                              |  Response
:----------------------------------------------------------------------------------------------------------------------------------|:-----------------------------------------------
Generatable or reverse engineerable personally-identifiable information (PII)?                                                     |  None
Was consent obtained for any PII used?                                                                                             |  Not Applicable
Protected class data used to create this model?                                                                                       |  None
How often is dataset reviewed?                                                                                                     |  Before Release
Is a mechanism in place to honor data subject right of access or deletion of personal data?                                        |  Not Applicable
If PII collected for the development of the model, was it collected directly by NVIDIA?                                            |  Not Applicable
If PII collected for the development of the model by NVIDIA, do you maintain or have access to disclosures made to data subjects?  |  Not Applicable
If PII collected for the development of this AI model, was it minimized to only what was required?                                 |  Not Applicable
Is there provenance for all datasets used in training?                                                                                                     |  Yes
Does data labeling (annotation, metadata) comply with privacy laws?                                                                |  Yes
Is data compliant with data subject requests for data correction or removal, if such a request was made?                           |  No, not possible with externally-sourced data.

## Prototype

```bash
invoke_url="https://health.api.nvidia.com/v1/medicalimaging/nvidia/maisi"
authorization_header="Authorization: Bearer $API_KEY_REQUIRED_IF_EXECUTING_OUTSIDE_NGC"
content_type_header="Content-Type: application/json"
accept_header="Accept: application/json"
FETCH_URL="https://api.nvcf.nvidia.com/v2/nvcf/pexec/status/"

OUTPUT_DIR="result-1"
data='{
"num_output_samples": 1,
"body_region": ["abdomen"],
"anatomy_list": ["liver"],
"output_size": [512, 512, 512],
"controllable_anatomy_size": [["hepatic tumor", 0.3], ["liver", 0.5]],
"image_output_ext": ".nii.gz",
"label_output_ext": ".nii.gz",
"pre_signed_url": "",
"spacing": [1, 1, 1]
}'

echo "Invoking the MAISI microservice..."
response=$(curl --silent -i --request POST --url "$invoke_url" \
--header "$authorization_header" \
--header "$content_type_header" \
--header "$accept_header"      \
--data "$data")

status_code=$(echo "$response" | head -n 1 | awk '{print $2}')
if [ $status_code = "202" ]; then
echo "Request accepted. Fetching the output..."
req_id=$(echo "$response" | grep -i '^nvcf-reqid:' | awk '{print $2}' | tr -d '\r')
while true; do
response=$(curl -s -L -o output.zip -w "%{http_code}" -H "$content_type_header" -H "$authorization_header" -H "$accept_header" "${FETCH_URL}${req_id}")

if [ "$response" -eq 200 ]; then
echo "Download of output zip file is complete."
break
else
echo "Please waiting until response returned..."
sleep 1
fi
done
unzip output.zip -d $OUTPUT_DIR && rm output.zip && rm $OUTPUT_DIR/*.response
elif [ $status_code = "302" ]; then
location=$(echo "$response" | grep -i '^location:' | awk '{print $2}' | tr -d '\r')
echo "Redirecting url..."
curl -s -o output.zip -H "$accept_header" $location
unzip output.zip -d $OUTPUT_DIR && rm output.zip && rm $OUTPUT_DIR/*.response
else
echo "Error Response: $response"
fi
```

```python
import io
import os
import time
import requests
import shutil
import tempfile
import zipfile

invoke_url = "https://health.api.nvidia.com/v1/medicalimaging/nvidia/maisi"
fetch_url="https://api.nvcf.nvidia.com/v2/nvcf/pexec/status/"
headers = {
"Authorization": "Bearer $API_KEY_REQUIRED_IF_EXECUTING_OUTSIDE_NGC",
"Accept": "application/json",
"content_type_header": "Content-Type: application/json"
}

result = "result-1"
payload = {
"num_output_samples": 1,
"body_region": ["abdomen"],
"anatomy_list": ["liver"],
"controllable_anatomy_size": [["hepatic tumor", 0.3], ["liver", 0.5]],
"output_size": [512, 512, 512],
"image_output_ext": ".nii.gz",
"label_output_ext": ".nii.gz",
"pre_signed_url": "",
"spacing": [1, 1, 1],
}

# re-use connections
session = requests.Session()
response = session.post(invoke_url, headers=headers, json=payload)

response.raise_for_status()
while response.status_code == 202:
req_id = response.headers.get("NVCF-REQID")
req_url = os.path.join(fetch_url, req_id)
response = session.get(req_url, headers=headers)
print(f"Please wait util response returned...")
time.sleep(1)

if response.status_code != 200:
print(f"Error with code {response.status_code}.")
exit()

with tempfile.TemporaryDirectory() as temp_dir:
z = zipfile.ZipFile(io.BytesIO(response.content))
z.extractall(temp_dir)
os.makedirs(result)
shutil.move(temp_dir, f"{result}")

print("Success!")
```

```javascript
// Pre-Requirements
// npm install node-fetch adm-zip

import fetch from "node-fetch";
import {writeFile} from 'fs/promises'
import AdmZip from 'adm-zip'
import fs from 'fs'
import path from 'path'
import os from 'os'

const invoke_url = `https://health.api.nvidia.com/v1/medicalimaging/nvidia/maisi`;
const headers = {
"Content-Type": "application/json",
"Authorization": "Bearer $API_KEY_REQUIRED_IF_EXECUTING_OUTSIDE_NGC",
};

const result = "result-1";
const data = {
"num_output_samples": 1,
"body_region": ["abdomen"],
"anatomy_list": ["liver"],
"controllable_anatomy_size": [["hepatic tumor", 0.3], ["liver", 0.5]],
"output_size": [256, 256, 256],
"output_ext": ".nii.gz",
"pre_signed_url": "",
"spacing": [1, 1, 1],
};

const tempdir = fs.mkdtempSync(path.join(os.tmpdir(), result))
let response = await fetch(invoke_url, {
method: "post",
body: JSON.stringify(data),
headers: headers
});

const buffer = Buffer.from(await response.arrayBuffer())
const zip_file = path.join(tempdir, result + '.zip')
await writeFile(zip_file, buffer)

const zip = new AdmZip(zip_file);
zip.extractAllTo(tempdir);

const paths = fs.readdirSync(tempdir).filter((p) => p.match(/\.response$/) !== null)
fs.renameSync(path.join(tempdir, paths[0]), result + "_gen.nrrd")
fs.rmSync(tempdir, {recursive: true, force: true});

console.log("---------------------------------------------------------------")
console.log("Output Sample Number: 1.")
console.log("Generated body region: " + data["body_region"])
console.log("Generated anatomies: " + data["anatomy_list"])
console.log("Output size: " + data["output_size"])
console.log("Spacing: " + data["spacing"])
console.log("Response generated result: " + result + "_gen.nrrd")
console.log("")
```