使用poseGAN的方式求解相机pose,不同于基于结构和learning求解相机pose的方式,本文使用基于几何的方式,相比较基于纹理回归的方式更加鲁棒。
提出在室内场景很多2d-3d方法(dsac。。。)不太合适,因为Motion blur, strong illumination, texture-less or repetitive,而基于learning的相对较鲁棒但是精度不高。
贡献:1.第一次使用gan做定位问题。 2.模型比类似posenet这样的网络小70%(速度快)。 3.基于几何结构的比基于纹理的好很多。 4.poseGAN可以做很多任务,比如视频模糊、合成图等
本文:x表示图片,y表示pose。一共两部分框架,1个是生成器G,1个是判别器D,具体架构如下:
-
可以看到生成器G,输入一个pose,输出一个128*128*3通道的image(因此每个场景都需要训练一个固有的模型)
-
D判别器分为两部分一部分是根据image的信息判别图片是生成图还是真实图,另一个是根据pose的信息判别是生成图还是真实图。
3. PoseGAN for Camera Localization(
判别器部分)
,判别器输出的是两部分内容第一项是区别生成数据和真实数据(image的feature),第二项是计算pose和image之间的相似度(超参数feature,学习)
!!!!第二项指的是将image 和 pose 都映射到64维度(N表示的是batch size,也就是不同的image),然后计算cos相似度,文中提到这样的方式表达不好,因此使用类似posenet中的将image 的 feature直接压到6DOF上,直接计算pose误差,得到下:
4. Loss Functions(
判别器部分)
第一项要学会区分是生成数据还是真实数据
、
,用kl散度和hinge loss进行判别(可以认为是简单的二分类问题)
loss为:
第二项的loss:
目的是尽量降低生成的图片在转换成pose和真实pose之间的误差。
总目标方程:
生成器G loss方程为:
总结:在训练的时候使用了pose->GAN生成的image->灌入判别网络。在test的时候直接将image x扔进判别网络。
这样的好处可能是使用gan在图片空间约束了pose空间,形成对抗,A->B,B->A这样网络更加稳定,不会瞎学或者overfitting?????,感觉想法挺不错,效果也不错