性能最强的目标检测算法整理与比较总结

之前在 大盘点 | 性能最强的目标检测算法 的文章中,看到了截至到目前的mAP 最高的目标检测算法。博主把这7篇论文看了,并大致进行了整理总结(下面7个链接为论文笔记)。

论文笔记:

  • SNIPER: Efficient Multi-Scale Training(2018.05.23)
  • Scale-Aware Trident Networks for Object Detection(TridentNet)(2019.01.07 )
  • Hybrid Task Cascade for Instance Segmentation(2019.01.22)
  • NAS-FPN: Learning Scalable Feature Pyramid Architecture for Object Detection(2019.04.16)
  • CornerNet-Lite: Efficient Keypoint Based Object Detection(2019.04.18)
  • Cascade R-CNN: High Quality Object Detection and Instance Segmentation(2019.06.24)
  • Learning Data Augmentation Strategies for Object Detection(2019.06.26)

要知道衡量目标检测最重要的两个性能就是精度和速度,特指 mAP 和 FPS。其实现在大多数论文要么强调 mAP 很高,要么就是强调 mAP 和 FPS 之间 Trade-off 有多好。本文就来盘点总结这些 mAP 最高的目标检测算法特点以及这些分别是在什么样的基础上进行什么样的改进和提升。

mAP 切入点 问题 算法思想 改进点
SNIPER 47.6 SNIP 现研究表明再进行多尺度训练的时候,实际上忽略一部分过大或者过小的目标是比较有利的。那这样的话,作者就认为我们每次都将全部图片都进行上下采样得到多尺度金字塔实际上没有必要。我们实际上可以用包围小目标的较小尺寸的图片碎片来进行训练和测试就可以加速训练和测试过程(SNIP的算法)。但在使用小图片来识别小目标的时候,由于小图片的上下文信息比较少,一般来说会提高假阳性率。而且SNIP训练太慢了,每个尺度的图片的每个像素都要参与训练。
SNIPER主要讨论了在对大尺寸图片进行裁剪时,裁剪出的碎片的进一步处理问题。
作者提出了一种新的训练思路:先粗略定位一下正负例所在的区域,然后以该区域内的像素信息作为卷积网络的输入,再精确检测出该区域内的所有正例和负例。 数据预处理
(在RPN生成阶段,添加了对正负chips的选取过程,由此去除了训练样本中大量的背景,有效的节省了存储空间,提高了训练速度)
TridentNet 48.4 多尺度问题 尺度问题一直是目标检测领域比较核心的待解决的问题。目前,对于这个问题还没有比较彻底的解决思路,有两种比较好的方法来处理这一问题:图像金字塔、特征金字塔。抛除这些结构上的因素,具体到DNN的设计上,影响DNN对尺度处理能力的因素主要有两点:较深的层一般感受野越大,因此处理大目标的能力较强。过多的下采样层会损伤网络对小目标的检测能力。该文章探究了另一个可能的关键因素对目标检测的影响,即感受野的大小问题。 提出了一种简单的物体检测方法Trident Network,用于构建具有相同表征能力的网络尺度特定的特征图。 为我们的多分支结构提出了一种规模感知训练方案,使每个分支具备相应尺度的专业能力。 修改backbone
(构造了不同receptive的parallel multi-branch)
Hybrid Task Cascade 50.7 cascade R-CNN 、mask R-CNN 在cascade R-CNN和mask R-CNN的基础上,作者想通过级联和来实现实例分割,进而找出一种更好的级联结构,来实现目标检测,提高mAP。 关键思想是:通过在每个阶段结合级联和多任务来改善信息流,并利用空间背景来进一步提高准确性。具体来说:设计了一个渐进式细化的级联管道。 在每个阶段,边界框回归和掩模预测都以多任务方式组合。 此外,在不同阶段的掩模分支之间引入直接连接 - 每个阶段的掩模特征将被嵌入并馈送到下一个阶段 。 修改模型
{主要为在Interleaved Execution的基础上,添加了:mask的cascade的特征图流动(不同的stage的mask分支之间直接连接,上个阶段的mask特征将被嵌入并馈送到下一阶段), 并增加了空间语义信息(提高准确性)}
NAS-FPN 48.3 FPN 当前目标检测网络中采用特征金字塔网络(FPN)结构解决多尺度的问题,但是这些 FPN 都是人工事先设计,并不一定是最优的结构。 为了发现一个更好的FPN架构,作者充分利用了神经网络搜索技术,使用强化学习训练了一个控制器来在给定的搜索空间中选择最好的模型结构。控制器使用在搜索空间内子模型的准确率来作为更新参数的反馈信号。通过这样的试错,控制器会学到越来越好的结构。一句话解释:FPN就是用来特征融合的层,之前都是手工设计,现在尝试神经网络搜索设计!其实就是优化FPN。 优化FPN
(使用强化学习训练一个控制器来在给定的搜索空间中选择最好的FPN模型结构)
CornerNet-saccades 50.3 CornerNet CornerNet的推理速度是其一个缺点 CornerNet-Saccade通过减少处理的像素的个数来提高inference的效率。利用一种类似于人眼扫视的注意力机制,首先经过一个下采样后的输入图片,生成一个attention map,然后再将其进行放大处理,接着进行后续模型的处理。这与之前原始的CornerNet在不同尺寸上使用全卷积是有区别的,CornerNet-Saccade通过选择一系列高分辨率的裁剪图来提高效率及准确率。 关键点检测、修改backbone
(引入了saccade思想)
Cascade R-CNN 改进 50.9 Cascade 低阈值导致噪声(低质量)检测,而高阈值却导致检测性能降低 通过级联的R-CNN网络,每个级联的R-CNN设置不同的IOU阈值,这样每个网络输出的准确度提升一点,用作下一个更高精度的网络的输入,逐步将网络输出的准确度进一步提高。
一句话总结就是:Cascade R-CNN就是使用不同的IOU阈值,训练了多个级联的检测器。
修改backbone
(为与SNIP对比,将原先的ResNet-101改为强骨干ResNeXt-152,且具有多尺度训练/推理等)
Learning DA Strategies 50.7 数据增强trick 当前的数据增强都是从分类任务引入的,但是分类任务的增强不一定适用检测任务。因为回归检测任务的样本远不如分类多,所以需要进一步的增强。 采取了一种自动化的方法来寻找最佳的数据增强策略来进行对象检测。 数据增强
(共设计22个操作,概率和梯度都离散为6均匀间隔的值,要搜索出5个字策略,搜索空间过于巨大,所以采用强化学习和辅助RNN控制器进行结构搜索,这一点和NAS的方法类似。)

你可能感兴趣的:(目标检测)