第30章:MobileNetV3全家桶实现MRI脑肿瘤四分类(含Streamlit网页推理+Mermaid结构图)

摘要:脑肿瘤MRI影像诊断工作量巨大,大型CNN、Transformer效果好但是参数量大,很难部署到移动端、嵌入式便携设备。本文基于Pytorch搭建MobileNetV3全家桶医学影像分类工程,数据集4000余张脑部MRI切片,完成glioma胶质瘤、meningioma脑膜瘤、notumor无肿瘤、pituitary垂体瘤四分类任务。工程支持MobileNetV3‑small/large一键切换,实现迁移学习、冻结微调、参数量与FLOPs统计、全套多分类指标、混淆矩阵、ROC曲线、训练曲线可视化;配套Streamlit网页推理程序,上传图片即可得到预测结果;附带可直接渲染的Mermaid网络结构图。本文从临床背景、数据集说明、MobileNetV3原理拆解、网络结构、完整代码解析、训练策略、指标解读、运行流程、落地局限与后续优化方向完整展开。

1 研究背景与临床意义

颅内脑肿瘤主要包含胶质瘤、脑膜瘤、垂体瘤等不同类型,不同肿瘤的治疗方案、预后情况差异巨大。

  • glioma(胶质瘤):最常见原发性颅内恶性肿瘤,肿瘤浸润性生长,危害程度高;
  • meningioma(脑膜瘤):大多为良性肿瘤,起源于脑膜组织;
  • notumor(无肿瘤):脑部正常MRI影像,无肿瘤病灶;
  • pituitary(垂体瘤):发生于垂体区域肿瘤,会引发内分泌异常等系列临床症状。

MRI是脑肿瘤首选无创影像学检查手段。但在大规模体检、基层医院场景,影像科医生资源紧张,阅片任务繁重;复杂病灶容易出现主观判读偏差。开发AI计算机辅助诊断系统,可以辅助医生快速初筛影像,优先标记高风险样本。

现有的很多脑肿瘤AI模型采用Heavy大模型,精度可观,但参数量巨大,对硬件算力要求高,很难部署到便携设备、平板、边缘硬件。MobileNetV3作为轻量级CNN代表,专门面向移动设备设计,分为small和large两个版本,通过深度可分离卷积降低计算开销,引入SE通道注意力强化有效特征,h‑swish激活兼顾性能与速度,非常适合医学影像边缘部署场景。

本数据集一共4000多张脑部MRI二维切片,属于中等规模医学数据集,利用迁移学习,把在自然图像上学到的底层纹理、边缘特征迁移到脑肿瘤病灶识别任务;同时提供Streamlit网页推理,不需要命令行,上传图片即可完成预测,方便做演示原型。

2 数据集说明

数据集标签json定义:

复制代码
{
    "0": "glioma",
    "1": "meningioma",
    "2": "notumor",
    "3": "pituitary"
}

数据集采用ImageFolder标准目录组织格式:

复制代码
data
├─train
│  ├─glioma
│  ├─meningioma
│  ├─notumor
│  └─pituitary
└─val
   ├─glioma
   ├─meningioma
   └─......其余类别

数据预处理流水线

  • 训练集:Resize(256) → RandomRotation(90)随机旋转 → CenterCrop(224) → ToTensor() → ImageNet标准化mean=[0.485, 0.456, 0.406],std=[0.229, 0.224, 0.225]
  • 验证集:Resize(256) → CenterCrop(224) → ToTensor() → 同样标准化。

注意:MRI医学影像灰度分布和ImageNet自然图像存在域偏移。本项目使用ImageNet预训练权重做初始化,后续微调适配脑影像;如果追求更高精度,可以使用医学影像预训练权重。

3 MobileNetV3网络架构与Mermaid结构图

MobileNetV3核心基础单元是Bneck(倒残差瓶颈模块),融合:倒残差结构、深度可分离卷积、SE通道注意力模块、h‑swish激活函数。

  • 1×1逐点卷积升维,把特征映射到高维空间;
  • 3×3深度可分离卷积做空间特征提取;
  • SE注意力模块,对各通道特征进行重标定,强化肿瘤病灶相关通道,抑制无效背景;
  • 1×1逐点卷积降维压缩通道;
  • 输入输出通道匹配时使用残差shortcut跳跃连接。
3.1 MobileNetV3整体文字结构
复制代码
输入MRI图像 3×224×224
    ↓
Stem层:3×3 Conv + BN + h‑swish
    ↓
堆叠多组Bneck倒残差模块(small/large模块数量、通道数不同)
    ↓
1×1 Conv升维 + BN + h‑swish
    ↓
Global Average Pooling全局平均池化
    ↓
MobileNetV3‑Classifier头(Dropout+Linear)
    ↓
输出4维:glioma / meningioma / notumor / pituitary
3.2 Bneck倒残差模块内部子结构
复制代码
Bneck模块输入特征图
    ↓
1×1 Pointwise升维卷积 + BN + h‑swish
    ↓
3×3 Depthwise深度可分离卷积 + BN + h‑swish
    ↓
SE通道注意力(GAP→两层全连接→hard‑sigmoid通道权重重标定)
    ↓
1×1 Pointwise降维卷积 + BN
    ↓
shortcut残差相加(通道匹配才启用)
输出特征图
3.3 Mermaid绘图代码
3.4 MobileNetV3‑small / large版本对比
模型 特点 参数量 适用场景
MobileNetV3‑small Bneck模块数量少,通道数更小,计算量极低 最小 嵌入式、边缘设备、快速推理,牺牲少量精度
MobileNetV3‑large Bneck模块更多,通道更大,特征提取能力更强 中等 服务器、PC端,平衡精度与速度,本项目优先基线

本项目通过命令行参数--model small/large切换;加载官方预训练权重之后,替换最后一层分类头输出维度为4,适配4类脑肿瘤任务;开启--freeze_layers True可以冻结主干网络,只训练最后的分类头,缓解4000张医学数据集的过拟合风险。

4 项目核心代码模块解读

整套工程包含四份核心脚本:train.py训练脚本、utils.py工具库、infer.py基于Streamlit网页推理脚本。

4.1 utils.py核心模块
  1. create_model():模型工厂函数,选择small/large版本,加载对应官方预训练权重,替换网络末尾classifier的全连接层,输出通道设置为类别数量。
  2. get_device()自动获取cuda/cpu;mkdir()自动清空旧实验目录,新建weights权重文件夹;data_trans()训练集验证集两套数据增强。
  3. ConfusionMatrix混淆矩阵类:计算多分类全套指标,准确率、每一类Precision精确率、Recall召回率、Specificity特异度、F1‑score,输出宏平均指标,自动绘制保存混淆矩阵图片。>

医学脑肿瘤任务重点指标:Recall召回率,保证肿瘤样本尽可能被检出,降低漏诊风险;混淆矩阵可以直观观察模型容易混淆的肿瘤类别,例如脑膜瘤和垂体瘤容易发生错分。

  1. train_one_epoch()一轮训练,CrossEntropy交叉熵损失;evaluate()验证集评估。
  2. 绘图工具函数:loss‑acc损失精度曲线;plot_lr_decay()学习率变化曲线;plot_prsf()P‑R‑S‑F1指标曲线;plot_roc_curve()绘制多分类ROC曲线。
  3. get_data()读取ImageFolder数据集;gen_json()生成class_indices.json类别映射;get_optim()支持SGD、Adam、AdamW优化器,医学影像优先AdamW。
4.2 train.py训练脚本完整流程
  1. 接收命令行参数,自定义实验保存目录save_ret;调用mkdir清空旧文件;获取训练设备。
  2. 加载训练集、验证集MRI影像,打印样本数量,导出class_indices.json。
  3. 创建MobileNetV3模型,thop工具统计总参数量、可训练参数量、FLOPs计算量,控制台打印输出。
  4. freeze_layers=True时,冻结主干全部Bneck模块,仅训练最后的classifier分类头。
  5. 筛选需要更新梯度的参数pg;选择优化器;设置LambdaLR余弦退火学习率调度器。
  6. epoch循环:
    • 执行train_one_epoch训练一轮;scheduler更新学习率;evaluate验证;
    • 每epoch全部指标保存到train_log_results.json;
    • 对比验证集accuracy,保存最优best.pth;训练结束保存last.pth。
  7. 训练结束自动绘制loss‑acc、lr、P‑R‑S‑F1曲线图。
  8. 加载best最优权重,计算并绘制训练集、验证集混淆矩阵;计算并绘制多分类ROC曲线。

参考训练超参数

复制代码
--model large
--pretrained True
--freeze_layers True
--batch‑size 8
--epochs 20
--optim AdamW
--lr 0.01
--lrf 0.01
4.3 infer.py Streamlit网页推理脚本

基于Streamlit搭建简易网页版演示系统,无需QT界面,浏览器打开即可使用:

  1. 读取模型参数路径、class_indices.json类别映射、best.pth权重;
  2. 页面提供图片上传组件,支持本地上传脑部MRI图像;
  3. 如果不上传图片,会加载一张默认示例图片做演示;
  4. 图像预处理,模型推理softmax,取top‑3预测类别与概率;
  5. 在网页展示原图,同时输出每一类预测名称以及对应百分比分数。

运行网页推理命令:

复制代码
streamlit run infer.py

5 多分类评价指标解读(4类脑肿瘤glioma/meningioma/notumor/pituitary)

本任务为四分类,代码采用宏平均macro‑average,平等对待4个类别,不受各类样本数量不均衡的干扰。

  1. Accuracy准确率:全部样本预测正确占总样本的比例;
  2. Precision精确率:预测为某一类肿瘤样本中,真实属于该肿瘤的比例,反映误判;
  3. Recall召回率:真实肿瘤样本被识别出来的比例,医学任务核心指标,召回率低代表漏诊风险高;
  4. Specificity特异度:不属于该类别的样本被正确判定为阴性;
  5. F1‑score:精确率召回率调和平均,综合评价类别识别性能;
  6. ROC‑AUC:衡量模型区分4类脑部MRI样本的整体能力;
  7. 混淆矩阵:4×4矩阵,对角线为各类别预测正确数量;非对角线观察哪两类肿瘤之间容易混淆。

过拟合判断:训练集指标很高,验证集指标明显下滑;医学小数据集常见;缓解方案:开启冻结训练、适当增加数据增强、控制epoch、权重衰减。

6 完整项目运行流程

  1. 环境依赖
    pytorch、torchvision、opencv‑python、pillow、matplotlib、thop、tqdm、scikit‑learn、streamlit

  2. MRI数据集按照ImageFolder格式放到./data/train与./data/val。

  3. 启动训练示例:

    python train.py --model large --pretrained True --freeze_layers True --batch-size 8 --epochs 20 --optim AdamW --lr 0.01 --lrf 0.01

  4. 训练产物全部输出到‑‑save_ret指定目录(默认runs)

  • weights文件夹:best.pth、last.pth权重
  • class_indices.json类别映射文件
  • train_log_results.json完整训练日志
  • loss_accuracy_curve.jpg、LR_decay.jpg、results.jpg指标曲线图
  • roc_curve.jpgROC曲线图
  • trainSet Confusion Matrix.jpg、valSet Confusion Matrix.jpg混淆矩阵
  1. 网页推理演示:

    streamlit run infer.py

基于 MobileNetV3 全家桶的 MRI 脑肿瘤四分类研究

相关推荐
如若1231 小时前
TRACER 论文解读与复现:面向 ICU 长时程患者监测的多模态 Harness 架构、时序证据建模与工具增强推理
人工智能·深度学习·计算机视觉
深蓝AI3 小时前
无头浏览器不必从 Chrome 改:Lightpanda 用 Zig 从零造,100 个页面只占 123MB 内存
人工智能·程序员
奈落245 小时前
AI辅助的另一面:从2026年国际AI安全报告的“故障”清单到国内专家的可靠性短板,自主行动的Agent为什么更难及时干预
人工智能·安全·agent·本地部署·ai 办公
火山引擎开发者社区7 小时前
eMudhra 证书失陷:容器用户最容易忽略的镜像信任链漏洞
人工智能
LabVIEW开发8 小时前
LabVIEW 机载 DIAL:每秒万次甲烷测量
人工智能·labview·labview知识·labview功能·labview程序
飞猫的边缘AI8 小时前
英特尔量子生意
人工智能·量子计算·边缘ai
深蓝AI8 小时前
桌面 Agent 缺的不是视觉:Vercel 开源 agent-desktop,用无障碍树 ref 替代截图坐标
人工智能·程序员
镜子AI9 小时前
镜子AI 技术复盘:三条自动化链路上的“停止条件“设计
运维·人工智能·自动化
向哆哆9 小时前
羊行为目标检测数据集:4类别、2,000张图像 | 目标检测
人工智能·yolo·目标检测·目标跟踪