# brats-segmentation-system **Repository Path**: aibyte/brats-segmentation-system ## Basic Information - **Project Name**: brats-segmentation-system - **Description**: No description available - **Primary Language**: Python - **License**: MPL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-10-01 - **Last Updated**: 2025-10-02 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 脑肿瘤自动分割与分析系统 (BraTS) 基于深度学习的脑肿瘤MRI影像自动分割与分析系统,采用改进的3D U-Net架构,实现高精度的肿瘤区域分割和智能化分析。 ## 🌟 项目特色 - **高精度分割**: 基于改进的3D U-Net架构,结合残差块设计,实现高精度肿瘤分割 - **多模态支持**: 支持FLAIR、T1、T1CE、T2四种MRI模态的联合分析 - **智能分析**: 自动计算肿瘤体积、直径等量化指标,提供肿瘤类型判断 - **多种界面**: 提供Web界面、Gradio界面和API接口,满足不同使用需求 - **治疗建议**: 基于分割结果生成初步治疗建议,辅助临床决策 ## 📋 系统要求 ### 硬件要求 - **推荐**: NVIDIA GPU (8GB+ 显存) - **最低**: CPU (处理速度较慢) - **内存**: 16GB+ RAM - **存储**: 5GB+ 可用空间 ### 软件要求 - Python 3.8+ - PyTorch 1.9+ - CUDA 11.0+ (GPU版本) ## 🚀 快速开始 ### 1. 环境安装 ```bash # 克隆项目 git clone https://github.com/your-username/brats-segmentation.git cd brats-segmentation # 创建虚拟环境 python -m venv venv source venv/bin/activate # Linux/Mac # 或 venv\Scripts\activate # Windows # 安装依赖 pip install -r requirements.txt ``` ### 2. 模型下载 将预训练模型文件放置在 `models/` 目录下: - `best_brats_model_dice.pth` - 主要分割模型 - `improved3dunet.pth` - 备用模型 - `improved3dunet.onnx` - ONNX格式模型 ### 3. 运行方式 #### 方式一:Gradio界面 (推荐) ```bash python brats_gradio_app.py ``` 访问 http://localhost:9082 #### 方式二:Web界面 ```bash python app.py ``` 访问 http://localhost:5000,打开 `index.html` #### 方式三:API服务 ```bash python brats_api.py ``` API服务运行在 http://localhost:5000 ## 📁 项目结构 ``` brats-segmentation/ ├── README.md # 项目说明文档 ├── LICENSE # 开源许可证 (MPL 2.0) ├── requirements.txt # Python依赖包 ├── app.py # Flask Web应用 ├── brats_api.py # API服务接口 ├── brats_gradio_app.py # Gradio交互界面 ├── brats_trainer.py # 模型训练脚本 ├── index.html # Web前端界面 ├── test_app.py # 应用测试脚本 ├── data/ # 示例数据目录 │ ├── BraTS20_Demo_flair.nii # FLAIR模态示例 │ ├── BraTS20_Demo_t1.nii # T1模态示例 │ ├── BraTS20_Demo_t1ce.nii # T1CE模态示例 │ └── BraTS20_Demo_t2.nii # T2模态示例 ├── models/ # 模型文件目录 │ ├── best_brats_model_dice.pth # 主要训练模型 │ ├── improved3dunet.pth # 改进的3D U-Net模型 │ └── improved3dunet.onnx # ONNX格式模型 └── uploads/ # 文件上传目录 ``` ## 🔧 使用说明 ### Gradio界面使用 1. **上传文件**: 上传四种模态的NIfTI格式文件 (.nii 或 .nii.gz) 2. **加载示例**: 点击"加载示例文件"使用内置演示数据 3. **设置参数**: 在高级选项中调整分割精度和肿瘤类型优先级 4. **开始分析**: 点击"开始分析"按钮进行自动分割 5. **查看结果**: 在不同标签页查看统计数据、肿瘤类型和治疗建议 ### API接口使用 #### 上传并分析 ```bash curl -X POST http://localhost:5000/api/upload \ -F "flair=@path/to/flair.nii.gz" \ -F "t1=@path/to/t1.nii.gz" \ -F "t1ce=@path/to/t1ce.nii.gz" \ -F "t2=@path/to/t2.nii.gz" ``` #### 检查服务状态 ```bash curl http://localhost:5000/api/status ``` ## 快速部署 ### 使用 Docker Compose(推荐) docker-compose up -d ### 或者使用 Docker docker build -t brats-app . docker run -d --name brats-gradio-app -p 9082:9082 brats-app 部署后访问 http://localhost:9082 即可使用应用。 这个 Docker 配置考虑了医学影像处理的特殊需求,包括内存管理、中文字体支持、以及模型文件的挂载方式。如果你需要 GPU 支持或其他特殊配置,可以根据 DEPLOYMENT.md 中的说明进行调整。 ## 🧠 模型架构 ### 改进的3D U-Net - **编码器**: 残差块 + 最大池化下采样 - **瓶颈层**: 深层特征提取 - **解码器**: 转置卷积上采样 + 跳跃连接 - **输出**: 4类分割结果 (背景、坏死、水肿、增强肿瘤) ### 损失函数 - **组合损失**: Dice Loss (70%) + Cross Entropy Loss (30%) - **优化器**: AdamW with Cosine Annealing - **正则化**: 批归一化 + Dropout + 梯度裁剪 ## 📊 分析结果 系统提供以下分析结果: ### 量化指标 - **肿瘤总体积**: 所有肿瘤区域的总体积 (mm³) - **肿瘤核心体积**: 坏死区和增强肿瘤区体积 - **全肿瘤体积**: 包含水肿区的总体积 - **最大直径**: 肿瘤的最大直径 (mm) - **肿瘤负荷**: 肿瘤体积占脑组织的百分比 ### 区域分布 - **增强肿瘤 (ET)**: 对比剂增强区域 - **水肿区域 (ED)**: 肿瘤周围水肿 - **坏死区域 (NCR/NET)**: 肿瘤坏死和非增强区域 ### 肿瘤类型判断 - **高级别胶质瘤**: 增强区域比例 > 20% - **低级别胶质瘤**: 增强区域比例 ≤ 20% ## 🏥 临床应用 ### 适用范围 - 脑胶质瘤分割与分析 - 肿瘤体积测量 - 治疗效果评估 - 病情进展监测 ### 治疗建议生成 系统基于分割结果自动生成: - 手术切除建议 - 放化疗方案推荐 - 随访观察计划 - 多学科会诊建议 ### 免责声明 ⚠️ **重要提示**: 本系统仅作为辅助诊断工具,不能替代专业医师的诊断结论。所有治疗决策应遵循专业医师指导。 ## 🔬 模型训练 如需重新训练模型,请使用 `brats_trainer.py`: ```bash python brats_trainer.py ``` ### 训练配置 - **数据集**: BraTS 2020 Training Data - **批大小**: 1 (受GPU内存限制) - **学习率**: 2e-4 with Cosine Annealing - **训练轮数**: 100 epochs (含早停机制) - **数据增强**: 标准化 + 切片选择 ### 评估指标 - **Dice系数**: 分割精度评估 - **IoU分数**: 交并比评估 - **损失函数**: 组合损失监控 ## 🛠️ 开发与测试 ### 运行测试 ```bash python test_app.py ``` ### 代码结构 - **数据处理**: NIfTI文件加载、预处理、后处理 - **模型定义**: 3D U-Net架构、残差块 - **训练流程**: 数据加载、训练循环、验证评估 - **推理服务**: Flask API、Gradio界面 ## 📈 性能优化 ### 内存优化 - 切片范围限制 (Z轴: 60-100) - 图像尺寸控制 (最大128³) - 批处理大小调整 - GPU内存清理 ### 速度优化 - 混合精度训练 (AMP) - 模型并行化 - 数据预加载 - 缓存机制 ## 🤝 贡献指南 欢迎提交Issue和Pull Request! ### 开发环境设置 1. Fork项目仓库 2. 创建功能分支 3. 提交代码更改 4. 创建Pull Request ### 代码规范 - 遵循PEP 8编码规范 - 添加适当的注释和文档 - 编写单元测试 - 更新相关文档 ## 📄 许可证 本项目采用 [Mozilla Public License 2.0](LICENSE) 开源许可证。 ## 🙏 致谢 - BraTS挑战赛组织者提供的数据集和评估标准 - PyTorch和相关开源库的开发者 - 医学影像处理社区的研究贡献 - 所有参与测试和反馈的用户 ## 📚 参考文献 1. Menze, B. H., et al. "The Multimodal Brain Tumor Image Segmentation Benchmark (BRATS)." IEEE Transactions on Medical Imaging, 2015. 2. Ronneberger, O., et al. "U-Net: Convolutional Networks for Biomedical Image Segmentation." MICCAI, 2015. 3. Çiçek, Ö., et al. "3D U-Net: Learning Dense Volumetric Segmentation from Sparse Annotation." MICCAI, 2016. --- **版本**: v1.0.0 **更新日期**: 2025年10月 **维护状态**: 积极维护中 ✅