Loading [MathJax]/jax/input/TeX/jax.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >[Intensive Reading]目标检测(object detection)系列(十二) CornerNet:anchor free的开端

[Intensive Reading]目标检测(object detection)系列(十二) CornerNet:anchor free的开端

作者头像
chaibubble
发布于 2022-05-10 13:21:18
发布于 2022-05-10 13:21:18
6270
举报

目标检测系列:

目标检测(object detection)系列(一) R-CNN:CNN目标检测的开山之作

目标检测(object detection)系列(二) SPP-Net:让卷积计算可以共享

目标检测(object detection)系列(三) Fast R-CNN:end-to-end的愉快训练

目标检测(object detection)系列(四) Faster R-CNN:有RPN的Fast R-CNN

目标检测(object detection)系列(五) YOLO:目标检测的另一种打开方式

目标检测(object detection)系列(六) SSD:兼顾效率和准确性

目标检测(object detection)系列(七) R-FCN:位置敏感的Faster R-CNN

目标检测(object detection)系列(八) YOLOv2:更好,更快,更强

目标检测(object detection)系列(九) YOLOv3:取百家所长成一家之言

目标检测(object detection)系列(十) FPN:用特征金字塔引入多尺度

目标检测(object detection)系列(十一) RetinaNet:one-stage检测器巅峰之作

目标检测(object detection)系列(十二) CornerNet:anchor free的开端

目标检测(object detection)系列(十三) CenterNet:no Anchor,no NMS

目标检测(object detection)系列(十四)FCOS:用图像分割处理目标检测

目标检测扩展系列:

目标检测(object detection)扩展系列(一) Selective Search:选择性搜索算法

目标检测(object detection)扩展系列(二) OHEM:在线难例挖掘

目标检测(object detection)扩展系列(三) Faster R-CNN,YOLO,SSD,YOLOv2,YOLOv3在损失函数上的区别

简介:anchor free的开端

过去的目标检测算法,two-stage方法从Faster R-CNN开始,one-stage方法从SSD开始,都无一例外的引入了anchor,anchor先验的引入使网络不需要从0直接预测Bounding box,这有利于目标检测器得到更好的效果。但是随着Anchor box的逐渐增多,它变成了目标检测算法的一个瓶颈,而CornerNet首次弃用了anchor box,就像它的名字一样,它将目标物体转化为检测左上角和右下角的点,CornerNet的论文是《CornerNet: Detecting Objects as Paired Keypoints》

CornerNet原理

设计理念

CornerNet的出发点和RetinaNet是同一个,对于one-stage的目标检测器,大量的anchor导致正负样本的不平衡,网络训练时loss会被大批量负样本所左右。同时又由于检测器是one-stage的,一旦预设了anchor,没办法二次筛选它。所以RetinaNet提出了Focal loss,在计算损失时弱化负样本的影响。而CornerNet则是直接弃用了anchor,除了上面的原因,还有一个就是anchor的设计是完全先验的,有大量的超参数,比如如何选择尺度,比例,多少个分支等等,每个层放几个等等,每个结构都不一样。

CornerNet受到人体姿态估计方法的启发,将目标检测问题转化为预测目标边界框的左上角和右下角一对顶点,也就是使用单一卷积模型生成热点图和嵌入式向量,里面的很多部分参考了《Associative Embedding:End-to-End Learning for Joint Detection and Grouping》

网络需要输出两个Heatmap和一个embedding vector,一个Heatmap上包含了所有目标的左上角点,另一个Heatmap上包含所有目标的右下角点,embedding vector则负责预测这一堆左上角点和右下角点,哪两个应该是一对。

为什么选择角点预测

在CornerNet前的所有方法去定义Bounding Box的时候都是选择中心点和宽高,这种方式利于特征图生成的anchor去编码ground truth。但是CornerNet选择使用左上角和右下角去定义Bounding Box,原因有两个:

  • 中心点相比左上角和右下角的点更难定义,因为中心点需要先确定四条边,但是角点不是这样,它只需要两条边,分别是到最右和最下的距离;
  • 角点的选择对于空间的离散化是更高效的,因为只需要wh 个点就可以表达w2h2 个格子。意思是说,对于一个w×h 的特征图来说,其中的任意一个点作为中心去选择box,都有w×h 种可能性,而w×h 的特征图上有w×h 个点,所以表达了w2h2 个格子。

如何检测角点

网络最后会输出两个heatmap,heatmap的尺寸为W×H×C ,其中C是目标的类别数,背景类不作为一个类别。两个heatmap分别负责左上角的点和右下角的点,它是一个二值的mask特征图,这两个heatmap上的包含了目标检测任务需要的大部分信息了,原始图像上各个目标的点,会根据目标类别不同反映到heatmap不同通道的前景上。

因为ConerNet就是在参考人体姿态估计的方法,输出的heatmap就是类似下图中蓝色的热力图,下图是Hourglass Network的示例图,只是ConerNet把它换成了左上角和右下角。

heatmap是一个二值的mask,所以这其实是个二分类问题,ground truth在heatmap上只是一个点,而其余所有的点都应该是负样本,对于任意的负样本,训练时的惩罚应该是一致的。但是在CornerNet没有这样来用,因为这个点如果和ground truth偏移的不多,那么两个点连起来的Box还是可以和ground truth有很大的overlaps。

CornerNet以ground truth点为中心的选择了一个圆,这个圆的半径选择依据时,圆内的点连起来的矩形应该可以与ground truth至少有0.3的IOU。就像下图,红色框是实际的目标Bbox,橙色是一个圆,在圆内两点连起来的绿色框依然和红色框有很大的交叠。

这样确定出来圆的半径之后,越是靠近圆心位置的点,惩罚就应该越小,相反的应该越大。并且一个点有(i,j)

两个值,如果想用二分类问题来解决这个点的训练,需要将它映射为一个值。

基于上面两点考虑,CornerNet选择使用一个高斯分布,标准差为半径的1/3 ,映射heatmap上的点(i,j)

ycij=ex2+y22σ2

heatmap的损失参考了focal loss,并在此基础上加上了高斯映射,因为半径的设计是一个局部效果,所以命名为variant of focal loss,最后的loss为:

其中的C是类别数目,然后遍历W和H,它和focal loss的区别就在负样本时的那个系数(1ycij)β ,越是靠近圆心grounth truth的点,(1ycij) 就越是趋近于0,相反的惩罚就越大。

那么最后,如果是“圆”外面的点,结果会怎样,这个就是标准差选取的作用,这样的标准差选取遵循3σ

原则,保证了在半径范围的值占到高斯分布的99%以上,而半径外的点,高斯映射后无限趋近于0,所以对于圆外面的点惩罚是1。

如何预测offset

CornerNet的另一个输出是offset,CornerNet预测的点是在特征图上,特征图是在原图上成倍数的下采样得到的,但是在特征图上的像素点只能是整数,这样就会带来精度的丢失,offset就是补偿这个精度用的,offset的计算是这样:

xkn 是实际做除法计算出来的小数,xkn

是取整之后的结果,offset的预测使用的是smooth L1 Loss:

这个loss只用于ground truth的点。

如何配对角点

上面说到heatmap有两个,原图中有很多目标的话,那么两张heatmap上就有多个点。这些点中哪两个应该是一对?

CornerNet还是借鉴了上文姿态估计的方法,引入嵌入式向量。Associative Embedding论文将嵌入式向量应用到判别哪些关键点是属于同一个人的,它也同样适用于判定是否为同一目标。模型在训练阶段为每个corner预测相应的embedding vector,通过embedding vector使同一目标的顶点对距离最短,既模型可以通过embedding vector为每个顶点分组。

其实这个所谓的embedding vector就可以理解为一个值,它和角点是一一对应的,我们为了配对两张heatmap上的角点需要两个条件:

  • 同一个object的角点,embedding vector应该尽量小
  • 不同object的角点,embedding vector应该尽量大为了做到上面的目的,CornerNet使用了两个损失,LpullLpush

Lpull 中,k代表object,etk 代表第k个object的左上角点的embedding vector,etk 代表第k个object的右下角点的embedding vector,ek 是它们的平均值,所以Lpull 的目的是拉近原本就属于一个object的点。但是这还不够,所以的object点的embedding vector都一致,那距离也很近。但是显然这样就什么都分不出来了,所以还需要Lpull 来拉开不同object之间的距离,ekej 是两个不同目标的embedding vector平均值,在实验中Δ=1 ,所以这个loss是让ekej 的差的绝对值怎么也要比1大。同样的,这两个loss只用于ground truth的点。

Corner Pooling和沙漏网络

为了适应角点检测任务,CornerNet提出了Corner Pooling,虽然这里叫Pooling,但是它不负责下采样,只负责信息的聚合。

对于目标,它的左上角和右下角的点其实没有什么特征,它只是矩形两个边的交点而已,反而是这个矩形的上边由帽子决定,矩形的左边由手部决定。所以Corner Pooling做聚合的目的是找到行列上最具有特征的那个点。

以左上角点输出为例,Corner Pooling需要两个支路一个支路从最右像最左找最大值,一个支路从最下像最上找最大值,最后把这两个支路的输出加起来。因为我们先验的认为,在上面的例子中,水平方向的最大值应该在帽子的顶部,垂直方向的最大值在右手处。

CornerNet的主干模型是Hourglass Network(沙漏网络),这个也是参考了Associative Embedding论文,沙漏网络是做姿态估计任务中很常见的结构,而且在一些人脸landmark任务中也常看到,CornerNet的主干中是使用的s=2的卷积下采样操作。连续堆叠了2个这样的模块。hourglass结构可以很好的结合局部特征和全局特征。最终feature map被缩小5倍。其中卷积层的通道数分别为(256; 384; 384; 384; 512)。hourglass结构的网络深度为104层。

组合上面五个部分,最终CornerNet的结构是这样。

CornerNet性能评价

上图在说明Corner Pooling对于CornerNet的影响,当使用Corner Pooling时AP可以提升2.0。

上图在说明角点预测时适应的惩罚策略对于CornerNet的影响,如果完全移除,也就是对于所有的负样本都是相同的惩罚,AP是最低的;当使用固定的半径时,AP可以提升;使用目标相关的半径选择时,AP最高。

上图在说明沙漏网络和Corner方法的影响,如果使用的是ResNet-101主干,使用角点预测方法,AP是最低的;使用沙漏网络和Anchor的方法AP有所提升;使用沙漏网络+角点预测效果是最好的。

最后就是综合的实验结果,在CornerNet之前的方法全部都是基于Anchor的,而上表的下半部分是one-stage的方法,上半部分是two-stage的方法,CornerNet的AP超过了所有的one-stage检测器,但是有一点是它的AP50不如RefineDet和RetinaNet,这可能是由于CornerNet的半径选择策略和高斯分布的惩罚系数,让CornerNet关注更高的IOU。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-08-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
目标检测(object detection)系列(十二) CornerNet:anchor free的开端
过去的目标检测算法,two-stage方法从Faster R-CNN开始,one-stage方法从SSD开始,都无一例外的引入了anchor,anchor先验的引入使网络不需要从0直接预测Bounding box,这有利于目标检测器得到更好的效果。但是随着Anchor box的逐渐增多,它变成了目标检测算法的一个瓶颈,而CornerNet首次弃用了anchor box,就像它的名字一样,它将目标物体转化为检测左上角和右下角的点,CornerNet的论文是《CornerNet: Detecting Objects as Paired Keypoints》。
chaibubble
2019/08/29
1.6K0
目标检测(object detection)系列(十二) CornerNet:anchor free的开端
anchor-free对象检测网络CornerNet详解
一类是以Faster-RCNN/Mask-RCNN为代表的two-stage检测器,第一阶段通过RPN网络产生大量的推荐区域,第二阶段通过对这些区域分类输出实现对象检测。这类方法的共同点就是算法精度比较高但是速度比较慢。
OpenCV学堂
2019/12/12
1.5K0
anchor-free对象检测网络CornerNet详解
【目标检测Anchor-Free】ECCV 2018 CornerNet
继续来探索Anchor-Free目标检测算法,前面讲了Anchor-Free的起源 目标检测算法之Anchor Free的起源:CVPR 2015 DenseBox ,其实同期另外一个有名的目标检测算法YOLOV1也是Anchor-Free系列的了。Anchor-Free系列相比于Anchor-Based的发展是较慢的,在2018-2019年才开始火起来。今天为大家介绍一下ECCV 2018的CornerNet,全称为:Detecting Objects as Paired Keypoints 。论文原文和代码见附录链接。
BBuf
2020/02/21
8000
【目标检测Anchor-Free】ECCV 2018 CornerNet
目标检测(object detection)系列(十三)CenterNet:no Anchor,no NMS
CenterNet的论文是《Objects as Points》,其实从名字就可以很直观的看出,CenterNet是将目标检测问题看做对于目标中心点的检测,它是继CornerNet之后的又一个Anchor-free方法,它们之间也有比较多的相似之处,区别在于CornerNet是找目标的角点,而CenterNet是找目标的中心点。
chaibubble
2020/07/06
2.3K0
CornerNet: 成对关键点物体检测 | CSDN博文精选
5、用于Grouping Corners的 embedding vector的工作原理
AI科技大本营
2019/10/31
9930
十二篇基于Anchor free的目标检测方法
1、UnitBox: An Advanced Object Detection Network
狼啸风云
2020/06/02
2.2K0
十二篇基于Anchor free的目标检测方法
[ECCV 2018]CornerNet: Detecting Objects as Paired Keypoints解读
本文提出一种使用单个卷积神经网络的新型物体检测方法: CornerNet. 本文通过将目标定义为成对关键点,消除了单阶段检测网络中对anchor box的需要. 除了新颖的网络形式外,本文还介绍了角落池化(corner pooling):一种新的池化方式,它可以帮助网络更好地定位物体的边角。 实验表明,CornerNet在MS COCO上实现了42.1%的AP,优于所有现有的单阶段检测模型。
SIGAI学习与实践平台
2019/03/06
1.5K0
[ECCV 2018]CornerNet: Detecting Objects as Paired Keypoints解读
[Intensive Reading]目标检测(object detection)系列(十三)CenterNet:no Anchor,no NMS
目标检测系列: 目标检测(object detection)系列(一) R-CNN:CNN目标检测的开山之作 目标检测(object detection)系列(二) SPP-Net:让卷积计算可以共享 目标检测(object detection)系列(三) Fast R-CNN:end-to-end的愉快训练 目标检测(object detection)系列(四) Faster R-CNN:有RPN的Fast R-CNN 目标检测(object detection)系列(五) YOLO:目标检测的另一种打开方式 目标检测(object detection)系列(六) SSD:兼顾效率和准确性 目标检测(object detection)系列(七) R-FCN:位置敏感的Faster R-CNN 目标检测(object detection)系列(八) YOLOv2:更好,更快,更强 目标检测(object detection)系列(九) YOLOv3:取百家所长成一家之言 目标检测(object detection)系列(十) FPN:用特征金字塔引入多尺度 目标检测(object detection)系列(十一) RetinaNet:one-stage检测器巅峰之作 目标检测(object detection)系列(十二) CornerNet:anchor free的开端 目标检测(object detection)系列(十三) CenterNet:no Anchor,no NMS 目标检测(object detection)系列(十四) FCOS:用图像分割处理目标检测
chaibubble
2021/11/17
5980
[Intensive Reading]目标检测(object detection)系列(十三)CenterNet:no Anchor,no NMS
目标检测 | Anchor free之CornerNet网络深度解析
最近又跳回来继续学习基于anchor free的目标检测模型,具体包括CornerNet和CenterNet等网络结构 。
AI算法修炼营
2020/08/25
1K0
目标检测 | Anchor free之CornerNet网络深度解析
CornerNet:经典keypoint-based方法,通过定位角点进行目标检测 | ECCV2018
论文: CornerNet: Detecting Objects as Paired Keypoints
VincentLee
2021/01/14
8350
ECCV-2018最佼佼者的目标检测算法
转眼间,离上次9月3日已有9天的时间,好久没有将最新最好的“干货”分享给大家,让大家一起在学习群里讨论最新技术,那今天我给大家带来ECCV-2018年最优paper之一,也是目标检测里的佼佼者,值得我们去深挖,去学习!
计算机视觉研究院
2018/09/21
2.8K0
ECCV-2018最佼佼者的目标检测算法
RRC detection、CornerNet、M2Det、FOCS…你都掌握了吗?一文总结目标检测必备经典模型(三)
 机器之心专栏 本专栏由机器之心SOTA!模型资源站出品,每周日于机器之心公众号持续更新。 本专栏将逐一盘点自然语言处理、计算机视觉等领域下的常见任务,并对在这些任务上取得过 SOTA 的经典模型逐一详解。前往 SOTA!模型资源站(sota.jiqizhixin.com)即可获取本文中包含的模型实现代码、预训练模型及 API 等资源。 本文将分 3 期进行连载,共介绍 17 个在目标检测任务上曾取得 SOTA 的经典模型。 第 1 期:R-CNN、SPP-Net、Fast R-CNN、Faster R-C
机器之心
2023/03/29
1.3K0
RRC detection、CornerNet、M2Det、FOCS…你都掌握了吗?一文总结目标检测必备经典模型(三)
中科院牛津华为诺亚提出:CenterNet,One-stage目标检测最强算法!可达47mAP,已开源!
我们介绍一篇很好的 one-stage 目标检测论文:CenterNet: Keypoint Triplets for Object Detection,该论文是由 中科院,牛津大学以及华为诺亚方舟实验室联合提出。截至目前,据我们所知,CenterNet 应该是 one-stage 目标检测方法中性能最好的方法。
Amusi
2019/05/05
2.1K0
中科院牛津华为诺亚提出:CenterNet,One-stage目标检测最强算法!可达47mAP,已开源!
【目标检测Anchor-Free】CVPR 2019 CenterNet
前面介绍了CornerNet和ExtremeNet,今天要介绍的是CVPR 2019一篇大名鼎鼎的Anchor-Free目标检测论文《CenterNet: Keypoint Triplets for Object Detection》,这篇论文由中科院,牛津大学以及华为诺亚方舟实验室联合提出。是One-Stage目标检测算法中精度最高的算法。值得注意的是CenterNet是在之前介绍的CornerNet上进行了改进,CornerNet我们已经介绍过了,可以去看往期文章。本论文的地址以及官方代码地址见附录。
BBuf
2020/02/21
7840
【目标检测Anchor-Free】CVPR 2019 CenterNet
角网络——目标检测(文后有paper地址及源码)
【导读】今天分享的技术提出了一种新目标检测方法,用单个卷积网络将目标边界框检测为一对关键点(即边界框的左上角和右下角)。通过将目标检测为成对关键点,消除现有的one stage检测器设计中对一组anchors的需要。除此之外,还引入了corner pooling,一种新型的池化层,可以帮助网络更好的定位边界框的角点。最终CornerNet在MS COCO上实现了42.1%的AP,优于所有现有的one stage检测器。
计算机视觉研究院
2019/06/14
5550
角网络——目标检测(文后有paper地址及源码)
[Intensive Reading]目标检测(object detection)系列(二) SPP-Net:让卷积计算可以共享
目标检测系列: 目标检测(object detection)系列(一) R-CNN:CNN目标检测的开山之作 目标检测(object detection)系列(二) SPP-Net:让卷积计算可以共享 目标检测(object detection)系列(三) Fast R-CNN:end-to-end的愉快训练 目标检测(object detection)系列(四) Faster R-CNN:有RPN的Fast R-CNN 目标检测(object detection)系列(五) YOLO:目标检测的另一种打开方式 目标检测(object detection)系列(六) SSD:兼顾效率和准确性 目标检测(object detection)系列(七) R-FCN:位置敏感的Faster R-CNN 目标检测(object detection)系列(八) YOLOv2:更好,更快,更强 目标检测(object detection)系列(九) YOLOv3:取百家所长成一家之言 目标检测(object detection)系列(十) FPN:用特征金字塔引入多尺度 目标检测(object detection)系列(十一) RetinaNet:one-stage检测器巅峰之作 目标检测(object detection)系列(十二) CornerNet:anchor free的开端 目标检测(object detection)系列(十三) CenterNet:no Anchor,no NMS 目标检测(object detection)系列(十四)FCOS:用图像分割处理目标检测
chaibubble
2022/05/09
2920
[Intensive Reading]目标检测(object detection)系列(二) SPP-Net:让卷积计算可以共享
【目标检测Anchor-Free】CVPR 2019 ExtremeNet(相比CornerNet涨点5.3%)
继续Anchor-Free探索。前面介绍了【目标检测Anchor-Free】ECCV 2018 CornerNet,相信大家对Anchor-Free目标检测算法有基本的认识和理解了。但是在介绍这个论文的时候最后提到CornerNet最大的瓶颈在于角点检测的不准确,这篇文章主要针对这一点进行了改进,提出了ExtremeNet。论文原文和代码见附录。
BBuf
2020/02/21
8180
【目标检测Anchor-Free】CVPR 2019 ExtremeNet(相比CornerNet涨点5.3%)
Anchor-free目标检测 | 工业应用更友好的新网络(附大量相关论文下载)
随着 CVPR 2020和ICCV 2020的结束,一大批目标检测的论文在arXiv上争先恐后地露面,更多的论文都可以直接下载。
计算机视觉研究院
2020/12/29
1K0
Anchor-free目标检测 | 工业应用更友好的新网络(附大量相关论文下载)
CornerNet: Detecting Objects as Paired Keypoints
我们提出了一种新的对象检测方法——拐角网络,该方法利用单一的卷积神经网络将对象的左上角和右下角作为一对关键点检测出来。通过检测成对的关键点,我们消除了设计一组锚箱的需要,通常使用单级检测器。除了我们的新公式,我们还引入了角池化,这是一种新的池化层,可以帮助网络更好地定位角。实验表明,在MS COCO上,CornerNet实现了42.2%的AP,优于现有的所有一级检测器。
狼啸风云
2021/07/19
1.6K0
CornerNet: Detecting Objects as Paired Keypoints
一文读懂目标检测中的anchor free 和anchor base
作者丨龙场悟道 来源丨知乎https://zhuanlan.zhihu.com/p/273646465 编辑丨AiCharm
AiCharm
2023/06/07
10.1K0
一文读懂目标检测中的anchor free 和anchor base
推荐阅读
目标检测(object detection)系列(十二) CornerNet:anchor free的开端
1.6K0
anchor-free对象检测网络CornerNet详解
1.5K0
【目标检测Anchor-Free】ECCV 2018 CornerNet
8000
目标检测(object detection)系列(十三)CenterNet:no Anchor,no NMS
2.3K0
CornerNet: 成对关键点物体检测 | CSDN博文精选
9930
十二篇基于Anchor free的目标检测方法
2.2K0
[ECCV 2018]CornerNet: Detecting Objects as Paired Keypoints解读
1.5K0
[Intensive Reading]目标检测(object detection)系列(十三)CenterNet:no Anchor,no NMS
5980
目标检测 | Anchor free之CornerNet网络深度解析
1K0
CornerNet:经典keypoint-based方法,通过定位角点进行目标检测 | ECCV2018
8350
ECCV-2018最佼佼者的目标检测算法
2.8K0
RRC detection、CornerNet、M2Det、FOCS…你都掌握了吗?一文总结目标检测必备经典模型(三)
1.3K0
中科院牛津华为诺亚提出:CenterNet,One-stage目标检测最强算法!可达47mAP,已开源!
2.1K0
【目标检测Anchor-Free】CVPR 2019 CenterNet
7840
角网络——目标检测(文后有paper地址及源码)
5550
[Intensive Reading]目标检测(object detection)系列(二) SPP-Net:让卷积计算可以共享
2920
【目标检测Anchor-Free】CVPR 2019 ExtremeNet(相比CornerNet涨点5.3%)
8180
Anchor-free目标检测 | 工业应用更友好的新网络(附大量相关论文下载)
1K0
CornerNet: Detecting Objects as Paired Keypoints
1.6K0
一文读懂目标检测中的anchor free 和anchor base
10.1K0
相关推荐
目标检测(object detection)系列(十二) CornerNet:anchor free的开端
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档