Disp R-CNN: Stereo 3D Object Detection via Shape Prior Guided Instance Disparity Estimation
摘要(理解)
作者提出一种用于3D目标检测的名为disp R-CNN 的网络。该网络相较于一般的3D目标检测模型,不同点主要在:
- 该网络仅估计感兴趣目标的视差;
- 学习(识别特定的形状先验category-specific shape prior)以获得更精确的视差估计;
- 可以不使用LiDAR提供的点云,而使用statistical shape model生成稠密视差伪真值;
实验结果:在 K I T T I KITTI KITTI数据集上显示,即使在训练时没有真值,Disp R-CNN 在准确度方面也获得了比state-of-the-art 的方法高20%的结果。
Q:伪真值获取方式 \textbf{Q:伪真值获取方式} Q:伪真值获取方式
实验结果&结论
图5:上下3行分别显示,(感兴趣)3D边界预测、视差估计结果以及伪视差真值。
Q:视差估计与伪视差真值如何获得?
\textbf{Q:视差估计与伪视差真值如何获得?}
Q:视差估计与伪视差真值如何获得?
图6:对比PSMNet和iDispNet视差估计结果,可以发现iDispNet的估计结果更加细致。
方法
整体步骤:
- 首先检测感兴趣目标mask(2D)
- 仅估计mask内的目标的视差
- 使用3D detector为每个instance的点云预测一个bounding boxes
Stereo Mask R-CNN(得到mask)
拓展了Stereo R-CNN 框架,用于左图的分割mask的预测,Stereo Mask R-CNN分两步:
- Region Proposal Network 的双目变量,左右图像中的object proposals 从同一组anchor生成,以确保左右ROI区域的对应
- 使用RoIAlign从feature map中提取特征,然后produce 2Dbounding boxes,classification scores 和instance segmentation mask。
Instance Disparity Estimation Network(对mask内的目标估计视差)
视差估计模型作用于恢复3D目标,因此视差估计的精度直接影响3D检测的性能。考虑到计算整个图片的视差是冗余的,并且(对于交通工具)来说the Lambertian reflectance assumption for the photometricconsistency constraint used in stereo matching cannot hold。 所以作者提出专门用于3D目标检测的基于学习的目标视差估计网络(instance disparity estimation network iDispNet)。
iDispNet只把RoI区域作为输入,并且只在前景像素上进行监督,所以它能够捕获特定类别的形状(it captures the category-specific shape prior ),因此可以产生更加精确的视差预测。
Formally speaking,对于像素
p
p
p,full-frame disparity 定义为:
D
f
(
p
)
=
u
p
l
−
u
p
r
(1)
D_f(p)=u_p^l-u_p^r \tag{1}
Df(p)=upl−upr(1)
其中
u
p
l
u_p^l
upl和
u
p
r
u_p^r
upr分别代表像素
p
p
p在左右图中的水平坐标。通过Stereo Mask R-CNN
获得的2D bounding boxes, “我们”能够从整体图像中剪切左右ROI,并且在水平方向使之对其。为了保证ROI具有相同的尺寸,它们的宽度
(
w
l
,
w
r
)
(w^l,w^r)
(wl,wr)设置为值比较大的一个。ROI对齐之后,左图像上像素
p
p
p的视差从全局视差转变为instance disparity:
D
i
(
p
)
=
D
f
(
p
)
−
(
b
l
−
b
r
)
(2)
D_i(p)=D_f(p)-(b^l-b^r) \tag{2}
Di(p)=Df(p)−(bl−br)(2)
其中
b
l
b^l
bl和
b
r
b^r
br分别代表两图中bounding boxes的左边界,详细理解如下图:
“我们”的目标是学习
D
i
(
p
)
D_i(p)
Di(p),而非
D
f
(
p
)
D_f(p)
Df(p)。
将左右图的所有ROI都resize为
H
∗
W
H*W
H∗W。对于所有的属于目标
O
O
O的像素
p
p
p(
p
p
p是否属于
O
O
O由上述的instance segmentation mask判定),目标视差的loss function 定义为:
L
i
d
i
s
p
=
1
∣
O
∣
∑
p
∈
O
L
1
,
s
m
o
o
t
h
(
D
^
i
′
(
p
)
−
D
i
′
(
p
)
)
,
(3)
L_{idisp}=\frac{1}{|O|}\sum_{p\in{O}}L_{1,smooth}(\hat{D}_i^{'}(p)-D_i^{'}(p)),\tag{3}
Lidisp=∣O∣1p∈O∑L1,smooth(D^i′(p)−Di′(p)),(3)
D
i
′
(
p
)
=
D
i
(
p
)
m
a
x
(
w
l
,
w
r
)
W
,
(4)
D_i^{'}(p)=\frac{D_i(p)}{max(w^l,w^r)}W,\tag{4}
Di′(p)=max(wl,wr)Di(p)W,(4)
其中
D
^
i
′
(
p
)
\hat{D}_i^{'}(p)
D^i′(p)是像素
p
p
p的predicted instance disparity,
D
i
′
(
p
)
D_i^{'}(p)
Di′(p) is the instance disparity ground-truth,
(
w
l
,
w
r
)
(w^l,w^r)
(wl,wr)代表左右图的2D bounding boxes 的宽度,
∣
O
∣
|O|
∣O∣代表属于目标
O
O
O的像素的个数。iDispNet 输出
D
^
i
′
(
p
)
\hat{D}_i^{'}(p)
D^i′(p),便可以计算每个像素
p
p
p所属的前景,然后作为接下来3D detector的输入。3D坐标
(
X
,
Y
,
Z
)
(X,Y,Z)
(X,Y,Z)的计算方法为:
X
=
(
u
p
−
c
u
)
f
u
Z
,
Y
=
v
p
−
c
v
f
v
Z
,
X=\frac{(u_p-c_u)}{f_u}Z,Y=\frac{v_p-c_v}{f_v}Z,
X=fu(up−cu)Z,Y=fvvp−cvZ,
Z
=
B
f
u
D
^
i
′
(
p
)
+
b
l
−
b
r
,
Z=\frac{Bf_u}{\hat{D}_i^{'}(p)+b^l-b^r},
Z=D^i′(p)+bl−brBfu,
其中
B
B
B是基线长度,
(
c
u
,
c
v
)
(c_u,c_v)
(cu,cv)为相机中心的像素位置,
f
u
,
f
v
f_u,f_v
fu,fv分别是水平和垂直焦距。
Pseudo Ground-truth Generation
训练双目匹配网络需要大量的稠密视差,但是多数数据集并不提供。通常是由于LiDAR点云的获取成本过高。得力于iDispNet仅需要前景监督(Benefiting from the design of the ispNet which only requires foreground supervision),“我们”提出一个不需要依赖LiDAR点云的为真实数据生成大量稠密视差伪真值的方法。 生成过程通过类别特定的形状先验模型实现,从该模型可以重建对象形状,然后将其渲染到图像平面,以获得稠密的视差真值。
使用the volumetric Truncated Signed Distance Function (TSDF) 作为形状表示,对于某些形状变化相对较小的刚性对象类别(例如交通工具),TSDF形状空间可以能够近似为一个低维度的子空间,将子空间的基定义为
V
V
V,由训练形状的主成分中提取,mean shape 定义为
μ
\mu
μ,从而一个instance的shape
ϕ
^
\hat{\phi}
ϕ^可以表示为:
ϕ
^
(
z
)
=
V
z
+
μ
,
(5)
\hat{\phi}(z)=Vz+\mu,\tag{5}
ϕ^(z)=Vz+μ,(5)
其中
z
∈
R
K
z\in\mathbb{R}^K
z∈RK是形状系数,
K
K
K是子空间的维度。
给定3D bounding box 真值和instance的点云,我们能够通过最小化cost function(式6)为一个instance 重建形状系数
z
z
z
L
p
c
(
z
)
=
1
∣
P
∣
∑
x
∈
P
ϕ
(
x
,
z
)
2
,
(6)
L_{pc}(z)=\frac{1}{|P|}\sum_{x\in{P}}\phi(x,z)^2,\tag{6}
Lpc(z)=∣P∣1x∈P∑ϕ(x,z)2,(6)
其中
ϕ
(
x
,
z
)
\phi(x,z)
ϕ(x,z)是由形状系数
z
z
z定义的TSDF volume中的3D点
x
x
x的插值,
P
P
P是instance相关的点云,
∣
P
∣
|P|
∣P∣是点云中点的个数。只有
z
z
z在优化过程中被更新,这个cost function最小化了点云到由TSDF的过零点定义的物体表面的距离,点云可以从现成的视差估计模块或可选的LiDAR点获得。
由于上述的cost function不约束目标形状的3D尺寸,“我们”提出了以下尺寸正则化项,以减少物体溢出三维包围盒的情况:
L
d
i
m
(
z
)
=
∑
v
∈
V
o
u
t
m
a
x
(
−
ϕ
(
v
,
z
)
,
0
)
2
,
(7)
L_{dim}(z)=\sum_{v\in V^{out}} max(-\phi (v,z),0)^2,\tag{7}
Ldim(z)=v∈Vout∑max(−ϕ(v,z),0)2,(7)
其中
V
o
u
t
V_{out}
Vout表示体积中超过3D bounding box的所有体素,如图4表示尺寸正则化
为了将形状系数限制在适当的范围内,使用以下正则化项来惩罚优化形状与平均形状之间的偏差:
L
z
(
z
)
=
∑
k
=
1
K
(
z
k
σ
k
)
2
,
(8)
L_z(z)=\sum_{k=1}^{K}(\frac{z_k}{\sigma_k})^2,\tag{8}
Lz(z)=k=1∑K(σkzk)2,(8)
σ
k
\sigma_k
σk表示第k个主分量对应的特征值。结合上述各个部分,最终的cost function为:
L
(
z
)
=
w
1
L
p
c
(
z
)
+
w
2
L
d
i
m
(
z
)
+
w
3
L
z
(
z
)
.
(9)
L(z)=w_1L_{pc}(z)+w_2L_{dim}(z)+w_3L_z(z).\tag{9}
L(z)=w1Lpc(z)+w2Ldim(z)+w3Lz(z).(9)
最后,目标视差伪真值
D
i
D_i
Di可以根据优化对象进行渲染,如下:
D
i
=
B
f
u
π
(
M
(
ϕ
^
(
z
)
)
)
−
(
b
l
−
b
r
)
,
(10)
D_i=\frac{Bf_u}{\pi(M(\hat{\phi}(z)))}-(b^l-b^r),\tag{10}
Di=π(M(ϕ^(z)))Bfu−(bl−br),(10)其中
M
M
M表示marching cubes 将TSDF体积转化为三角网格。
π
\pi
π表示生成像素深度图的网格渲染器,上述图五第三行给出了一些伪视差真值的示例。
Discussion && Implementation Details
这一部分主要讲述了网络的选择和实现的细节
网络的选择
作者考虑了两种网络架构:
- 只使用iDispNet的解码部分作为prediction head,从主干网提取的RoI特征在视差估计中被重新使用,disparity head 与网络的其他部分进行端到端的训练;
- 将ROI图片从原图中分割出来,然后将ROI图片输入iDispNet的编码解码网络。
通过实验证明第二种架构较第一种架构更有优势,所以该文选择使用第二种架构。且作者认为原因在于:目标分割和视差估计的要求不一(We believe the reason behind this result is related to the different requirements between the tasks of instance segmentation and disparity estimation.)视差估计需要更细粒度的特征表示,以使像素级的代价体积处理更加精确,而实例分割则需要对属于对象的每个像素进行相同的类概率预测。通过联合训练端到端版本的网络,主干网必须在这两个不同的任务之间进行平衡,从而导致不理想的结果(机翻).
伪视差真值生成的点云选择:总体来说,在形状优化过程中点云的使用有两种选择,1.可以是数据集中LiDAR获得的稀疏点云;2.通过off-the-shelf disparity estimation network 对其它数据集训练预测得到的。第一种方法能够提供更加精确的点云,但是对于优化
L
p
c
(
z
)
L_{pc}(z)
Lpc(z)如果没有LiDAR点云,第二种方式是唯一的选择。“我们”评估于实现上述两种方法,方法2在没有LiDAR数据表现更优。
实现细节
该部分主要包括三件事情
- iDispNet的结构与实现:使用PSMNet作为iDispNet的结构,ROI图片resize为224*224的大小作为input。在双目匹配中,视差搜索范围为-48到+48(该范围包含了数据集90%以上的视差分布范围)。
- 3D detection network的实现:PointRCNN在这里用作3D object detection。“我们”使用从instance disparity 转换来的instance point cloud作为Point RCNN的输入,而不是将整个场景的点云作为输入。这样点云的size就被缩小到768.
- 伪视差真值的生成:为了提高伪真值的稳定性,只有在3Dbounding boxes中的点才被用于优化(only points that sit inside of the ground-truth 3D bounding box are used for optimization)。对于少于10个点的目标,它的mean shape 可以未经优化而直接使用。我们选择PCA前五个主成分并且将体积设置为604060。训练数据来自Google。通过训练得到参数: w 1 = 10 / 3 , w 2 = w 3 = 1 w_1=10/3,w_2=w_3=1 w1=10/3,w2=w3=1。优化使用一个用Ceres实现的Levenberg-Marquardt求解器。
训练策略
We train the Stereo Mask R-CNN for 20 epochs with a weight decay of 0.0005, the iDispNet for 100 epochs with a weight decay of 0.01and the PointRCNN 360 epochs with a weight decay of 0.0005. The learning rate is first warmed up to 0.01and then decreases slowly in all the training processes.
实验
在KITTI数据集上展开实验