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

重磅干货,第一时间送达本文转自|磐创AI

特约作者 : Slumbers

最近正好在做检测项目,相对于分类任务而言,检测任务的优化策略少之又少,最近阅读了 @李沐老师 团队新出的论文Bag of Freebies for Training Object Detection Neural Networks中,提到了一些在不牺牲模型性能的前提下提升目标检测模型的tricks。

这篇论文我读完之后觉得CNN训练分类任务中可以执行的优化策略有不少重叠的地方,包括学习率热身、Label smoothing、 Cosine learning rate decay等都是可以在目标检测中使用的tricks,实验证明这些在分类上的tricks在目标检测领域也非常有效。

两篇论文都提到的一些可以使用的技术: mix up , label smoothing, cosine learning rate, warm up。除此之外,这篇论文还提到了一些单独增对检测任务的tricks如数据增量策略,跨卡BN和random shapes traning等。

Mix up

Mix up最早是用于解决对抗扰动的方法。是数据增量(data augmentation)的一种方法,每次随机取两个样本点  , 然后按照如下的混合方式生成一个新的样本点:

 , 是从  分布中随机生成的。在mixup training中,只使用新的样本  进行训练。

Label Smoothing

Label Smoothing可以看作是一种正则化方法,对于ground truth(也就是标注数据)的分布进行混合。原始的ground truth 分布记为  ,经过label Smoothing处理后的分布为:

其中  是一个小常量,而  是分类类别。这样处理可以减少模型对于标签的过度信赖,对于标签不够精确的情况有较好的效果。

Cosine learning rate deacy

Step lr decay在每次切换学习率的时候容易引起震荡,cosine lr decay会更加平滑。具体做法是,假设batch的总迭代次数是T(忽略学习率热身阶段),初始学习率为  ,那么在每次 t, 将学习率设为:

这个lr decay tensorflow和pytorch都是有现成的可用~一行可以搞定(下面列举的是pytorch版本):

scheduler = CosineAnnealingLR(optimizer, T_max=epoch_num)

Warm Up

训练初期由于离目标较远,一般需要选择大的学习率,但是使用过大的学习率容易导致不稳定性。所以可以做一个学习率热身阶段,在开始的时候先使用一个较小的学习率,然后当训练过程稳定的时候再把学习率调回去。比如说在热身阶段,将学习率从0调到初始学习率。举个例子,如果我们准备用m个batches来热身,准备的初始学习率是  ,然后在每个batch  ,将每次的学习率设为 

最近在跑pytorch版本的mask rcnn,warm up虽然在官方pytorch版本中没有实现,但是在mask rcnn中已经提供实现啦,可以参见:https://github.com/facebookresearch/maskrcnn-benchmark/blob/master/maskrcnn_benchmark/solver/lr_scheduler.py

下面是单独对检测任务可以考虑的一些点:

数据增量策略

主流的数据增量方法包括几何变化(剪切翻转等)和色彩抖动(色彩对比度等)。对于目标检测来说,基于faster rcnn这种基于ROI的检测方法,因为本身检测的第一阶段已经生成了许多重复的候选区域,所以在数据增量时并不需要再去做几何变换。(本文末最后的实验表格也显示,data augmentation对于YOLO等单阶段检测很重要,对于Faster-RCNN影响不大)

Synchronized Batch Normalization

现有的标准BN是基于单GPU的,也就是说每个GPU上的样本进行了归一化,实际上的bathc-size变小了。对于分类任务而言,影响不大,但对于检测任务而言会对表现造成一定影响。使用Synchroinzed Batch Normalization(也就是垮卡BN)可以解决这个问题。这一点李沐老师在跨卡同步 Batch Normalization 中解释的很详细了。

Random Shapes Training

对于像YOLO这样的单阶段检测器来说,为了减小内存占用,一般会使用固定shape的图片进行训练。为了减小过拟合,可以使用Random shapes training。比如说,以YOLO例在训练过程中每隔多少个epoch就随机的{320, 352, 384, 416, 448, 480, 512, 544, 576, 608}中选择一个新的图片分辨率。这个技术在YOLO v3中就用过了。

最后论文中附上了上述tricks的效果~:

好消息,小白学视觉团队的知识星球开通啦,为了感谢大家的支持与厚爱,团队决定将价值149元的知识星球现时免费加入。各位小伙伴们要抓住机会哦!

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

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

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

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

下载3:OpenCV实战项目20讲

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

交流群

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

目标检测任务中的训练宝典 |实用技巧相关推荐

  1. 深度学习评估指标之目标检测——(yolov5 可视化训练结果以及result.txt解析)

    1.机器学习模型评估指标总结 机器学习的数据集一般被划分为训练集和测试集,训练集用于训练模型,测试集则用于评估模型.针对不同的机器学习问题(分类.回归.排序.序列预测等),评估指标决定了我们如何衡量模 ...

  2. 算法的trick_目标检测算法中的常见trick

    目标检测算法中的常见trick 最近忙着打比赛,感觉看论文也很难静下心来了.基本上看得相当匆忙,主要还是以应用为主.上周压力比较大,没有来得及更新,感觉再不更就说不过去了. 因为比赛比较追求perfo ...

  3. 目标检测扩(六)一篇文章彻底搞懂目标检测算法中的评估指标计算方法(IoU(交并比)、Precision(精确度)、Recall(召回率)、AP(平均正确率)、mAP(平均类别AP) )

    ​ 基本在目标检测算法中会碰到一些评估指标.常见的指标参数有:IoU(交并比).Precision(精确度).Recall(召回率).AP(平均正确率).mAP(平均类别AP)等.这些评估指标是在评估 ...

  4. 目标检测项目中面对高分辨率图像的滑动窗口技术(二)(代码开源,超简便API封装,直接调用进行切图及保存)

    在上篇博客简单介绍了滑动窗口技术以及切图程序的使用文档,这篇展示对子图进行反向拼接到原图上(用于对测试集子图预测后结果汇总到原图上)的程序代码以及使用说明. 所需模块:numpy.pandas.mat ...

  5. retinanet 部署_RetinaNet: Focal loss在目标检测网络中的应用

    介绍 RetinaNet是2018年Facebook AI团队在目标检测领域新的贡献.它的重要作者名单中Ross Girshick与Kaiming He赫然在列.来自Microsoft的Sun Jia ...

  6. 目标检测任务中常用的数据集格式(voc、coco、yolo)

    在目标检测任务中,常见的数据集格式有三种,分别为voc(xml).coco(json).yolo(txt). 一.Pascal VOC Pascal VOC数据集是目标检测的常用的大规模数据集之一,从 ...

  7. 目标检测模型中NMS、soft-NMS、softer-NMS的原理、LNMS文本检测系列(python代码实现)

    非极大值抑制NMS的作用: 是目标检测框架中的后处理模块,主要用于删除高度冗余的bbox. ?一.NMS[参考] 非极大值抑制NMS的过程: 根据置信度得分进行排序: 选择置信度最高的边界框添加到最终 ...

  8. 目标检测算法中ROI提取方法比较+源码分析

    本文主要介绍ROI提取结构在目标检测框架中的作用,并结合源码,理解它的实现方式.包含的算法有:ROI-pooling,ROI-align,Deformable-psroi-pooling. 目前,主流 ...

  9. 『论文阅读笔记』目标检测模型中的性能评价方式-IOU、precision/recall、mAP、PR、Fps!

    目标检测模型中的性能评估标准-IOU.precision/recall.mAP.PR.Fps! 文章目录 一.交并比IOU 二.精确率(precision)和召回率(recall) 三.P-R(pre ...

最新文章

  1. k8s 使用helm部署dashboard
  2. 轻松获取LAMP环境的配置参数
  3. GCC 编译 --sysroot
  4. 我,27岁,程序员,今年无情被辞:该转行还是降薪和年轻人抢饭碗?
  5. Excel: 如何对Excel2007工作表做统一编辑修改
  6. 分享一款Web压力测试工具Pylot
  7. Python set 计算集合的并集,交集,差集以及对称集(补集)
  8. 如何读写8bit rgb彩色png图像
  9. Java代码简洁-validation参数校验
  10. 安卓古筝软件_新手如何自学乐器|零基础自学小提琴/吉他/电子琴/尤克里里/竖笛/电子鼓软件超详细测评+推荐...
  11. iPhone X(10)屏幕分辨率与适配
  12. 【Java】插入排序、希尔排序详解
  13. 相控阵天线分析综合、设计与测试
  14. 汉语编程企业管理应用软件可行性研究报告
  15. 「干货」PCB设计妙招,Altium Designer快速调整丝印和修线的方法
  16. 错误代码为 0x8002801c
  17. 审计署计算机中级培训课件,审计署计算机中级培训--u8操作精炼
  18. Microsoft onenote 2003 下载
  19. 以太坊合并马上来了 普通人能做点什么?
  20. 【分布计算环境笔记】10 SOA、网格计算、云计算与P2P技术

热门文章

  1. 你想见的大神都来AI ProCon 2019了,优惠票限时抢购开启!
  2. 10亿美元续命!OpenAI获微软投资,意在通用人工智能?
  3. AutoML前沿技术与实践经验分享 | 免费公开课
  4. 深度学习难,这本书让你轻松学深度学习
  5. 特斯拉全新自动驾驶芯片最强?英伟达回怼,投资者用脚投票
  6. iPad mini时隔四年更新,搭载A12芯片,起售价2999
  7. 200行代码,一行行教你自制微信机器人
  8. Mybatis基础知识点:trim标签的使用
  9. Nginx为什么快到根本停不下来?
  10. 【廖雪峰python入门笔记】raw 字符串和多行字符串表示