专栏首页贾志刚-OpenCV学堂对象检测新趋势anchor-free模型之CenterNe

对象检测新趋势anchor-free模型之CenterNe

概述

01

CornerNet作为anchor-free对象检测网络,克服了one-stage对象检测依赖anchor boxes的缺点,但是CornerNet本身在对象检测方面的精度仍然有限,本文作者认真分析了CornerNet网络的缺陷,提出了新的改进方法。CornerNet网络依赖关键点对来定位对象的bounding box然而这种方法常常会导致错误定位,CenterNet提出了基于三联关键点定位改进,通过自定义两个关键模块-级联Corner Pooling 与 Center Pooling从而提升位置信息识别能力,在MS-COCO数据集上AP达到了47%超过所有其它的one-stage对象检测模型,同时拥有更快的推理速度。

CornerNet的一个缺点是经常预测错误的点对,这个需要后期根据比率进行适当的过滤才会产生正确的bounding box,而通过中心位置点可以很快确认正确的点对信息,提升CornerNet模型的精度。图示如下

第一行蓝色框是ground truth, 红色框是预测结果。第二行为添加中心点之后的改进,当对象与预测框IOU很高时候,中心可能性也应该很高,反之亦然。CornerNet在不同尺度大小与IOU并交比时候的不同错误率如下:

网络架构

02

相比CornerNet多出一个分支输出,就是中心点信息预测,此外这里的backbone网络依然采用Hourglass网络。通过CornerNet部分生成多个bounding box,对生成的多个bounding box,选择top-k个box(根据得分),然后做如下处理:

1.选择top-k个中心关键点(根据得分)

2.根据offset把中心点重映射到输入图像上

3.定义个中心区域,检查中心点是否在中心区域内(中心点的标签与bounding box的标签必须一致)

4.如果关键点在中心区域,则该bounding box保留,box得分将有三个关键点(左上角点、右下角点、中心点)平均值取代,反之则删除该bounding box。

CenterNet模型的关键在于中心区域大小的定义选择。当对小目标选择小中心区域,召回率比较低,说明小目标比较难发现;对于大的目标选择比较大的中心区域时候,发现精度比较低,说明预测错误框比较多。想想很容易理解,小目标选择小的中心区域,中心关键点很难匹配到,而大目标选择比较大的中心区域导致过度匹配。所以作者提出一种scale-aware的自适应中心区域选择方法,对小bounding box尽量选择大的中心区域,大的bounding box选择小的中心区域 ,最终中心区域选择满足如下计算公式:

tl表示top-left即左上角点,br表示bottom right即右下角点,n为奇数。N=3与5的示例如下图

池化模块

03

Center Pooling(中心池化)

上图a表示中心池化,选择水平与垂直两个方向上的最大值,具体做法如下,对来自backbone输出的feature map,进行X与Y方向的最大值提取,然后叠加,这样做法有利于发现中心关键点。

Cascade Corner Pooling级联角池化

见上图(C)所示,首先发现bounding方向的最大值,然后再发现内部的最大值,把这两个最大值叠加在一起,这样就既获得了框信息也获得对象可视化模式信息。这两种池化模块很容易结合在一起使用,它们的结构如下:

训练与测试对比

04

损失计算公式如下:

其中前面两个是focal losses

中间两个是角点的量词嵌入损失

最后两个是位置损失基于L1计算

最终CenterNet的测试对比结果如下:

论文地址https://arxiv.org/pdf/1904.08189v3.

本文分享自微信公众号 - OpenCV学堂(CVSCHOOL),作者:gloomyfish

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-12-11

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 干货 | 使用FFT变换自动去除图像中严重的网纹

    这个课题在很久以前就已经有所接触,不过一直没有用代码去实现过。最近买了一本《机器视觉算法与应用第二版》书,书中再次提到该方法:使用傅里叶变换进行滤波处理的真正好...

    OpenCV学堂
  • OpenCV SIFT特征算法详解与使用

    SIFT特征是非常稳定的图像特征,在图像搜索、特征匹配、图像分类检测等方面应用十分广泛,但是它的缺点也是非常明显,就是计算量比较大,很难实时,所以对一些实时要求...

    OpenCV学堂
  • OpenCV实战 | Hessian矩阵以及在血管增强中的应用

    - 由于本文代码基于OpenCV基础库,所以题目中添加了“OpenCV实现”字样。

    OpenCV学堂
  • 【JS】327- javascript 的 api 设计原则

    本篇博文来自一次公司内部的前端分享,从多个方面讨论了在设计接口时遵循的原则,总共包含了七个大块。系卤煮自己总结的一些经验和教训。本篇博文同时也参考了其他一些文章...

    pingan8787
  • HBase 写吞吐场景资源消耗量化分析及优化

    HBase 是一个基于 Google BigTable 论文设计的高可靠性、高性能、可伸缩的分布式存储系统。 网上关于 HBase 的文章很多,官方文档介绍的也...

    Fayson
  • 低效程序员的7个坏习惯

    低效程序员的7个坏习惯 程序员总是想做到尽可能的高效,但很多人往往会觉得力不从心。这是因为他们在多年的编码过程中养成了一些不好的习惯。下面这7个坏习惯绝对是软件...

    用户1289394
  • 低效程序员的7个坏习惯

    问题导读: 1.为什么程序员不喜欢测试代码? 2.为什么程序员喜欢说“不”? 3.为什么程序员不能和其他人友好相处? 程序员总是想做到尽可能的高效,但很...

    用户1410343
  • 深度学习|Tensorflow2.0基础

    Tensorflow 是一个面向深度学习算法的科学计算库,内部数据保存在张量(Tensor)对象熵,所有的运算操作(Operation)也都是基于张量对象进行的...

    数据山谷
  • 由浪潮8控存储登顶SPC-1所想,存储系统一个长期被忽略的指标

    日前,存储性能委员会(Storage Performance Council,简称SPC)公布了最新的SPC-1基准评测报告,浪潮存储AS5500G5以超330...

    冬瓜哥
  • 763. Partition Labels

    思路: 很暴力,直接找可以Partition的位置,如果不能Partition,继续向后搜索直到找到第一个可以Partition的位置为止,这样剩余问题就是...

    用户1147447

扫码关注云+社区

领取腾讯云代金券