一、为什么要训练三个模型
三个模型解决的是同一个任务,但网络结构不同:
- ResNet18:层数较浅,残差结构简单,推理速度快;
- ResNet50:网络更深,使用瓶颈残差块,参数量更大;
- DenseNet121:层与层之间密集连接,特征复用能力较强。
对比实验必须尽量控制变量。三个模型应使用相同的数据划分、输入尺寸、数据增强、类别顺序和评价方法。否则指标差异可能来自实验条件,而不是网络结构。
二、实验结果
本项目得到的测试结果如下:
| 模型 | 参数量/M | 准确率 | Macro-F1 | 正常召回 | 细菌性召回 | 病毒性召回 | 推理耗时/ms |
|---|---|---|---|---|---|---|---|
| ResNet18 | 11.18 | 0.8237 | 0.8239 | 0.8931 | 0.7820 | 0.8310 | 35.70 |
| DenseNet121 | 6.96 | 0.8068 | 0.8067 | 0.8805 | 0.7716 | 0.7958 | 86.20 |
| ResNet50 | 23.51 | 0.8017 | 0.8020 | 0.9245 | 0.7578 | 0.7535 | 84.10 |
从结果看,ResNet18 的准确率和 Macro-F1 最高,同时推理速度最快,因此被选为系统默认模型。
三、为什么模型更深却不一定更准确
“网络越深,效果越好”只在一定条件下成立。ResNet50 在本项目中没有超过 ResNet18,可能有以下原因:
- 数据集规模有限,深层模型更容易过拟合;
- 胸片类别之间的差异较细,数据质量和标签噪声可能成为主要瓶颈;
- 不同架构对学习率、冻结层数和训练轮数的最佳设置不同;
- 更大的模型需要更多训练数据和更充分的超参数搜索;
- 单次实验会受到随机初始化和数据顺序影响。
因此,选择部署模型不能只看网络深度或参数量。
四、为什么使用Macro-F1
准确率的计算方式是:
Accuracy = 正确预测数量 / 总样本数量当各类别样本数量不均衡时,准确率可能被数量最多的类别主导。Macro-F1 会分别计算每个类别的 F1,再取算术平均:
Macro-F1 = (F1_normal + F1_bacteria + F1_virus) / 3它给予三个类别相同权重,更适合观察模型是否只擅长某一个类别。
五、如何理解类别召回率
召回率表示某一类别的真实样本中,有多少被模型成功找出:
Recall = TP / (TP + FN)ResNet50 的正常类召回率达到 0.9245,但细菌性和病毒性肺炎召回率较低。这说明它更容易识别正常胸片,却可能漏掉更多肺炎样本。医疗辅助场景不能只追求某一个类别的高指标,需要综合观察各类别表现。
六、选择部署模型的原则
模型选择可以综合考虑:
- Macro-F1 和准确率;
- 重点类别召回率;
- 单张推理耗时;
- 参数量和内存占用;
- Grad-CAM 是否关注合理区域;
- 在真实部署环境中的稳定性。
本项目最终选择 ResNet18,是因为它在效果和效率之间取得了更好的平衡,而不是因为它名字更简单。
七、实验还可以怎样改进
更严格的实验可以让每个架构使用不同随机种子重复训练三至五次,并报告平均值和标准差。例如:
ResNet18 Macro-F1 = 0.824 ± 0.006还可以增加交叉验证、置信区间、ROC-AUC、PR 曲线以及错误样本分析。毕业设计如果时间有限,至少要保证三个模型的数据划分和评价流程一致。
八、总结
训练多个模型的目的不是凑数量,而是通过受控实验回答“哪种架构更适合当前任务”。本实验说明,参数更多、网络更深并不必然带来更好的结果,最终模型应依据效果、速度和风险共同选择。
参考标签
ResNet18ResNet50DenseNet121模型对比深度学习胸片分类