本文记录了基于深度学习构建一个MRI图像AI滤波模型,训练及集成到测试应用的过程。
环境#
训练环境#
数据预处理,训练及模型输出及转换都使用Python脚本完成
| 软件 | 版本 |
|---|---|
| Python | 3.9 |
| PyTorch | 2.6.0+cu118 |
| onnx | 1.17.0 |
| pytorch_msssim | 1.0.0 |
| numpy | 最新即可 |
| scipy | 最新即可 |
| pandas | 最新即可 |
| matplotlib | 最新即可 |
生产环境#
实际应用是WPF应用程序,通过OnnxRuntime加载onnx模型用于推理,Onnx文件包含模型架构及参数,但是不包含训练相关的任何信息,由于PyTorch仅保存模型权重,因此Onnx文件大小没有多大变化,如果需要减小模型大小,需要导在导出时应用量化、剪枝、优化等技术
使用量化技术,模型大小从136MB减小到42MB,这个大小对于部署是可接受的
| 软件 | 版本 |
|---|---|
| .NET Framework | 4.8 |
| fo-dicom | 4.0.8 |
| Microsoft.ML.OnnxRuntime | 1.23.2 |
模型设计#
模型结构#
graph TD A[图像输入(单通道12位深)] --> B[归一化] B --> C[下采样] C --> D[上采样] D --> E[输出]
数据标注#
使用三方滤波对原图进行滤波并保存,与原图一一对应,用于后续学习。
此步骤至关重要,标注的准确性会影响到模型的预测效果。
训练#
graph TD A[准备数据] --> B[构建模型] B --> C[编译模型(设置优化器,学习率和损失函数)] C --> D[开始训练] D --> E[评估损失] E --> F[保存检查点] F --> G[保存模型] G --> H[转为Onnx格式]
集成到应用#
流程#
DICOM的处理要与训练时的预处理一致,大致流程如下:
graph TD A[DICOM图像读取] --> B[调整图像尺寸] B --> C[显示原图] C --> D[加载onnx模型] D --> E[调用onnx推理,对原图滤波] E --> F[滤波后图像恢复到原图原来尺寸并显示]
演示#
