GLU-Net代码的理解

以源码GLUNet.py为例

1使用self.pyramin来提取图像的金字塔特征,这里使用的是VGG网络。

第一部分是在原图feature上进行金字塔特征提取,分别取原图8倍下采样率,4倍下采样率对应的feature。对应GLU-Net网络的左边部分。第二部分是把原图固定到256分辨率后分别取16分辨率和32分辨率尺度下的feature。

 GLU-Net代码的理解

2使用的金字塔特征提取网络-VGG

GLU-Net代码的理解 

第一步分用于提取图片的四个尺度的特征,1,1/2, 1/4, 1/8。这个特征特征x_quarter和x_eight用于GLU-Net中的H-Net。 是根据VGG网络的层的结构名字来取的。

第二部分 同理 用于L-Net部分。

torch.nn.functional.interpolate是上采样插值方式,这里0.5是把feature采样到原来0.5倍。

3在固定分辨率(256)的16feature level上进行全局的相关性预估的到flow4。

之后反卷积为1 2 32 32 大小的flow。这里的channel = 2 表示每个像素点在X方向和Y方向预估的displacement变换的数值。

GLU-Net代码的理解

3.1

---

coarsest_resolution_flow

---

GLU-Net代码的理解

self.corr 使用余弦相似度计算连个feature的相关度,MutualMatching中是把coorr4d是在X,Y两个方向上进行优化。得到最后的全局相关corr4。

GLU-Net代码的理解

把corrt输入到Mtop玩了中(一个解码作用的网络)得到预测的 2D dense correspondence map。

之后再得到flow4。

3.2反卷积到32分辨率尺度上

GLU-Net代码的理解

4 level 32

GLU-Net代码的理解

c23是对应32分辨率的feature,我们使用使用这个尺度对应的flow即up_flow_4_warping来对其进行变换得到warp3。

之后使用FunctionCorrlation来计算c13 和 warp3的局部相关性 得到corr3。

warp操作对应黑色六边形。

计算局部相关性是浅绿色块。

GLU-Net代码的理解

 GLU-Net代码的理解

讲上面计算的up_flow4与corr3进行concat操作。

输出解码网络decoder3 得到预测的flow:res_flow3 和提取后的特征 x3。

flow3 等于res_flow3 与  up_flow4 的相加。

---

RefineNet 

将解码网络提取出来的特征x3 放入RefineNet (精修网络)进一步优化特征预测一个flow 与  flow3叠加。

这个网络作用就是精修 进一步提高精度。

GLU-Net代码的理解

GLU-Net代码的理解 

这里有两个shortcut操作,这部分得到flow3 对应途中w2。

之后w2线性上采样插值 到原图1/8 的feature level 进行与之前类似操作。 整个网络最后放回flow1 然后对原图(img_source)进行变换就得到最终变换后的图片。

 GLU-Net代码的理解

GLU-Net代码的理解 

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-10-05
  • 2021-10-11
  • 2021-08-24
  • 2022-12-23
猜你喜欢
  • 2021-10-06
  • 2021-11-18
  • 2021-10-04
  • 2021-08-28
  • 2021-05-13
相关资源
相似解决方案