🍊作者:计算机编程-吉哥
🍊简介:专业从事JavaWeb程序开发,微信小程序开发,定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事,生活就是快乐的。
🍊心愿:点赞 👍 收藏 ⭐评论 📝
🍅 文末获取源码联系
👇🏻 精彩专栏推荐订阅 👇🏻 不然下次找不到哟~
目录
[2.1 整体框架](#2.1 整体框架)
[2.2 三个分割模型](#2.2 三个分割模型)
[2.3 测试集表现(215张,640×640)](#2.3 测试集表现(215张,640×640))
[亮点1:智能权重加载机制 ------ 按val_dice自动选最优](#亮点1:智能权重加载机制 —— 按val_dice自动选最优)
[亮点2:AI辅助建议 ------ 客观指标 + DeepSeek生成临床解读](#亮点2:AI辅助建议 —— 客观指标 + DeepSeek生成临床解读)
[亮点4:差异化训练策略 + 断点续训](#亮点4:差异化训练策略 + 断点续训)
一、项目简介
脑肿瘤的早期精准诊断对于临床治疗至关重要。传统的MRI影像判读依赖放射科医生的人工经验,耗时长且主观性强。本项目brain_tumor_seg构建了一个端到端的脑肿瘤MRI图像语义分割Web应用,能够自动对MRI图像进行像素级的肿瘤区域识别与分割,辅助医生快速定位病灶。
项目采用深度学习语义分割 技术路线,基于UNet++/EfficientNet-B4 核心模型,配合DeepLabV3+和FPN两个对比模型,在脑肿瘤MRI公开数据集(1502张训练/429张验证/215张测试)上实现了81.86%的Dice系数 和72.07%的IoU,达到临床辅助参考水准。
项目已形成完整闭环:前端Vue交互界面 → Django后端API → 三个在线推理模型 → MySQL数据库记录 → DeepSeek大模型辅助解读,覆盖从数据采集、模型训练到Web部署的全流程。
二、技术架构
2.1 整体框架
系统采用前后端分离架构,前后端独立开发部署,通过RESTful API通信。
-
前端:Vue 3 + Vite 6 + Element Plus,端口8081
-
后端:Django 4.2.16,端口8000
-
数据库:MySQL 8.0,三张核心表
-
深度学习框架:PyTorch 2.8.0 + CUDA 12.8
-
模型库:segmentation-models-pytorch 0.3.3
-
大模型接口:DeepSeek Chat Completions API
2.2 三个分割模型
| 模型 | 角色 | 架构 | 编码器 | 参数量 |
|---|---|---|---|---|
| UNet++/Eff-B4 | 主模型 ⭐ | UnetPlusPlus | efficientnet-b4 | 20.94M |
| DeepLabV3+/RN50 | 对比模型1 | DeepLabV3Plus | resnet50 | 26.73M |
| FPN/RN50 | 对比模型2 | FPN | resnet50 | 26.17M |
三个模型均使用ImageNet预训练权重,采用差异化学习率策略(编码器1e-4,解码器1e-3)和组合损失函数(Dice Loss + BCE Loss)。
2.3 测试集表现(215张,640×640)
| 模型 | Dice | IoU | Pixel Acc | F1 | 推理速度 |
|---|---|---|---|---|---|
| UNet++/Eff-B4 ⭐ | 81.86% | 72.07% | 98.71% | 83.89% | 415ms |
| DeepLabV3+/RN50 | 79.82% | 69.59% | 98.59% | 82.31% | 125ms |
| FPN/RN50 | 74.84% | 63.40% | 97.91% | 78.15% | 88ms |
选型结论:UNet++/Eff-B4精度最高,作为主模型;DeepLabV3+速度与精度均衡;FPN在小目标上稳定性稍弱,可作为论文对比讨论。
三、六大核心功能
功能1:登录/注册
支持用户名+密码登录,密码采用MD5加密存储。系统内置默认管理员admin/admin123,新用户可自助注册,注册后自动登录。
功能2:肿瘤分割(四种入口)
平台提供四种灵活的分割方式,覆盖不同使用场景:
-
单图分割:上传一张MRI图像,系统返回原图+肿瘤mask叠加结果,并显示肿瘤像素数、占比、置信度等关键指标
-
批量分割:一次上传≤20张图像,自动批量处理,适合科研数据分析
-
视频分割:上传视频文件,系统逐帧抽帧处理,输出带分割标注的视频
-
摄像头实时分割:调用本地摄像头,实时采集画面并逐帧分割,适合现场演示和教学场景
分割结果页同时展示客观指标(肿瘤像素数、肿瘤占比、平均置信度、分割耗时)和一键触发的AI辅助建议。
功能3:分割记录
所有分割历史自动存入数据库,用户可在"分割记录"页面查看完整历史列表,点击单条记录可查看详情(原始图、叠加图、各项指标),支持单条删除。记录与用户账号绑定,不同用户数据隔离。
功能4:数据看板(6张统计图)
看板模块基于segmentation_records表聚合生成6张可视化图表,帮助用户直观了解分割使用情况:
-
总览卡片:总分割次数、总用户数、模型使用分布
-
模型使用分布饼图
-
分割量时间趋势折线图
-
肿瘤占比分布直方图
-
分割来源(单图/批量/视频/摄像头)占比图
-
平均分割耗时趋势图
功能5:智能问答
基于DeepSeek大模型 + 本地知识库RAG(检索增强生成),用户可在"智能问答"页面输入脑肿瘤相关问题(如"什么是脑肿瘤?""如何解读MRI上的肿瘤信号?"),系统先检索本地13条脑肿瘤知识语料,再结合上下文生成专业回答。知识库支持持续扩充。
功能6:个人中心
用户可查看和编辑个人信息:用户名、角色、注册时间、头像、邮箱、手机号,支持修改密码。特别展示"累计分割次数" ------该数据实时统计自segmentation_records表中当前用户的分割记录总数,让用户直观了解自己的使用活跃度。
四、技术亮点
亮点1:智能权重加载机制 ------ 按val_dice自动选最优
网页模型选择器下拉框可在三个模型间切换。关键机制:
-
系统扫描
train/checkpoints/<模型key>_*.pth下所有权重文件 -
用
torch.load读取每个checkpoint内嵌的best_val_dice和epoch字段 -
按验证集Dice系数自动选最优(不靠文件名判断,避免手动命名错误)
-
进程级缓存机制,每个模型在一次进程生命周期内最多加载一次元数据
-
用户在UI可见模型信息卡:显示
Best Val Dice @ epoch X和具体Dice值
配套校验脚本verify_best_weights.py可一键输出三个模型的最优权重校验表,确保部署时加载的一定是精度最高的权重。
亮点2:AI辅助建议 ------ 客观指标 + DeepSeek生成临床解读
分割结果页点击"AI辅助建议"按钮,系统将分割产生的客观指标(肿瘤像素数、肿瘤占比、平均置信度、模型名称、阈值)打包,调用DeepSeek大模型生成200~400字的临床级中文解读。
流程设计:
-
系统按规则计算
severity = low / medium / high(阈值2% / 8%) -
拼接专业Prompt(包含模型名、肿瘤占比、置信度、风险等级)
-
直接
requests.post调用DeepSeek API -
前端用
marked解析返回的Markdown为HTML,分点展示 -
容灾降级:API key缺失/网络超时/返回空时自动降级为本地规则模板,保证用户永远能拿到内容
亮点3:端到端全栈闭环
从数据标注(COCO polygon格式)、模型训练(三大架构统一训练接口+早停+续训)、在线推理(Django REST API)、Web交互(Vue3+Element Plus)、数据持久化(MySQL三张表)、到AI辅助解读(DeepSeek),形成完整的技术闭环。
亮点4:差异化训练策略 + 断点续训
-
对编码器(ImageNet预训练)使用较低学习率(5e-5 ~ 1e-4),保护预训练特征
-
对解码器(新初始化)使用较高学习率(1e-3),加速收敛
-
混合精度训练(AMP)+ 梯度累积,在8GB显存显卡上稳定运行
-
早停机制(patience=20)+ 周期性checkpoint(每5轮),训练中断后可从任意checkpoint恢复
亮点5:模块化工程结构
brain_tumor_seg/
├─ front/ Vue 3 前端(端口8081)
├─ web_app/ Django后端(端口8000)
│ ├─ detection/ 分割业务(inference/views/db_helper)
│ └─ knowledge/ 智能问答引擎(RAG)
├─ train/ 训练工程(10个脚本)
│ ├─ train.py 统一训练入口
│ ├─ evaluate.py 三模型对比评估
│ ├─ predict.py 推理工具
│ └─ verify_best_weights.py 权重校验
├─ config/ 模型元数据配置
└─ datasets/ 数据集(COCO标注)
训练脚本与Web服务完全解耦,训练产出(checkpoint、日志、图表)独立存放,方便迁移和版本管理。
五、功能截图展示



