首页 > 其他分享 >RepPoints: Point Set Representation for Object Detection—用于目标检测的点集表示

RepPoints: Point Set Representation for Object Detection—用于目标检测的点集表示

时间:2025-01-11 17:32:17浏览次数:3  
标签:Set mathbf 边界 Point 卷积 Object right 样本 left

用于目标检测的点集表示-RepDet全网最全

International Conference on Computer Vision(ICCV 2019)
对这种检测模型生成的点进行基于点的匹配过程完成跟踪
但是可否保证随着人的运动或者形状的改变每次选取的关键点是否一致呢?

文章目录

可变形卷积的回顾—Dconv

首先我们要先掌握好普通卷积的定义公式为:

y ( p 0 ) = ∑ p n ∈ R w ( p n ) ⋅ x ( p 0 + p n ) \mathbf{y}\left(\mathbf{p}_{0}\right)=\sum_{\mathbf{p}_{n} \in \mathcal{R}} \mathbf{w}\left(\mathbf{p}_{n}\right) \cdot \mathbf{x}\left(\mathbf{p}_{0}+\mathbf{p}_{n}\right) y(p0​)=pn​∈R∑​w(pn​)⋅x(p0​+pn​)

其中我们的p0代表的是进行卷积操作的时候,卷积核与输入图像重合区域的中心点坐标

这里的蓝色的的部分就对应p0即为中心点的位置坐标。

在这里插入图片描述

  • Pn表示的是卷积核窗口中相对于中心点的相对偏移的坐标位置。
  • pn是属于R的 R定义了卷积操作的kernel sizedilation 可以理解是一个相对位置矩阵

在这里插入图片描述

这里的R在公式中可以表示成集合的形式,实际上也可以表示为下面的矩阵的形式。

下面给出第二个示例,假设要做的卷积是一个5x5的卷积,我们的卷积核大小为5x5,同样我们的相对位置匹配矩阵的大小也为5x5,区别在于这里做的是膨胀卷积(转置卷积)膨胀的系数为5x5。

在这里插入图片描述

普通卷积包括这种膨胀卷积的计算的方式对应公式就为:

将相对的位置pn输入到w里面得到的就是卷积核的权重。而x(p0+pn)表示的就是取出这些位置的像素值。根据这些像素的值和我们的权重相乘,求和之后就可以得到卷积的值了。

可变形卷积的定义公式为:

优势在于感受野不再局限于window中的邻近像素

可变形卷积有什么用呢?

同一层的CNN的激活单元的感受野尺度相同,传统的方法的感受野位置受限。

不同的位置对应着不同尺度和形变的物体,卷积层需要能够自动的调整尺度感受野,更好的提取输入的特征.

在这里插入图片描述

y ( p 0 ) = ∑ p n ∈ R w ( p n ) ⋅ x ( p 0 + p n + Δ p n ) \mathbf{y}\left(\mathbf{p}_{0}\right)=\sum_{\mathbf{p}_{n} \in \mathcal{R}} \mathbf{w}\left(\mathbf{p}_{n}\right) \cdot \mathbf{x}\left(\mathbf{p}_{0}+\mathbf{p}_{n}+\Delta \mathbf{p}_{n}\right) y(p0​)=pn​∈R∑​w(pn​)⋅x(p0​+pn​+Δpn​)

△pn 是学习到的值,是浮点型数据,由图像经过普通卷积计算得到(通常也将其称为位置偏移)

△pn可以叫做位置偏移,但在论文中的更多的情况下,我们可以叫做offset是学习到的参数 是学习到的值,是浮点型数据,由图像经过普通卷积计算得到

我们列举下面的一个示例来进行进一步的说明:△pn是如何通过计算来得到的

  • conv3x3
  • in channel=3
  • outchannel=18 (outchannel=2*kernelsize*kernelsize) 这里对应的就是原论文里面的2N 就是卷积核里面的个数
  • stride=1
  • padding =1

在这里插入图片描述

我们将两个通道看成是一个整体:计算得到的值分别作为x和y

我们经过展平处理之后就可以得到kernelsize*kernelsize个(x,y)坐标信息,可以将其看作是一个矩阵。

在这里插入图片描述

每一个的位置的xy坐标即为我们需要的△pn 的值,它就对应的是卷积核同样的位置处的△pn的值。

到此我们就了解到了△pn值的由来了。

可变形卷积的操作过程

之后我们就需要关注可变形卷积的操作过程了。

在这里插入图片描述

我们首先将得到的△pn的结果带入到可变形卷积后面的那部分公式中

p = p 0 + p n + Δ p n = ( 3 , 4 ) + ( − 1 , 1 ) + ( 1.6 , 3.2 ) = ( 3.6 , 8.2 ) \mathbf{p}=\mathbf{p}_{0}+\mathbf{p}_{n}+\Delta \mathbf{p}_{n}=(3,4)+(-1,1)+(1.6,3.2)=(3.6,8.2) p=p0​+pn​+Δpn​=(3,4)+(−1,1)+(1.6,3.2)=(3.6,8.2)

得到的就是我们蓝色的像素点偏移之后的位置坐标 (紫色位置处的红点)因为是浮点数近似为一个亚像素位置

(3.6,8.2)临近的4个像素点分别为(3,8)、(3,9)、(4,8)、(4,9)我们根据同样的方式就可以得到另外的8个亚像素点的位置信息。

在这里插入图片描述
我们通过矩阵计算的方式得到这种情况下的可变形卷积运算所得到值,将其放入的输出的指定位置。

那么问题就产生了,偏移过的亚像素点的像素值是什么?又该如何得到呢?

其是通过双线性插值的方法来求得 对于双线性插值算法参考之前自己写过的深度学习中的插值算法里面有一定的讲解。

这里学习的offsets就是要学习的中心点偏移之后得到的点集合的表示信息。也就是之后要提到的了9个默认的代表点。

在这里插入图片描述

可变形的ROI Pooling简介

RoIPooling:给定输入特征图 x 和大小为 w × h 且左上角为 p0的 R o I R o I 池化将ROI划分为kxk个bin(网格)区域并输出kxk特征图y

y ( i , j ) = ∑ p ∈ b i n ( i , j ) x ( p 0 + p ) / n i j \mathbf{y}(i, j)=\sum_{\mathbf{p} \in b i n(i, j)} \mathbf{x}\left(\mathbf{p}_{0}+\mathbf{p}\right) / n_{i j} y(i,j)=p∈bin(i,j)∑​x(p0​+p)/nij​

其中nij是bin中的pixel的数量。第( i , j ) 个bin span

⌊ i w k ⌋ ≤ p x < ⌈ ( i + 1 ) w k ⌉  和  ⌊ i h k ⌋ ≤ p y < ⌈ ( j + 1 ) h k ⌉  。  \left\lfloor i \frac{w}{k}\right\rfloor \leq p_{x}<\left\lceil(i+1) \frac{w}{k}\right\rceil \text { 和 }\left\lfloor i \frac{h}{k}\right\rfloor \leq p_{y}<\left\lceil(j+1) \frac{h}{k}\right\rceil \text { 。 } ⌊ikw​⌋≤px​<⌈(i+1)kw​⌉ 和 ⌊ikh​⌋≤py​<⌈(j+1)kh​⌉ 。 

在可变形RoI池化中,将偏移量 ∆ p i j ∣ 0 ≤ i , j < k } 加到空间分块位置上.

y ( i , j ) = ∑ p ∈ b i n ( i , j ) x ( p 0 + p + Δ p i j ) / n i j \mathbf{y}(i, j)=\sum_{\mathbf{p} \in b i n(i, j)} \mathbf{x}\left(\mathbf{p}_{0}+\mathbf{p}+\Delta \mathbf{p}_{i j}\right) / n_{i j} y(i,j)=p∈bin(i,j)∑​x(p0​+p+Δpij​)/nij​

在这里插入图片描述

用于目标检测的点集表示:这种点集的表示就是通过上面的可变形卷积的形式由物体的中心点坐标所得到的。

摘要与引言整理

介绍完所需要用到的背景知识之后就是介绍本篇论文的主题了用
于目标检测的点集表示(将边界框表示创新的改为使用点集来进行表示)

摘要总结

  1. 现代的目标检测器在很大程度上依赖于anchors, proposals and the fi-
    nal predictions,以表示在各个识别阶段的对象。这导致了对象的特征只是粗略的进行了提取操作。

  2. 在本文中,我们提出了RepPoints(代表点),一种新的更精细的对象表示,作为一组样本点,对定位和识别都很有用。

  3. 给定用于训练的真实定位和识别目标,RepPoints 学会自动调整自身的位置,以便界定物体的空间范围,并指示具有语义意义的局部区域。

RepPoints 通过一组动态调整的点来更加精准地表示物体的位置和形状,相比于传统的边界框,它能够更细致地捕捉到物体的局部结构和语义信息。

在这里插入图片描述

相关介绍

主要先介绍了一些用边界框或者说是锚框这种检测方式的普遍的原因。

几乎所有的图像特征提取器,无论是在之前还是在深度学习时代期间,都是基于具有规则网格形式的输入补丁。

“规则网格”指的是一个均匀且固定间隔的网格布局传统的图像特征提取器(特别是卷积神经网络)对图像进行处理时,输出的特征图(即卷积后的图像表示)本质上是通过对图像进行规则化划分,得到的一系列固定大小的区域或补丁的集合。

传统的方式存在的问题

然而这种方式也存在着许多的问题如下所示。

  • 虽然边界框有助于计算,但它们仅提供不符合对象形状和姿态的对象的粗略定位对于旋转目标检测或者有形变的物体可能会存在一些困难。

从边界框的规则单元(即固定大小的窗口)提取特征时,可能会受到背景或无关前景区域的干扰,从而影响模型的准确性。

边界框的固定大小(例如,正方形或矩形)可能会包含一些背景区域,尤其是在目标物体位于图像的中心或部分边缘时。背景区域的特征通常缺乏有用的语义信息,因为背景只是一些无关的像素,它们与目标物体并不相关。然而,传统卷积操作通常没有区分这些背景区域和前景区域的能力,因此背景的干扰会影响到最终提取的特征。
影响: 当边界框的内容中包含大量背景区域时,这些无关区域的特征会被卷积神经网络提取出来并传递到下一层,导致模型难以正确区分目标和背景,从而影响检测结果。

在目标物体的边界上,尤其是物体形状不规则或部分遮挡时,边界框内的前景区域可能并不包含足够的语义信息。比如,某些目标的轮廓可能不清晰,或者目标本身的某些部分被遮挡,导致边界框内的前景区域信息不完整或不足。此时,从这些区域提取的特征就可能无法充分代表目标的真实信息。
影响: 边界框内的无信息区域可能导致网络误判,尤其是对于遮挡、部分可见或形态不规则的目标。卷积网络在提取这些无信息区域的特征时,可能会学到无关的模式或噪声,从而影响检测性能。

对这些问题的思考和描述自然而然的引出了一种新的解决方案。可变形卷积和可变形池化的结合有效地解决了从规则边界框提取特征时的背景干扰和无信息前景区域的问题。通过让卷积核和池化窗口根据实际的目标形状自适应调整,RepPoints能够更加精确地从目标区域提取有效特征,而不会被无关背景或无信息区域影响

新方法的相关介绍和引出

因此本文提出了一直新的表示方法,RepPoints(代表点)提供了根据细粒度的定位和分类如图所示。

在这里插入图片描述

这些点表示目标的空间范围和语义上有意义的局部区域。RepPoints是一组点,它学习以一种方式自适应地将自己定位在对象上,该方式限制对象的空间范围并指示语义上重要的局部区域

  • 这些自下而上的表示识别各个点(例如,边界框角或对象末端),并依赖于手工聚类将它们分组到对象模型中。

自下而上的方式:传统的自下而上的学习方式(Bottom-Up Learning),在目标检测任务中,通常是指从局部特征开始,通过逐层组合或聚合信息,最终获得对目标的整体表示。这种方法的特点是基于手工设计的规则或固定的特征模式,逐步从低级特征(如边缘、角点等)到高级特征(如区域、形状或目标)进行构建。

自上而下方法利用了深度学习的强大表征能力,更适合现代目标检测任务

  • 相比之下,RepPoint以自上而下的方式从输入图像/对象特征中学习,允许端到端训练并在没有额外监督的情况下产生细粒度定位。

在 RepPoint 中,自上而下的学习方式通常是指:网络从全局信息(如物体的初步位置、粗略的边界框或其他高层次的图像特征)出发,通过逐步推导来获得更加精细的物体位置和形状信息。

核心方法—问题描述

边界框表示与多级目标检测器的使用

  1. 边界框是对对象的空间位置进行编码的4-d表示。

B = ( x , y , w , h ) \mathcal{B}=(x, y, w, h) B=(x,y,w,h)

x,y表示中心点,w,h表示宽度和高度

多阶段和多尺度

性能最好的对象检测器通常遵循多阶段识别范式,其中对象定位是逐阶段细化的。(两阶段的

在这里插入图片描述
在该框架中,边界框回归在逐步细化对象定位和对象特征方面起着核心作用。

边界框的回归过程

( Δ x p , Δ y p , Δ w p , Δ h p ) \left(\Delta x_{p}, \Delta y_{p}, \Delta w_{p}, \Delta h_{p}\right) (Δxp​,Δyp​,Δwp​,Δhp​)

B p = ( x p , y p , w p , h p ) \mathcal{B}_{p}=\left(x_{p}, y_{p}, w_{p}, h_{p}\right) Bp​=(xp​,yp​,wp​,hp​)

B r = ( x p + w p Δ x p , y p + h p Δ y p , w p e Δ w p , h p e Δ h p ) . \mathcal{B}_{r}=\left(x_{p}+w_{p} \Delta x_{p}, y_{p}+h_{p} \Delta y_{p}, w_{p} e^{\Delta w_{p}}, h_{p} e^{\Delta h_{p}}\right) . Br​=(xp​+wp​Δxp​,yp​+hp​Δyp​,wp​eΔwp​,hp​eΔhp​).

在对象检测器的训练中,我们使用预测的4-d回归向量和期望的4-d回归向量F(Bp,Bt)之间的距离作为学习目标,使用平滑的l1损失

F ^ ( B p , B t ) = ( x t − x p w p , y t − y p h p , log ⁡ w t w p , log ⁡ h t h p ) . \hat{\mathcal{F}}\left(\mathcal{B}_{p}, \mathcal{B}_{t}\right)=\left(\frac{x_{t}-x_{p}}{w_{p}}, \frac{y_{t}-y_{p}}{h_{p}}, \log \frac{w_{t}}{w_{p}}, \log \frac{h_{t}}{h_{p}}\right) . F^(Bp​,Bt​)=(wp​xt​−xp​​,hp​yt​−yp​​,logwp​wt​​,loghp​ht​​).

当所需的细化很小时,它在实践中表现良好,但当初始表示和目标之间存在较大距离时,它往往表现不佳.

RepPoints的描述

  1. 自适应采样点来进行建模:其中n是表示中使用的样本点的总数。在我们的工作中,n默认设置为9。

R = { ( x k , y k ) } k = 1 n \mathcal{R}=\left\{\left(x_{k}, y_{k}\right)\right\}_{k=1}^{n} R={(xk​,yk​)}k=1n​

  1. 其细化的过程可以简单的表示为:

R r = { ( x k + Δ x k , y k + Δ y k ) } k = 1 n , \mathcal{R}_{r}=\left\{\left(x_{k}+\Delta x_{k}, y_{k}+\Delta y_{k}\right)\right\}_{k=1}^{n}, Rr​={(xk​+Δxk​,yk​+Δyk​)}k=1n​,

  1. 是新采样点相对于旧采样点的预测偏移。

{ ( Δ x k , Δ y k ) } k = 1 n \left\{\left(\Delta x_{k}, \Delta y_{k}\right)\right\}_{k=1}^{n} {(Δxk​,Δyk​)}k=1n​

处于相同的尺度即不受尺度的影响。

在传统的目标检测方法(例如 Faster R-CNN 或 RetinaNet)中,目标物体的边界框回归通常涉及根据物体的不同大小来调整边界框的坐标。通常,物体的大小(尤其是边界框的长宽比)会影响回归的尺度

  • 小物体的边界框回归通常只需要较小的偏移量。
  • 大物体的边界框回归通常需要较大的偏移量。

RepPoints 中,细化过程是基于 代表点(RepPoints) 的位置调整。RepPoints 将物体的边界框分解为多个代表点,而不直接操作边界框的四个角。因此,物体的定位不再依赖于大尺度的边界框,而是依赖于代表点在图像上的位置。

好处和优势之一就是和基于边界框的方式相比统一了尺寸。

代表点转化为伪框

在RepPoint的训练中利用边界框注释,以及评估基于RepPoint的对象检测器

使用预定义的转换函数执行此转换:

T : R P → B P , \mathcal{T}: \mathcal{R}_{P} \rightarrow \mathcal{B}_{P}, T:RP​→BP​,

代表的是伪框

T ( R P ) \mathcal{T}\left(\mathcal{R}_{P}\right) T(RP​)

三种转换为伪框的方式:其中第三种方式为默认使用的方式:即利用均值和方差的形式来进行使用。

  • 中心点:使用所有代表点的均值。
  • 边界框的宽高:通过标准差乘以全局共享的可学习参数

    标签:Set,mathbf,边界,Point,卷积,Object,right,样本,left
    From: https://blog.csdn.net/weixin_46167190/article/details/145064615

相关文章

  • Packet for query is too large . You can change this value on the server by setti
    如果写入大数据时,因为默认的配置太小,插入和更新操作会因为max_allowed_packet参数限制,而导致失败。mysql根据max_allowed_packet参数来限制server接受的数据包大小。当一个MySQL客户或mysqld服务器得到一个max_allowed_packet个字节长的包,它发出一个Packettoolarge错误并终......
  • CheeseTools:红队内网横向
    免责声明仅限用于技术研究和获得正式授权的攻防项目,请使用者遵守《中华人民共和国网络安全法》,切勿用于任何非法活动,若将工具做其他用途,由使用者承担全部法律及连带责任,作者及发布者不承担任何法律连带责任项目介绍这个库是基于已经存在的MiscTool制作的,所以非常感谢rasta-mo......
  • 使用 Baseten 部署和服务机器学习模型
    在现代机器学习的应用场景中,将模型成功部署到生产环境往往比模型训练本身更加复杂和重要。Baseten是一个强大的平台,它提供了部署和服务机器学习模型所需的所有基础设施。作为LangChain生态系统中的一个供应商,Baseten当前集成了一个组件:LLMs(大型语言模型),并且计划扩展更多......
  • Sigrity System SI SerialLink模式进行100base_T1协议仿真分析操作指导-100BaseT1_Rx
    SigritySystemSISerialLink模式进行100base_T1协议仿真分析操作指导-100BaseT1_RxSigritySystemSISerialLink模式提供了10个协议合规性检查工具模板,用户可以将根据实际应用替换模板中的SPICE文件,然后进行协议仿真分析,同时软件还提供了目标结果的模板MASK以及该协议需要......
  • CF1439B Graph Subset Problem
    GraphSubsetProblem题目链接。Problem\(T\)组数据。给你一个有\(n\)个顶点和\(m\)条边的无向图,和一个整数\(k\)。请你找到一个大小为\(k\)的团(称一个\(k\)个点的集合为团,当且仅当点集大小为\(k\),并且该子集的每两个顶点之间存在一条边)或一个非空的顶点子集,使该......
  • Linux连接(NFS)群晖NAS遇到的问题(最终选SetGID+umask)
     说明:公司在寻找存储服务器,分布式太贵,后来找来厂家提供服务器试用一段时间,可以的话再买更高型号的来用,此文章记录整个过程,可能比较杂,等以后有时间再来整理吧。需求:想要在服务器之间共同访问并操作这里的存储,并且还要再Windows上查看(需求又改了Windows上也会做增删改的操作。。)......
  • NfcB.setTimeout
    NfcB.setTimeout(Objectobject)基础库2.11.2开始支持,低版本需做兼容处理。以Promise风格调用:不支持小程序插件:支持微信iOS版:不支持微信Android版:支持相关文档:近场通信(NFC)功能描述设置超时时间参数Objectobject属性类型默认值必填说明......
  • MifareClassic.setTimeout
    MifareClassic.setTimeout(Objectobject)基础库2.11.2开始支持,低版本需做兼容处理。以Promise风格调用:不支持小程序插件:支持微信iOS版:不支持微信Android版:支持相关文档:近场通信(NFC)功能描述设置超时时间参数Objectobject属性类型默认值必填......
  • OpenCV相机标定与3D重建(53)解决 Perspective-3-Point (P3P) 问题函数solveP3P()的使
    操作系统:ubuntu22.04OpenCV版本:OpenCV4.9IDE:VisualStudioCode编程语言:C++11算法描述根据3个3D-2D点对应关系找到物体的姿态。cv::solveP3P是OpenCV中的一个函数,用于解决Perspective-3-Point(P3P)问题。该问题的目标是根据给定的三个空间点(世界坐标系中......
  • Qt QSetting配置管理
    QSetting配置管理QSetting是Qt框架中用于管理应用程序配置和设置的类。它提供了一种简单的方式来存储和检索应用程序的设置,通常用于保存用户偏好、窗口位置、最近打开的文件等信息。主要功能跨平台支持:QSetting在不同操作系统上使用不同的后端存储:Windows:使用注册表macOS......