难以置信的目标检测小妙招:多训练几个epochs,平均一下就能获得更好的模型...

点击上方“小白学视觉”,选择加"星标"或“置顶

重磅干货,第一时间送达

随着深度学习技术的成熟,设计新的算法在主流的目标检测数据集比如COCO上提升精度已经很难了,但总有一些涨点技巧,比如谷歌前几天公布的 简单粗暴“复制-粘贴”数据增广,简单又有效,让人措不及防。

今天要跟大家介绍一篇新文章 SWA Object Detection ,可能是最简单、计算成本最低、动手成本最低的。

同样的,这篇文章全文无公式、无算法流程图,不改模型结构,不增加模型复杂度、推断时间,也不对数据进行增广。但将其简单应用于主流的目标检测算法,可普遍在COCO数据集上获得 ~1 个AP的精度提升!而且神奇的是原始模型精度越高提升幅度越大。

该文昨天刚公布,作者信息:

难以置信的目标检测小妙招:多训练几个epochs,平均一下就能获得更好的模型..._第1张图片

作者来自澳大利亚昆士兰科技大学、昆士兰大学。

简单一句话介绍方法:将模型在数据集上多训练几个epochs,将多个epochs得到的checkpoints 进行简单平均,获得最终模型。该方法启发于 Stochastic Weights Averaging(随机权重平均,SWA,来自论文 Averaging weights leads to wider optima and better generalization. UAI, 2018),其本来是为了改进深度学习模型的泛化能力。

SWA理论认为平均多个SGD优化轨迹上的多个模型,最终模型泛化性能更好。如下图:

难以置信的目标检测小妙招:多训练几个epochs,平均一下就能获得更好的模型..._第2张图片

W1、W2、W3为模型优化过程中不同的checkpoint,SWA认为在其张成的空间中,中心点具有更好的泛化能力。故取checkpoint平均。

问题来了,训练多少个epoch再平均?如何调整学习率?

在SWA原理论中模型再训练时使用固定学习率或者循环余弦退火学习率。

循环余弦退火学习率调整示意图:

难以置信的目标检测小妙招:多训练几个epochs,平均一下就能获得更好的模型..._第3张图片

其实很难用理论回答,所以作者的做法很直接,多次实验,看结果总结规律。

作者使用Mask RCNN 在COCO上做了实验,固定学习率和循环余弦退火学习率调整都试了。

请看下表:

难以置信的目标检测小妙招:多训练几个epochs,平均一下就能获得更好的模型..._第4张图片

获得了很神奇的结果!checkpoints平均后获得了比之前训练路径上所有模型都更好的结果,循环余弦退火学习率调整获得的结果更好,bbox AP 和 mask AP都可以获得超过 1 个AP的提升!而且相比于6个、24个、48个checkpoints的平均,12是一个足够好的数字。

为验证此方法具有通用性,作者在不同的算法上进行验证。

将SWA用于Mask RCNN  与 Faster RCNN上的结果:

难以置信的目标检测小妙招:多训练几个epochs,平均一下就能获得更好的模型..._第5张图片

精度都有提升,而对于本身精度更高的Mask RCNN 提升更明显。

将SWA用于RetinaNet 与 FCOS 上的结果:

难以置信的目标检测小妙招:多训练几个epochs,平均一下就能获得更好的模型..._第6张图片

都获得了精度提升,原始模型精度越高,获得的提升越大!

将SWA用于YOLOv3 与 VFNet 上的结果:

难以置信的目标检测小妙招:多训练几个epochs,平均一下就能获得更好的模型..._第7张图片

提升依然很明显!

下图为Mask RCNN 使用SWA前后推断结果示例:

难以置信的目标检测小妙招:多训练几个epochs,平均一下就能获得更好的模型..._第8张图片

总结一下简单又神奇的SWA方法:

在传统的使用lrinilrend作为起始和结束学习率训练结束后,额外多训练12个epochs,每个epochs学习率由lrini变化到lrend,最后将这12个checkpoints平均,得到最终的模型。

论文地址:

https://arxiv.org/pdf/2012.12645.pdf

代码地址:

https://github.com/hyz-xmaster/swa_object_detection

期待这种简单的抗过拟合方法,能够在其他视觉任务上有效!

下载1:OpenCV-Contrib扩展模块中文版教程

在「小白学视觉」公众号后台回复:扩展模块中文教程即可下载全网第一份OpenCV扩展模块教程中文版,涵盖扩展模块安装、SFM算法、立体视觉、目标跟踪、生物视觉、超分辨率处理等二十多章内容。

下载2:Python视觉实战项目52讲

在「小白学视觉」公众号后台回复:Python视觉实战项目即可下载包括图像分割、口罩检测、车道线检测、车辆计数、添加眼线、车牌识别、字符识别、情绪检测、文本内容提取、面部识别等31个视觉实战项目,助力快速学校计算机视觉。

下载3:OpenCV实战项目20讲

在「小白学视觉」公众号后台回复:OpenCV实战项目20讲即可下载含有20个基于OpenCV实现20个实战项目,实现OpenCV学习进阶。

交流群

欢迎加入公众号读者群一起和同行交流,目前有SLAM、三维视觉、传感器、自动驾驶、计算摄影、检测、分割、识别、医学影像、GAN、算法竞赛等微信群(以后会逐渐细分),请扫描下面微信号加群,备注:”昵称+学校/公司+研究方向“,例如:”张三 + 上海交大 + 视觉SLAM“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进入相关微信群。请勿在群内发送广告,否则会请出群,谢谢理解~

难以置信的目标检测小妙招:多训练几个epochs,平均一下就能获得更好的模型..._第9张图片

难以置信的目标检测小妙招:多训练几个epochs,平均一下就能获得更好的模型..._第10张图片

你可能感兴趣的:(算法,python,机器学习,人工智能,深度学习)