目标检测攻克难点秘籍系列笔记

目前两种方向:更好的基础网络 & 融合不同卷积层的特征叠加
现存的一些问题:
(1)小目标物体的检测(如小于30像素的目标物体)、遮挡面积较大的目标以及区分图像中与目标物体外形相似的非目标物体等问题;
(2)实时性检测与处理
(3)提高小数据量训练的检测效果
(4)很难获取大量的监督数据或数据的标准成本过高,进而导致缺少用于网络训练的样本数据

秘籍一. 模型加速之轻量化网络

https://mp.weixin.qq.com/s/yNNeKIu0ZnGqSEZ2_3r-gg

  1. SqueezeNet:压缩再扩展,SqueezeNet精心设计了一个压缩再扩展的模块,有效降低了卷积计算量;
  2. MobileNet:深度可分离 v1 v2 v3,MobileNet 系列则发挥了深度可分离卷积的优势,提升了卷积计算的效率。
  3. ShuffleNet:通道混洗,v1 v2 ,ShuffleNet系列更进一步,在分组卷积的思想上提出了通道混洗操作,避免了大量1×1卷积的操作,可谓经典。

秘籍二. 非极大值抑制与回归损失优化之路

https://mp.weixin.qq.com/s/y5IQNmS5ZuIuafQQeL3nfw
目标检测主要的任务:1)对象是什么?2)对象在哪里?回归损失问题就是探讨如何更好地学习对象在哪里.当然最近anchor free的方法有很多,但是主流应用上目前还是基于anchor的方式
1、NMS:非极大值抑制优化
缺点有:
(1)将得分较低的边框强制性地去掉,如果物体出现较为密集时,本身属于两个物体的边框,其中得分较低的也有可能被抑制掉,降低了模型的召回率;
(2)速度:NMS的实现存在较多的循环步骤,GPU的并行化实现不是特别容易,尤其是预测框较多时,耗时较多。
(3)在一些情况下,得分高的边框不一定位置更准;
(4)阈值难以确定。过高的阈值容易出现大量误检,而过低的阈值则容易降低模型的召回率,超参很难确定。

1.1、Soft NMS:抑制得分
SoftNMS算法对于IoU大于阈值的边框,没有将其得分直接置0,而是降低该边框的得分。
Soft NMS的计算复杂度与NMS相同,是一种更为通用的非极大值抑制方法,可以将NMS看做Soft NMS的二值化特例。
Soft NMS优缺点分析:
优点:
(1)Soft-NMS可以很方便地引入到object detection算法中,不需要重新训练原有的模型、代码容易实现,不增加计算量(计算量相比整个object detection算法可忽略)。并且很容易集成到目前所有使用NMS的目标检测算法。
(2)Soft-NMS在训练中采用传统的NMS方法,仅在推断代码中实现soft-NMS。作者应该做过对比试验,在训练过程中采用soft-NMS没有显著提高。
(3)NMS是Soft-NMS特殊形式,当得分重置函数采用二值化函数时,Soft-NMS和NMS是相同的。Soft-NMS算法是一种更加通用的非最大抑制算法。

缺点:
Soft-NMS也是一种贪心算法,并不能保证找到全局最优的检测框分数重置。除了以上这两种分数重置函数,我们也可以考虑开发其他包含更多参数的分数重置函数,比如Gompertz函数等。但是它们在完成分数重置的过程中增加了额外的参数。

1.2 Softer NMS:加权平均
NMS与Soft NMS算法都使用了预测分类置信度作为衡量指标,但分类置信度和定位置信是非正相关的。NMS只能解决分类置信度和定位置信度都很高的,但是对其它三种类型:“分类置信度低-定位置信度低”,“分类置信度高-定位置信度低”,“分类置信度低-定位置信度高“都无法解决。
Softer NMS对于IoU大于设定阈值的边框坐标进行了加权平均,希望分类得分高的边框能够利用到周围边框的信息,从而提升其位置的准确度。

1.3 IoU-Net:定位置信度
IoU-Net提出了一个IoU的预测分支,解决了NMS过程中分类置信度与定位置信度之间的不一致,可以与当前的物体检测框架一起端到端地训练,在几乎不影响前向速度的前提下,有效提升了物体检测的精度

2 回归损失函数优化:IOU系列损失函数
对于有先验框的目标检测,位置是通过学习给定的先验框和真实目标框的距离来进行预测。而这个距离的刻画主要通过距离公式来度量,比如曼哈顿距离L1和欧式距离L2。
利用常见的L1和L2距离公式来刻画IoU存在缺陷,主要原因还是距离度量将各个点孤立来进行,而IoU刻画的是整体的重合度问题。
2.1 IoU
IoU可以反映预测检测框与真实检测框的检测效果。还有一个很好的特性就是尺度不变性,也就是对尺度不敏感(scale invariant), 在regression任务中,判断predict box和gt的距离最直接的指标就是IoU。(满足非负性;同一性;对称性;三角不等性)
缺点:
(1)如果两个框没有相交,iou=0,无梯度传回,无法训练;
(2)IoU无法精确的反映两者的重合度大小,下图IOU相同
目标检测攻克难点秘籍系列笔记_第1张图片
2.2 GIoU:克服iou相同时问题
GIoU不仅关注重叠区域,还关注其他的非重合区域
2.3 DIoU:克服IoU、GIoU读相同问题
将目标与anchor之间的距离,重叠率以及尺度都考虑进去
2.4 CIOU
DIOU基础上,一个好的回归框损失应该考虑哪几个点?作者给出了答案,三个要素:重叠区域,中心点的距离,宽高比。
DIoU考虑了重叠区域和中心点距离问题,还剩下宽高比没考虑,因此后续提出了CIoU损失。

秘籍三. 多尺度检测

https://mp.weixin.qq.com/s/w70kniQeew_xTxfH6UQt9w
传统卷积网络通常采用从上到下的单行结构。对于大物体而言,其语义信息将出现在较深的特征图中;而对于小物体,其语义信息出现在较浅的特征图中,随着网络的加深,其细节信息可能会完全消失。
小尺度物体由于其尺寸较小,可利用的特征有限,较难检测。通常认为绝对尺寸小于32×32的物体,可以视为小物体或者物体宽高是原图宽高的1/10以下,可以视为小物体。当前算法对小物体不友好主要体现在以下方面:

  • 过大的下采样率:假设当前小物体尺寸为15×15,一般的物体检测中卷积下采样率为16,这样在特征图上,过大的下采样率使得小物体连一个像素点都占据不到。
  • 过大的感受野:在卷积网络中,特征图上特征点的感受野比下采样率大很多,导致在特征图上的一个点中,小物体占据的特征更少,会包含大量周围区域的特征,从而影响其检测结果。
  • 语义与空间的矛盾:当前检测算法,如Faster RCNN,其Backbone大都是自上到下的方式,深层与浅层特征图在语义性与空间性上没有做到更好的均衡。
  • SSD一阶算法缺乏特征融合:SSD虽然使用了多层特征图,但浅层的特征图语义信息不足,没有进行特征的融合,致使小物体检测的结果较差。

较为通用的提升多尺度检测的经典方法有:

  • 降低下采样率与空洞卷积可以显著提升小物体的检测性能;
  • 设计更好的Anchor可以有效提升Proposal的质量;
  • 多尺度的训练可以近似构建出图像金字塔,增加样本的多样性;
  • 特征融合可以构建出特征金字塔,将浅层与深层特征的优势互补。

下面将详细介绍:
1 降低下采样率与空洞卷积:直接去除掉Pooling层降低下采样率,会导致减小后续层的感受野,因此使用空洞卷积可以在保证不改变网络分辨率的前提下增加网络的感受野。
2 多尺度训练(Multi Scale Training, MST):训练时从多个尺度中随机选取一种尺度,将输入图片缩放到该尺度并送入网络中,简单有效的trick方法。
3.优化Anchor尺寸设计:Anchor通常是多个不同大小与宽高的边框,这个大小与宽高是一组超参数,需手动配置。行人标签宽高比通常为0.41。Anchor设计不合理,会给模型收敛带来较大的困难,影响模型的精度,甚至不会收敛。可以从以下两个角度设计一组好的Anchor:
(1)统计实验,手工设计
(2)边框聚类:如YOLO采用的Anchor聚类方法。
4.深层和浅层特征融合:层多-感受野增加-语义丰富,但小物体特征可能会丢失。(列举6种方式示例)
5.SNIP(尺度归一化):MST改进版,只对size在指定范围内的目标回传损失,解决映射迁移(Domain Shift)的误差。
6.TridentNet(三叉戟网络):将3种不同的感受野网络并行化

秘籍四. 数据增强

https://mp.weixin.qq.com/s/QzAWz_7Jooi2nBy4bK91AA
目前,数据增强主要方法有:

  • 基于基本图像处理的数据增强、
  • 基于几何与光度转换的数据增强、
  • 基于深度学习的数据增强
    1.基于基本图像处理的数据增强:几何变换、翻转变换、裁剪、旋转 / 反射变换、缩放变换、移动、噪声注入、色彩空间、色彩空间转换(总结为几何变换与颜色变换)
    2.基于几何和光度转换的数据增强:内核过滤器(锐化模糊等)、混合图像、随机擦除(删除图像一部分)
    3.基于深度学习的数据增强:特征空间增强、对抗生成(Adversarial Training)、基于GAN的数据增强(GAN-based Data Augmentation)、神经风格转换。
    4.相关实践工作:…

秘籍五. 解决样本不均衡问题

https://mp.weixin.qq.com/s/kbrRvv-27KmCLxe4bWjVYA
定义:指在训练的时候各个类别的样本数量不均衡,由于检测算法各不相同,以及数据集之间的差异,可能会存在正负样本、难易样本、类别间样本这3种不均衡问题。一般在目标检测任务框架中,保持正负样本的比例为1:3(经验值)
one-stage的精度不如two-stage的精度,一个主要的原因是训练过程中样本极度不均衡造成的。
主要有:

  • 正负样本不均衡
  • 难易样本不均衡
  • 类别间样本不均衡

解决样本不均衡问题主要有2种思路:数据角度和算法角度
近年来,不少的研究者针对样本不均衡问题进行了深入研究,比较典型有:
1.OHEM:在线困难样本挖掘
2.S-OHEM:基于loss分布采样的在线困难样本挖掘
3.Focal Loss:专注难样本(只针对分类损失)
4.GHM:损失函数梯度均衡化机制
以上各种的总结:…

秘籍六. Anchor-Free

https://mp.weixin.qq.com/s/CFw9h8Wri0UTWUTCAgYtLA
Faster RCNN引入了Anchor作为先验框,才将实时的物体检测变为可能。

  • 对于二阶的算法,第一阶段RPN会对Anchor进行有效的筛选,生成更有效、精准的Proposal,送入第二个阶段,最终得到预测的边框;
  • 一阶的算法相当于把固定的Anchor当做了Proposal,通过高效的特征与正、负样本的控制,直接预测出了物体。

但使用Anchor通常会面临如下3个问题:

  • 正、负样本不均衡:我们通常在特征图所有点上均匀采样Anchor,而在大部分地方都是没有物体的背景区域,导致简单负样本数量众多,这部分样本对于我们的检测器没有任何作用。

  • 超参难调:Anchor需要数量、大小、宽高等多个超参数,这些超参数对检测的召回率和速度等指标影响极大。此外,人的先验知识也很难应付数据的长尾问题,这显然不是我们乐意见到的。

  • 匹配耗时严重:为了确定每个Anchor是正样本还是负样本,通常要将每个Anchor与所有的标签进行IoU的计算,这会占据大量的内存资源与计算时间。

  • 以这3个问题为出发点,近期出现了大量Anchor-Free的算法。最早的Anchor-Free思想出现于DenseBox(2015),及YOLOV1。
    几个代表性工作来领略Anchor-Free方法:
    1.CornerNet:左上角点+右下角点的检测
    2.CenterNet(Objects as Points):检测中心点 + 边框回归
    3.FCOS :检测中心点 + 到框的4个距离

    无论哪种方法, 其实都是着重于如何更有效的表达“box”这个概念。cornernet用上下两个角点, centernet加上了中心点,,grid rcnn用九个点,,objects as points用1个点+hw,extreme net用四个极值点+中心点,FCOS和densebox很像,多加了一个center-ness branch。从整体速度/精度平衡上看,objects as points做到了最优的速度/精度平衡, 而且思路很简单。
    展望:Anchor-free 的方法由于网络结构简单,对于工业应用来说可能更加友好。对于方法本身的发展,我感觉一个是新的 instance segmentation pipeline,因为 anchor-free 天生和 segmentation 更加接近。一个是向两阶段或者级联检测器靠拢,进一步提高性能,如果能在不使用 RoI Pooling 的情况下解决 feature align 问题的话,还是比较有看头的。另外还有一个是新的后处理方法,同时也期待看到 anchor-free 的灵活性带来新的方法和思路。

你可能感兴趣的:(目标检测攻克难点秘籍系列笔记)