水下鱼类物种识别(得分99.89)——FlyAI竞赛平台

水下鱼类物种识别(得分99.89)

1、数据预处理 

①查看图片数据,观察发现这些鱼类图片分辨率大多数都是很小的,我们可以从小分辨率开始逐步增大图像分辨率,通常可以从128开始

②自定义数据集划分,可以将训练集和验证集划分为8:2或者9:1,特别是数据量少时我们需要尽可能将训练集设置大一点

③数据增强:训练集数据增强使用AutoML的RandAugment可以防止过拟合,并且通常会比自己手工试数据增强效果好很多;验证集数据增强,训练发现直接使用Resize的方式会比先Resize再CenterCrop的效果要好,可能是CenterCrop会丢失一些信息 

2、选择baseline 

①可以考虑使用resnetxt-swsl系列或者efficientnet系列作为baseline,我这边使用的是resnetxt101-32x8swsl 

②实验可以发现efficientnet占用内存会相对大一点,efficientnet-b3占用内存和resnetxt101-32x8swsl就已经差不多大了,对于图片较大的数据集来说使用efficientnet系列效果会好点 

③使用efficientnet作为baseline学习率可以选择为0.005 ~ 0.01,使用resnetxt101-32x8swsl作为baseline学习率可以选择为0.0001 ~ 0.0005 

3、提分技巧 

①LabelSmoothingCrossEntropy:使用标签平滑损失函数可以防止过拟合,训练发现使用CrossEntropy泛化能力会相对较差,加上标签平滑泛化能力相对好一点,因子一般取0.1即可 

②ReduceLROnPlateau:训练发现使用ReduceLROnPlateau学习率调整技术可以使得loss下降更加平滑,一般将验证acc作为评判标准,patience选择3或者4 

③TTA:训练发现使用测试时间增强技术,可以稳定提分0.06 ~ 0.2分,只不过测试时间会加长很多,通常使用五切测试增强即可 

④模型融合:训练发现使用模型融合技术,可以提高测试效果,我这边用到的是resnetxt101-32x8swsl和efficientnet-v3进行融合

本文为作者在FlyAI平台发布的原创内容,采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议进行许可,转载请附上原文出处链接和本声明。
本文链接地址:https://www.flyai.com/n/131409

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章