对于EDVR中PCD模块理解(包含对可变卷积的理解)

1.PCD对齐模块

按作者的说法,PCD模块主要是使用了金字塔结构以及可变卷积,最后级联一个可变卷积模块实现由粗到细的估计。

这里,根据源码和作者提供的流程图做了一张细化PCD过程的流程图

这里每一层的offset(黄色部分)和feature map(绿色部分)怎么来的都已经标注好了,最左边的三块特征图是原始图片(连续的5个帧)首先通过比例缩小(默认是x4,为了减少计算量),然后嵌入到一张图中经过卷积以及lrelu激活,再经过如图的连续5个残差块,再分别进行一次和两次两倍下采样,最后再把变为5个帧各自的特征图。每次PCD对齐是对参考帧以及一个相邻帧操作的(应该也会对参考帧和参考帧进行操作)。

2.对可变卷积的理解

参考:可变形卷积(4uiiurz1-pytorch版)源码分析 - 知乎

之前看了很多博客都不是特别理解可变卷积,但是看了这篇文章之后茅塞顿开。

可变卷积示意图

可变卷积就是在传统卷积的基础上,把卷积核对应的原始图片的像素点加一个偏移,他是通过以卷积核的中心点为核心运作的。比如,卷积核中心点在跟原始图片做卷积时坐标为(2,2),假定卷积核大小为3*3,那么,在计算左上角点卷积时,原始图片坐标应该是(2-1,2-1)=(1,1),这是传统卷积,但是可变卷积,就是在这个(1,1)的基础上加一个偏移offset,此时,左上角对应的坐标就是(1+offsetx,1+offsety),然后按照此操作完成卷积核全部9次运算。下一次卷积就是将卷积核中心按照步长移动一下,像之前那样操作。

那么offset是怎么来的呢,是通过一个独立的卷积层与图片做卷积得到的,是可以进行学习的,offset的大小是(batchsize,2*kernel_size*kernel_size,h,w),h和w是进行卷积后的特征图的高和宽,因此,offset里的18个通道(认为卷积核为3*3)的每个值分别进行这个点卷积操作时卷积核中9个值对应的offsetx,offsety。

总结一下,计算特征图一个点的可变卷积时,首先找到对应卷积核中心在原图的坐标,然后得到卷积核(3*3)在原始图中的9个坐标,最后,查找offset中这个点18个通道的值,分别加到9个坐标上,得到最终要进行卷积的坐标。又因为坐标为float型,所以出现小数,就要用双线性插值得到对应的值,详细的可以看参考的博客。

补充一句:PCD中所使用的可变卷积还包括一个权重,通道数是offset的一半,所以相当于给卷积核每个点加了一个权重。

有错误恳请指正。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值