IT教程 ·

One Stage目的检测

java代码之美(16) ---Java8 Optional

在盘算机视觉中,目的检测是一个困难。在大型项目中,起首须要先举行目的检测,获得对应种别和坐标后,才举行以后的种种剖析。如人脸辨认,平常是起首人脸检测,获得人脸的目的框,再对此目的框举行人脸辨认。假如该物体都不能检测获得,则后续的剖析就无从入手。因而,目的检测占有着非常重要的职位。在目的检测算法中,平常可以分红One-Stage单阶段和Two-Stage双阶段。而在现实中,我常常接触到的是One-Stage算法,如YOLO,SSD等。接下来,对常接触到的这部份One-stage单阶段目的检测算法举行小结。本文one stage检测算法包括有YOLO系列,SSD,FSSD,DSOD,Tiny DSOD,RefineNet,FCOS

YOLO

YOLO可以说是最早的One-stage目的检测算法之一,经由作者的优化,存在3个版本。

  • YOLO V1

Yolo v1在《You Only Look Once: Unified, Real-Time Object Detection》中提出。在Yolo之前的目的检测算法,如R-CNN系列,其收集相对比较庞杂,耗时大,难以优化(因为每一个零丁的部份是自力练习的)。因而,作者将目的检测以为是一个自力的回归使命,回归每一个星散的展望框坐标及其对应的种别几率,使其具有以下的长处:

  1. 运转速率异常快。运用Yolo算法,其FPS为45,而Fast Yolo的FPS为150。同时,mAP也能到达以往及时目的检测体系的两倍。
  2. 运用全局信息举行推理
  3. 可以进修到笼统的特性

引见完Yolo的长处后,我们来看看其头脑,如下图所示。起首,Yolo将一张输入图片分红S*S格。假如GT框的中间落在某格(grid cell)上,则该格担任展望这个目的。每格会展望B个展望框及B个相信度得分。该相信度得分反应的是该格包括物体的相信度和这个展望框有多准。因而,关于该相信度得分,其定义为$Pr(Object)*IOU^{truth}_{pred}$。假如没有物体的中间在该格上,则该相信度得分为0;假如有物体的中间在该格上,则我们愿望相信度得分即是IOU。因而,关于每一个展望框而言,都邑展望5个值,离别是中间点$(x,y)$,宽高$(w,h)$,和上述的相信度得分。

关于每格而言,除了展望B个展望框及其相信度外,还会展望C个种别的前提几率$Pr(Class_i|Object)$。以VOC0712为例,就会展望$C=20$个种别的几率。这个几率是前提几率,在存在目的的前提下,其为第i类的几率。每格会共用如许的几率,与B个展望框无关。在测试阶段,每格种别的相信度得分即是种别的前提几率乘以每格展望框的相信度得分:

$$Pr(Class_i|Object)*Pr(Object)*IOU^{truth}_{pred}=Pr(Class_i)*IOU^{truth}_{pred}$$

可以看出,每格种别的相信度不仅示意了这个种别涌现的几率,而且也反应了展望框是不是拟合GT框。

One Stage目的检测 IT教程 第1张

 

在该论文中,$S=7,B=2$,所以末了输出的是$7*7*30$的张量,可以看成是49个30维的向量,这30维的向量包括了如下图的信息。

One Stage目的检测 IT教程 第2张

 

值得注意的是,Yolo并没有预设差别大小的anchor。收集举行前向运算后,每格会输出2个展望框,将该展望框与GT框举行匹对和盘算IOU,此时才肯定运用IOU大的谁人展望框来担任展望该对象。因而,Yolo的丧失函数是各项误差平方和的一个加权:

One Stage目的检测 IT教程 第3张

 

个中,$1^{obj}_i$示意物体的中间是不是位于第i格,$1^{obj}_{ij}$示意第i个格子的第j个展望框中存在对象,$1^{noobj}_{ij}$示意第i格子的第j个展望框中不存在对象。丧失函数的第一项示意当第i个格子的第j个展望框中存在对象时,个中间点偏移的误差;第二项示意当第i个格子的第j个展望框中存在对象时,宽高的误差;第三项示意当第i个格子的第j个展望框中存在对象时,其相信度得分误差,实在的$C_i$应当即是IOU;第四项示意当第i格子的第j个展望框中不存在对象时,其相信度得分误差,实在的$C_i$应当即是0;第五项示意当物体中间在第i格时,其种别误差。个中,另有$lambda _{coord}$调解展望框位置误差的权重,$lambda _{noobject}$调解不存在目的的展望框的相信度权重,平常是调低不存在对象的展望框的相信度误差的权重。

Yolo v1的不足:

  1. 当麋集场景或许小目的时,检测效果不佳。因为一个格子只担任展望两个框,一个种别。
  2. 定位误差大。
  3. 召回率低。

参考资料

  1. https://zhuanlan.zhihu.com/p/46691043

 

  • YOLO V2

Yolo v2在《YOLO9000: Better, Faster, Stronger》中提出。为了处置惩罚Yolo v1的不足,作者运用了融会了多种思绪来进步了收集的机能,使得mAP获得大幅度提拔;为了加速推理速率,运用新的模子构造;为了能检测出更多的对象,提出了新的团结练习机制,连系分类数据集(如ImageNet)和检测数据集(如COCO和VOC),使得YOLO V2能检测出更多的种别。

在进步收集机能上,作者运用了以下的思绪:

  1. Batch Normalization。在一切卷积层背面加上BN层,使得Yolo算法有2%的mAP提拔。同时,因为有了BN层,可以去除dropout层。
  2. High Resolution Classifier。在Yolo v1中,先运用224*224的输入图片练习分类收集,然后再运用448*448的输入图片练习检测收集。如许意味着Yolo v1必需同时切换去检测使命和调解收集以顺应新的输入。因而,在v2版本中,直接运用448*448的输入图片先练习分类收集,然后再微调收集来顺应检测使命。
  3. Convolutional with anchor boxes。在Yolo v1中,每一个cell中展望两个展望框,这两个展望框是直接对坐标和相信度举行展望的。在v2版本中,自创了锚点框的头脑,对每一个cell设置锚点框,对锚点框的误差举行展望。如许能简化问题,而且使收集更轻易进修。
  4. Dimension clusters。运用聚类算法来设想锚点框。在Faster R-CNN中,锚点框是手工设想,如许的设想体式格局不肯定很好适配检测使命。假如锚点框的初始化设置比较好,能使收集更轻易获得好的检测效果。因而,运用k-means聚类算法来设想锚点框。在聚类算法中,最重要的是怎样设想两个框之间的“间隔”,这里运用$d(box,centroid)=1-IOU(box,centroid)$作为间隔器量的体式格局,当IOU越大时,两个框之间的“间隔”越小。在v2版本中,运用5种边框品种就能与Faster RCNN中的9种边框品种的效果邻近。(同时,在工作中我也发明,一个较好的锚点框设置,能较大幅度进步检测效果)
  5. Direct location prediction。在Faster RCNN中,因为没有对展望框举行限定,所以展望框的中间大概会涌现在任何位置,致使练习初期不稳定。因而,Yolo v2在运用锚点框后,对锚点框的展望举行了限定,将展望框的中间束缚在该cell中。
  6. Fine-Grained Features。与SSD差别,Yolo v2运用一种差别的体式格局来进步小目的的检测效果,引入了pass through层来保存越发细节的信息。具体做法是,在末了一个pool层之前,其特性图大小是26*26*512,将其一拆成四,变成13*13*2048,直接通报到pool层以后,与13*13*1024的特性图举行concat起来,构成13*13*3072的特性图。
  7. Multi-Scale Training。因为Yolo v2只要卷积层和池化层,所以其对输入图片的大小没有限定。作者想让Yolo具有更壮大的鲁棒性,所以运用差别大小的输入图片来练习收集,每练习10个batch,就随机替换输入图片的尺寸。这类做法,有点相似图象金字塔。

将上述的头脑融会起来,终究的试验效果如下图所示。试验效果的增幅照样挺显著的,将v2进步了近15个点的mAP。

One Stage目的检测 IT教程 第4张

 

作者不仅想让Yolo v2的mAP更高,而且还想让其更快。在v1中,运用的收集构造是基于Inception的,其速率比VGG快,但机能略减色于VGG。因而,作者提出了新的分类收集,Darknet-19,作为Yolo v2的骨干收集,如下图所示。该收集合含有19个卷积层和5个池化层。

One Stage目的检测 IT教程 第5张

 

YOLO v2的练习重要包括三个阶段。第一阶段就是先在ImageNet分类数据集上预练习Darknet-19,此时模子输入为224*224 ,共练习160个epochs。然后第二阶段将收集的输入调解为448*448 ,继承在ImageNet数据集上finetune分类模子,练习10个epochs,此时分类模子的top-1准确度为76.5%,而top-5准确度为93.3%。第三个阶段就是修正Darknet-19分类模子为检测模子,移除末了一个卷积层、global avgpooling层以及softmax层,而且新增了三个 3*3*1024卷积层,同时增添了一个pass through层,末了运用 1*1 卷积层输出展望效果,输出的channels数为:num_anchors*(5+num_classes) ,和练习采纳的数据集有关联。因为anchors数为5,关于VOC数据集(20种分类对象)输出的channels数就是125,终究的展望矩阵T的shape为 (batch_size, 13, 13, 125),可以先将其reshape为 (batch_size, 13, 13, 5, 25) ,个中 T[:, :, :, :, 0:4] 为边境框的位置和大小$(t_x,t_y,t_w,t_y)$,T[:, :, :, :, 4] 为边境框的相信度,而 T[:, :, :, :, 5:] 为种别展望值。

在VOC数据集合,只要20类物体可以举行检测。但现实生活中,物体的种别数是远远大于20种的。因而作者想连系分类数据集和检测数据集来举行团结练习,使得检测的种别数能大幅度进步。这类团结练习体式格局的基本头脑是,假如是检测样本,其loss就包括分类误差和定位误差;假如是分类样本,其loss就只包括分类误差。

因为我没有对这一块做过量研讨,相识不深。但该要领最重要的是构建Word Tree。因为数据集的差别,致使每一个标签之间不是互斥的,存在包括关联,比方在COCO数据集合的一个种别是“狗”,而在ImageNet中包括了多种狗的标签。所以,经由过程构建word tree来将一切标签信息串连起来,相似于“树”的构造,父节点包括了差别种别的子构造。

参考资料:

  1. https://zhuanlan.zhihu.com/p/47575929

 

  • YOLO V3

Yolo v3提出于《YOLOv3: An Incremental Improvement》中,在v2版本上,进一步举行了革新,团体来讲,革新力度有限,下面来离别看看这些革新步伐。

起首,在展望种别时,不运用softmax,而是运用logistic举行展望。因为如许有利于多标签展望。当运用庞杂范畴的数据集时,大概会涌现标签不互斥的状况(如woman和person),运用多标签的要领会越发有利于模子,即运用logistic

第二,运用了新的收集Darknet-53,如下图所示。在v2中,运用的backbone是Darknet-19,而在v3中,不仅收集层数增添了,而且还自创了ResNet的头脑,运用多个一连的3*3和1*1卷积层,而且带有shortcut衔接。依据作者供应的试验比较,在ImageNet中,Darknet-53具有与ResNet-152相似的准确率,但速率是其两倍。

One Stage目的检测 IT教程 第6张

 

第三,应用多标准信息来举行展望。这里借用一下这位博主的图,其团体的收集构造,如下图所示。在v3中,应用了差别标准的信息举行展望,我以为作者的这类体式格局,其应当是自创了FPN的头脑。运用3个标准的特性图举行展望,如图上黄色方块示意的一样,在第79层后,举行上采样,上采样获得的特性图与第61层的特性图举行融会,再举行上采样,与第36层的特性图融会。

One Stage目的检测 IT教程 第7张

 

第四,运用K-means聚类获得锚点框的尺寸。和v2版本采纳要领一致,v3这里运用了3个差别尺寸的特性图举行展望,在每层特性图中运用3种差别尺寸的锚点框,如下图所示。为小尺寸的特性图分派大尺寸的锚点框,适宜检测大目的;为大尺寸的特性图分派小尺寸的锚点框,适宜检测小目的。

One Stage目的检测 IT教程 第8张

 

以COCO为例,v3运用3个特性图来举行展望,每一个特性图会对应3种锚点框,因而,关于每层特性图,其输出的tensor为$N*N*[3*(4+1+80)]$,个中,$N$示意特性图的尺寸,$3$示意3个锚点框,$4$示意4个坐标值,$1$示意是不是包括物体的相信度(v3的相信度貌似与v1中的相信度不一样),$80$示意COCO数据集的种别总数。

参考资料:

  1. https://zhuanlan.zhihu.com/p/49556105

 

SSD

SSD算法提出于《SSD:Single Shot MultiBox Detector》 中,一样是一篇异常典范的one stage目的检测算法,其框架也衍生出了许多系列。之前,我曾对SSD举行过总结和代码复现,想细致相识的可以参考来浏览以下,这里重如果概括性回忆以下。

如下图所示,是SSD的框架收集,其运用了6个差别尺寸的特性图来举行展望,离别是$(38*38),(19*19),(10*10),(5*5),(3*3),(1*1)$。这6个特性层会离别经由3*3的卷积后分红分类头和检测头,离别用于展望坐标误差值和种别相信度(包括背景)。比拟于YOLO V1和YOLO V2,SSD运用了多个特性层,更适宜检测多种差别标准的目的。

One Stage目的检测 IT教程 第9张

 

其次,在这6个差别尺寸的特性图中,还运用了差别大小和宽高比的锚点框。每一个特性图运用差别于其他层的锚点框尺寸,而在该尺寸上又设置4种或许6种差别的宽高比。在大尺寸特性图是同小尺寸的锚点框,来检测小目的;在小尺寸的特性图运用大尺寸的锚点框,来检测大目的。如许的设置体式格局,今后许多SSD系列都采用这类体式格局。因而,全部SSD中,会检测8732个锚点框的坐标误差值和种别相信度。

第三,运用了OHEM举行难例发掘,来减缓正负样本的不均衡。在SSD中,并没有运用一切的负样本,而是将这些匹配上背景的样本依据相信度丧失举行降序分列,将丧失较大的样本以为是难例(hard negative),须要模子重点进修。拔取丧失最大的前N个样本作为负样本,正样本与负样本的比例掌握在1:3摆布,关于那些没有选上的样本,label设置成-1,不介入练习当中。

作者还强调了数据加强对收集机能有着显著提拔。可以这么明白,经由过程数据加强,间接进步了数据量和样本之间的多样性,从而进步了模子的鲁棒性。别的,朴陋卷积一样可以进步了SSD的mAP,经由过程朴陋卷积,是能在参数目稳定的前提下以为野变大,使收集能“看”到的东西更多。

 

FSSD

FSSD提出于《FSSD: Feature Fusion Single Shot Multibox Detector》中,运用了轻量化的FPN构造,来进步SSD的小目的检测效果。

在SSD中,对小目的的检测效果不佳,召回率低。因为小目的平常是浅层收集来举行展望的,特性笼统才能不足,缺少语义信息;其次,小目的检测平常严峻依赖于上下文信息。因而,FPN的提出是为了使浅层特性和深层特性举行融会,更好的辅佐浅层特性来举行目的检测,进而进步小目的的检测效果。FPN的构造如下图的(c)所示。(b)是YOLO v1和v2系列的构造示意图;(d)是SSD系列的构造示意图。

One Stage目的检测 IT教程 第10张

 

在FPN构造中,右侧的特性层是只由上一层的右侧特性层和统一层的左侧特性层举行融会的,缺少差别层特性层之间的融会;其次,上一层的右侧特性层和统一层的左侧特性层的融会是非常耗时的。因而,在FPN的基本上,作者提出了一种轻量化的FPN构造,与SSD举行连系,构成了FSSD,如上图的(e)所示。FSSD的重要头脑是,以适宜的体式格局一次性融会一切差别层级的特性层,然后基于此特性层来生成特性金字塔。

FSSD的收集构造如下图所示。作者以为当特性图的尺寸小于$10*10$时,信息特性太少,对特性融会增益不大,因而,运用了conv3_3,conv4_3,fc_7和conv7_2四个特性层来举行融会(图中只画了3个)。起首对这4个特性层举行$1*1$卷积来下降通道数,下降到256维。然后以conv4_3的特性图尺寸$38*38$为基本,别的特性层举行下采样或许上采样来是特性图的尺寸变成$38*38$,至此,一切图中黄色的特性图都有了雷同的特性图空间尺寸了。

One Stage目的检测 IT教程 第11张

 

然后对这4个黄色特性图举行融会,融会体式格局有两种:concat或许ele-sum。经由过程试验发明,concat的效果更好。因而,将这4个黄色特性图举行concat起来,构成了$38*38*1024$的tensor。因为差别层的特性图的散布是不一致的,因而,对这$38*38*1024$的tensor举行BN操纵。末了对融会后的特性层举行下采样(论文中运用bottlenet构造来举行下采样),发生绿色的特性层,运用这些差别尺寸的绿色特性层来举行目的检测。

终究试验表明在捐躯少许速率的前提下,FSSD的mAP比原版的SSD要高,特别是对小目的的召回率进步了许多。

 

DSOD

DSOD提出于《DSOD: Learning Deeply Supervised Object Detectors from Scratch》中。现在,大部份目的检测算法都须要运用预练习模子来进步检测效果。然则因为分类使命和检测使命的丧失函数的种别散布差别,运用预练习模子会引入进修误差;同时当分类场景和检测场景具有很大差别时,运用预练习模子的效果也不佳。因而,最好的方法是对检测收集举行重新练习,不运用预练习模子。为此,作者提出了DSOD模子来处置惩罚重新开始练习的问题。

DSOD的构造如下图的右侧所示,左侧是SSD的收集构造,右侧是DSOD的收集构造。可以看出,DSOD的构造与SSD非常相似,但其骨干收集是DenseNet。前面两个特性层是DenseNet骨干收集生成的,第1个特性层一起直接送到展望中,别的一起经由pool和conv层后,与第2个特性成concat后再送入展望。随后,会分红2条歧路,一起流经pool和conv来举行dowm-sample,别的一起输入到$1*1$和$3*3$的卷积中;两路举行concat后再送入展望。

One Stage目的检测 IT教程 第12张

 

末了,作者总结了下,处置惩罚重新练习问题的几条准绳:

  1. Proposal-free。作者发明,当运用了SS算法或许RPN算法来引荐候选地区时,不运用预练习模子会致使模子不收敛。这多是因为ROI pooling引发的问题,因为ROI pooling从引荐候选地区中生成特性,但如许会障碍梯度腻滑地从region-level回传到卷积特性图中。
  2. Deep Supervison。深度监视收集,如Inception,DenseNet等,能直接监控更多的隐蔽层,而不只是监视末了的输出层。在proposal-free检测框架中,包括了分类丧失和定位丧失,因而须要增添侧路层来为每一个隐蔽层引入“配合”的目的。而DenseNet收集运用了skip connections,收集进修一半特性、复用一半特性,因而一切隐蔽层可以经由过程目的函数来接收到分外的监视。
  3. Stem Block。作者经由过程替换DenseNet的Stem Block,可以显著进步检测机能。新的Stem Block可以削减原始输入图片的特性丧失。
  4. Dense Prediction Structure。在DSOD中,除了第一个特性层外,其他特性层均是进修一半特性,复用一半特性。如许的体式格局可以发生更高精度的构造。

综上所述,作者应用DenseNet作为骨干收集,提出了DSOD算法,处置惩罚了重新练习的问题。

 

Tiny DSOD

Tiny DSOD提出于《Tiny-DSOD: Lightweight Object Detection for Resource-Restricted Usages》。现在许多目的检测算法对盘算资本有限的硬件装备都不太有友爱,因而,作者在DSOD的基本上,提出了轻量化的目的检测收集Tiny DSOD。该Tiny DSOD引入了两个立异且高效的构造:depthwise dense block (DDB)depthwise feature-pyramid-network (D-FPN)

起首,在DSOD中,运用的骨干收集是DenseNet,其构造如下图所示。输入分红两路,经由$1*1*C$和$3*3*C/4$的卷积后,输出C/4个通道的tensor,然后与输入举行concat。如许做的盘算成本大。

One Stage目的检测 IT教程 第13张

 

遭到MobileNet的启示,作者将深度可星散卷积融会进DenseNet中,并命名为DDB构造。该DDB构造有两种情势,如下图所示。个中,DDB-a中含有倒残差构造的头脑,先将有n个通道的输入扩展至$w*n$个通道,$w$示意工资设置的超参,用于掌握扩大倍数;然后举行$3*3$的卷积;接着举行$1*1$的卷积,但通道数降至$g$;末了将二者举行concat,构成$n+g$个通道的特性图。可以以为$g$示意DDB-a的增长率。然则,这类构造DDB-a的庞杂度是$O(L^3g^2)$,跟着收集层数$L$的增添,盘算资本斲丧也会疾速增添,所以要掌握增长率$g$,将$g$束缚在较小的值。但是,增长率$g$较小,又会使模子的泛化才能变差。

基于上述的斟酌,又提出了DDB-b这类构造。输入起首会压缩成$g$维,然后举行$3*3$的卷积,末了将二者举行concat起来,构成$n+g$维的输出。因而,团体的庞杂度为$O(L^2g^2)$。在试验中发明,DDB-b这类构造不仅越发高效,而且在资本有限的状况下准确率更高。因而,在Tiny DSOD中,运用了DDB-b这类构造。

One Stage目的检测 IT教程 第14张

 

因而,Tiny DSOD的收集构造如下图所示。关于增长率$g$值而言,作者采纳了浅层收集运用小$g$值、深层收集采纳大$g$值得战略。因为浅层收集的特性图尺寸大,须要斲丧更多的盘算资本,而$g$值比较小时,能节约部份盘算盘算。

One Stage目的检测 IT教程 第15张

 

Tiny DSOD的别的一个构造是D-FPN,如下图所示。连系了FPN的头脑,设想了一种轻量化的D-FPN构造,来使深层次的语义信息与浅层特性举行融会。这里的downsample构造与DSOD的构造相似,应用多分枝头脑,融会差别以为野的信息,然则与DSOD差别的是,输出的通道维数变小了和运用了深度可星散卷积。

One Stage目的检测 IT教程 第16张

 

综上所示,在DSOD基本上,Tiny DSOD融会了DDB构造和FPN构造,下降盘算资本的前提下,同时也进步检测效果。

 

RefineDet

RefineDet提出于《Single-Shot Refinement Neural Network for Object Detection》中。总所周知,two stage目的检测器能完成较高的精度,而FPS较慢;one stage目的检测器的FPS很高,但却捐躯肯定精度。two stage能获得较高的精度,是因为:

  1. 运用了二级构造的采样构造来处置惩罚正负样本不均衡问题;
  2. 对展望框举行两次回归;
  3. 运用两段特性来形貌物体。

因而,作者对one stage和two stage目的检测器举行取长补短,提出了RefineDet,构造如下图所示,能完成比two stage检测器更高的精度,且能坚持较好的运转效力。个中,重要由两个模块构成:anchor refiement module (ARM)object detection module (ODM)

One Stage目的检测 IT教程 第17张

 

ARM模块重要担任:

  1. 辨认和移除负例锚点框,以此来为分类器削减搜刮空间;
  2. 大抵地锚点框的位置和大小,为接下来的回归供应更好的初始化。

ARM模块会先对锚点框举行推断,推断锚点框内是不是含有物体,属于二分类;然后再粗调锚点框的位置,来通报给ODM来进一步二次回归。实在这ARM的作用,有点相似Faster R-CNN中的RPN模块。假如ARM中展望出该锚点框属于背景的相信度大于肯定阈值时,就会疏忽这个锚点框。也就是ARM模块只会给ODM模块通报粗调过的难负例锚点框和粗调过的正锚点框。

而ODM模块重要担任将粗调过的锚点框来对其举行二次坐标回归和种别展望。如图中绿色带星星的方块图,星星示意粗调后的锚点框,通报给ODM,ODM在这基本上来进一步展望。

同时,作者还自创了FPN的头脑,设想了transfer connection block (TCB)来将ARM中的特性通报给ODM,可以看到,其将深层语义与浅层语义举行融会,如许应当会进一步进步模子的机能。

 

FCOS

FCOS提出于《FCOS: Fully Convolutional One-Stage Object Detection》中,是一种anchor-free的检测模子。现在,大部份检测模子都是基于预设的锚点框,如SSD系列,作者就思索:目的检测算法是不是肯定须要锚点框才获得较好的机能?而基于锚点框的目的检测算法,具有以下的不足:

  1. 锚点框的数目、宽高比和尺寸都对检测的效果有很大影响,因而这些超参都须要举行调解;
  2. 纵然锚点框经由了举行设想,检测器也很难去处置惩罚具有较大外形变化的物体,如小目的;
  3. 为了进步召回率,基于锚点框的检测器须要在原图上安排许多麋集的锚点框,也就是须要麋集采样。但大部份锚点框都是负样本,从而又会引发正负样本之间的不均衡;
  4. 锚点框平常须要涉及到庞杂的盘算,比方IOU盘算。

因而,作者基于全卷积收集,提出FOCS检测模子。该FCOS会在每层特性图的每一个特性点上展望四维向量和种别,如下图的左侧所示。这四维向量是$(l,t,r,b)$,离别示意该点到检测框四条边的相对间隔。同时,当该像素点阔别GT框的中间点位置时,会发生许多低质量的展望框。为了抑止这些低质量的展望框,在收集合引入了一个分支“center-ness”,来展望像素点到目的框中间的偏移水平,以此来下降低质量展望框的权重。

One Stage目的检测 IT教程 第18张

 

因而,FCOS的收集构造,如下图所示。FCOS连系了FPN模块,并对FPN模块举行了响应的修正,$(P6,P7)$是经由过程$P5$下采样获得的。然后会分红分类头和回归头,离别是4组卷积。末了在分类头处,另有一个Center-ness的分支。

关于特性图$F_i$的每一个位置$(x,y)$,会映照回原图的$left (left lfloor frac{s}{2} right rfloor +xs,left lfloor frac{s}{2} right rfloor +ysright )$,个中$s$示意该特性层的下采样率。当映照归去后,假如该点位于GT框内,则以为其是正样本,与GT框的标签一致,直接举行回归与展望。假如转变位于多个GT框的交集地区,就将该点指定给面积最小的谁人GT框。因为回归的值老是正值,因而在回归头处采纳了$e^x$对坐标值举行映照。运用anchor-free这类体式格局,使负样本的数目削减,有利于正负样本之间的均衡。同时,关于anchor-based的体式格局,每一个特性点有6个或许9个锚点框须要展望,而anchor-free则只需回归一次,团体输出少了9倍摆布。

One Stage目的检测 IT教程 第19张

 

在FCOS中的FPN起到了很重要的作用,重要处置惩罚了以下两个大问题:

  1. 当特性图的下采样率(即stride)较大时,大概会致使较低的最大大概召回率(BPR)。在anchor-based中,可以经由过程下降IOU得分来减缓这个问题。而关于FCOS来讲,直觉上来讲,BPR大概会比anchor-based的检测器要低,因为假如下采样后,对应的点都找不到了,就没法映照回原图,就回归不了了。但作者经由过程大批试验证实,纵然是很大的下采样率,运用了FPN的FCOS依旧能具有不错的BPR,以至逾越了RetinaNet。所以,BPR关于FCOS来讲不是问题。(这里的结论是作者经由过程试验做出来的,和对照组的收集设置有关,以为上FCOS在这方面应当确实是不如anchor-based检测器的。)
  2. 在多个GT框交集的地区,会涌现殽杂的征象,即不肯定该点应当回归哪一个GT框。在这个问题上,作者依旧经由过程试验证实,关于FCOS来讲,运用了FPN一样能较好处置惩罚这个问题。(以为作者没有诠释清晰这个缘由。)

运用了FPN的FCOS,须要在差别特性层处展望差别大小的物体。不像anchor-based那样,为每层特性层指定差别大小的锚点框。FCOS则是起首为每一个特性图的位置点盘算须要回归的间隔$(l^*,t^*,r^*,b^*)$。当$m_{i-1}<max(l^*,t^*,r^*,b^*)<m_i$时,才会以为该点是正样本,送入回归。个中,$m_i$示意第$i$层特性图的最大回归间隔。即回归的4个值中的最大值须要位于两个特性层的最大回归间隔之间。也可以明白成该特性层只对大小为$[m_{i-1},m_i]$的物体举行回归。当这个最大值超越最大回归间隔局限之间时,就以为是负样本,不举行练习。如许做是因为应当对回归举行限定,不大概无限定的回归,举行大值回归大概效果不好,与锚点框的头脑一致。

在末了举行展望和回归的时刻,FPN中差别特性层同享统一个head(即那4组卷积),如许做不仅节约了参数,而且还进步了检测机能。然则,差别特性层用来回归差别尺寸的目的,让一切特性层同享一个head好像不太合理。因而,作者运用了一组可以练习的变量$s_i$来为每层特性层自动调解指数函数的底,所以,在回归头处运用的指数函数不再是$e^x$,而是$e^{s_ix}$。

纵然运用了FPN,FCOS的机能依旧与anchor-based的检测器有差异,缘由是阔别目的中的为位置会发生大批低质量的展望框,就是离目的中间越远,展望框的效果反而更差。因而,作者想要在不引入超参的状况下,抑止这些低质量的检测框,其做法就是引入了一条分支Center-ness。这条Center-ness分支输出一个$Htimes Wtimes 1$的tensor,示意该点到目的中间点的“间隔权重”,如下图所示,“间隔权重”的值在$[0,1]$之间。在测试的时刻,终究输出的分数应当是Center-ness与分类相信度的得分举行相乘。所以,Center-ness能起到下降阔别目的中间的得分权重的作用。而Center-ness的另一种替换情势是只运用实在框中间的四周点作为正样本,工资引入一个超参来抑止远间隔的特性点的影响。作者发明,将这两种体式格局举行连系起来运用,能获得更佳的效果。

$$centerness^*=sqrt{frac{min(l^*,r^*)}{max(l^*,r^*)}times frac{min(t^*,b^*)}{max(t^*,b^*)}}$$

One Stage目的检测 IT教程 第20张

 

终究丧失函数的构成应当有3部份,离别是相信度丧失、回归丧失和centerness丧失(二值交织熵丧失)。个中,$lambda $和$alpha $离别均衡二者的权重。可以看出,丧失函数中都是只是用正样本介入盘算。在源码中盘算丧失函数时,centerness层的值除了盘算二值交织熵丧失外,还会与回归丧失举行连系,下降阔别中间点的特性点的回归丧失。而在测试时,centerness层的值直接与相信度相乘,运用相乘后的相信度来举行后处置惩罚。

$$Loss=frac{1}{N_{pos}}sum_{x,y}L_{cls}(p_{x,y},c^*_{x,y})+frac{lambda }{N_{pos}}sum_{x,y}mathbb{I}_{c^*_{x,y}}L_{reg}(t_{x,y},t^*_{x,y})+alpha L_{center-ness}(d,d^*)$$

下图是FCOS算法的机能,可以看出,在不采用革新步伐的前提下,FCOS已能和RetinaNet媲美了。在运用了(a)center-ness层放在回归头处、(b)只在目的框的中间四周采样、(c)运用GIOU作为回归丧失函数、(d)标准化目的回归函数,等革新步伐后,机能更是进一步进步。

One Stage目的检测 IT教程 第21张

 

参考资料:

  1. FCOS : 找到窍门了,anchor-free的one-stage目的检测算法也可以很准 | ICCV 2019
  2. FCOS算法详解
  3. FCOS源码

以上我是在以为在one stage目的检测中比较典范的算法,为此特地预备回忆了一下。欢迎批评指教。

总结JavaScript对象的深浅拷贝

参与评论