【Paper Reading】CenterNet:Keypoint Triplets for Object Detection

news2024/10/7 10:21:36

背景

首先是借鉴Corner Net 表述了一下基于Anchor方法的不足:

  1. anchor的大小/比例需要人工来确认
  2. anchor并没有完全和gt的bbox对齐,不利于分类任务。

但是CornerNet也有自己的缺点

  1. CornerNet 只预测了top-left和bottom-right 两个点,并没有关注整体的信息,因此缺少一些全局的信息
  2. 上述的点导致它对边界过于敏感,经常会预测一些错误的bbox。

为了解决该问题,作者提出了Triplet的关键点预测。他follow了top-left和bottom-right的预测,此外增加了中心点的预测。
具体来说,为了使得中心点的预测更加准确,作者提出了Center Pooling的层用来在水平和垂直两个维度进行特征的聚合。使得每个位置的点都可以尽可能的感知到全局的信息。
此外,作者还提出了cascade corner pooling layer来取代原有的corner pooling layer。

作者也从指标的角度量化了上面提到的CornerNet比较容易出现False Positive的情况,如下图所示。作者展示了在不同IoU阈值下 False Discovery Rate。注意这里为什么没有用mAP,mAP是否有缺点?

  1. 框的增加,在recall不变的情况下,precision的下降不会导致mAP的下降。=>因此需要关注PR曲线的分数
  2. mAP是分类别计算的,每个类别都是按照分数排序来计算的,说明每个类别的分数阈值可能会不同,不能用同一个阈值在适应不同的类别。
    False Detection

方法

CenterNet的网络结构如下图所示
CenterNet Architecture
整个网络的推理流程如下所示:

  1. 选择top-k个中心点根据他们的分数
  2. 根据对应的offset将其还原到对应的输入图像中
  3. 根据tl-br构成的bbox,判断每个bbox内部的中心区域是否包括上述的中心点。
    3.1 N个tl的点和N个br 的点,组合形成N*N个bbox
    3.2 如果tl和br的embedding相似度小于阈值,则将对应的bbox剔除,否则保留。
  4. 如果中心点在bbox中,则用三者分数(tl、br和center)的平均来表示bbox的置信度。

那么这里涉及到一个问题,那就是如何计算每个bbox的中心区域。作者这里认为大的bbox应该使用小的中心区域,避免precision过低。小的bbox应该使用大的中心区域,避免recall过低。因此这里作者提出了scale-aware的中心区域计算方法,详情如下所示,其中针对大物体,n选择5,针对小物体,n选择3。
central region
在这里插入图片描述
上述介绍了推理的整体流程,那么我们在从内部逐步解析一下关键的结构,我们分别从center pooling、cascade corner pooling和loss来进行介绍。

center pooling

center pooling的示意图如下图所示。具体来说就是针对每个位置,我们计算其水平和垂直方向的max response,然后想加得到该位置的表征,我们认为这样的表征是包括了全局信息。简化版本的计算如下所示,其中 f , f 3 ∈ R H × W × C f,f_3 \in R^{H \times W \times C} f,f3RH×W×C

f1 = np.max(f, axis=0)
f2 = np.max(f, axis=1)
f3 = f1[None, :, :] + f2[:, None, :]

center pooling

cascaded corner pooling

示意图如下所示
在这里插入图片描述

loss

损失函数的定义如下所示。整体上分为三大部分。

  • L d e t c o 、 L d e t c e L_{det}^{co}、L_{det}^{ce} LdetcoLdetce表示的corner 和 center两个heatmap组成的loss,这里采用的是focal loss。

  • L p u l l c o 、 L p u s h c o L_{pull}^{co}、L_{push}^{co} LpullcoLpushco是让属于同一个物体的corner embedding尽可能相似,属于不同物体的embedding尽可能远离。

  • L o f f c o 、 L o f f c e L_{off}^{co}、L_{off}^{ce} LoffcoLoffce 表示预测corner 和 center在原图上的offset,这里采用的是l1-loss。
    loss function

  • QA1:GT是如何计算的?

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/842257.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

S系列数字源表为何如此受欢迎?

为什么选择S系列数字源表? 性能强大-作为电压源和或电流源,并同步测量电流和或电压,支持四象限工作。可以限定电压或电流输出大小,预防器件损坏。覆盖3pA-3A的电流范围100μV-300V的电压范围,全量程测量精度0.03%。 灵活多样-支…

【高频面试题】微服务篇

文章目录 Spring Cloud1.Spring Cloud 5大组件有哪些?2.服务注册和发现是什么意思?Spring Cloud 如何实现服务注册发现?3.负载均衡如何实现的 ?4.什么是服务雪崩,怎么解决这个问题?5.微服务是怎么监控的 业务相关6.项…

arcgis--数据库构建网络数据集

1、打开arcmap软件,导入数据,如下: 该数据已经过处理,各交点处均被打断,并进行了拓扑检查。 2、在文件夹下新建文件数据库,名称为路网,在数据库下新建要素类,并导入道路shp文件&…

Matlab修改文本编码格式为UTF-8

一、修改文本编码格式 Matlab默认使用GBK编码格式&#xff0c;当代码中有中文注释时&#xff0c;注释显示乱码。 修改配置文件(安装目录下的bin目录有个lcdata.xml)&#xff0c;如下&#xff1a; 1. 删除 2. 修改 < encoding name”UTF-8”> < encoding_alias nam…

文件的管理

一、目录文件的管理 1、创建 2、编辑 3、查看内容 4、删除 二、普通文件的管理 1、创建 2、编辑 3、查看 1&#xff09;整个文档内容的查看 2&#xff09;文档列内容处理后查看 面试重点&#xff0c;年年考 3&#xff09;搜索文件内容查看&#xff0c;列出有关键字的一行 4、…

谷粒商城第十天-分组新增级联显示商品分类分组修改级联回显商品分类

目录 一、总述 二、前端实现 三、后端实现 四、总结 一、总述 本次就是一个小的优化。 就是分组新增或者是修改的时候&#xff0c;直接显示商品分类的id可读性不高&#xff0c;新增的时候需要填写对商品分类的id&#xff0c;修改的时候&#xff0c;就只是给你一个商品分类…

One-4-All: Neural Potential Fields for Embodied Navigation 论文阅读

论文信息 题目&#xff1a;One-4-All: Neural Potential Fields for Embodied Navigation 作者&#xff1a;Sacha Morin, Miguel Saavedra-Ruiz 来源&#xff1a;arXiv 时间&#xff1a;2023 Abstract 现实世界的导航可能需要使用高维 RGB 图像进行长视野规划&#xff0c;这…

电影售票后台管理系统快速搭建(优惠券制作+java开源)

为了快速搭建电影售票后台管理系统并实现优惠券制作功能&#xff0c;你可以按照以下步骤进行操作&#xff1a; 1. 确定系统的需求和功能&#xff0c;包括用户管理、影院管理、电影管理、订单管理以及优惠券制作等模块。 2. 选择一款适合的Java开源框架来搭建系统&#xff0c;…

深度分析卡尔曼滤波算法原理

一、什么是卡尔曼滤波? 你可以在任何含有不确定信息的动态系统中使用卡尔曼滤波&#xff0c;对系统下一步的走向做出有根据的预测&#xff0c;即使伴随着各种干扰&#xff0c;卡尔曼滤波总是能指出真实发生的情况。 在连续变化的系统中使用卡尔曼滤波是非常理想的&#xff0c…

玩机搞机---安卓新机型payload.bin刷写救砖 无需专用线刷包

目前的新机型官方卡刷包解包后都是payload.bin分区格式的卡刷固件。而有个别一些机型没有线刷包&#xff0c;当这些机型出现系统问题的时候有以下几种方法参考救砖。遇到类似故障的朋友可以借鉴参考下. 其中的不足和相关的资源可以参考这两个博文。任何教程的目的只是拓展你的…

从零开始实现一个 mini-Retrofit 框架

前言 本篇文章将采用循序渐进的编码方式&#xff0c;从零开始实现一个Retorift框架&#xff0c;在实现过程中不断提出问题并分析实现&#xff0c;最终开发出一个mini版的Retrofit框架 演示一个使用OkHttp的项目Demo 为了更好的演示框架的实现过程&#xff0c;这里我先创建了一…

关于echarts遇到的一些问题

1.echarts监听legend&#xff0c;动态设置legend属性无效 动态更改legend中的icon&#xff0c; myChart.setOption(option&#xff09;失效&#xff0c;但是设置局部就生效 myChart.on(legendselectchanged, function (params) {if (params.selected[params.name]) {data1[dat…

SSM项目-博客系统

在线体验项目&#xff1a;登陆页面 项目连接&#xff1a;huhublog_ssm: 个人博客系统 技术栈&#xff1a;SpringBoot、SpringMVC、Mybatis、Redis、JQuery、Ajax、Json (gitee.com) 1.项目技术点分析 SpringBoot、SpringWeb(SpringMVC)、MyBatis、MySQL(8.x)、Redis(存储验…

Elastic的下载

文章目录 ElasticSearch的下载扩展1&#xff08;ElasticSearch 与 JDK 版本 适配&#xff09;扩展2&#xff08;访问 http://192.168.1.200:9200 没有显示信息&#xff09;扩展3&#xff08;免密登录&#xff09; ElasticSearch的下载 官方下载网址&#xff1a;https://www.el…

antd design 多个弹框设置区分状态的技巧

可以使用 enum 枚举的方式去做区分 // 置管状态区分 // eslint-disable-next-line no-shadow export enum catheteringType {ADD add,EDIT edit,EXAMINE examine, } 引入上述代码接着设置状态 // 置管记录弹框/状态区分const [catheteringModalTypeConfig, setCatheterin…

全志D1-H (MQ-Pro)驱动 OV5640 摄像头

内核配置 运行 m kernel_menuconfig 勾选下列驱动 Device Drivers ---><*> Multimedia support --->[*] V4L platform devices ---><*> Video Multiplexer[*] SUNXI platform devices ---><*> sunxi video input (camera csi/mipi…

DP与EDP接口协议学习

文章目录 一、概念介绍DP----DisplayPort&#xff0c;一种标准化数字式视频接口&协议EDP---Embedded DisplayPort&#xff0c;DP协议在嵌入式领域拓展DP和HDMI对比----HDMI当前应用更广&#xff0c;DP是PC领域推出协议 二、DP&EDP相关协议分析三条数据通路Manlink 、Au…

赛码网-打字100%AC代码(C语言)

———————————————————————————————————— ⏩ 大家好哇&#xff01;我是小光&#xff0c;嵌入式爱好者&#xff0c;一个想要成为系统架构师的大三学生。 ⏩最近在准备秋招&#xff0c;一直在练习编程。 ⏩本篇文章对赛码网的打字题目做一个详…

ViSQOL、PESQ、mosnet等mos分打分工具和Polqa语音感知音质打分测评

原创&#xff1a;转载需附链接&#xff1a; https://blog.csdn.net/qq_37100442/article/details/132057139?spm1001.2014.3001.5502 一、背景 Mos分评价音质重要指标&#xff0c;最近也有很多机构和公司在研究适合自己的评价体系。目前Mos分主要分为主观评测和客观感知评价。…

49. 海豚记账簿软件(b站的一个小项目)

闲着也是闲着就跟着别人做了一个小项目 目录 1.需求和目标 2.整体功能描述 3.核心思路 4.全部代码 1.需求和目标 项目的需求&#xff0c;实现一个叫做“海豚记账簿”的基于命令行界面的家庭记账软件。 2.整体功能描述 这个软件相对简单&#xff0c;只需要基于命令行做纯…