用 ResNet 知识蒸馏完成原始图像分类

· 技术 · Python / PyTorch / ResNet / Knowledge Distillation / EuroSAT

译自英文 · 可对照原文勘误 · 查看英文原文

知识蒸馏实验结果

我做了一个原始图像分类实验,对比未经增强的 ResNet-18、加入数据增强的 ResNet-50 教师模型,以及同时使用增强和知识蒸馏的 ResNet-18。

数据集与设置

数据集使用 EuroSAT。我选择 EuroSAT_MS.zip 中的多光谱 TIFF 文件,其中保留了原始数值范围内的全部 13 个 Sentinel-2 波段。所有实验使用相同的 8:2 训练集与测试集划分。

基线是针对 32×32×13 输入修改过的 ResNet-18,不使用数据增强。ResNet-50 在相同数据上很快过拟合:训练准确率达到 98%,测试准确率只有约 85%。加入随机翻转等数据增强后,教师模型的测试准确率提升到 93.09%。

最后,我从头初始化另一个 ResNet-18,使用 ResNet-50 的软标签和真实硬标签共同计算损失。训练 10 个 epoch 后,测试准确率达到 96.65%。

网络训练轮数测试准确率
ResNet-18 基线1089.57%
ResNet-50 教师模型2093.09%
ResNet-18,蒸馏并增强1096.65%
ResNet 实验训练曲线

这个结果说明,大网络不一定是最适合部署的模型。在这组实验里,教师模型的软预测比单独使用硬标签给小模型提供了更好的训练信号。

GitHub 上的代码与更多细节。