From Image Collections to Point Clouds with Self-supervised Shape and Pose Networks
通讯作者:R. Venkatesh Babu
第一作者:K L Navaneet
研究机构:Indian Institute of Science,加利福尼亚大学,Google Research
代码: 代码链接
自己的想法:
将一个从2D图像生成的点云模型从不同视角进行观察,各个视角的观察都应该符合该模型在对应视角下的投影,这就是循环一致性损失函数的核心思想
不需要真值进行监督的代价就是需要复杂的损失函数补充这种监督信息,而且训练过程更加复杂。当然这也更加接近人脑在学习时候的情景。
与论文《Unsupervised Learning of Shape and Pose with Differentiable Point Clouds》解决的问题类似(该论文所提模型ULSP被用于baseline),在相机位姿未知的前提下通过2D的单视角图像监督恢复3D形状和位姿。
与有位姿监督和多视点监督的方法相比,模型仍然可以获得竞争性能。
-
ULSP模型:是一种基于多视图一致性的点云重建无监督方法,不需要相机位姿的真值,但是需要两张或以上的不用视角的图像以及对应的每个3D对象实例来自不同视点的相应前景mask。ULSP 论文笔记。
-
ULSP_Sup: ULSP的变种,为了与本文模型作对比作者训练的baseline,使用相机位姿真值进行监督,但是只是用单视角图像。
-
DIFFER模型: 《DIFFER: Moving beyond 3d reconstruction with differentiable feature rendering》,
提出了一个可微分模块,以将点云特征投影到2D平面上,从而使其能够利用输入图像进行训练。DIFFEr使用了相机位姿的真值,因此本文方法相比具有更高的监督度。
本文贡献:
- 提出的模型只需要单视角图像,不需要相机位姿真值,更加接近实际情况。
- 在3D重建和相机位姿估计时引入了循环一致性损失
输入图像为I,重建后的点云数据为 P ^ \hat{P} P^,然后使用DIFFER模型中提出的可微投影模块将点云根据给定的视角V投影到2D平面,得到重投影的图像和前景mask I ^ , M ^ \quad \hat{I}\quad,\hat{M} I^,M^
损失函数:
L
I
=
1
h
w
∑
i
,
j
∣
∣
I
i
,
j
−
I
^
i
,
j
∣
∣
2
2
该
损
失
函
数
用
于
监
督
重
投
影
后
的
图
像
与
原
始
输
入
之
间
的
差
别
L
M
=
L
b
c
e
+
L
a
f
f
该
损
失
函
数
用
于
监
督
前
景
点
m
a
s
k
的
生
成
质
量
。
其
中
L
b
c
e
=
1
h
w
∑
i
,
j
−
M
i
,
j
l
o
g
M
^
i
,
j
−
(
1
−
M
i
,
j
)
l
o
g
(
1
−
M
^
i
,
j
)
L
a
f
f
=
∑
i
,
j
m
i
n
(
k
,
l
)
∈
M
+
(
(
i
−
k
)
2
+
(
j
−
l
)
2
)
M
^
i
,
j
M
k
,
l
+
∑
i
,
j
m
i
n
(
k
,
l
)
∈
M
^
+
(
(
i
−
k
)
2
+
(
j
−
l
)
2
)
M
i
,
j
M
^
k
,
l
可
以
看
出
,
L
b
c
e
的
作
用
是
监
督
被
预
测
错
的
前
景
点
,
L
a
f
f
用
于
监
督
实
际
前
景
点
与
预
测
的
前
景
点
之
间
的
坐
标
偏
差
L_I=\frac{1}{hw}\sum_{i,j}||I_{i,j}−\hat{I}_{i,j}||_2^2 \quad 该损失函数用于监督重投影后的图像与原始输入之间的差别\\ L_M=L_{bce}+L_{aff} \quad 该损失函数用于监督前景点mask的生成质量。其中\\ \quad\quad L_{bce} =\frac{1}{hw}\sum_{i,j}−M_{i,j}log\hat{M}_{i,j}−(1−M_{i,j})log(1−\hat{M}_{i,j}) \\ \quad\quad L_{aff}=\sum_{i,j}min_{(k,l)\in M_+}((i−k)^2+ (j−l)^2)\hat{M}_{i,j}M_{k,l} +\sum_{i,j}min_{(k,l)∈\hat{M}_+}((i−k)^2+ (j−l)^2)M_{i,j}\hat{M}_{k,l}\\ 可以看出,L_{bce}的作用是监督被预测错的前景点,\\ L_{aff}用于监督实际前景点与预测的前景点之间的坐标偏差
LI=hw1i,j∑∣∣Ii,j−I^i,j∣∣22该损失函数用于监督重投影后的图像与原始输入之间的差别LM=Lbce+Laff该损失函数用于监督前景点mask的生成质量。其中Lbce=hw1i,j∑−Mi,jlogM^i,j−(1−Mi,j)log(1−M^i,j)Laff=i,j∑min(k,l)∈M+((i−k)2+(j−l)2)M^i,jMk,l+i,j∑min(k,l)∈M^+((i−k)2+(j−l)2)Mi,jM^k,l可以看出,Lbce的作用是监督被预测错的前景点,Laff用于监督实际前景点与预测的前景点之间的坐标偏差
在损失函数
L
I
L_I
LI中,可知重建的点云与相机位姿预测值直接决定了loss的大小,但是,网络有可能“取巧”,当网络被训练为点云只输出平面(与输入图像相同),位姿输出为固定值,重投影后的2D图像一定与输入完全匹配,此时
L
I
L_I
LI仍为0。为了避免上述退化情况,作者引入了 cycle consistency losses,循环一致性损失。
Geometric Cycle Consistency Loss
L G = ∑ i = 1 k d C h ( P ^ , P i ^ ) L_G=\sum_{i=1}^kd_{Ch}(\hat P,\hat{P^i}) LG=i=1∑kdCh(P^,Pi^)
用于训练点云重建网络.
d C h d_{Ch} dCh是chamfer distance函数, P ^ \hat{P} P^代表输入图像重建后的点云,根据随机采样得到的一系列视角 { v i } 1 k \{v_i\}^k_1 {vi}1k将该点云数据投影到2D平面得到一些列对应的图像 { I ^ i } 1 k \{\hat{I}^i\}^k_1 {I^i}1k, 然后再使用重建网络将这一系列的图像重建成3D点云,得到 P ^ i \hat{P}^i P^i。
重建网络的损失函数:
L
r
e
c
t
o
t
a
l
=
α
(
L
I
+
L
M
)
+
β
L
G
L^{total}_{rec}=α(L_I+L_M) +βL_G
Lrectotal=α(LI+LM)+βLG
Pose Cycle Consistency Loss
输入数据里面并没有位姿的真值,这里将随采样获得的视角作为真值,然后在这些视角下对预测的点云进行投影,得到对应的二维图像,网络再以这些图像为输入得到预测的视角(位姿),将这些位姿与之前的真值(随采样获得的视角)做loss函数:
L
p
o
s
e
=
1
k
∑
i
=
1
k
∣
v
i
−
v
i
^
∣
L_{pose}=\frac{1}{k}\sum^k_{i=1}|v_i−\hat{v_i}|
Lpose=k1i=1∑k∣vi−vi^∣
显然对位姿的预测过程中用到了投影模块,投影质量也极大地影响着位姿的预测准确度,在计算总的位姿损失函数时应将其考虑进去:
L
p
o
s
e
t
o
t
a
l
=
γ
(
L
I
+
L
M
)
+
ρ
L
p
o
s
e
L^{total}_{pose}=\gamma(L_I+L_M) +ρL_{pose}
Lposetotal=γ(LI+LM)+ρLpose
Nearest Neighbours Consistency Loss
为了保持在约束条件下,同时利用多幅图像进行改进重建(利用尽可能多的约束进行监督),作者提出了从训练集中挖掘属于相似三维模型的图像:
对于每一个输入图像,找到最接近的Neighbour,使得它们具有相似的三维形状,并使用基于投影的一致性损失(Nearest Neighbours Consistency Loss)来辅助网络的训练。
那么如何衡量图像中包含的两个目标的形状一致性呢?如果使用在2D数据集上训练出来的分类网络,其只能够分辨视角和颜色的相似性。作者这里直接使用了本模型中重建网络提取出的特征,特征之间欧式距离代表相似性。注意,该种相似性指的是图像中目标经过3D重建后其三维形状相似。
在训练期间,输入图像的最近邻居被用作附加监督,其核心思想是:由于输入和邻居的3D几何形状相似,因此输入的投影图像与邻居的投影图像也应当是匹配的:
- 首先将最近邻图像输入到位姿预测网络中的到最近邻图像的视角
- 将输入图像的预测点云以上述视角投影得到2D图像,该图像应当与最近邻图像接近(不是颜色信息接近,而是轮廓信息接近)
- 使用衡量轮廓损失的损失函数计算两幅图的差别用于训练
轮廓损失为即
L
M
L_M
LM,最近邻损失为所有邻居的损失值之和:
L
N
N
=
∑
i
=
1
n
L
M
i
L_{NN}=\sum^n_{i=1}L^i_M
LNN=i=1∑nLMi
Symmetry Loss
由于在实验中考虑的所有对象类别都至少有一个对称平面,因此进一步对网络进行正则化,以获得相对于预定义平面的对称重构。在不损失一般性的前提下,假设点云相对于xz平面是对称的。
对称性损失:
L
s
y
m
=
d
C
h
(
P
^
+
,
P
^
−
)
其
中
P
^
+
,
P
^
−
中
的
点
互
为
镜
像
,
以
x
z
平
面
为
对
称
平
面
L_{sym}=d_{Ch}(\hat{P}^+,\hat{P}^−)\\其中\hat{P}^+,\hat{P}^-中的点互为镜像,以xz平面为对称平面
Lsym=dCh(P^+,P^−)其中P^+,P^−中的点互为镜像,以xz平面为对称平面
对称性损失有助于获得与地面真相一致的改进的重建几何形状,并避免过拟合。
此外,对称平面的选择也有助于将重构形状与预先定义的标准位姿对齐
总的重建损失函数:
L
r
e
c
t
o
t
a
l
=
α
(
L
I
+
L
M
)
+
β
L
G
+
η
L
N
N
+
κ
L
s
y
m
L^{total}_{rec}=α(L_I+L_M) +βL_G+ηL_{NN}+κL_{sym}
Lrectotal=α(LI+LM)+βLG+ηLNN+κLsym
Inference Stage Optimization (ISO)
论文所提出的基于自监督的方案,仅仅依赖于输入图像和对应的目标轮廓。因此在推理的时候需要做一些优化。
为了获得高分辨率的重建,模型的目标是在推理过程中最小化输入和投影图像(从预测的视角)之间的差异。为了确保输入图像中被遮挡的区域内的结构不会退化,采用了额外的正则化损失:
L
r
e
g
=
d
c
h
(
P
^
,
P
^
O
)
P
^
,
P
^
O
分
别
为
初
始
点
云
和
优
化
后
的
点
云
L_{reg}=d_{ch}(\hat{P},\hat{P}_O)\\\hat{P},\hat{P}_O分别为初始点云和优化后的点云
Lreg=dch(P^,P^O)P^,P^O分别为初始点云和优化后的点云
还使用对称损失引入正则化,以使网络能够针对输入图像中可见的点云中的区域进行优化,同时适当修改与遮挡区域相对应的点。优化后的损失函数为:
L
I
S
O
=
α
(
L
I
+
L
M
)
+
λ
(
L
r
e
g
)
+
κ
(
L
s
y
m
)
L_{ISO}=α(L_I+L_M) +λ(L_{reg}) +κ(L_{sym})
LISO=α(LI+LM)+λ(Lreg)+κ(Lsym)
对循环一致性损失函数的效果评估:(没有LG和Lpose损失函数 的结果)
对几何损失函数
L
G
L_G
LG效果的评估:
结果显示循环一致性损失和几何损失均可以显着改善现有监督方法的性能
对目标重建结果的评估:
重建结果可视化:
在汽车和飞机类别中,使用最近的邻居可以明显改善点的形状和散布
car类别中点云的重建更加均匀和准确,但是貌似没提到plane的重建结果不太行。。。
下面是对ISO效果的对比:
可见ISO可以保持输入图像中被遮挡区域的形状
下表是对相机位姿准确度的评估:
此外,在模型重建中,作者观察到在回归点中具有相似索引的点具有空间对应性,即使模型没有显式地强制它。使用彩色的UV贴图来可视化点对应关系:
可以用来做语义成分分割。