写在最前面
这一系列文章是博主2020年本科论文调研时记的,现在是多模态的时代,很多技术都过时了,发出来希望对读这些论文的人有所帮助
Title
CornerNet:Detecting Objects as Paired Keypoints
Summary
CornerNet是一种全新的anchor-free目标检测方法,提出了很多新的思想,包括引用关键点检测,引入嵌入向量,提出corner pooling等,这也使得CornerNet成为具有一定竞争力的检测方法之一,但CornerNet同样存在很多问题,那就是还可能出现不同物体的corner组合的情况。
Research Objective
探究基于关键点检测的、摆脱anchor boxes的目标检测方法
Problem Statement
当前的state-of-the-art检测方法中,都存在一个公共的组件,那就是anchor boxes。anchor boxes在一阶段的目标检测中得到广泛的使用,这使得一阶段目标检测在更高效的同时,在检测结果上也具有一定的竞争力。然而anchor boxes的使用存在两个缺点:1.由于需要产生很多的anchor boxes来保证和真实框的重合,这就导致正例和负例数目上的严重不均衡,对检测结果和训练速度都会造成一定的影响;2.anchor boxes的使用也会引入很多的超参数,包括box的number、size、aspect ratio。
Methods
1.Overview
CornerNet,一种新的一阶段检测方法,通过检测一个bounding box的左上角和右下角来确定物体。使用一个简单的卷积神经网络为属于同一类的所有实例的左上角预测一个热图,右下角预测一个热图,并为所有检测到的角预测一个嵌入向量,这个嵌入向量用于组合两个角为一个框,网络训练目标为使同一物体的两个角的嵌入向量尽量相似。为了产生更加准确的预测框,网络还要预测偏移来调整corner的位置。
CornerNet的backbone为hourglass network(Newell et al.,2016),backbone后跟两个预测模块,一个用于预测左上角,一个用于预测右下角,每一个模块在预测热图、嵌入和偏移前,都有自己的corner pooling模块。
2.Detecting Corners
网络预测两个热图集,一个用于左上角,一个用于右下角,每一个集合有C张H*W大小的热图,C为类别数,每张热图都是二进制掩码用来指示这一类物体corner的位置。
对于一个corner,只有一个positive位置,其他位置都是negative,在训练的过程中,并不是平等的惩罚每一个negative位置,而是减少在positive位置一定半径内的negative位置的惩罚,半径则是根据物体的大小决定的,原则是确保在半径内的一对儿corners产生的bounding box至少和真实标注有t的IoU(在所有实验中,t=0.3),在给定了半径之后,惩罚的减少量由一个二维高斯函数决定:
令pcij代表类别c的热图中位置(i,j)的分数,ycij代表由高斯函数得到的“ground-truth”热图中位置(i,j)的分数,这样就可以得到focal loss的一个变种:
许多神经网络都包含下采样层来收集全局信息并减少内存使用,因此,图片中的位置(x,y)在热图中被映射到了:
当我们想要映射回去的时候,就会存在精度损失的问题,这会对小物体的检测IoU产生较大的影响,为了解决这个问题,网络还要预测定位偏移:
特别要指出的是,这里的偏移预测不分类别,为所有类别共享,损失函数为:
3.Grouping Corners
在一张图片中可能出现多个物体,因此也就会检测出多个左上角和右下角,我们需要决定哪一对左上角和右下角属于同一个bounding box。我们的方法从Newell et al.(2017)在多人姿态识别中提出的相关嵌入方法获得灵感。在他们的方法中,每一个检测的人体关节有一个嵌入向量,随后这些关节根据它们嵌入向量的距离进行组合。
相关嵌入的思想在我们的工作中同样得到了应用,网络为每一个检测到的corner预测一个嵌入向量,如果一个左上角和右下角属于同一个bounding box,它们嵌入向量之间的距离应该较小,因此我们可以根据这个距离来组合corners,嵌入向量的值并不重要,它们之间的距离才是我们要使用的值。
令etk为物体k左上角的嵌入向量,ebk为物体k右下角的嵌入向量,定义“pull”损失和“push”损失:
4.Corner Pooling
corner pooling是一种新的池化层,可以帮助CNN更好的定位bounding box的角的位置。一个bounding box的角通常落在真实物体的外面,在这种情况下,不能通过局部信息来定位角的位置(传统的池化方法)。以左上角为例,为了确定某个位置是否是左上角,我们需要水平向右看来确定物体的上边界,垂直向下看来确定物体的左边界,这就导致了corner pooling的产生(左上角):对每一个位置,计算特征图中在它右边、与它属于同一行的最大特征值,计算特征图中在它下边、与它属于同一列的最大特征值,随后将这两个值相加作为corner pooling的结果。
预测模块的结构:
5.Hourglass Network
CornerNet使用hourglass network作为backbone网络,hourglass network是一个全卷积神经网络,由一个或多个hourglass模块组成,hourglass模块首先通过一系列的卷积和池化层对输入进行降采样,随后通过上采样和卷积层将特征转换为原始大小,中间存在跳层连接。我们的hourglass network由两个hourglass模块组成,并对其结构进行了一定的修改。
Evaluation
1.在MS COCO(Lin et al.,2014)数据集上对CornerNet进行评估,MS COCO 2014包含8w张训练图片,4w张验证图片和2w张测试图片。所有的训练图片和3.5w张验证图片用于训练模型,剩下的5k张图片用于搜索超参数和控制变量测试,为了和其他模型进行对比,使用在test-dev集上的评估结果作为主要结果,包含不同IoU的AP和不同大小物体的AP。
2.Ablation Study
(1)Corner Pooling
(2)Stability of Corner Pooling over Larger Area
(3)Reducing Penalty to Negative Locations
(4) Hourglass Network
(5)Quality of the Bounding Boxes
(6)Error Analysis
3. Comparisons with state-of-the-art detectors
Conclusion
Weak Conclusion
检测corner比bounding box中心要好的两个原因:(1)定位box的中心需要依赖于物体四个边的确定,而定位一个corner仅需要依赖两个边,更重要的是还有corner pooling,所以要简单一些;(2)corner提供了一种更有效的方式来离散化box空间,只需要O(wh)个corners就可以代表 O(w2h2)个anchor box。
Strong Conclusion
CornerNet是一种新的目标检测方法,将bounding box预测为一对儿corners,随后在MS COCO上得到具有挑战性的结果。
Notes
1.DeNet(Tychsen-Smith and Petersson,2017a)是一种不使用anchor box生成RoIs的二阶段检测方法,它首先确定每个位置是否是一个bounding box的corner(左上角,左下角,右上角,右下角),随后枚举所有可能的corner的组合来生成RoIs,并遵循标准的二阶段方法来对每一个RoI进行分类。
2.Point Linking Network(PLN)(Wang et al.,2017)是一个不使用anchor box的一阶段检测器,它首先预测一个bounding box的四个corners和中心的位置,然后,对于每一个corner,预测每一个位置是否是中心,对于每一个中心位置,预测每一个位置是否是corner,随后组合每一个corner和中心来产生bounding box。
3.在CornerNet中,嵌入向量的值没有得到利用(利用的仅是距离),这就导致在组合时,可能出现同一类、不同物体的corner组合起来。
4.在训练时使用了中继监督优化的方法,但是并未使用中间预测,因为这样做会降低网络的性能。
5.IoU=0.9时,CornerNet要显著好于RetinaNet、Cascade R-CNN。