Polar Parametrization for Vision-based Surround-View 3D Detection (PolarDETR)论文笔记

PolarDETR是一种新的环视图3D物体检测方法,采用极坐标参数化物体位置,解决了基于图像和笛卡尔参数化的缺点。通过中心-上下文特征聚合和像素射线位置编码,提高了检测性能和收敛性。PolarDETR-T在处理时序图像时进一步增强了速度估计的准确性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原文链接:https://arxiv.org/abs/2206.10965

1 引言

        目前的物体位置参数化方法主要有两种,即基于图像的参数化和笛卡尔参数化。

        基于图像的参数化(左图):估计物体在图像中的像素索引和深度(u,v,d),再使用相机的内外参将该坐标转移到3D空间。通常用于单目图像。对于环视图像,该方法独立地在每个视角图像中回归边界框位置,然后投影到公共的3D空间。最后使用跨视图后处理如NMS滤除重复检测。

        缺点是深度估计误差较大,且多视图方法中相邻视图重叠区域提供的额外信息未被利用;跨视图后处理方法困难而不稳定。

        笛卡尔参数化(中图):通常检测范围为矩形。结合多视图的相关性,联合预测物体的3D坐标。

        但该方法也存在问题,如下图所示:设物体A_{t_1}A_{t_2}位于不同图像中的相同位置,且有相同图像模式。

        (1)由于检测范围为矩形(即只有检测范围内的物体会被标注),训练时仅考虑A_{t_1},而A_{t_2}被丢弃(即两个视图没有被同等对待),这对网络的收敛性有不利影响。

        (2)该方法忽视了视图对称性。上图产生的两张图像,若用基于图像的参数化,学到的模型仅需要预测相同的位置(u,v,d);而使用笛卡尔参数化学到的模型需要预测不同的3D坐标,无疑会增加模型的复杂度,且优化模型更加困难。

        本文提出环视图3D检测transformer(PolarDETR),即使用柱坐标(r,\alpha,z)(即径向距离、水平角和高度)参数化(称为极参数化;右图)物体位置,并将物体速度参数化为径向速度和切向速度。此外,检测范围、损失函数都是在极坐标下定义的。

        PolarDETR能够实现中心-上下文特征聚合,增强目标查询与图像之间的信息交互,并采用像素射线作为位置编码,提供三维空间先验,帮助预测方位角\alpha。本文的PolarDETR实现了很好的性能-速度平衡。

3 PolarDETR

3.1 概述

        如下图所示。K个不同视图的图像首先输入到共享的CNN提取特征,然后使用目标查询来检测物体。每个目标查询编码了相应物体的语义特征和位置信息,然后一系列解码层从环视特征图中聚合特征,迭代地更新目标查询。前馈网络(FFN)基于这些查询,预测类别,以及边界框和速度的极坐标编码。

3.2 极参数化

        每个边界框参数被极坐标编码为9元组B_{\textup{enc}}=(b_r,b_{\sin\alpha},b_{\cos\alpha},b_z,b_l,b_w,b_h,b_{\sin\theta},b_{\cos\theta}),可根据其估计边界框极坐标参数B_{\textup{pred}}=(r,\sin\alpha,\cos\alpha,z,l,w,h,\sin\theta,\cos\theta)。其中

r=\sigma(b_r)\cdot R_{\max},z=\sigma(b_z)\cdot(Z_{\max}-Z_{\min})+Z_{\min}

\sin\alpha=\frac{b_{\sin\alpha}}{\sqrt{b_{\sin\alpha}^2+b_{\cos\alpha}^2}}, \cos\alpha=\frac{b_{\cos\alpha}}{\sqrt{b_{\sin\alpha}^2+b_{\cos\alpha}^2}}

l=\exp(b_l),w=\exp(b_w),h=\exp(b_h)

\sin\theta=\frac{b_{\sin\theta}}{\sqrt{b_{\sin\theta}^2+b_{\cos\theta}^2}}, \cos\theta=\frac{b_{\cos\theta}}{\sqrt{b_{\sin\theta}^2+b_{\cos\theta}^2}},

Z_{\max}Z_{\min}为高度检测范围,R_{\max}为检测距离最大值;\sigma是sigmoid函数。水平角和朝向角的回归使用正余弦对(\sin(\cdot),\cos(\cdot)),以保证回归空间的连续性。

        位置估计的极分解:极参数化将物体位置解耦为径向距离和水平角。距离r与物体大小关联,可从图像模式中学习;水平角\alpha与像素索引相关联,可从位置编码中学习。

        速度估计的极分解:径向速度与物体大小变化率关联,切向速度与物体在图像平面的运动关联。

        极参数化显式地建立了图像模式和预测目标的关联,这些显式关联使得检测器能有更好的收敛性和性能。

3.3 解码层

        解码层迭代地聚合特征并更新查询。首先使用一个多头自注意力模块(MHSA)来进行查询间的信息交互,然后使用线性层从查询提取物体位置:

(b_r,b_{\sin\alpha},b_{\cos\alpha},b_z)=\textup{Linear}(\textup{MHSA}(q_i))

转换为3D坐标c_i^{\textup{3D}}=(r,\alpha,z)即可。

        中心-上下文特征聚合:聚合环视图特征图的特征。先将3D中心点投影到各图像平面,得到2D中心点:

c_i^{k}=\textbf{K}^k\cdot \textbf{Rt}^k\cdot c_i^{\textup{3D}}

其中\textbf{K}^k\textbf{Rt}^k分别是由第k个相机内参和外参推导的投影矩阵。使用双线性插值从图像特征图中获得这些中心点的特征(如果2D中心位置超出图像范围,则特征设置为0)。

        引入上下文特征增强查询和环视图特征的交互来促进定位。基于中心点特征f_{c_i^k}和查询嵌入q_i预测与中心点的偏移量,生成上下文点的集合\{p_i^k\}_{k=1}^K

\Delta u_i^k,\Delta v_i^k=\textup{Linear}(\textup{Conact}(f_{c_i^k},q_i)),p_i^k=c_i^k+(\Delta u_i^k,\Delta v_i^k)

最后使用双线性插值得到上下文点特征。

        像素射线:如下图所示,像素射线从光学中心出发经过像素到达3D点,直接建立了像素与点之间的关系,包含了水平角的显式信息。

        本文使用像素射线作为额外的位置编码,即对于每个中心点或上下文点,像素射线单位方向向量d_{\textup{ray}}作为额外的特征维度与原特征拼接。

        查询更新

\hat{q}_i=\textup{MLP}(\textup{Concat}(\{f_{c_i^1},\cdots,f_{c_i^K},f_{p_i^1},\cdots,f_{p_i^K}\},d_{\textup{ray}}))+q_i

        更新后的查询嵌入编码了更精确的位置信息,从而使得下一解码层能更好地进行特征聚合。

3.4 感知范围、标签分配和损失函数

        感知范围:以自车为中心的圆形区域。

        标签分配:先将标注标签转换为极坐标:B_{\textup{gt}}=(\bar{r},\sin\bar{\alpha},\cos\bar{\alpha},\bar{z},\bar{l},\bar{w},\bar{h},\sin\bar{\theta},\cos\bar{\theta}),然后使用双向匹配方法为真实边界框匹配唯一的预测值。逐对匹配代价如下:

C(i,j)=C_{\textup{cls}}(i,j)+C_{\textup{box}}(i,j)

C_{\textup{box}}(i,j)=|r-\bar{r}|+k_{\textup{scaling}}\cdot(|\sin\alpha-\sin\bar{\alpha}|+|\cos\alpha-\cos\bar{\alpha}|)

其中C_{\textup{cls}}(i,j)是DETR中定义的类别项。

        计算每一对预测和真实边界框的匹配代价后得到代价矩阵\textbf{H},然后使用匈牙利算法寻找最优分配。

        损失函数:双向匹配损失由分类损失(focal损失)以及极坐标边界框/速度损失(L1损失)组成。

3.5 时序信息

        将PolarDETR扩展为PolarDETR-T以接受时序图像的输入。当前帧的物体中心c_i^{\textup{3D}}被投影到之前帧的图像以获得特征,以第t-n帧为例:

c_i^{k(t-n)}=\textbf{K}^k\cdot \textbf{Rt}^k\cdot \textbf{Pose}^{(t-n)}\cdot c_i^{\textup{3D}}

其中\textbf{Pose}^{(t-n)}为姿态变换矩阵,反应自车从第t-nt帧的姿态变化。类似前述方法,从以前帧采样中心和上下文特征。最后所有采样特征被聚合,用于更新查询嵌入。

        为进行高效推断,可以缓存过去的图像特征图,这样仅需要处理当前帧的图像,从而PolarDETR-T的推断速度接近PolarDETR。

4 实验

4.2 实验设置

        使用检测跟踪算法将PolarDETR扩展为3D目标跟踪,即根据当前帧速度,将物体投影回上一帧,然后使用最近距离匹配方法匹配目标。

4.4 主要结果

        PolarDETR-T的性能比PolarDETR要高,特别是对于速度的估计上。

4.5 消融研究

        关键组件:极参数化、上下文点和像素射线均对性能有提升,且计算代价可忽略。

        速度的极分解:与笛卡尔分解比较,极分解可以提高速度的估计精度。

        上下文点:性能随上下文点的数量增加而变强,但一定范围后再增加则有负面效果。用于生成上下文点的查询嵌入和中心特征对性能提升均有帮助。

        解码层:解码层数越多性能越好,但会趋于饱和。

### Accumulated Polar Feature-Based Method in Computer Vision The accumulated polar feature (APF)-based method is a robust technique used primarily within the domain of computer vision and image processing to analyze, recognize patterns, and extract features from images. This approach leverages the transformation of Cartesian coordinates into polar coordinates around key points identified within an image. #### Key Concepts Transforming data into polar space allows for more effective representation of circular or radial structures present in visual content. The accumulation process involves aggregating information over specific angular sectors at varying radii from selected keypoints. By doing so, this method can capture both local texture details as well as broader structural characteristics simultaneously[^1]. #### Implementation Steps To implement APF-based methods effectively: - **Keypoint Detection**: Identify distinctive regions across different scales using algorithms like SIFT or FAST. - **Polar Transformation**: Convert neighborhoods surrounding these keypoints into polar coordinate systems where each point has distance \( r \) and angle \( θ \). - **Feature Extraction**: Aggregate intensity values along concentric circles centered on detected keypoints while dividing them into multiple bins based upon angles. Here's how one might code such functionality in Python with OpenCV library support: ```python import cv2 import numpy as np def compute_polar_features(image, kp): # Extract patches around keypoints patch_size = 32 winSize = (patch_size, patch_size) descriptors = [] for p in kp: x, y = int(p.pt[0]), int(p.pt[1]) # Crop region of interest roi = image[y-patch_size//2:y+patch_size//2, x-patch_size//2:x+patch_size//2] # Compute gradient magnitude and orientation mag, ang = cv2.cartToPolar(cv2.Sobel(roi,cv2.CV_64F,1,0,ksize=5), cv2.Sobel(roi,cv2.CV_64F,0,1,ksize=5)) # Create histogram per sector hist = np.zeros((8,)) bin_edges = np.linspace(-np.pi,np.pi,9) for i in range(len(mag)): idx = np.digitize(ang[i],bin_edges,right=True)-1 if(idx>=0): hist[idx%8]+=mag[i] descriptors.append(hist.flatten()) return np.array(descriptors).astype(np.float32) img = cv2.imread('example.jpg',cv2.IMREAD_GRAYSCALE) detector = cv2.FastFeatureDetector_create() keypoints = detector.detect(img,None) descriptors = compute_polar_features(img,keypoints[:10]) # Limit number of keypoints processed here print(f"Descriptors shape: {descriptors.shape}") ``` This script demonstrates extracting simple histograms representing distribution of gradients' orientations inside patches defined by Fast corners found earlier in grayscale input imagery.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

byzy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值