Geometry-aware Deep Network for Single-Image Novel View Synthesis 阅读报告 由单幅图像预测其他视角图像

2019年7月13日


核心思想

  • 在利用单幅图像生成对应的新视角图像时,利用图像场景的几何结构(主要是深度Depth和切法向量Normal)特征、对应的POSE特征(旋转矩阵、平移向量和相关的摄像机参数K)计算了新旧图像之间的单应性(Homography),利用Inverse wraping和逆单应性(Inverse Homography)解决不同时出现在新旧图像上物体的预测问题,进而以单幅图像作为输入构建出了新视角的图像;其中,图像场景的几何结构特征帮助构建了更符合实际情况的的新视角图像。

  • 在细节处理方面,利用优化了损失函数的Refinement Network处理了主体图像构建过程中各区域交界处不匹配的情况,也提高了图像的清晰度。


算法流程和感想

  1. 用SLIC方法将图像分割为超像素,再用K-means方法以单个超像素作为元素,聚类分成一定的图像区域(Seed region)。

  2. 之后是根据预处理之后的图像来生成Depth和Normal。对于ScanNet数据集,因为其是带有语义标注的数据集,采用陈启峰的方法可以同时获得所需的Depth和Normal,应用时,以之前生成的超像素作为单位元素来生成相应特征;对于KITTI数据集,其本身只有位置的标注,而无语义的标注,故采用J. Zbontar and Y. LeCun的方法,生成Dense depth maps,再由此来得到像素的Noraml,计算过程中采用了计算Inverse depth的方法(由目标图像对应到源图像)。

  3. 利用获得的Depth、Normal和图像的Pose特征可以计算得到单应性:
    H b a = K ( R − t n t d ) K − 1 H_{ba}=K(R-\frac{tn^t}{d})K^{-1} Hba=K(Rdtnt)K1
    采用Inverse warping的方法,找目标像素点对应的源图像中的点,如果源图像中对应的点在边界外,则补0,而这个方法需要用到反向的单应性:
    H a b = K ( R T + R T t n ~ T R T 1 − n ~ T R T t ) K − 1 H_{ab}=K(R^T+\frac{R^Tt\tilde{n}^TR^T}{1-\tilde{n}^TR^Tt})K^{-1} Hab=K(RT+1n~TRTtRTtn~TRT)K1
    之后,在反过来用算出来的对应位置计算目标像素时,采用双线性插值的方法。

  4. 然后,对每个Seed region预测每个像素与对应单应性(对应于超像素)相关联的情况,采用VGG16前4个卷积Blocks作为网络结构的Selection network,生成对应于源图像的Soft mask,再用Inverse wraping使之可以运用到目标图像。

  5. 以上两步骤已经生成了目标图像,但其在Seed region交界处存在扭曲和不清晰等问题。利用Refinement network对图像进行进一步的处理,网络结构采用的是E. Park 和 J. Yang等人方法,但对于损失函数进行了优化,用:
    L t = L p + λ L f L_t=L_p+\lambda L_f Lt=Lp+λLf
    代替原本的损失函数,其中L_p是平均像素的一阶差分,而L_f这个参数范数惩罚项是比较有意思的地方,它表示的是计算得到的特征和用VGG19得到的特征的一阶差分。

  • 对应图像中运动部分的处理,单幅源图像似乎确实没办法预测其在目标图像中的状态,如果增加到两幅图像则可以计算对应物体的location、orientation、direction的变化矢量来帮助预测。但是,对于单幅图像中类似车等具有运动方向和个体特征(车头朝向)和所处环境(马路线)有关的物体,可以实现部分地预测。
  • 在最后的目标图像中,因为在源图像边界外像素为空的影响,仍然存在着扭曲不清晰的情况;注意到,在利用3D场景结构信息来实现新视角单图像合成对ScanNet中的语义布局的应用仅仅是生成了Depth和Normal,这部分语义信息可以进一步利用起来,对于部分在源图像内的边界上的物体,利用其语义生成虚拟的图像,来补充对应的目标图像的边界部分。

其他

  • 3.1式(6):

[外链图片转存失败(img-v6K2XEJy-1568689885446)(C:\Users\MI\AppData\Roaming\Typora\typora-user-images\1562810134125.png)]

中的分母表述似乎有误了,是否应该为
M j t ^ ( x i t ) = ∑ q ∈ o j i M j ^ ( 1 − ∣ x i , j s − x q , j s ∣ , 1 − ∣ y i , j s − y q , j s ∣ ) + ϵ ∑ k = 1 m ∑ q ∈ o k i ( M k ^ ( 1 − ∣ x i , k s − x q , k s ∣ , 1 − ∣ y i , k s − y q , k s ∣ ) + ϵ ) \hat{M_j^t}(x_i^t)=\frac{\sum_{q\in{o_j^i}}{\hat{M_j}(1-|x_{i,j}^s-x_{q,j}^s|,1-|y_{i,j}^s-y_{q,j}^s|)}+\epsilon}{\sum_{k=1}^m\sum_{q\in{o_k^i}}{(\hat{M_k}(1-|x_{i,k}^s-x_{q,k}^s|,1-|y_{i,k}^s-y_{q,k}^s|)}+\epsilon)} Mjt^(xit)=k=1mqoki(Mk^(1xi,ksxq,ks,1yi,ksyq,ks)+ϵ)qojiMj^(1xi,jsxq,js,1yi,jsyq,js)+ϵ

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值