YAML Metadata
Warning:
empty or missing yaml metadata in repo card
(https://huggingface.co/docs/hub/model-cards#model-card-metadata)
NeuroScan AI
智能医学影像纵向诊断系统
AI-Powered Longitudinal Medical Imaging Analysis Platform
🎯 项目简介
NeuroScan AI 是一个完整的医学影像智能分析系统,专注于解决临床中最具挑战性的问题——纵向时序分析。系统通过先进的图像配准技术和大语言模型,实现全自动的病灶追踪、变化量化和智能报告生成。
核心价值
| 痛点 | 解决方案 |
|---|---|
| 不同时期影像难以对齐 | 两级配准(刚性+非刚性),亚毫米精度 |
| 病灶变化难以量化 | 体素级差异计算,RECIST 1.1 自动评估 |
| 报告撰写耗时长 | LLM 智能生成,3分钟出报告 |
| 数据隐私担忧 | 完全本地部署,数据不出院 |
✨ 核心功能
1. 多格式数据支持
- DICOM - 支持所有主流 CT/MRI 设备
- NIfTI - 标准神经影像格式
- NRRD/MHA - 3D Slicer 兼容格式
- 自动元数据提取和标准化
2. 智能器官分割
- 基于 MONAI 深度学习框架
- 支持 104 种解剖结构
- 全身 CT 一键分割
3. 高精度图像配准
- 刚性配准 - 修正体位差异
- 非刚性配准 - 修正呼吸运动和软组织形变
- 配准耗时 < 20 秒
4. 纵向变化检测
- 体素级差异图计算
- 变化区域自动识别
- 热力图可视化
5. LLM 智能报告
- 本地部署 Ollama(Llama3.1/Meditron)
- 符合 ACR 标准的报告格式
- 中英文双语支持
- RECIST 1.1 疗效评估
📥 Hugging Face 下载
项目已上传到 Hugging Face Hub,可一键下载部署:
# 安装 huggingface_hub
pip install huggingface_hub
# 下载完整代码
from huggingface_hub import snapshot_download
snapshot_download(repo_id="cyd0806/neuroscan-ai", local_dir="./NeuroScan")
# 下载模型权重
snapshot_download(repo_id="cyd0806/neuroscan-ai-models", local_dir="./models")
# 下载数据集
snapshot_download(repo_id="cyd0806/neuroscan-ai-dataset", repo_type="dataset", local_dir="./data")
| 仓库 | 内容 | 链接 |
|---|---|---|
| 📦 代码 | 完整项目代码 | cyd0806/neuroscan-ai |
| 🧠 模型 | MONAI 分割模型 | cyd0806/neuroscan-ai-models |
| 📊 数据 | Learn2Reg 数据集 | cyd0806/neuroscan-ai-dataset |
🚀 快速开始
硬件需求
NeuroScan AI 支持多种部署场景,以下是不同使用模式的硬件需求:
📊 实测资源消耗 (高并发压力测试结果)
详细测试报告见 BENCHMARK.md
测试环境:
- CPU: Intel Xeon Platinum 8350C (64核/128线程)
- 内存: 2TB DDR4
- GPU: NVIDIA A800-SXM4-80GB
- 测试数据: Learn2Reg Lung CT, 输入尺寸 192×192×208, 单卷 58.5 MB
CPU 并发测试 (配准+变化检测):
| 并发数 | 总耗时 | 吞吐量 | CPU峰值 | CPU均值 | 内存增量 | 并行效率 |
|---|---|---|---|---|---|---|
| 1 | 7.4s | 8.1/min | 10.3% | 1.9% | +1.0 GB | 100% |
| 2 | 7.7s | 15.6/min | 38.8% | 5.4% | +2.0 GB | 192% |
| 3 | 8.4s | 21.3/min | 39.2% | 7.4% | +3.0 GB | 262% |
| 4 | 9.1s | 26.5/min | 42.6% | 9.5% | +4.0 GB | 325% |
| 5 | 9.6s | 31.2/min | 42.0% | 11.3% | +5.0 GB | 384% |
GPU 并发测试 (MONAI器官分割):
| 并发数 | 总耗时 | GPU显存峰值 | GPU利用率 | CPU峰值 |
|---|---|---|---|---|
| 1 | 8.2s | 9.0 GB | 100% | 37.5% |
| 2 | 8.5s | 15.0 GB | 100% | 5.8% |
单任务耗时分解:
| 阶段 | CPU配准流程 | GPU分割流程 |
|---|---|---|
| 数据加载 | 0.1s (1%) | 0.1s (1%) |
| 刚性配准 | 1.1s (15%) | - |
| 非刚性配准 | 6.2s (84%) | - |
| 模型推理 | - | 8.1s (99%) |
| 总计 | 7.4s | 8.2s |
📊 使用场景对照表
| 功能模块 | CPU | 内存 | GPU 显存 | 说明 |
|---|---|---|---|---|
| 📁 数据加载 (DICOM/NIfTI) | 2 核 | 2 GB | 无需 | 基础功能 |
| 🔄 图像配准 (刚性+非刚性) | 4 核 | 4 GB | 无需 | SimpleITK CPU 计算 |
| 📈 变化检测 | 2 核 | 2 GB | 无需 | NumPy 计算 |
| 🧠 器官分割 (MONAI) | 4 核 | 8 GB | 9-12 GB | 深度学习推理 |
| 💬 LLM 报告 (7B模型) | 4 核 | 8 GB | 4-6 GB | Ollama 推理 |
| 💬 LLM 报告 (3B模型) | 2 核 | 4 GB | 2-4 GB | 轻量级模型 |
🖥️ 推荐配置方案
| 方案 | CPU | 内存 | GPU | 存储 | 适用场景 |
|---|---|---|---|---|---|
| 💡 入门版 | 4 核 | 8 GB | 无 | 20 GB | 仅配准+变化检测,无 AI 功能 |
| ⚡ 标准版 | 8 核 | 16 GB | RTX 3060 (12GB) | 50 GB | 完整功能,使用 3B LLM |
| 🚀 专业版 | 16 核 | 32 GB | RTX 4090 (24GB) | 100 GB | 高性能,分割+8B LLM |
| 🏢 企业版 | 32 核+ | 64 GB+ | A100 (40GB+) | 500 GB+ | 批量处理,多用户 |
💰 云服务器租用建议
| 云服务商 | 推荐机型 | 配置 | 月费用估算 |
|---|---|---|---|
| AWS | g4dn.xlarge | 4C16G + T4 16GB | ~$380/月 |
| 阿里云 | ecs.gn6i-c4g1.xlarge | 4C15G + T4 16GB | ~¥2500/月 |
| AutoDL | RTX 3090 | 4C24G + RTX 3090 24GB | ~¥2.5/时 |
| 推荐入门 | AutoDL RTX 3060 | 4C16G + RTX 3060 12GB | ~¥1.2/时 |
💡 省钱建议: 开发测试阶段推荐使用 AutoDL 等按时计费平台,正式部署再考虑包月。
📦 磁盘空间需求
| 组件 | 大小 | 说明 |
|---|---|---|
| 代码仓库 | ~500 KB | Git clone |
| Python 依赖 | ~5 GB | pip install |
| MONAI 分割模型 | ~12 GB | 自动下载 |
| Ollama LLM (7B) | ~5 GB | ollama pull |
| 示例数据集 | ~300 MB | Learn2Reg |
| 总计 | ~25 GB | 最小安装 |
系统要求
| 组件 | 最低配置 | 推荐配置 |
|---|---|---|
| OS | Ubuntu 20.04+ / Windows 10 | Ubuntu 22.04 LTS |
| Python | 3.9+ | 3.11 |
| CUDA | 11.8+ (如使用GPU) | 12.0+ |
| Docker | 20.10+ (可选) | 24.0+ |
安装步骤
# 1. 克隆项目
git clone https://github.com/ydchen0806/NeuronScanAI.git
cd NeuronScanAI
# 2. 创建虚拟环境
conda create -n neuroscan python=3.11 -y
conda activate neuroscan
# 3. 安装依赖
pip install -r requirements.txt
# 4. 下载示例数据
python scripts/download_datasets.py --dataset learn2reg
# 5. 配置中文字体(可选)
python scripts/setup_fonts.py
# 6. 启动服务
./start_demo.sh
使用方式
# 完整启动(推荐)
./start_demo.sh
# 仅启动 API 后端
./start_demo.sh api
# 仅启动前端界面
./start_demo.sh streamlit
# 下载数据集
./start_demo.sh download
# 运行后端调试
./start_demo.sh debug
访问地址:
- 🖥️ Web 界面:http://localhost:8501
- 📡 API 文档:http://localhost:8000/docs
🏗️ 技术架构
📋 架构文本描述(点击展开)
┌─────────────────────────────────────────────────────────────┐
│ NeuroScan AI │
├─────────────────────────────────────────────────────────────┤
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
│ │ Streamlit │ │ FastAPI │ │ Ollama │ │
│ │ Frontend │──│ Backend │──│ LLM │ │
│ └─────────────┘ └─────────────┘ └─────────────┘ │
├─────────────────────────────────────────────────────────────┤
│ Core Services │
│ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ │
│ │ DICOM │ │ Segment │ │Register │ │ Report │ │
│ │ Loader │ │ MONAI │ │ SimpleITK│ │Generator│ │
│ └─────────┘ └─────────┘ └─────────┘ └─────────┘ │
├─────────────────────────────────────────────────────────────┤
│ PyTorch / MONAI / SimpleITK / NiBabel │
└─────────────────────────────────────────────────────────────┘
项目结构
NeuroScan/
├── app/ # 核心应用
│ ├── api/ # REST API
│ ├── services/ # 业务服务
│ │ ├── dicom/ # DICOM 处理
│ │ ├── segmentation/ # 器官分割
│ │ ├── registration/ # 图像配准
│ │ ├── analysis/ # 变化检测
│ │ └── report/ # 报告生成
│ └── agents/ # LLM Agents
├── scripts/ # 工具脚本
├── data/ # 数据目录
│ ├── raw/ # 原始数据
│ └── processed/ # 处理后数据
├── models/ # AI 模型
├── streamlit_app.py # Web 前端
└── requirements.txt # Python 依赖
🎬 演示
🔥 真实测试结果
以下是基于 Learn2Reg 肺部 CT 数据集 的实际测试结果:
变化检测热力图 - 红色表示密度增加,蓝色表示密度减少
📊 性能测试数据
| 测试项目 | 结果 | 耗时 |
|---|---|---|
| NIfTI 数据加载 | ✅ 成功 | < 1s |
| 刚性配准 (L1) | ✅ metric: -0.286 | 0.9s |
| 非刚性配准 (L2) | ✅ metric: -0.424 | 10.3s |
| 总配准时间 | ✅ 亚毫米精度 | 11.3s |
| 变化检测 | ✅ 6,239,210 体素 | < 1s |
| LLM 报告生成 | ✅ Ollama llama3.1:8b | ~120s |
📋 示例分析报告
# CT 纵向对比分析报告
**患者 ID**: TEST001
**检查间隔**: 约 7 个月
## 定量测量
| 指标 | 基线 | 随访 | 变化 |
|------|------|------|------|
| 最大直径 (mm) | 15.5 | 12.3 | -20.6% |
| 体积 (cc) | 1.20 | 0.80 | -33.3% |
## RECIST 1.1 评估
**评估结果**: 🟠 **SD (疾病稳定)**
- 实际变化: -20.6%
- 评估依据: 介于 PR 和 PD 之间
## 临床建议
1. 继续当前治疗方案或观察
2. 建议 2-3 个月后复查
3. 定期监测肿瘤标志物
内置示例数据
项目包含 Learn2Reg 公开数据集(20 对肺部 CT),可直接体验系统功能:
# 下载示例数据(约 300MB)
python scripts/download_datasets.py --dataset learn2reg
# 运行完整后端测试
python scripts/debug_backend.py
# 启动 Web 界面
./start_demo.sh
支持的数据集
| 数据集 | 大小 | 说明 |
|---|---|---|
| Learn2Reg Lung CT | ~300 MB | 肺部吸气/呼气配对 ⭐推荐 |
| RIDER Lung CT | ~43 GB | 肺癌重复扫描 |
| NLST | ~12 TB | 国家肺癌筛查试验 |
本地 LLM 模型
系统支持以下本地部署的医学 LLM:
| 模型 | 大小 | 用途 |
|---|---|---|
| llama3.1:8b | 4.9 GB | 通用医学报告 ⭐推荐 |
| meditron:7b | 3.8 GB | 医学专用模型 |
| medllama2:7b | 3.8 GB | 医学对话模型 |
📡 API 文档
上传扫描
POST /api/v1/ingest
Content-Type: multipart/form-data
# 响应
{
"scan_id": "uuid",
"message": "上传成功",
"metadata": {...}
}
纵向分析
POST /api/v1/analyze/longitudinal
{
"baseline_scan_id": "uuid1",
"followup_scan_id": "uuid2",
"region_of_interest": "chest"
}
# 响应
{
"task_id": "uuid",
"status": "processing"
}
获取报告
GET /api/v1/reports/{task_id}
# 响应
{
"status": "completed",
"markdown_report": "...",
"key_images": [...]
}
完整 API 文档:http://localhost:8000/docs
⚙️ 配置
环境变量
# LLM 配置
LLM_MODEL=llama3.1:8b
LLM_TEMPERATURE=0.1
# 代理配置(下载数据时使用)
http_proxy=http://127.0.0.1:7890
https_proxy=http://127.0.0.1:7890
LLM 模型选择
| 模型 | 显存需求 | 特点 |
|---|---|---|
| llama3.1:8b | 8 GB | 通用能力强 |
| llama3.2:3b | 4 GB | 轻量级 |
| meditron:7b | 8 GB | 医学专用 |
🛠️ 开发
运行测试
# 后端调试
python scripts/debug_backend.py
# 单元测试
python -m pytest test_case/
清理项目
# 清理所有临时文件
python scripts/cleanup.py --all
# 仅清理缓存
python scripts/cleanup.py --cache
# 查看磁盘使用
python scripts/cleanup.py --stats
📄 许可证
MIT License - 详见 LICENSE
🤝 贡献
欢迎提交 Issue 和 Pull Request!
NeuroScan AI - 让医学影像分析更智能
Making Medical Imaging Analysis Smarter
Inference Providers
NEW
This model isn't deployed by any Inference Provider.
🙋
Ask for provider support