【深度学习】基于相似性图片分类的病虫害识别冠军方案详解-2023长三角(芜湖)人工智能视觉算法大赛...

编辑丨极市平台

导读

 

回顾整个竞赛过程,首先最重要的是数据分析,其次是选择合适的codebase,能够包含足够多的预训练模型使用。 

一、介绍

cuizhi团队在本次2023长三角(芜湖)人工智能视觉算法大赛——基于相似性图片分类的病虫害识别赛道获得第一名的成绩,分类f-score0.9724,性能分171.72,综合总分0.9738。

团队成员擅长图像算法,多模态算法,完成过多个图像分类,分割,检测等算法子方向的工业级项目。过往在极市平台上获得极市计算机视觉开发者榜单大赛,第二届珠港澳人工智能算法大赛,高通人工智能创新应用大赛多个赛道的冠亚军名次。

二、赛题分析

本次比赛包含101141张训练集,5325张测试集,245张样例集。样例集图片用于在开发环境中调试代码。图片为手持设备在真实环境下采集得到,包含多种病虫害植物样本,部分样本如下图所示

7e90cd6d13c53b956ceb88d25e2536b3.png

比赛评估算法效果时会综合考虑分类精度和测试环境下的运行速度,前者采用F-Score进行评估,后者则采用FPS指标,需要在含有NVIDIA T4的Linux平台上进行测试,FPS>100时性能分为满分。总分数由两者加权得到,公式如下。

总分数= F1-Score* 0.95+算法性能值* 0.05

可以看到相比于FPS,测试规则会更倾向于具有更高F-Score的算法结果,因此如何提升分类精度是相对来说最重要的。

首先是分析比赛数据,本次比赛样本类别数为144类,通过对训练集进行统计可看到各个类别的样本数是极其不均的,样本数最少的类别仅有4张,样本数最多的类别有6591张,柱状图分布如下所示。因此在算法设计中需要关注样本不均对算法设计的影响,同时也需要选择合适的训练策略规避样本不均衡的问题。

10ddae483c7e93bf0b89215596b24366.png

三、赛题思路

模型结构方面主要考虑轻量级模型,能够最大限度同时保障精度和效率,除了对比经典的CNN模型之外,我们还对比了当前sota的模型结构和transformer-based模型。为了公平对比模型在实际测试环境的推理效率,我们在开发环境中对比了EfficientNet,ConvNext及Swin Transformer的推理效率,结果如下

c7d1430f3d1c50b560976ec6a575b8ea.png

最终综合预训练模型在ImageNet上的精度及硬件平台上推理的效率及兼容性,我们选择EfficientNet-B3作为比赛中选用的backbone。

模型数据增强方面,除了常规的随机翻转及颜色增强等策略,我们还引入了Random Erasing及AutoAugment两种额外的数据增强,用于模型鲁棒性的提升。

Random Erasing将图片内的某块区域填充相同的像素值,从而将该区域的图片信息遮盖,强迫模型学习该区域外的特征进行识别,在一定程度上避免模型陷入局部最优,从而提高模型的泛化能力。

f43c7142f2ccbdc74ad31afb4d866e95.png

数据增强是提高图像分类器精度的有效技术。但是当前的数据增强实现是手工设计的。在AutoAugment论文中,作者提出通过自动搜索改进数据增强策略。论文设计了一个搜索空间,其中一个策略由许多子策略组成,每个小批量的每个图像随机选择一个子策略。子策略由两个操作组成,每个操作都是图像处理功能,例如平移,旋转或剪切,以及应用这些功能的概率。通过使用搜索算法来找到最佳策略,使得神经网络在目标数据集上产生最高的验证准确度。我们直接复用了论文在ImageNet数据集上搜索出来的augmentation policy。

41f2cbbc8d3bb81b5bbd6a8de8d1d665.png

训练期间的loss选择了focal loss,类别样本数量不均衡,通常会影响分类算法的效果。这个损失函数是在标准交叉熵损失基础上修改得到的。可以通过减少易分类样本的权重,使得模型在训练时更专注于难分类的样本。

b0716dc86f151ac93d2055afe6879e5c.png

训练期间,我们采用了多阶段的训练方式,通过在训练过程中给不同层级的模型参数设置不同大小的学习率,预训练模型在微调的过程中,backbone参数因为直接从预训练模型上继承,初始学习率可以采用标准值,head部分则采用10x的lr作为初始学习率。我们采用第一轮训练的模型作为预训练权重完成第二轮迭代,此时freeze backbone的参数,对head的参数进行微调。

在模型第二轮微调时,同时还借鉴了FixRes论文的方法,FixRes是Facebook在19年提出的一个应用于图像分类的简单优化策略,论文名是Fixing the train-test resolution discrepancy,在这篇论文中作者发现了在ImageNet数据集上的分类模型中常采用的数据增强会导致训练和测试时的物体分辨率(resolution)不一致,继而提出FixRes策略来改善这个问题:常规训练后再采用更大的分辨率对模型的classifier或最后的几层layers进行finetune。利用FixRes这个简单的策略对ImageNet数据集上的SOTA进行优化,FixRes都达到了更高的accuracy.模型选择、数据处理方式、训练技巧等模型训练测试过程中的整体流程方法。

7143ec97e81c40c46e235355e1134145.png

在部署阶段我们采用了以下常规的技巧:1.减均值,除以标准差融合到onnx中间表示,利用推理库高效实现;2.图像resize可以用onnx Upsample替代,然后用TensorRT实现 3.使用常规的fp16模式进行推理即可得到满足需求的推理效率;4.如果需要进一步提升模型输入尺寸,可以采用int8模式结合校准样本进行部署;

四、总结

最终我们在精度跟速度上都取得了第一的成绩,回顾整个竞赛过程,首先最重要的是数据分析,其次是选择合适的codebase,能够包含足够多的预训练模型使用。部署阶段的工程能力也很重要,在开发环境中对潜在的候选模型都做TensorRT转换和推理,能够最直观的对比出每个模型的推理效率,同时也可以观察fp16或int8精度下的精度掉点情况,帮助模型选型节省了不少时间。

82ce45258480d879a63af08aae81fd1b.jpeg

 
 
 
 
 
 
 
 
 
 
 
 
往期精彩回顾




适合初学者入门人工智能的路线及资料下载(图文+视频)机器学习入门系列下载机器学习及深度学习笔记等资料打印《统计学习方法》的代码复现专辑
  • 交流群

欢迎加入机器学习爱好者微信群一起和同行交流,目前有机器学习交流群、博士群、博士申报交流、CV、NLP等微信群,请扫描下面的微信号加群,备注:”昵称-学校/公司-研究方向“,例如:”张小明-浙大-CV“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进入相关微信群。请勿在群内发送广告,否则会请出群,谢谢理解~(也可以加入机器学习交流qq群772479961)

14dafe62425c779713e22f706b860d63.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值