一、实验要求
在计算机上验证和测试Pytorch卷积神经网络对树叶分类的效果,测试卷积神经网络的训练效果,同时查阅相关资料。
- 实验目的
1、掌握PyTorch的基本使用;
2、掌握PyTorch的卷积神经网络;
3、掌握PyTorch的图像分类训练流程;
三、实验内容
实验步骤
- 请对classify-leaves数据集,设计卷积神经网络,用train.csv做测试,test.csv做测试。
本来想训练了3个优秀的模型(ResNeSt+ResNeXt+DenseNet),最后进行集成,然后发现自己电脑跑不了就用了一个模型,发现结果还不错,我感觉最重要的一步就是对图片的处理,对数据进行增强,效果直接提升了许多。
描述:(叶子种类分类,总共176类,训练数据18353张图,测试数据8800张图片,每一类至少有50张图片)
- 数据增强:特别是CutMix和预测时候对test样本进行TTA(Test Time Augmentation);
- 模型:可使用表现较好的预训练过的模型;
- 优化器:使用AdamW(对于含有L2正则项的优化,如weight decay),学习率采用cosine学习率CosineAnnealingLR;
- 交叉验证:使用K折交叉验证。
四、实验总结
1数据增强对于数据量小的数据集训练特别重要
2由于GPU受限,对原始数据做了小裁减很大程度上影响了我最终的精度。
对于数据的增强采用cutmix也是很好的方法
3resnet和resnext模型对于图片分类是应用非常广的模型。
4 微调模型是我们常用的方法,将类似的数据集中训练好的模型直接迁移过来可以极大地节省训练的时间和消耗,同时初始值更加符合数据的分布,更容易获得全局最优解。
5 使用K-Fold交叉验证,然后进行模型结果投票,得到的结果更加准确。当然也可以使用多个不同类型的模型的结果进行投票,这样得到的结果往往误差更小。