前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >anchor-free对象检测网络CornerNet详解

anchor-free对象检测网络CornerNet详解

作者头像
OpenCV学堂
发布2019-12-12 18:17:44
1.1K0
发布2019-12-12 18:17:44
举报

以前的对象检测网络

主要是两类对象检测方法

一类是以Faster-RCNN/Mask-RCNN为代表的two-stage检测器,第一阶段通过RPN网络产生大量的推荐区域,第二阶段通过对这些区域分类输出实现对象检测。这类方法的共同点就是算法精度比较高但是速度比较慢。

另外一类是以SSD/YOLO为代表的one-stage检测器,它们把对象检测问题当成简单的回归问题进行处理,通过CNN网络从输入图像中学习分类属性与位置信息,这类方法通常准确率(mAP)都比较低但是相比two-stage的网络速度比较快,

这两类对象检测网络,都是是通过生成或者定义各种比例的anchor来为实现对象检测服务。

关键点对的对象检测网络-CornerNet

CornerNet网络的特点:

1.CornerNet是一个真正意义上的anchor-free的网络,它把anchor box简单表示为左上角与右下角一个关键点对,

2.使用一个新池化层corner pooling,帮助网络更好的寻找角点

3.在识别精度超过现存的one-stage的网络,达到SOTA。

CornerNet网络结构

Cornet网络使用Hourglass网络作为backbone网络,后面跟随两个预测模型,分别预测box的左上角点与右下角点,每个模型包含corner pooling模块,然后池化特征预测heatmaps、embeddings、Offsets。

Heatmap的每个通道都是一个二值mask,预测每个对象关键点对位置信息,而且每个角点都跟其它的角点做一个距离预测作为embeddings vector,然后相似的嵌入或者属于同一个box的它们之间的距离是小的,这样就会生成anchor box,得到预测的结果。

训练预测两个嵌入的相似性即可得到最终的anchor-box。为了得到更好的检测框,网络也预测anchor-box的offset,这样可以生成调整后的最终检测框。最后网络在输出的对象检测框的基础上通过NMS处理就得到了最终的检测框。

对每个角点,都有个正确标注位置信息,其它都是负样本,为了平衡正负样本的比例,作者只对正样本指定半径周围负样本考虑在训练环节,图示如下:

Corner-pooling详解

首先看下图

分别在水平与垂直放心求最大值,然后再叠加,得到输出的结果,需要特别方向是自底向上,从右到左。更详解的图解如下:

如果是求右下角点,则方向相反。

预测模型

预测模型结构如下:

从backbone网络出来是接残差block,不过这里是把卷积替换成Corner-Pooling模块,然后紧跟一个3x3卷积之后进行多路输出。

测试结果:

论文

https://arxiv.org/pdf/1808.01244.pdf

代码:

https://github.com/princeton-vl/CornerNet

参考:

https://opencv.org/latest-trends-of-object-detection-from-cornernet-to-centernet-explained-part-i-cornernet/
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-12-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 OpenCV学堂 微信公众号,前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档