【目标检测】Objects as Points

news2024/12/26 11:06:15

目录

  • 概述
  • 细节
    • anchor-base vs anchor free
    • 网络结构
    • 标注
    • 损失函数
  • 学习资料

概述

本文是一个anchor-free的目标检测算法。
【2019】【CenterNet】
研究的问题:

  • 如何更好地将目标检测问题建模为关键点检测问题

提出的方法:

  • 一个简单高效的目标检测方法CenterNet。简单:彻底的端到端(不需要NMS后处理),整体流程就是关键点预测+相关参数回归,高效:不需要预先设置anchor,速度精度都超过了基于anchor的方法。

细节

anchor-base vs anchor free

anchor-base的流程:一阶段:预设大量的anchor,然后直接回归位置、尺寸和类别信息,选出其中达到要求的边界框作为预测框,然后使用NMS剔除重复的预测框。两阶段:预设大量的anchor,然后通过一个网络回归位置、尺寸和类别信息(包含物体的正例/不包含物体的负例),选出其中的正例作为候选框,然后再使用一个网络提取候选框特征,对候选框进行微调,得到检测框。总结:就是一个滑动窗口的思路,在图像中设计大量的anchor,然后在anchor中找到满足要求的检测框。而我们都知道一般一张图像中的目标是很有限的,所以基于anchor的方法会存在严重的正负样本不均衡问题,所以一阶段方法最开始预测框的数量不多,精度不够,直到后面出现了focal loss,而两阶段方法通过RPN网络大大减少负样本的数量。
anchor free的流程:类似于一阶段方法,结构都是特征提取网络+检测头。

anchor free和one-stage的区别:

  • 仅仅使用位置区别正负样本,而非IOU
  • 每个物体对应一个正样本,所以不需要NMS去重了
  • 特征图的尺寸特别大(输出分辨率的下采样因子比较小),所以不需要多种不同的anchor了(每个像素只对应一个点的类别以及相关参数,一阶段方法中每个像素会对应多个anchor的类别以及相关参数)

网络结构

流程比较简单,就是特征提取网络+3个检测头

  • 输入图像尺寸为 W ∗ H ∗ 3 W*H*3 WH3
  • 经过特征提取网络得到特征图
  • 第一个检测头的输出是关键点热力图,尺寸为 W R ∗ H R ∗ C \frac{W}{R}*\frac{H}{R}*C RWRHC,其中R是下采样因子这里会比一般检测器的因子小(论文中是4),C是类别数,如coco数据集的80。表示当前点作为中心的边界框的类别概率分布。
  • 第二个检测头的输出是尺寸的预测结果,尺寸为 W R ∗ H R ∗ 2 \frac{W}{R}*\frac{H}{R}*2 RWRH2,表示当前点作为中心的边界框的尺寸( w , h w,h w,h)。
  • 第三个检测头的输出是位置偏移量的预测结果,尺寸为 W R ∗ H R ∗ 2 \frac{W}{R}*\frac{H}{R}*2 RWRH2,表示当前点作为中心的边界框的中心偏移量( Δ x , Δ y \Delta x,\Delta y Δx,Δy)。

在这里插入图片描述
注:
第三个检测头输出的是位置的偏移量,那基本的位置信息是?为什么需要预测偏移量?

特征图的当前位置映射回原图中的位置就是 ( x , y ) (x,y) (x,y)。之前因为下采样的过程中是取整的,所以位置难免会有偏差,这个偏差就是由第三个检测头学习的,所以给第三个检测头的标签就是 ( x R − ⌊ x R ⌋ , y R − ⌊ y R ⌋ ) (\frac{x}{R}-\lfloor \frac{x}{R} \rfloor,\frac{y}{R}-\lfloor \frac{y}{R} \rfloor) (RxRx,RyRy⌋)

为什么后面两个检测头输出通道数是2,而不是2C?

假设特征图中每个点最多对应一个目标,也就是原图像中目标的中心点不重合,且下采样之后依旧不重合,那么每个点就只需要对应一个尺寸、一个位置偏移就好了。
而不满足这个假设的数据在数据集中占据的比例非常的小,所以方案是合理的

标注

其实就是由边界框的坐标得到中心点的坐标以及宽高,然后下采样得到特征图上的坐标,对应位置的类别就是1,其余位置的类别就是0,然后把对应的尺寸以及偏移也填上去就好了。
这样做的话后面两个检测头是没有问题的,但是第一个检测头会有问题,就是对模型的要求太高了,作者用了一个高斯核将关键点分布到特征图上,其实也就是从关键点位置是1其余全部是0,变为了关键点位置是1点周围位置稍微小一点其余位置全是0,也就是在这个范围内的预测都能接受。

损失函数

损失主要是三部分,分别就是三个检测头的损失
在这里插入图片描述
其中第一个关键点热力图损失,采用的是修改了的focal loss
原来的focal loss是处理正负样本不均衡的交叉熵损失,因此类别只有0和1。原本关键点热力图的标签确实是0和1,但在引入了高斯核之后,就有中间的值了,作者在otherwise中添加了一项 ( 1 − Y ) β (1-Y)^\beta (1Y)β,如果原本的标签是0,这一项就没有用,而若是原本标签很大,就代表已经很接近关键点了,从而损失就比较小。
在这里插入图片描述

学习资料

吹爆!清华大佬硬核解读CenterNet目标检测算法!

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

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

相关文章

抖音年货节增长秘籍:横向做阵地,纵向定节奏,提前深种草

抖音好物年货节即将到来,对于品牌来说,这将是新一年首次生意爆发的机会。为了更好的融入抖音电商生态,做好数字化经营主阵地,品牌面临多个新挑战: 大促Bigday流量费用高,品牌怎样更高效获取流量&#xff1f…

数据库设计说明书(GB8567——88)基于协同的在线表格forture-sheet

数据库设计说明书(GB8567——88) 1引言 1.1编写目的 数据库的设计是为了以后编码、测试以及维护阶段的后台数据的存储做准备。应用于系统开发前期,为后期数据库设计指引方向。 预期的读者:系统开发人员、系统测试人员和系统维…

瑞昱rtl819x-SDK-v3.4.14b的watchdog分析

watchdog 看门狗,又叫watchdog timer,是一个定时器电路,一般有一个输入,叫喂狗或踢狗;一个输出到MCU 的 RST 端,MCU 正常工作的时候,每隔一段时间输出一个信号到喂狗端,给 WDT 清零…

SQL注入渗透与攻防(八)之延时注入

目录 基于时间的SQL盲注 - 延时注入 案列演示 基于时间的SQL盲注 - 延时注入 关于延时注入的使用场景一般在我们测试的注入点没有报错信息又没有回显点的情况下进行的。通过对于时间的延时判断来猜解数据。在实战过程中并不推荐大家通过延时注入去判断数据库,因为…

转行做程序员,难吗

在互联网急速发展的这几年里,程序员这个职业,成为了很多人的心之所向。虽然高薪背后往往伴随着高强度的工作节奏和压力,但是也不妨碍大量的人在编程培训或者自学编程的道路上前仆后继。 那么转行程序员真的容易吗?下面就跟大家分享…

无需编程即可将chatgpt接入自己的微信公众号

ChatGpt是openai推出的GPT3文本生成机器人。该机器人主要完成文本生成相关任务。机器人可以自主进行写作、翻译、修改语法、角色扮演的,甚至编写程序。网上有很多接入方法,大部份需要编程,并且需要注册openai账号获取appkey。本文所介绍的方法…

datagridview如何根据不同的按钮显示不同的表

以我设计的为例: 双击按钮,会自动创建三个事件 以第一个按钮为例:在其中添加如下代码 SqlConnection sqlcon new SqlConnection(); sqlcon.ConnectionString "";//双引号内填入你的数据库连接字符 sqlcon.Open(); string sql &…

UG NX二次开发(C#)-获取模型文件的预览图片

文章目录 1.前言2. 模型文件预览图介绍3.采用二次开发的方法获取模型的预览图4.验证1.前言 UG NX保持的prt文件中保存了模型的预览位图,但是采用UG NX二次开发时不能直接提取出来,本文讲解一下将prt文件的预览位图提取出来并单独保存。 2. 模型文件预览图介绍 如果我们在UG…

【字体】写代码编程字体展示推荐

写代码编程字体展示推荐 零、适合写代码编程的字体 什么样的字体适合写代码用?一般来讲,写代码的字体要求字母的宽度一致、轮廓清晰美观、l1i,0oO易于分辨、清晰易分辨的标点等,甚至有强迫症的还要中文与英文严格2:1对齐。下面收…

机器学习 | 决策树

一.基本原理 决策树是一种树状结构模型,每一个根节点都是一个特征判断,它的叶子节点就是它的特征分类结果 决策树是一种分类和回归的基本模型,是一棵树的形式,其实就是将平时所说的 if-else 语句构建成了树的形式。决策树主要包…

使用 SQL 别名简化查询并自定义结果

别名能够在不影响基础表或视图的情况下临时重命名表或列。作为大多数甚至所有关系数据库管理系统都支持的 SQL 功能,别名是简化查询和/或自定义结果集中列标题的好方法。在这篇文章中,我们将使用 Navicat Premium 16 来完成这两项工作。 重命名列 许多…

带宽消耗以及Swap(上)

今天我们来看一个真实的案例。事情是这样的,之前有人在微信上问我一个问题,这个问题的现象很典型:典型的 TPS 上不去,响应时间增加,资源用不上。 大概的情况是这样的:有两台 4C8G 的服务器,一台服务器上有 2 个 Tomcat,一台服务器上是 DB。压测的混合场景有 4 个功能模…

【验证码逆向专栏】某验三代滑块验证码逆向分析

声明 本文章中所有内容仅供学习交流,抓包内容、敏感网址、数据接口均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关,若有侵权,请联系我立即删除! 本文章未经许可禁止转载…

k8s教程(20)-pod之定时任务

文章目录01 引言02 基本语法03 案例04 文末01 引言 声明:本文为《Kubernetes权威指南:从Docker到Kubernetes实践全接触(第5版)》的读书笔记 Kubernetes从1.5版本开始增加了一种新类型的Job,即类似Linux Cron的定时任务…

SpringMVC、SSM整合

SpringMVC的工作原理(底层Servlet的工作流程) DispatcherServletHandlerMapping ,返回值 HandlerExecutionChainHandlerAdapterViewResolverView ~~老版本(过去式) 一、搭建springmvc 第一步:配置打包…

互联网行业逐步回暖!就业显示有74%学员跨专业学编程!

三年以来,居家办公、隔离等影响已深入每个人的生活。就业形势承受着巨大的压力,同时就业环境也发生巨大变化,越来越多的人都面临转行! 达妹被问到最多的问题是: 跨专业学编程的疑虑 非科班出身零基础能学会编程吗? 数…

程序人生:起薪13k,兜兜转转还得是软件测试

很多人一聊到IT教育培训第一反应就是:为什么要报班呢,网上大把资源它不香吗?自己学一学不就出来找工作了吗?还花这种冤枉钱? 小编作为从业人员认真地说,进入IT行业虽然不是特别难,但也没有这么…

English Learning - L1-6 从此口语变得简约(下)2022.12.22 周四

English Learning - L1-6 从此口语变得简约(下)2022.12.22 周四引言6.2.2 分词非谓语动词作后置定语的三种被动结构1. to be done 将来的动作2. being done 正在进行的3. done 已经完成的6.2.3 分词形容词挑错其它1. 形容词 名词 ed2. 数词 名词 ed答…

RiscV汇编基础学习

文章目录一、基础概念指令集---指示计算机执行某种操作的命令,是计算机运行的最小功能单位。复杂指令集CISC(如x86)和精简指令集RISC(如arm、riscV)---两种指令集的优化设计方向RiscV---一个基于精简指令集RISC原则的开…

SQL注入渗透与攻防(七)之查询方式及报错注入

目录 SQL注入之查询方式 select 查询数据 delete 删除数据 insert 插入数据 update 更新数据 SQL注入 报错盲注 1.基于布尔的SQL盲注 - 逻辑判断 2.基于时间的SQL盲注 - 延时判断 3.基于报错的SQL盲注 - 报错回显(强制性报错 ) 案列演示 SQL注入…