VICTRE 完整教學
Repository: https://github.com/DIDSR/VICTRE Stars: 74 | Tags: virtual-clinical-trial, FDA, imaging License: CC0-1.0 (Creative Commons Zero v1.0 Universal) Primary Language: Python / C / CUDA Forks: 16 | Last Updated: 2026-06-09 自動化管線: https://github.com/DIDSR/VICTRE_PIPELINE (29 stars) FDA RST 編號: RST24MD10.01
2. 核心架構
2.1 VICTRE 九步管線總覽
flowchart TD
subgraph PhantomGen["Phase 1: Phantom Generation (幻像生成)"]
A["breastPhantom
程序式乳房模型生成"]
B["breastCompress
FEBio 有限元素壓縮"]
C["breastCrop
體積裁切 (GPU 記憶體限制)"]
end
subgraph LesionPhase["Phase 2: Lesion Processing (病灶處理)"]
D["breastMass
程序式腫瘤生成"]
E["Lesion Insertion
病灶植入 (Python)"]
end
subgraph ImagingPhase["Phase 3: Imaging (影像擷取)"]
F["MC-GPU
Monte Carlo X 光傳輸
(DM + DBT)"]
G["FBP Reconstruction
濾波反投影重建 (DBT)"]
end
subgraph AnalysisPhase["Phase 4: Analysis (分析)"]
H["ROI/VOI Extraction
感興趣區域擷取 (Python)"]
I["Reader Models
虛擬讀片模型 (Matlab)"]
end
A --> B --> C --> E
D --> E
E --> F --> G --> H --> I
style PhantomGen fill:#e8f4e8,stroke:#2d5016
style LesionPhase fill:#fff3e0,stroke:#e65100
style ImagingPhase fill:#e3f2fd,stroke:#0d47a1
style AnalysisPhase fill:#fce4ec,stroke:#880e4f
2.2 各元件與對應儲存庫
| 步驟 | 元件名稱 | 語言 | 獨立 Repo |
|---|---|---|---|
| 1 | breastPhantom(乳房幻像生成) | C++ | DIDSR/breastPhantom |
| 2 | breastCompress(乳房壓縮) | C++ | DIDSR/breastCompress |
| 3 | breastCrop(體積裁切) | C++ | DIDSR/breastCrop |
| 4 | breastMass(腫瘤模型生成) | C++ | DIDSR/breastMass |
| 5 | Lesion Insertion(病灶植入) | Python | 含於本 repo |
| 6 | MC-GPU(X 光傳輸) | C/CUDA | DIDSR/VICTRE_MCGPU |
| 7 | FBP DBT Reconstruction(重建) | C | 含於本 repo |
| 8 | ROI Extraction(ROI 擷取) | Python | 含於本 repo |
| 9 | Reader Models(讀片模型) | Matlab | DIDSR/VICTRE_MO |
2.3 專案檔案結構
1VICTRE/
2├── FBP DBT reconstruction in C/ # 濾波反投影重建(C 語言)
3│ ├── FBP_DBTrecon.c / .h
4│ ├── Makefile
5│ ├── reconFBP_script.sh
6│ └── cbct_code/ # 修改自 Leeser 的 CBCT 重建碼
7├── Lesion Insertion/ # 病灶植入(Python)
8│ ├── lesionInsertion.py
9│ ├── build/lesionInsertion_script.sh
10│ └── VICTRE_LesionModels/ # 預製病灶模型(.raw)
11│ ├── heteroCalc2_121_100.raw # 微鈣化簇
12│ └── mass_-308854003_cropped_166.raw # 針刺狀腫塊
13├── ROI Extraction/ # ROI 擷取(Python)
14│ ├── roiExtraction_mammo_SP.py # DM 信號存在
15│ ├── roiExtraction_mammo_SA.py # DM 信號不存在
16│ ├── roiExtraction_DBT_FBP_SP.py # DBT 信號存在
17│ └── roiExtraction_DBT_FBP_SA.py # DBT 信號不存在
18├── Raw to DICOM conversion/ # Raw → DICOM 轉換(Matlab)
19├── Sample-phantom-data/ # 四種密度樣本資料
20│ ├── Dense/
21│ ├── Fatty/
22│ ├── Hetero/
23│ └── Scattered/
24├── VICTRE Configuration Files and Parameters/ # 參考設定
25│ ├── breastPhantom/ # 4 種密度 .cfg 檔
26│ ├── breastCompress/
27│ ├── breastCrop/
28│ ├── LesionInsertion/
29│ ├── MCGPU/
30│ ├── ROIExtraction/
31│ └── DBTReconstruction/
32└── Locations/ # 病灶位置資料(.tar.gz)
2.4 資料流與檔案格式
flowchart LR
CFG[".cfg
幻像設定檔"] --> RAW1["p_SEED.raw.gz
原始幻像"]
RAW1 --> RAW2["pc_SEED_crop.raw.gz
壓縮裁切幻像"]
LESION[".raw
病灶模型"] --> RAW3["pcl_SEED_crop.raw.gz
含病灶幻像"]
RAW2 --> RAW3
RAW3 --> PROJ["投影影像
(32-bit RAW)"]
PROJ --> RECON["重建體積
(64-bit RAW)"]
RECON --> ROI["ROI/VOI
(子影像)"]
ROI --> AUC["AUC 分析
(效能指標)"]
PROJ --> DICOM["DICOM 影像
(Cancer Imaging Archive)"]
style CFG fill:#f9f,stroke:#333
style DICOM fill:#bbf,stroke:#333
style AUC fill:#fbb,stroke:#333
3. 安裝與設定
3.1 方式一:使用自動化管線 VICTRE_PIPELINE(建議)
VICTRE_PIPELINE 將所有 9 個步驟封裝為單一 Python class,大幅降低整合複雜度。
系統需求
| 需求 | 最低版本 |
|---|---|
| 作業系統 | Ubuntu 18.04+(建議 20.04+) |
| Python | 3.6+ |
| CUDA | 10.4+ |
| GPU | NVIDIA GPU,建議 8GB+ VRAM |
| cmake | 3.0+ |
| gcc/g++ | 支援 C++11 |
| FEBio | 2.x(官網下載,需另外安裝) |
安裝步驟
1# 1. 安裝系統相依套件(Ubuntu/Debian)
2sudo apt-get install cmake vtk7 libvtk7-dev \
3 libblas-dev liblapack-dev libopenmpi-dev \
4 libboost-dev libboost-program-options-dev \
5 libproj-dev zlib1g-dev gzip
6
7# 2. Clone VICTRE_PIPELINE
8git clone https://github.com/DIDSR/VICTRE_PIPELINE.git
9cd VICTRE_PIPELINE
10
11# 3. 執行安裝腳本(編譯 5 個 C/C++ 元件)
12source install.sh
13
14# 4. 安裝 Python 相依套件
15pip install -r requirements.txt
16
17# 5. 安裝 FEBio(用於乳房壓縮模擬)
18# 從 https://febio.org/febio/febio-downloads/ 下載
19# 解壓後加入 PATH
20export PATH="$PATH:/path/to/FEBio-2.9.1/bin"
21
22# 6. 安裝 FFTW3(用於 FBP 重建)
23sudo apt-get install libfftw3-dev
3.2 方式二:逐步安裝個別元件
如果只需要管線中的特定步驟,可以分別 clone 對應的 repo:
1# 乳房幻像生成
2git clone https://github.com/DIDSR/breastPhantom.git
3
4# 乳房壓縮
5git clone https://github.com/DIDSR/breastCompress.git
6
7# 乳房裁切
8git clone https://github.com/DIDSR/breastCrop.git
9
10# 腫瘤模型生成
11git clone https://github.com/DIDSR/breastMass.git
12
13# X 光模擬(需 CUDA)
14git clone https://github.com/DIDSR/VICTRE_MCGPU.git
15
16# 主 repo(含病灶植入、ROI 擷取、FBP 重建)
17git clone https://github.com/DIDSR/VICTRE.git
18
19# 讀片模型(Matlab)
20git clone https://github.com/DIDSR/VICTRE_MO.git
3.3 方式三:precisionFDA 雲端執行
無需本機安裝,直接在 FDA 的雲端平台執行:
- 註冊帳號:https://precision.fda.gov
- 搜尋 VICTRE Pipeline app
- 線上配置參數後執行
3.4 VICTRE DICOM 資料集(僅分析用)
如果只需要已生成的影像資料進行分析,可直接從 Cancer Imaging Archive 下載:
- 完整資料集(DM 投影、DBT 投影與重建影像):http://doi.org/10.7937/TCIA.2019.ho23nxaw
- DM 投影 ROI 資料集:https://github.com/DIDSR/VICTRE_DM_ROIs
4. 使用方式與程式碼範例
4.1 範例一:使用 VICTRE_PIPELINE 執行完整虛擬試驗
這是最簡單的使用方式,利用自動化管線從幻像生成到 ROI 擷取一步完成。
1"""
2VICTRE 完整管線範例 — 從幻像生成到 ROI 擷取
3需要 GPU 環境(CUDA 10.4+)
4完整執行時間:數小時(取決於 GPU 效能與幻像數量)
5"""
6from victre import Pipeline
7
8# ===== Step 1: 初始化管線 =====
9# 指定幻像密度類型與隨機種子
10pline = Pipeline(
11 seed=12345,
12 phantom_type="heterogeneous", # dense / heterogeneous / scattered / fatty
13 results_folder="results"
14)
15
16# ===== Step 2: 生成乳房幻像 =====
17# 使用程序式解剖模型生成 3D 乳房體積
18pline.generate_phantom()
19
20# ===== Step 3: 壓縮幻像 =====
21# 使用 FEBio 有限元素模擬乳房壓縮
22pline.compress_phantom()
23
24# ===== Step 4: 裁切幻像 =====
25# 裁切至固定體積以適應 GPU 記憶體
26pline.crop_phantom()
27
28# ===== Step 5: 生成並植入病灶 =====
29# 在壓縮後的幻像中植入腫瘤(微鈣化 + 針刺狀腫塊)
30pline.insert_lesions()
31
32# ===== Step 6: X 光投影(DM + DBT) =====
33# Monte Carlo 模擬 X 光傳輸
34pline.project(modality="dm") # 數位乳房攝影
35pline.project(modality="dbt") # 數位乳房斷層合成攝影
36
37# ===== Step 7: DBT 重建 =====
38# 濾波反投影重建
39pline.reconstruct()
40
41# ===== Step 8: 擷取 ROI =====
42# 擷取信號存在/不存在的 ROI(用於後續讀片分析)
43pline.extract_rois()
44
45print("虛擬試驗管線執行完畢!結果位於 results/ 資料夾")
4.2 範例二:從投影步驟開始(使用樣本幻像資料)
如果已有幻像資料(例如從 Sample-phantom-data 取得),可從管線中段開始執行:
1"""
2VICTRE 部分管線 — 從 MC-GPU 投影開始
3適用於已有壓縮裁切幻像的情況
4執行時間:約 10 分鐘(含投影 + 重建 + ROI 擷取)
5"""
6from victre import Pipeline
7
8# 從已有幻像啟動(跳過生成、壓縮、裁切步驟)
9pline = Pipeline(
10 seed=321964974, # 樣本幻像的種子值
11 phantom_type="dense",
12 results_folder="results_from_projection"
13)
14
15# 載入已有的壓縮裁切幻像
16# 幻像檔案命名慣例:pc_SEED_crop.raw.gz
17pline.load_phantom("Sample-phantom-data/Dense/dense_pc_-321964974_crop.raw.gz")
18
19# 從投影步驟開始
20pline.project(modality="dm")
21pline.project(modality="dbt")
22pline.reconstruct()
23pline.extract_rois()
24
25# 查看結果
26import os
27for f in os.listdir("results_from_projection/1"):
28 print(f" {f}")
4.3 範例三:獨立執行病灶植入(Lesion Insertion)
這是 VICTRE 主 repo 中的核心 Python 元件,示範如何在已壓縮的乳房幻像中植入病灶。
1#!/usr/bin/env bash
2# ============================================================
3# VICTRE 病灶植入 — Shell 腳本範例
4# 輸入:壓縮裁切幻像 (pc_SEED_crop.raw.gz)
5# 輸出:含病灶幻像 (pcl_SEED_crop.raw.gz) + 位置檔 (.loc)
6# ============================================================
7
8# 設定參數
9SEED=-321964974 # 幻像隨機種子(取自檔名)
10VOXEL_SIZE=0.05 # 體素大小 (mm)
11FOCAL_SPOT_X=0.0 # 焦點位置 X (mm)
12FOCAL_SPOT_Y=63.08 # 焦點位置 Y (mm)
13FOCAL_SPOT_Z=0.0 # 焦點位置 Z (mm)
14
15# 從 .mhd 檔讀取幻像維度資訊
16# Origin (mm)
17ORG_X=-51.3
18ORG_Y=-0.825
19ORG_Z=-76.85
20# 最小體素座標
21MIN_VOX_X=-1026
22MIN_VOX_Y=-16
23MIN_VOX_Z=-1537
24# 總體素數
25TOT_VOX_X=2520
26TOT_VOX_Y=930
27TOT_VOX_Z=3124
28# 病灶長度 (voxels)
29CALC_CLUSTER_LEN=121 # 微鈣化簇
30SPIC_MASS_LEN=166 # 針刺狀腫塊
31# 胸壁距離限制 (voxels)
32CHEST_LIMIT=200
33
34# 執行病灶植入
35cd "Lesion Insertion"
36python lesionInsertion.py \
37 $SEED \
38 $FOCAL_SPOT_X $FOCAL_SPOT_Y $FOCAL_SPOT_Z \
39 $VOXEL_SIZE \
40 $ORG_X $ORG_Y $ORG_Z \
41 $MIN_VOX_X $MIN_VOX_Y $MIN_VOX_Z \
42 $TOT_VOX_X $TOT_VOX_Y $TOT_VOX_Z \
43 $CALC_CLUSTER_LEN $SPIC_MASS_LEN \
44 $CHEST_LIMIT
45
46# 輸出檔案:
47# - pcl_SEED_crop.raw.gz (含病灶的幻像)
48# - pcl_SEED_crop.loc (病灶位置文字檔)
49echo "病灶植入完成!"
50echo "輸出: pcl_${SEED}_crop.raw.gz"
51echo "位置: pcl_${SEED}_crop.loc"
4.4 乳房幻像設定檔說明
VICTRE 提供四種預設密度類型的設定檔,以下是關鍵參數解讀:
1# === dense.cfg(緻密型乳房設定範例)===
2[base]
3outputDir=.
4imgRes=0.05 # 體素解析度 0.05mm(50 微米)
5skinThick=0.75 # 皮膚厚度 0.75mm
6nippleLen=4.0 # 乳頭長度 4mm
7nippleRad=4.0 # 乳頭半徑 4mm
8areolaRad=8.0 # 乳暈半徑 8mm
9leftBreast=true # 左乳(布林值)
10targetFatFrac=0.4 # 目標脂肪比例 40%(緻密型 = 較低脂肪)
11# seed=12345 # 可指定或隨機生成
12
13[shape]
14ures=0.005 # 表面 u 方向解析度
15vres=0.005 # 表面 v 方向解析度
16pointSep=0.005 # 最小點距 (mm)
17eps1=1.2 # u 方向超二次方指數(控制形狀)
四種密度分類:
| 密度類型 | 目標脂肪比例 | 對應 BI-RADS |
|---|---|---|
| Dense(緻密) | ~0.4 | BI-RADS d |
| Heterogeneous(不均質緻密) | ~0.5 | BI-RADS c |
| Scattered(散在纖維腺體) | ~0.6 | BI-RADS b |
| Fatty(脂肪型) | ~0.8 | BI-RADS a |
5. 在醫療結構化資料合成生態系中的定位
5.1 Bio-SDG Domain 1 子領域 D:Clinical Trial Data(臨床試驗資料)
VICTRE 屬於醫療結構化資料合成(Medical Structured Data Synthesis)生態系中的 Sub-domain D: Clinical Trial Data,與其他虛擬試驗工具形成互補:
| 工具 | 焦點 | 資料類型 |
|---|---|---|
| VICTRE | 虛擬影像臨床試驗(乳房攝影) | 3D 幻像 + 投影影像 + DICOM |
| tsynth | 合成時間序列臨床資料 | 縱向臨床指標 |
| TrialSynth | 臨床試驗 metadata 合成 | 試驗設計、收案條件 |
| Simulants | 群體模擬 | 人口統計特徵 |
5.2 VICTRE 的獨特價值
VICTRE 在醫療 SDG 生態系中具有獨特且難以替代的定位:
- 唯一經 FDA 驗證的虛擬影像試驗平台:結果與真人臨床試驗一致(JAMA Network Open 2018)
- 物理真實模擬而非統計生成:使用 Monte Carlo X 光傳輸、有限元素壓縮,而非 GAN/VAE 等統計方法
- FDA 法規科學工具(RST)認證:收錄於 FDA RST 目錄,對法規提交具參考價值
- 端到端管線:從解剖模型生成到讀片分析的完整試驗流程
- DICOM 輸出:產生標準醫學影像格式,可直接整合臨床資訊系統
5.3 對 Pre-IND 藥物開發的潛在應用
| 應用場景 | 說明 |
|---|---|
| 伴隨診斷驗證 | 若開發中的藥物需要影像伴隨診斷(CDx),VICTRE 可模擬不同影像系統的偵測能力 |
| CADe/CADx AI 訓練 | 合成大量標註影像,訓練電腦輔助偵測/診斷模型,無需取得真實患者資料 |
| 影像設備提交 | 虛擬試驗可能在未來作為真實臨床試驗的補充證據提交 |
| 族群多樣性模擬 | 可調整幻像參數以模擬不同乳房密度/大小/形狀的族群分布 |
6. 與其他工具的整合
6.1 與 Synthea 整合:合成患者 + 合成影像
flowchart LR
subgraph Synthea["Synthea
(患者模擬)"]
S1["合成患者記錄
FHIR / CCDA"]
S2["影像醫囑
(ImagingStudy)"]
end
subgraph VICTRE_sys["VICTRE
(影像模擬)"]
V1["乳房幻像生成
(對應患者特徵)"]
V2["X 光投影 + 重建"]
V3["DICOM 影像輸出"]
end
subgraph Downstream["下游應用"]
D1["AI/ML 訓練資料集"]
D2["法規提交佐證"]
D3["影像品質評估"]
end
S1 --> S2 --> V1 --> V2 --> V3
V3 --> D1
V3 --> D2
V3 --> D3
style Synthea fill:#e8f5e9,stroke:#2e7d32
style VICTRE_sys fill:#e3f2fd,stroke:#1565c0
style Downstream fill:#fff8e1,stroke:#f57f17
整合要點:
- Synthea 生成合成患者記錄(年齡、BMI、乳房密度分類)
- 將患者特徵映射為 VICTRE 幻像參數(targetFatFrac、形狀參數)
- VICTRE 產生 DICOM 影像,嵌入 Synthea 患者 metadata
- 最終產出:完整的合成患者記錄 + 對應的合成醫學影像
6.2 與差分隱私工具整合
VICTRE 產生的是完全合成資料,本身不存在隱私洩漏風險。但在以下情境中,差分隱私(DP; Differential Privacy)工具仍有整合價值:
| 情境 | 整合方式 |
|---|---|
| 參數分布從真實資料推導 | 使用 SmartNoise / OpenDP 對乳房密度分布加入 DP 噪音 |
| 混合真實 + 合成資料集 | 使用 dp-cgans 確保混合後的資料集符合 DP 保證 |
| 臨床試驗 metadata 合成 | 結合 TrialSynth 產生 DP-compliant 的試驗設計資訊 |
6.3 與 synthcity / COR-GAN 整合
| 工具 | 整合方式 |
|---|---|
| synthcity | 用 VICTRE 產生的 ROI 統計特徵作為 synthcity 的輸入,生成擴增的結構化影像特徵資料 |
| COR-GAN | 將 VICTRE DICOM metadata 與 COR-GAN 合成的 EHR 記錄結合,建立完整的患者影像 + 病歷資料集 |
| SDM-TIB | 專注乳癌的 SDG,可與 VICTRE 的乳癌影像互補使用 |
6.4 CDISC SDTM/ADaM 整合構想
VICTRE 產生的虛擬試驗結果若要用於法規提交佐證,需轉換為 CDISC 標準格式:
| CDISC Domain | VICTRE 對應 | 說明 |
|---|---|---|
| DM(Demographics) | Phantom parameters | 幻像密度類型 → 乳房密度分類 |
| TU(Tumor Identification) | Lesion insertion locations | 病灶位置與類型 |
| TR(Tumor Results) | ROI measurements | ROI 量測結果 |
| RS(Response) | Reader model AUC | 讀片模型的偵測效能 |
7. 優缺點分析
7.1 優點
| 面向 | 說明 |
|---|---|
| 法規認可度 | FDA 官方開發,收錄於 RST 目錄,結果經 JAMA Network Open 同儕審查驗證 |
| 物理真實性 | Monte Carlo X 光傳輸模擬,非統計近似,產生物理真實的影像 |
| 完全合成 | 不需要真實患者資料即可產生影像,零隱私風險 |
| 端到端 | 9 步完整管線從解剖模型到效能評估 |
| 可重現性 | 種子值驅動(seed-driven),完全確定性,可精確複製 |
| 授權友好 | CC0 公領域授權,無商業限制(FBP 部分 GPL3) |
| DICOM 輸出 | 標準醫學影像格式,可直接與 PACS/VNA 系統整合 |
| precisionFDA | 無需本機安裝即可在雲端執行 |
| 自動化管線 | VICTRE_PIPELINE 封裝為單一 Python class |
7.2 缺點
| 面向 | 說明 |
|---|---|
| 範圍限制 | 僅支援乳房攝影(DM + DBT),不涵蓋 MRI、超音波等其他模態 |
| 硬體需求高 | 需要 NVIDIA GPU(8GB+ VRAM)+ CUDA,MC-GPU 步驟計算密集 |
| 安裝複雜 | 需編譯多個 C/C++ 元件,依賴 VTK、Lapack、FEBio 等多個函式庫 |
| Python 2 遺留 | 主 repo 的 Lesion Insertion 程式碼為 Python 2 風格(print 語句) |
| Matlab 依賴 | Reader Models 和 Raw-to-DICOM 轉換需要 Matlab |
| 執行時間長 | 完整管線(含幻像生成)需數小時至數天 |
| 僅限乳癌 | 病灶模型僅提供微鈣化簇和針刺狀腫塊兩種 |
| 文件分散 | 9 個元件分布在不同 repo,文件風格不一致 |
| 社群規模小 | 74 stars / 16 forks,更新頻率中等 |
7.3 適用 vs. 不適用場景
| 適合使用 | 不適合使用 |
|---|---|
| 乳房攝影設備效能評估 | 非乳房的影像模擬 |
| AI/CAD 模型的合成訓練資料 | 需要真實影像品質的臨床應用 |
| 法規科學研究與方法學開發 | 快速原型(安裝成本高) |
| 影像物理研究(散射、噪聲) | 無 GPU 的環境 |
| 不同影像參數的系統性比較 | 需要即時產生資料的場景 |
| 虛擬臨床試驗方法學驗證 | 非影像類的臨床試驗模擬 |
7.4 Blue Ocean 機會
對於正在進行 pre-IND 藥物開發的團隊,以下方向可能存在尚未被充分探索的機會:
- VICTRE + CDISC SDTM/ADaM 自動轉換器:將虛擬試驗結果直接輸出為法規提交格式
- 多模態擴展:參考 VICTRE 架構開發超音波 / MRI 虛擬試驗管線
- 台灣 PDPA 合規的合成影像資料集:在不觸及真實患者資料的前提下,建立符合本地法規的醫學影像 AI 訓練集
- 伴隨診斷虛擬驗證平台:結合 VICTRE 影像模擬 + Synthea 患者模擬 + synthcity 結構化資料合成,建立端到端的 CDx 驗證環境
摘要:VICTRE 是 FDA 官方的虛擬影像臨床試驗平台,透過九步管線(幻像生成 → 壓縮 → 裁切 → 病灶生成與植入 → Monte Carlo X 光模擬 → FBP 重建 → ROI 擷取 → 讀片分析)將乳房攝影臨床試驗完全數位化,並已在 JAMA Network Open 上驗證其結果與真人試驗一致。對藥物開發團隊而言,VICTRE 提供了一個無需真實患者資料、零隱私風險的合成影像生成框架,可用於伴隨診斷驗證、AI 訓練資料製備及法規科學研究。
Comments