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
1breastPhantom(乳房幻像生成)C++DIDSR/breastPhantom
2breastCompress(乳房壓縮)C++DIDSR/breastCompress
3breastCrop(體積裁切)C++DIDSR/breastCrop
4breastMass(腫瘤模型生成)C++DIDSR/breastMass
5Lesion Insertion(病灶植入)Python含於本 repo
6MC-GPU(X 光傳輸)C/CUDADIDSR/VICTRE_MCGPU
7FBP DBT Reconstruction(重建)C含於本 repo
8ROI Extraction(ROI 擷取)Python含於本 repo
9Reader Models(讀片模型)MatlabDIDSR/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+)
Python3.6+
CUDA10.4+
GPUNVIDIA GPU,建議 8GB+ VRAM
cmake3.0+
gcc/g++支援 C++11
FEBio2.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.4BI-RADS d
Heterogeneous(不均質緻密)~0.5BI-RADS c
Scattered(散在纖維腺體)~0.6BI-RADS b
Fatty(脂肪型)~0.8BI-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 生態系中具有獨特且難以替代的定位:

  1. 唯一經 FDA 驗證的虛擬影像試驗平台:結果與真人臨床試驗一致(JAMA Network Open 2018)
  2. 物理真實模擬而非統計生成:使用 Monte Carlo X 光傳輸、有限元素壓縮,而非 GAN/VAE 等統計方法
  3. FDA 法規科學工具(RST)認證:收錄於 FDA RST 目錄,對法規提交具參考價值
  4. 端到端管線:從解剖模型生成到讀片分析的完整試驗流程
  5. 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 DomainVICTRE 對應說明
DM(Demographics)Phantom parameters幻像密度類型 → 乳房密度分類
TU(Tumor Identification)Lesion insertion locations病灶位置與類型
TR(Tumor Results)ROI measurementsROI 量測結果
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 藥物開發的團隊,以下方向可能存在尚未被充分探索的機會:

  1. VICTRE + CDISC SDTM/ADaM 自動轉換器:將虛擬試驗結果直接輸出為法規提交格式
  2. 多模態擴展:參考 VICTRE 架構開發超音波 / MRI 虛擬試驗管線
  3. 台灣 PDPA 合規的合成影像資料集:在不觸及真實患者資料的前提下,建立符合本地法規的醫學影像 AI 訓練集
  4. 伴隨診斷虛擬驗證平台:結合 VICTRE 影像模擬 + Synthea 患者模擬 + synthcity 結構化資料合成,建立端到端的 CDx 驗證環境

摘要:VICTRE 是 FDA 官方的虛擬影像臨床試驗平台,透過九步管線(幻像生成 → 壓縮 → 裁切 → 病灶生成與植入 → Monte Carlo X 光模擬 → FBP 重建 → ROI 擷取 → 讀片分析)將乳房攝影臨床試驗完全數位化,並已在 JAMA Network Open 上驗證其結果與真人試驗一致。對藥物開發團隊而言,VICTRE 提供了一個無需真實患者資料、零隱私風險的合成影像生成框架,可用於伴隨診斷驗證、AI 訓練資料製備及法規科學研究。