Gaussian Bounding Boxes and Probabilistic Intersection-over-Union for Object Detection阅读笔记

(一) Title在这里插入图片描述

论文:https://arxiv.org/abs/2106.06072
代码:https://github.com/ProbIOU

(二) Summary

研究背景:

目前目标检测算法基本上是通过bounding boxes来编码和表示object的形状和形状的,也就是有边界框的长宽和中心点坐标,general focal loss中也提到过在GT标注时实际上我们的GT并不是理论上的GT,而是认为标注的,有的时候物体的边界不好确定下来,对于模型来说,通过这种方式最多能够学习到一种带有置信度的标注,也就是对预测结果的确信程度。

本文方法:

本文中通过使用Gaussian分布来对目标区域进行模糊表示(fuzzy representation),相当于使用椭圆来表示边界框.接着本文针对高斯分布提出了一个基于Hellinger Distance的相似度度量,可以看成是Probabilistic Intersection-over-Union(ProbIoU),ProbIoU损失函数的优势在于:

  • ProbIoU对于尺度缩放是不变的,不会随着尺度的变化导致损失值发生改变。
    目前该方法存在的问题是:对于方形w=h目标没有办法给出角度信息。

实验结果:

本文提出的Gaussian representations更加接近annotated segmentation,并且ProbIoU可以处理Gaussian representations的回归问题,ProbIoU能够很方便地添加到object detector中。

(三) Research Object

边界框的表示方式

  • HBB,水平边界框,通过4个参数就能够表示,对于大型数据集来说标注比较友好。但是存在的问题是边界框包围的内容中包含了一部分背景,特别是对于拉长和旋转目标来说。
  • 二进制Mask表示,通过mask来表示对象,标注时间较长,能够更加精细地表示对象。而且最后需要对应到原图大小上,模型架构比较复杂。
  • OBB,旋转边界框,在RoI Transformer(不是Transformer encorder & decorder,仅仅表示一种变换)中将horizontal RoI变换成了OBB RoI,输出带有角度的proposals。

定位损失

  • HBB边界框通常使用参数化损失parameter-wise loss components(比如说 l 1 l_1 l1 l 2 l_2 l2正则,或者smooth l 1 l1 l1),由于参数化损失隐式地假设每一个参数之间都是独立的,也就是一个参数的改变并不会影响另一个参数,因此参数化的损失might not converge consistently to the ground-truth(GT) annotation,
  • 基于IoU的损失,IoU loss,GIoU,DIoU,CIoU,PIoU以及GWD

本文探索通过Gaussian Bounding Boxes(GBBs)来编码目标的representations,通过对目标使用GBBs的表示方式,并引入了一个可微分的损失来回归旋转框的参数或者直接回归GBB的参数(mean vector以及协方差矩阵covariance matrix).

(四) Problem Statement

本文提出使用Gaussian Bounding Boxes来表示目标,怎样得到目标的Gaussian Bounding Boxes表示呢?怎样回归边界框呢?

(五) Method

本文的核心思想就是:通过rotated Gaussian distribution来表示object,高斯分布可以参数化成均值向量 μ = ( x 0 , y 0 ) T \mu=\left(x_{0}, y_{0}\right)^{T} μ=(x0,y0)T以及协方差矩阵 Σ \Sigma Σ,构成了一个椭圆,也就相当于使用椭圆来对二维区域进行表示。

  • 目标检测的工作实际上是基于预测框和真实框之间的距离差异构建损失函数进行回归,同样在这里也是这样,因为使用了高斯分布来表示目标,所以这里首先需要定义两个分布之间的距离.这个需要探索大量的统计工具来衡量.
  • 高斯分布的形式带来了这些度量形式的closed-form differentiable表示,比如Bhatacharyya distance以及Kullback-Leibler divergence.为什么说高斯分布的形式对于这些度量能够可微呢?还是Kullback-Leibler divergence我之前记得貌似是不满足三角不等式的呀!

5.1 如何使用高斯分布来表示边界框

二维高斯分布的均值向量 μ = ( x 0 , y 0 ) T \boldsymbol{\mu}=\left(x_{0}, y_{0}\right)^{T} μ=(x0,y0)T,协方差矩阵 Σ \Sigma Σ,协方差矩阵具有两种表示方式:
Σ = [ a c c b ] = R θ [ a ′ 0 0 b ′ ] R θ T = [ a ′ cos ⁡ 2 θ + b ′ sin ⁡ 2 θ 1 2 ( a ′ − b ′ ) sin ⁡ 2 θ 1 2 ( a ′ − b ′ ) sin ⁡ 2 θ a ′ sin ⁡ 2 θ + b ′ cos ⁡ 2 θ ] \Sigma=\left[\begin{array}{ll} a & c \\ c & b \end{array}\right]=R_{\theta}\left[\begin{array}{cc} a^{\prime} & 0 \\ 0 & b^{\prime} \end{array}\right] R_{\theta}^{T}=\left[\begin{array}{cc} a^{\prime} \cos ^{2} \theta+b^{\prime} \sin ^{2} \theta & \frac{1}{2}\left(a^{\prime}-b^{\prime}\right) \sin 2 \theta \\ \frac{1}{2}\left(a^{\prime}-b^{\prime}\right) \sin 2 \theta & a^{\prime} \sin ^{2} \theta+b^{\prime} \cos ^{2} \theta \end{array}\right] Σ=[accb]=Rθ[a00b]RθT=[acos2θ+bsin2θ21(ab)sin2θ21(ab)sin2θasin2θ+bcos2θ]
第一种表示方式一个对称的协方差矩阵,从埃尔米特矩阵的定义来看(矩阵中每一个第i行第j列的元素与第j行第i列的元素的共轭相同),协方差矩阵就是埃尔米特矩阵

根据埃尔米特矩阵的性质可知:如果埃尔米特矩阵的特征值都是正数,那么这个矩阵就是正定矩阵,如果他们是非负的,那这个矩阵就是半正定矩阵。
在这里插入图片描述
从上面的性质可知, a > 0 , a b − c 2 > 0 , b > 0 a>0,ab-c^2>0,b>0 a>0,abc2>0,b>0.

第二种表示方式是使用旋转矩阵进行表示。其中旋转矩阵的表示方式为,给定坐标 ( x 1 , y 1 ) (x_1,y_1) (x1,y1),绕坐标 ( 0 , 0 ) (0,0) (0,0)顺时针旋转 θ \theta θ角度后得到坐标 ( x , y ) (x,y) (x,y),计算方式如下:
[ x y ] = [ x 1 c o s θ − y 1 s i n θ y 1 c o s θ + x 1 s i n θ ] = [ c o s θ − s i n θ s i n θ c o s θ ] [ x 1 y 1 ] = R θ [ x 1 y 1 ] \left[\begin{array}{ll} x \\ y \end{array}\right]=\left[\begin{array}{ll} x_1cos\theta -y_1sin\theta \\ y_1cos\theta+x_1sin\theta \end{array}\right]=\left[\begin{array}{ll} cos\theta & -sin\theta \\ sin\theta & cos\theta \end{array}\right]\left[\begin{array}{ll} x_1 \\ y_1 \end{array}\right]=R_{\theta}\left[\begin{array}{ll} x_1 \\ y_1 \end{array}\right] [xy]=[x1cosθy1sinθy1cosθ+x1sinθ]=[cosθsinθsinθcosθ][x1y1]=Rθ[x1y1]

因此从上面两种表示方式来看,为了得到协方差矩阵可以直接回归 ( a , b , c ) (a,b,c) (a,b,c)或者回归 ( a ′ , b ′ , θ ) (a^{\prime},b^{\prime},\theta) (a,b,θ),对于旋转边界框来说,使用 ( a ′ , b ′ , θ ) (a^{\prime},b^{\prime},\theta) (a,b,θ)表示是很合适的,而 ( a ′ , b ′ , θ ) (a^{\prime},b^{\prime},\theta) (a,b,θ) ( b ′ , a ′ , θ + π 2 ) (b^{\prime},a^{\prime},\theta+\frac{\pi}{2}) (b,a,θ+2π)表示的都是相同的协方差矩阵,为了 ( a ′ , b ′ , θ ) (a^{\prime},b^{\prime},\theta) (a,b,θ)形式下能够有一个独一无二表示方式,这里限制 θ ∈ [ − π 4 , π 4 ] \theta \in [-\frac{\pi}{4},\frac{\pi}{4}] θ[4π,4π],当 a ′ = b ′ a^{\prime}=b^{\prime} a=b时,表示的是各项同性的高斯核,此时角度 θ \theta θ取任何值都对应着相同的协方差矩阵。对于方形的矩形框来说,旋转边界框仍然对应着一个角度,然而GBB的表示方式给出的角度却可以是任意的,从而导致了从OBB表示变换成GBB是不可逆的,会存在角度信息的丢失

作者是怎么想到从边界框表示的角度来引入GBB呢?感觉很妙啊,想法很妙,然后接下来的问题是现有的对目标的OBB,HBB以及mask表示中得到目标GBB的表示呢?

  • 获取GBB的关键就是得到均值向量协方差矩阵。首先假设目标区域使用一个2D的binary区域来进行表示,这个区域又是一个概率密度函数(PDF),均值和方差可以通过对区域进行积分进行表示:
    μ = 1 N ∫ x ∈ Ω x , Σ = 1 N ∫ x ∈ Ω ( x − μ ) ( x − μ ) T \boldsymbol{\mu}=\frac{1}{N} \int_{\boldsymbol{x} \in \Omega} \boldsymbol{x}, \Sigma=\frac{1}{N} \int_{\boldsymbol{x} \in \Omega}(\boldsymbol{x}-\boldsymbol{\mu})(\boldsymbol{x}-\boldsymbol{\mu})^{T} μ=N1xΩx,Σ=N1xΩ(xμ)(xμ)T
    实际上连续函数的均值和方差的计算方式表示为:
    E ( X ) = ∫ − ∞ ∞ x f ( x ) d x Var ⁡ ( X ) = σ 2 = ∫ ( x − μ ) 2 f ( x ) d x \mathrm{E}(X)=\int_{-\infty}^{\infty} x f(x) \mathrm{d} x \\ \operatorname{Var}(X)=\sigma^{2}=\int(x-\mu)^{2} f(x) d x E(X)=xf(x)dxVar(X)=σ2=(xμ)2f(x)dx
    因此可以得知,均值和协方差计算中的 1 N \frac{1}{N} N
### ProbIoU Pseudocode Implementation For implementing the `ProbIoU` function as pseudocode, consider a scenario where this metric is used to evaluate object detection models. The following pseudocode represents an algorithm that calculates the probabilistic Intersection over Union (IoU), which takes into account not only the geometric overlap but also uncertainty associated with bounding box predictions. ```pseudocode function calculate_ProbIoU(boxA, boxB, sigmaA, sigmaB): # Calculate intersection coordinates and area interXmin = max(boxA.xMin, boxB.xMin) interYmin = max(boxA.yMin, boxB.yMin) interXmax = min(boxA.xMax, boxB.xMax) interYmax = min(boxA.yMax, boxB.yMax) widthIntersect = max(0, interXmax - interXmin + 1) heightIntersect = max(0, interYmax - interYmin + 1) intersectArea = widthIntersect * heightIntersect # Calculate areas of both boxes A and B areaBoxA = (boxA.xMax - boxA.xMin + 1) * (boxA.yMax - boxA.yMin + 1) areaBoxB = (boxB.xMax - boxB.xMin + 1) * (boxB.yMax - boxB.yMin + 1) unionArea = areaBoxA + areaBoxB - intersectArea iou = intersectArea / unionArea # Incorporate uncertainties from sigmas using Gaussian distribution properties covMatrixAB = [[sigmaA^2, 0], [0, sigmaB^2]] detCovMatrixAB = determinant(covMatrixAB) invCovMatrixAB = inverse(covMatrixAB) diffVectorCenters = [(boxA.centerX - boxB.centerX), (boxA.centerY - boxB.centerY)] mahalanobisDistanceSquared = transpose(diffVectorCenters) @ invCovMatrixAB @ diffVectorCenters probFactor = exp(-mahalanobisDistanceSquared / 2) / sqrt(detCovMatrixAB * ((2*pi)^2)) finalScore = iou * probFactor return finalScore ``` This code snippet demonstrates how one might implement a version of `ProbIoU`, integrating standard IoU calculation along with adjustments based on provided variances (`sigmas`) for each predicted bounding box[^1].
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值