目标检测00-05:mmdetection(Foveabox为例)-白话给你讲论文-翻译无死角-1

以下链接是个人关于mmdetection(Foveabox-目标检测框架)所有见解,如有错误欢迎大家指出,我会第一时间纠正。有兴趣的朋友可以加微信:a944284742相互讨论技术。若是帮助到了你什么,一定要记得点赞!因为这是对我最大的鼓励。
目标检测00-00:mmdetection(Foveabox为例)-目录-史上最新无死角讲解
FoveaBox:BeyoundAnchorBasedObjectDetection\color{red}{本论文名为: FoveaBox: Beyound Anchor-Based Object Detection}

Abstract

    我们提出了一种准确,灵活,完全不需要 anchor 的目标检测算法。几乎所有最先进的目标检测算法,都是基于预定义的 anchor 去列举目标可能存在的位置,尺寸,边长比例。所以其性收到 anchor 的限制。 然而 Foveabox 直接学习目标物体的概率值,以及对应 bounding box 坐标(不参考任何 anchor)。其都是通过一下方式实现的:
1.预测目标是否准在。对应的概率分布特征图。
2.为每个可能存在目标物体的特征像素,进行 bounding box 的预测,。目标框的大小和特征金字塔关联起来。
    在 Foveabox 中,一个目标实例,会被分配到两个相邻的金字塔特征图。这样能让模型更加的准确。我们在标准的基线数据集上证明了该算法的有效性,并且报告了很多额外的实验过程以及结果。没有任何花里胡哨的手段(数据增强,trick等等),在 standard COCO, Pascal VOC 目标检测数据及上达到目前算法最优的效果。Foveabox 避免了 anchor 相关的超参数设置,我们相信,这种简单而有效的方法将成为坚实的基础,并有助于简化未来的目标检测研究。

1. Introduction

    目标检测一般需要完成两个任务:识别与定位。即,给定任何一张图片,如果该图像中包含了预先定义的目标物体类别,那么就要返回其目标物体的类别,以及为位置(以及目标所在范围)。为了将定位功能添加到通用对象检测系统,滑动窗口的技巧方式被广泛的使用好几年。
    最近出现了使用深度学习进行特征提取的方式。对于目标检测,基于 anchor 的Region Proposal Network 被广泛使用,其作为通用组件,用于检测框架提取感兴趣区域。简而言之,基于anchor 的方式,就是把二维空间划分成多个网格,然后每个网格再去细分box。 大部分先进的算法,收拾基于anchor去列举物体所有可能位置,尺寸,边长比例。acnhor 是预测两级检测器建议或单级检测器最终边界盒的回归参考和分类候选。然而,ahchor 可以看作是一个特征共享的滑动窗口方案,以覆盖对象的可能位置。
    然后,anchor 的设计需要很细致:1.其中一个比较重要的因素,如何让 anchor 能够密集的覆盖所有目标的空间范围。为了达到比较高的召回率。 anchoer 的设计一般都利用统计学从训练或者测试集从获取。2.一般来说,anchor不是通用的,很难推广到其他的数据集。3.在训练阶段,基于anchoer 的方式,都依赖IOU去计算正负样本。其引入了额外的计算以及超参数。
    相比之下,人类的视觉系统可以识别空间中的实例,并根据视觉皮层地图预测目标边界,其不需要预先定义任何的形状模板。我们人类自然地识别视觉场景中的对象,而不需要列举候选框。受到其启发,一个比较直观的问题是,基于 anchor 方案是引导搜索对象的最优方法吗。进一步,不使用 anchor 或者候选框能设计出准确的目标检测框架吗?如果没有 anchor 可能需要比较复杂的方法来实现相似的功能,然而,我们表明、,一个简单而灵活的系统可以匹配甚至超过现有的先进的对象检测结果,而不需要任何候选框。
   最后我们提出了 FoveaBox,一个完全不需要 anchor 的目标检测框架。FoveaBox 的设计是受到人类眼睛的 fovea 启发: 眼睛视野的中心,是最敏感的(下图Fig.2 left)。对于视觉细节最重要的活动,哪些是必要的:
目标检测00-05:mmdetection(Foveabox为例)-白话给你讲论文-翻译无死角-1
FoveaBox联合预测对象的中心区域可能存在的位置,以及每个有效位置的边界框。在FoveaBox中,通过中心区域的类别得分来预测每个目标对象的边界,如上图Fig.2 right。在训练阶段,不需要使用 anchor,或者通过 IOU 匹配生成训练的 target。对于训练的 target 是直接通过 ground-truth boxes 生成的。
    在一些文献中,一些作品试图利用基于 FCN,的目标检测框架,如 DenseBox,但但是,为了处理不同大小的bounding boxes,DenseBo对训练图像进行裁剪和调整,使其达到固定的比例。因此,DenseBox必须对图像金字塔进行检测,这与FCN一次性计算所有卷积的理念相违背。更重要的是,这些方法主要用于场景文本检测等特殊领域的目标检测,人脸检测。相比之下。FoveaBox能够对多种类别的目标进行识别,如COCO数据集就存在80个类别。
    为了证明我们提出算法的有效性,我们融合了目前比较流行的特征金字塔网络,以及我们的头部网络FoveaBox。没有任何花里胡哨的手段(数据增强,trick等等),在coco等目标检测数据集上,达到了最先进的效果。相比于RetinaNet,提高了2.2个mAP,也超越了之前基于 anchor 的目标检测框架。我们相信FoveaBox简单的训练/推理方式,加上灵活性和准确性,将有利于未来的目标检测和相关课题的研究。

2.Related Work

    目标检测的目的是定位和识别每个有边界的对象实例,DPM[22]及其改型[23]是多年来的主要方法,其主要通过手工提取特征,如HOG,SIFT,LBP 等等,扫描整个图像,找到具有类特有的最大响应的区域。随着深度学习在大规模目标识别中的巨大成功,几种基于 CNN 的方式被提出。本文主要就我们的FoveaBox与以往的一些研究工作的关系和区别进行了详细的讨论。

A. Anchor-Based Object Detection
   基于 anchor 的目标检测框架能被分为两种:通过 proposal 驱动的 two-stage 算法,不需要proposal 的one-stage算法。
1.两阶段目标检测: Faster R-CNN[6]确立了基于 anchor 的目标检测两阶段优势地位。Faster R-CNN 包含了region proposal network (RPN) 以及 region 级别的预测网络(R-CNN)。在这之后,基于 Faster R-CNN 提出了大量的算法来提高其性能,包括架构的重新设计和改造[21]、[34]、[35]、上下文和注意机制[36]、训练策略与损失函数[37],[38],特征融合与增强[39]-[41]等等,anchor 是预 two-stage 算法 建议的回归参考和分类候选框的基础。
2.一阶段目标检测: 因为其高度的有效性,吸引了很多的注意力,SSD[7]在卷积网络中在多尺度层上展开anchor,直接预测对象类别和 anchor 偏移量。之后,大量的作品被呈现出来,在不同的方面提升了它的表现,如融合[42]-[44]不同层的上下文信息,对[45]从零开始进行训练,引入新的损失函数[9],anchor点的优化与匹配[46],[47],[48]-[51]的特征丰富与对齐。anchor 是一级探测器的最后检查的参考框。

B. Anchor-Free Explorations
   最流行没有 anchor 目标检测算法,应该是 YOLOv1, 其输入图片大小为 448x448,然后为输出的 7x7 网格特征图的每个像素,进行 box 的预测。因为只有一个点被用来预测边界框,所以其召回率是非常低的。最后的结果是基于 anchor 的 YOLOv2,YOLOv3 被提出。DenseBox[16]和Unitbox[19]也没有使用 anchor 进行检测,由于多尺度目标检测困难,召回率较低,这类检测器不适用于一般目标检测。为了检测多种尺度的目标,DenseBox 必须采用图像金字塔,其处理一张图像需要几秒钟。我们的 Foveabox 每秒钟能处理超过 10 帧的图像,并且准确率更高。
   RepPoints[55]提出将对象表示为一组样本点,并利用可变形卷积[56]得到更精确的特征。FSAF[57]预测了用free anchor 方式训练每个实例的最佳特性级别,我们建议将对象分配到多个相邻的金字塔级别,以实现更稳健的预测。FCOS[54]尝试以逐像素预测的方式解决目标检测问题,它依靠中心图来抑制低质量的检测。与之相反,Foveabox 不使用中心投票机制,直接预测最终的类别概率,更加简单。CenterNet 使用中心点的特征来代表每个实例,Foveabox 通过控制 σσ 进行目标预测,其更加的灵活。我们注意到,CenterNet[58]和FCOS[54]是并行工作。此外,还有一些工作试图将无 anchor 概念扩展到实例分割中。
   另一类无锚方法遵循 “bottom-up” 的方式,在提出了将目标 box 检测作为一对关键点检测的方法,即左上角和右下角。CornerNet 采用了 Associative Embedding 的技巧,去分离不同的实例对象。还有一些 “bottom-up” 的方式,CenterNet[62]试图通过级联 corner pooling 和 center pooling 池来提 CenterNet 的查准率和查准率。值得注意的是, “bottom-up” 方法在训练和推理过程中也不需要 anchor 的。与 “bottom-up” 的方法相比, Foveabox 在后期处理阶段不需要任何 embedding 或者分组技巧。

Fovea Box

   FoveaBox 的理念是十分简单的:其包含了一个主干网络以及一个头部网络,主干网络负责图征图的提取,其是现在以及被提出的网络,如resnet。头部网络 fovea head 主要包含了两个分支,第一个分支对主干的输出执行每个像素的分类;第二个分支对对象可能覆盖的每个位置执行 box 预测。

A. Review of FPN and Anchors
   简单的回顾一下用于目标检测的特征金字塔网络(FPN)。一般而言,FPN 采用 top-down 的结构,带有横向连接,从单尺度输入构建一个网络内特征金字塔。FPN独立于特定的任务。对于目标检测,FPN中每一层金字塔都用于检测特定尺度下的目标。基于 anchor 的方式,在每一层金字塔特征 H×WH \times W 空间上,均匀的放置 A 个anchors。然后计算 ground-truth boxes 与所有 anchors 重叠面积 IOU,然后根据 IOU 定义训练目标,最后利用金字塔特征对目标进行优化。

B. FoveaBox
   FoveaBox 为每个可能潜在包含实例的位置,进行目标存在概率值,以及对应 box 进行预测,在本节中,我们将逐步介绍关键组件。
1.Object Occurrence Possibility: 给出一个有效的 ground-truth box 定义为 (x1,y1,x2,y2)(x_1,y_1,x_2,y_2), 我们首先把他映射到金字塔特征层PlP_l
x1=x1sl,  y1=y1sl  ,x2=x2sl,  y2=y2slx_1'=\frac{x_1}{s_l},~~y_1'=\frac{y_1}{s_l}~~,x_2'=\frac{x_2}{s_l},~~y_2'=\frac{y_2}{s_l}cx=0.5(x2+x1),  cy=0.5(y2+y1)c_x'=0.5(x_2'+x_1'), ~~ c_y'=0.5(y_2'+y_1')w=x2x1,  h=y2y1w'=x_2'-x_1',~~h'=y'_2-y_1'其上的sls_l是下采样的步伐。正样本区域范围定义为 RposR^{pos} ,为 ground-truth boxes 的一个缩小版本,如下图 Fig.3 right。
目标检测00-05:mmdetection(Foveabox为例)-白话给你讲论文-翻译无死角-1
图解:基于anchor 的目标检测 VS Foveabox。左边:基于 anchor 的方式通常均匀的放置 A(A=3,在这个示例中)个 anchor 在每个输出空间位置。然后使用 IoU 定义正/负样本 anchor。右边: FoveaBox 直接通过 ground-truth boxes 为每个空间输出位置定义正/负样本。并从相应的位置预测 box。

x1pos=cx0.5σw,   y1pos=cx0.5σh,x_1^{pos}=c_x'-0.5σw',~~~y_1^{pos}=c_x'-0.5σh',x2pos=cx0.5σw,   y2pos=cx0.5σh,x_2^{pos}=c_x'-0.5σw',~~~y_2^{pos}=c_x'-0.5σh',其上的 σσ 是收缩因子,