一、系统功能介绍
图像分类系统是一套面向脑肿瘤 MRI 图像的本地化 AI 检测工具,支持单张图像快速检测和整文件夹批量检测,全部推理在本地完成,不需要联网,不需要 GPU。
核心功能
单图检测:点击“上传图像并检测”,选择一张 MRI 图像,界面左侧显示缩略图,右侧显示预测类别和置信度。
批量检测:点击“批量检测”,选择包含图像的文件夹,系统自动扫描文件夹内所有 png / jpg / jpeg / bmp / tif / tiff 图像,逐张推理。
实时进度:批量检测过程中,进度条显示
87% (104/120)这样的实时进度,结果表格逐行刷新,每张图的文件名、预测类别、置信度即时可见。类别统计:批量检测过程中实时统计每个类别出现的数量和占比,检测完成后在界面顶部显示汇总,例如:
text
已检测 120 张 | glioma: 30 (25.0%) meningioma: 28 (23.3%) notumor: 35 (29.2%) pituitary: 27 (22.5%)
结果导出:点击“保存结果”,将全部检测明细和类别统计导出为 UTF-8 编码的 txt 文件,包含序号、文件名、预测类别、置信度,以及类别统计汇总。
支持的类别
系统默认支持四分类:glioma(胶质瘤)、meningioma(脑膜瘤)、notumor(无肿瘤)、pituitary(垂体瘤)。如果买家有自己的四分类模型,替换模型文件即可,界面和导出格式不变。
运行环境
操作系统:Windows 10 / 11 64 位
无需 GPU,纯 CPU 推理
无需安装 Python、PyTorch、OpenCV,所有依赖已打包进动态链接库
双击 exe 即可运行,模型文件和 DLL 放在同目录
性能参考
在普通笔记本 CPU 上,单张 224×224 MRI 图像推理耗时约 20–50 ms,批量检测 1000 张图像约 1–2 分钟(取决于 CPU 性能)。具体数值随硬件不同会有浮动。
二、训练方法
模型基于 PyTorch 训练,使用自定义 CNN 架构,训练脚本和数据划分方式全部交付。
数据集
使用公开的脑肿瘤 MRI 数据集,包含 Training 和 Testing 两个文件夹,每个文件夹下按类别分为四个子目录。训练时把两个文件夹合并,在内存中按 9:1:1 重新划分为训练集、验证集、测试集。
数据预处理
训练增强只做几何变换:
RandomResizedCrop(224)、RandomHorizontalFlip()、RandomRotation(15),不做颜色抖动,避免改变 MRI 的灰度特征。验证和测试统一使用
Resize(256) + CenterCrop(224)。全部图像按 ImageNet 统计量标准化:
mean=[0.485, 0.456, 0.406],std=[0.229, 0.224, 0.225]。
模型结构
五层卷积 + 全连接分类器:
text
Conv2d(3, 32) + BN + ReLU + MaxPool Conv2d(32, 64) + BN + ReLU + MaxPool Conv2d(64, 128)+ BN + ReLU + MaxPool Conv2d(128,256)+ BN + ReLU + MaxPool Conv2d(256,512)+ BN + ReLU + MaxPool AdaptiveAvgPool2d(1) -> Flatten -> Dropout(0.5) Linear(512, 256) -> ReLU -> Dropout(0.3) -> Linear(256, 4)
训练配置
优化器:Adam,初始学习率 0.001
学习率调度:StepLR,每 7 个 epoch 乘以 0.1
损失函数:CrossEntropyLoss
Batch size:32
Epoch:20
随机种子固定为 42,保证划分可复现
训练流程
每个 epoch 结束后打印训练损失、训练准确率、验证损失、验证准确率、当前学习率。验证准确率创新高时保存最佳权重。训练完成后加载最佳权重,在测试集上评估整体准确率和每个类别的准确率。
模型导出
训练完成后导出 CPU 版 TorchScript 模型,供 C++ 端 LibTorch 加载:
python
model.eval() model = model.to('cpu') example_input = torch.rand(1, 3, 224, 224, dtype=torch.float32, device='cpu') with torch.no_grad(): traced_model = torch.jit.trace(model, example_input) traced_model = torch.jit.freeze(traced_model) traced_model.save("model_4classes.pt")导出后有一段验证代码,对比原模型和导出模型在同一输入下的输出差异,确保导出无损。
三、技术栈介绍
训练端
Python 3.x
PyTorch + TorchVision
数据加载用
ImageFolder+ConcatDataset+ 自定义TransformSubset模型导出用
torch.jit.trace+torch.jit.freeze
推理端
C++ 17
LibTorch(PyTorch C++ 版),CPU 推理
OpenCV,图像读取和预处理
Visual Studio 2022,编译为动态链接库
推理 DLL 的设计
推理部分封装为ClsInferenceModel类,采用 Pimpl 模式,头文件完全不包含 LibTorch 和 OpenCV,调用方不需要安装这两个库。DLL 对外只暴露:
构造函数:传入模型路径和设备选项
predict(imagePath, confidence):返回类别索引和置信度isValid()、getClassCount()、getClassNames()、getLastError()、reload()
内部用互斥锁保护forward(),保证多线程调用安全。所有 LibTorch 和 OpenCV 的依赖都锁在.cpp里,不会和调用方的库发生冲突。
界面端
Qt 6(Qt Widgets)
批量推理放到独立
QThread中执行,通过 Qt 信号槽把每张图的结果实时发回主线程进度条、结果表格、统计标签随结果实时刷新,界面不卡顿
表格支持失败行标红,便于快速定位读取失败的图像
结果导出为 UTF-8 编码的 txt,兼容中文文件名
部署结构
text
ImageClassificationSystem/ ├── ImageClassificationSystem.exe ├── ClsInferenceDLL.dll ├── model_4classes.pt ├── Qt6Core.dll / Qt6Gui.dll / Qt6Widgets.dll ├── platforms/qwindows.dll ├── torch.dll / torch_cpu.dll / c10.dll / ... └── opencv_world4xx.dll
全部依赖打包后可直接拷贝到其他 Windows 电脑运行,不需要安装 Python、CUDA 或 Visual Studio 运行时(VC++ 运行库建议随包附带)。
售价说明
系统售价:25
包含内容:
完整 Qt 界面工程源码
推理 DLL 工程源码(Visual Studio)
PyTorch 训练脚本
已训练好的
model_4classes.pt模型文件编译好的可执行程序和全部运行时依赖
使用说明文档
部署另算
部署费用根据实际情况单独报价,包括但不限于:
目标机器的环境配置和依赖安装
模型替换或重新训练
界面定制(改名称、改 Logo、改类别、改导出格式)
打包成安装程序
远程协助调试
长期维护和技术支持
具体价格和交付周期根据需求沟通确定。
其他需求增加 !
欢迎咨询任何问题!