文章目录
1 BEV下,Eula 损失函数
Yolo-complex的论文中,对于BEV视角下,目标检测的角度使用了Eula 损失函数
复数相位角直接输出无奇异的朝向:
ϕ
=
atan2
(
t
i
m
,
t
r
e
)
\phi = \text{atan2}(t_{im}, t_{re})
ϕ=atan2(tim,tre)
避免传统角度回归的边界不连续问题。
- 欧拉损失:复数角度回归的L2损失:
L Euler = λ angle ( ( t r e − t r e ∗ ) 2 + ( t i m − t i m ∗ ) 2 ) L_{\text{Euler}} = \lambda_{\text{angle}} \left( (t_{re} - t_{re}^*)^2 + (t_{im} - t_{im}^*)^2 \right) LEuler=λangle((tre−tre∗)2+(tim−tim∗)2)
λ angle \lambda_{\text{angle}} λangle为权重系数。
复变函数中,e^(ix)=(cos x+isin x)称为欧拉公式,e是自然对数的底,i是虚数单位。
拓扑学中,在任何一个规则球面地图上,用 R记区域个 数 ,V记顶点个数 ,E记边界个数 ,则 R+ V- E= 2,这就是欧拉定理 ,它于 1640年由 Descartes首先给出证明 ,后来 Euler(欧拉 )于 1752年又独立地给出证明 ,我们称其为欧拉定理 ,在国外也有人称其 为 Descartes定理。
它将指数函数的定义域扩大到复数,建立了三角函数和指数函数的关系,它不仅出现在数学分析里,而且在复变函数论里也占有非常重要的地位,更被誉为“数学中的天桥”。 这个恒等式也叫做欧拉公式,它是数学里最令人着迷的一个公式,它将数学里最重要的几个数字联系到了一起:两个超越数:自然对数的底e,圆周率π;两个单位:虚数单位i和自然数的单位1;以及被称为人类伟大发现之一
2 BEV下,PointPillars使用sin联合SmoothL1
论文:PointPillars
smooth L1损失函数
其实顾名思义,smooth L1说的是光滑之后的L1,前面说过了L1损失的缺点就是有折点,不光滑,导致不稳定,那如何让其变得光滑呢?smooth L1损失函数为:
smooth L1损失函数曲线如下图所示,作者这样设置的目的是想让loss对于离群点更加鲁棒,相比于L2损失函数,其对离群点(指的是距离中心较远的点)、异常值(outlier)不敏感,可控制梯度的量级使训练时不容易跑飞。
3 透视图下, MultiBin 全局方向损失
论文:【3DBBox】3D Bounding Box Estimation Using Deep Learning and Geometry
论文:CenterNet :Objects as Points
车辆全局方位角θ = θl +θray,即它们的组合效果是汽车的恒定全局方向。
给定固有的相机参数,特定像素的光线方向计算起来很简单。在推理时,我们将裁剪中心的光线方向与估计的局部方向结合起来,以计算对象的全局方向。
边界框的空间划分为几个称为锚框的离散模式,然后估计连续偏移需要应用于每个锚框。我们首先将方向角离散化并将其划分为 n 个重叠的 bin。对于每个 bin,CNN 网络估计输出角度位于第 i 个 bin 内的置信概率 ci 和需要应用于该 bin 中心光线方向的剩余旋转校正以获得输出角度。剩余旋转由两个数字表示,分别为角度的正弦和余弦。这导致每个 bin i 有 3 个输出:(ci,cos(Δθi),sin(Δθi))。
有效的余弦和正弦值是通过 L2 normalization layer on top of a 2-dimensional input 获得的。
Lloc定位损失试图最小化真实值与覆盖该值的所有 bin 之间的差异,这相当于最大化余弦距离.其中 nθ∗ 是覆盖真实角度 θ∗ 的 bin 数量,ci 是 bin i 中心的角度,Δθi 是需要应用于 bin i 中心的变化。
在推理过程中,选择具有最大置信度的 bin,并通过将该 bin 的估计 Δθ 应用于该 bin 的中心来计算最终输出。 Multi-Bin 模块有 2 个分支。一个用于计算置信度 ci,另一个用于计算 Δθ 的余弦和正弦。因此,需要为 n 个 bin 估计 3n 个参数。
有效的余弦和正弦值是通过在二维输入之上应用 L2 归一化层获得的
4 L1/L2-norm 的周期损失函数
【论文】RAPiD: Rotation-Aware People Detection in Overhead Fisheye Images
由于边框在被π旋转后保持不变,因此角度损失函数必须满足π(θb)=角度(π,θb+π),即必须是关于θb的角度周期函数。
长和宽度值,对应的对称是 π/2,因此推出:
5 CSL环形平滑标签(Circular Smooth Label , CSL)
Arbitrary-Oriented Object Detection with Circular Smooth Label(2020ECCV)
论文地址:https://arxiv.org/abs/2003.05597
开源代码:https://github.com/Thinklab-SJTU/CSL_RetinaNet_Tensorflow
作者解读:https://zhuanlan.zhihu.com/p/111493759
- CSL
- 离散分类:将角度范围(如 180 ° 180° 180°)划分为多个类别(如每 1 ° 1° 1°一类),通过分类任务预测角度。
- 窗口函数:引入高斯/矩形等窗口函数,使相邻类别的标签平滑过渡(如 0 ° 0° 0°和 1 ° 1° 1°的损失不同)。
- 优点:彻底规避边界不连续问题(PoA和EoE),尤其适合长宽比大的目标(如遥感图像中的车辆)。
- 缺点:分类粒度导致理论误差(如 ω = 1 ° \omega=1° ω=1°时最大误差 0.5 ° 0.5° 0.5°),且参数量较大(需大量输出通道)。
将角度预测这个回归问题视为分类问题,同时结合了回归任务,提高了检测的性能。
提出CSL来解决边界不连续的问题。
将角度回归的方式转换成分类的形式,因为分类的结果是有限的,不会出现超出定义范围外的情况。一种最简单的角度分类方式就是将整个定义的角度范围进行类别的划分,比如一度归为一类,如下图(a)所示:
回归问题转换成分类问题其实是将一个连续到离散的问题,在这个转换的过程中是会有精度的损失的,比如在一度一类的情况下(w=1 ),我们无法预测出0.5度这种结果。因此,我们需要先计算一下精度最大损失和平均损失(服从均匀分布),以确定这种损失对最后的结果影响大不大。
同样,以一度一类的为例( w=1),精度最大和期望的损失分别是0.5和0.25。假如,有两个相同的长宽比1:9的同中心的矩形,角度相差0.5和0.25,则他们之间的IoU只下降了0.05和0.02。这对于最后评测其实影响非常小,毕竟也不是所有目标都有这么大的长宽比。因此,将角度预测方式转换成分类问题是可行的,但是如果只是以最简单的分类手段来处理还是存在几个问题的:
表示方式需采用五参数的形式,而且是要是180角度范围的,不然依然会存在EoE问题。
目前的分类损失无法衡量预测结果和标签之间的角度距离,如上图(a)所示,如果gt是0度,当我们预测成1度和-90度的损失值是一样的,但是如果预测成1度其实我们也是可以接受的。
正度上述的问题(尤其是第二点),我们设计了环形平滑标签(Circular Smooth Label , CSL) ,如上图(b)所示。CSL的具体表达是如下:
- CSL
- 分类损失:使用交叉熵损失,结合窗口函数
g
(
x
)
g(x)
g(x)赋予相邻类别不同权重:
C S L ( x ) = { g ( x ) , θ − r < x < θ + r 0 , otherwise CSL(x) = \begin{cases} g(x), & \theta-r < x < \theta+r \\ 0, & \text{otherwise} \end{cases} CSL(x)={g(x),0,θ−r<x<θ+rotherwise
例如高斯窗口: g ( x ) = exp ( − ( x − θ ) 2 2 r 2 ) g(x) = \exp(-\frac{(x-\theta)^2}{2r^2}) g(x)=exp(−2r2(x−θ)2)。
- 分类损失:使用交叉熵损失,结合窗口函数
g
(
x
)
g(x)
g(x)赋予相邻类别不同权重:
我们列举了四种满足上述上述条件的窗口函数,分别是脉冲函数、矩形函数、三角函数、高斯函数,如下图所示:
由于窗口函数的设置,使得模型可以衡量预测标签和地面真相标签之间的角度距离,即在一定范围内越靠近真实值的预测值的损失值越小。而且通过引入周期性解决了角度周期性的问题,即使得89和-90两个度数变成是近邻的,这也是我们为什么取名为环形平滑损失的原因。需要注意的是,当窗口函数是脉冲函数或者窗口函数的窗口半径很小时,Circular Smooth Label 等价于One-hot label。
6 CenterPoint
CenterPoint是CVPR 2021的论文《Center-based 3D Object Detection and Tracking》中提出的一个激光点云3D目标检测与跟踪算法框架,与以往算法不同的是,该算法不用边界框而是提出用关键点来表示、检测和跟踪3D目标:在检测流程中,第一阶段先用一个关键点检测器去检测目标的中心点,然后再用中心点特征回归出目标的3D尺寸、朝向和速度等属性,第二阶段再基于该目标额外的点特征去对这些属性进行优化;目标跟踪则被简化为一个简单的最近点匹配过程。CenterPoint提出的3D目标检测与跟踪算法非常简单而高效,在nuScenes和Waymo数据集上都取得了SOTA的性能表现。
论文链接:https://arxiv.org/pdf/2006.11275.pdf
代码链接:https://github.com/tianweiy/CenterPoint
朝向角:用正弦和余弦值(sin(α),cos(α))连续回归偏航角
CenterPoint中朝向角的损失函数采用正弦/余弦值的L1损失进行监督,具体设计如下:
1. 朝向角表示方式
-
连续编码:将偏航角 α \alpha α分解为 sin ( α ) \sin(\alpha) sin(α)和 cos ( α ) \cos(\alpha) cos(α)两个分量,避免角度周期性的边界不连续问题(如 0 ° 0° 0°与 360 ° 360° 360°跳变)。
-
回归目标:网络直接预测 t ^ r e = sin ( α ) \hat{t}_{re}=\sin(\alpha) t^re=sin(α)和 t ^ i m = cos ( α ) \hat{t}_{im}=\cos(\alpha) t^im=cos(α),而非角度本身。
- 连续回归:直接预测偏航角 α \alpha α的正弦和余弦值 ( sin ( α ) , cos ( α ) ) (\sin(\alpha), \cos(\alpha)) (sin(α),cos(α)),通过L1损失监督。
- 优点:避免角度周期性(如 0 ° 0° 0°和 360 ° 360° 360°跳变),计算高效(仅需2个输出通道)。
- 缺点:对边界附近的微小角度变化敏感(如 α = 179 ° \alpha=179° α=179°和 α = − 179 ° \alpha=-179° α=−179°),但通过连续编码缓解了这一问题。
2. 损失函数计算
- L1损失监督:对正弦和余弦值分别计算L1损失,公式为:
L angle = ( ∣ t ^ r e − t r e ∗ ∣ + ∣ t ^ i m − t i m ∗ ∣ ) L_{\text{angle}} = \left( |\hat{t}_{re} - t_{re}^*| + |\hat{t}_{im} - t_{im}^*| \right) Langle=(∣t^re−tre∗∣+∣t^im−tim∗∣)
其中 t r e ∗ t_{re}^* tre∗和 t i m ∗ t_{im}^* tim∗是真实角度的正弦/余弦值。 - 与其他属性联合优化:朝向角损失与位置、尺寸等回归任务共享同一组中心点特征,总回归损失为各属性L1损失的加权和。
3. 设计优势
- 边界连续性:正弦/余弦编码避免了直接回归角度时的边界不连续问题,提升方向估计鲁棒性。
- 轻量化:仅需增加两个输出通道,计算开销低。
对比其他方法
-
与复数编码对比:类似Complex-YOLO的复数表示,但CenterPoint简化了损失计算(L1替代L2)。
-
与分类方法对比:不同于3DSSD将角度分为分类+残差(交叉熵+Smooth-L1),CenterPoint直接回归连续值。
-
CenterPoint和CSL(Circular Smooth Label)核心问题解决
-
边界不连续性
- CenterPoint:通过连续编码避免显式角度边界,但依赖回归任务的平滑性。
- CSL:通过分类任务限制预测范围,窗口函数显式处理周期性(如 179 ° 179° 179°和 − 179 ° -179° −179°视为相邻)。
-
计算效率
- CenterPoint更轻量(仅需2个输出通道),适合实时3D检测。 适合3D目标检测(如LiDAR点云),其中角度变化相对平缓,且需高效回归。
- CSL因分类任务需要更多计算资源,后续改进如DCL(Densely Coded Labels)通过二进制编码降低参数量。更适合2D旋转目标检测(如遥感、文本检测),尤其是长宽比大、角度敏感的目标。
-
方法 | 角度表示 | 损失函数 | 边界处理 | 适用场景 |
---|---|---|---|---|
CenterPoint | 连续回归 ( sin , cos ) (\sin, \cos) (sin,cos) | L1损失 | 隐式(连续编码) | 3D检测(高效、实时) |
CSL | 离散分类(窗口函数) | 交叉熵 | 显式(周期性平滑) | 2D旋转检测(高精度) |
CenterPoint通过回归简化计算,而CSL通过分类彻底解决边界问题,两者各有优势。