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

以下链接是个人关于mmdetection(Foveabox-目标检测框架)所有见解,如有错误欢迎大家指出,我会第一时间纠正。有兴趣的朋友可以加微信:17575010159 相互讨论技术。若是帮助到了你什么,一定要记得点赞!因为这是对我最大的鼓励。 文末附带 \color{blue}{文末附带} 文末附带 公众号 − \color{blue}{公众号 -} 公众号 海量资源。 \color{blue}{ 海量资源}。 海量资源

目标检测00-00:mmdetection(Foveabox为例)-目录-史上最新无死角讲解

本论文名为: F o v e a B o x : B e y o u n d A n c h o r − B a s e d O b j e c t D e t e c t i o n \color{red}{本论文名为: FoveaBox: Beyound Anchor-Based Object Detection} 本论文名为:FoveaBox:BeyoundAnchorBasedObjectDetection

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)。对于视觉细节最重要的活动,哪些是必要的:
在这里插入图片描述
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 或者分组技巧。

3.Fovea Box

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

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

B. FoveaBox
   FoveaBox 为每个可能潜在包含实例的位置,进行目标存在概率值,以及对应 box 进行预测,在本节中,我们将逐步介绍关键组件。
   
1.Object Occurrence Possibility: 给出一个有效的 ground-truth box 定义为 ( x 1 , y 1 , x 2 , y 2 ) (x_1,y_1,x_2,y_2) (x1,y1,x2,y2), 我们首先把他映射到金字塔特征层 P l P_l Pl
x 1 ′ = x 1 s l ,    y 1 ′ = y 1 s l    , x 2 ′ = x 2 s l ,    y 2 ′ = y 2 s l x_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} x1=slx1,  y1=sly1  ,x2=slx2,  y2=sly2 c x ′ = 0.5 ( x 2 ′ + x 1 ′ ) ,    c y ′ = 0.5 ( y 2 ′ + y 1 ′ ) c_x'=0.5(x_2'+x_1'), ~~ c_y'=0.5(y_2'+y_1') cx=0.5(x2+x1),  cy=0.5(y2+y1) w ′ = x 2 ′ − x 1 ′ ,    h ′ = y 2 ′ − y 1 ′ w'=x_2'-x_1',~~h'=y'_2-y_1' w=x2x1,  h=y2y1其上的 s l s_l sl是下采样的步伐。正样本区域范围定义为 R p o s R^{pos} Rpos ,为 ground-truth boxes 的一个缩小版本,如下图 Fig.3 right。
在这里插入图片描述
图解:基于anchor 的目标检测 VS Foveabox。左边:基于 anchor 的方式通常均匀的放置 A(A=3,在这个示例中)个 anchor 在每个输出空间位置。然后使用 IoU 定义正/负样本 anchor。右边: FoveaBox 直接通过 ground-truth boxes 为每个空间输出位置定义正/负样本。并从相应的位置预测 box。

x 1 p o s = c x ′ − 0.5 σ w ′ ,     y 1 p o s = c x ′ − 0.5 σ h ′ , x_1^{pos}=c_x'-0.5σw',~~~y_1^{pos}=c_x'-0.5σh', x1pos=cx0.5σw,   y1pos=cx0.5σh, x 2 p o s = c x ′ − 0.5 σ w ′ ,     y 2 p o s = c x ′ − 0.5 σ h ′ , x_2^{pos}=c_x'-0.5σw',~~~y_2^{pos}=c_x'-0.5σh', x2pos=cx0.5σw,   y2pos=cx0.5σh,其上的 σ σ σ 是收缩因子,在训练阶段,每个在 R p o s R^{pos} Rpos(positive area) 之内的特征图像素都会有一个对应的 class label。特征图除了 R p o s R^{pos} Rpos 区域之外,都被看作是 negative area。为了进行预测,每个金字塔特征图大小为 H × W H \times W H×W 都有 C 个通道,每个通道都是二进制的 mask 掩码,表示的是类别的概率,类似于 FCN 的语义分割。 R p o s R^{pos} Rpos 通常只占整个特征图小部分,所以我们使用 Focal Loss 训练这个分支。
   
2.Scale Assignment: 犹豫目标尺寸变化比较大,如果直接预测目标边界框的数值,是非常不稳定的。所以我们根据目标的尺寸进行特征塔的区域分配(目标物体使用哪个金字塔特征进行预测比较好)。每个金字塔有一个基本的比例 r l rl rl 从32到512在金字塔级别P3到P7。每个金字塔都对应目标的尺寸范围,如果目标物体尺寸在这个范围之内,我们则认为他适合该层金字塔特征进行预测,其尺寸范围表示如下: [ r l / η , r l ⋅ η ] [rl/η, rl · η] [rl/η,rlη]其上的 η η η 表示两个特征塔之间的缩放比例。实验中的默认设置为2。如果训练的目标尺寸不在所有特征塔对应的范围之内,则忽略掉。这里得注意,一个目标可能被多个金字塔特征检测到。
分配目标到邻近的两个金字塔特征理念:
1.相邻的两个金字塔特征通常具有相似的语义捕获能。
2.每个金字塔的训练样本都增加了,让训练的模型更加稳定。在下面的实验章节,可以看到使用该方法,相对于分配到单个金字塔特征的方式,增加3mAP。
   
3.Box Prediction: 每个 ground-truth bounding box 被表示为 G = ( x 1 , y 1 , x 2 , y 2 ) G=(x_1,y_1,x_2,y_2) G=(x1,y1,x2,y2)。在 R p o s R^{pos} Rpos 区域的一个点为 ( x , y ) (x,y) (x,y)。FoveaBox 直接计算该点到 ground-truth bounding box 的距离(正则化之后的),公式如下: t x 1 = l o g s l ( x + 0.5 ) − x 1 r l t_{x1}=log{\frac{s_l(x+0.5)-x_1}{r_l}} tx1=logrlsl(x+0.5)x1 t y 1 = l o g s l ( y + 0.5 ) − y 1 r l t_{y1}=log{\frac{s_l(y+0.5)-y_1}{r_l}} ty1=logrlsl(y+0.5)y1 t x 2 = l o g s l ( x + 0.5 ) − x 2 r l t_{x2}=log{\frac{s_l(x+0.5)-x_2}{r_l}} tx2=logrlsl(x+0.5)x2 t y 2 = l o g s l ( y + 0.5 ) − y 2 r l t_{y2}=log{\frac{s_l(y+0.5)-y_2}{r_l}} ty2=logrlsl(y+0.5)y2其主要的功能是把坐标 (x,y) 映射到特征图中,最后用对数空间函数对目标进行正则化。这里的 r l r_l rl是定义的基本缩放因子(每个金字塔特征有一个属于自己的缩放因子) ,在后续的介绍中可以详细的介绍。
   为了简单方便,我们使用 Smooth L1 loss 去网络学习 box boundary 的预测,对于每个特征图像素 (x,y),都有四个通道,分别为前面提到的 ( t x 1 , t y 1 , t x 2 , t y 2 ) (t_{x1},t_{y1},t_{x2},t_{y2}) (tx1,ty1,tx2,ty2)

4.Network Architecture: 为了证明我们提出方法的普遍性,使用多种架构对 Foveabox 进行了实例化。为了简单明了,我们使用如下方案:
1.通过一个主干网络进行特征提取。
2.头部网络计算最终的结果。
大多数都是基于如下头部网络架构,Fig.4如下:
在这里插入图片描述
Fig.4 图解:在每一个 FPN 层,FoveaBox 都依附了两个分支,一个是特征图像素所属类别的预测,另外一个是预测 ground-truth object box 的 ( x 1 , y 1 , x 2 , y 2 ) (x_1, y_1, x_2, y_2) (x1,y1,x2,y2)。右边是得分输出及其对应的预测框,然后进行最大抑制(NMS)。每个位置的得分概率用颜色密度表示,如下图Fig.5所示。
在这里插入图片描述
Fig.5 图解:FoveaBox 在 COCO minival 数据集上基于 ResNet-101架构 的结果,达到了单个模型 38.6mAP。对于每个小图,坐标的检测结果边界框以及对应的类别得分值。右边的是映射box到原图大小的结果(为做NMS处理)。为了进一步进行研究,我们也采用了不同的头部网络,更复杂的设计有提高性能的潜力,但不是这篇文章的重点。
   
5.Implementations: 为了公平的进行试验对比,我们使用了特征金字塔 P l , l = 3 , 4...... , 7 {P_l}, l=3,4......,7 Pl,l=3,4......,7 这里的 l l l 表示金字塔的层数。 P l P_l Pl 层输出特征图分辨率为 输入图像大小的 1 / 2 l 1/2^l 1/2l。所有特征塔的输出通道数目为256。Fovea head 头部网络被附加在每一个金字塔特征上面。但是他们所有的头部参数都是共享的。
   FoveaBox 训练的优化器是 stochastic gradient descent (SGD),在四个GPU上进行训练,合并之后的 batch_size 为 16(每个GPU为4)。没有其他特别的设置,所有的模型算法都是训练 12 个epoch,在第 8 和第 11 个 epoch 学习率衰减 10倍,其初始学习率为 0.01,权重衰减为0.0001,momentum 为0.9。除了标准的图像水平翻转,没有使用其他任何的数据增强。在推理阶段,对于预测分值超过 0.05 的 前1000个 box 进行 NMS 处理。NMS 的 IOU 阈值设定为 0.5。每张图片最多的预测目标为 100 个。然后没有任何其他的后期处理。
   二阶段检测依赖于区域级别的子网络去进一步对 region proposals 分类。因为FoveaBox也可以通过将模型头更改,为类不可知方案来生成 region proposals。我们认为它可以进一步提高两级探测器的性能,这超出了本文的重点。

结语

到这里的主要部分已经翻译完成了,下片博客对其实验结果,及对比进行翻译。

在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

江南才尽,年少无知!

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值