[论文理解&代码解读]Inverse Compositional Spatial Transformer Networks(IC-STN)

本文深入解析Inverse Compositional Spatial Transformer Networks(IC-STN),与STN的区别在于它显式提取并迭代扭曲参数,提高准确性。通过pytorch代码解读,包括options.py、data.py、warp.py等部分,展示了IC-STN如何工作以及其在图像变换中的应用。
摘要由CSDN通过智能技术生成

1. IC-STN模型本质

如图1,STN是将输入图像用一个几何预测器预测校正参数p,把p作用在输入图像 I i n I_{in} Iin就得到了修正后的图像 I o u t I_{out} Iout。在STN原来的论文中,几何预测器可以展开为图2的样子。
在这里插入图片描述

图1:STN的工作原理

在这里插入图片描述

图2 STN内部结构

和STN不同的是,IC-STN是把扭曲参数(warp parameter)p显式地提取了出来,并且对p进行若干次迭代,类似RNN迭代的思想。其流程如图3所示。论文作者的实验表明,这样能进一步增加准确率。

在这里插入图片描述

图3 IC-STN

在这里插入图片描述

图4 IC-STN和其他模型准确率对比

IC-STN的作者说他们从IC-LK算法中获得了启发,解释了很多字,说了很多话,其实重点不在那里,可以不用太多地关注。

2. IC-STN代码解读

pytorch代码地址在这,里面也有tensorflow的版本。此外,IC-STN代码中的难点在于理解投影变换的代码,如果和我一样没什么基础的话,可以先看看这篇知乎回答

下面会一个个部分讲解我对pytorch代码的理解,建议结合源代码查看(代码很长,我就不贴上来了)。

2.1 options.py 部分

里面存放了很多预设参数
opt = options()
参数都可以通过opt.xxx 来调用

2.2 data.py 部分

def loadMNIST(opt, path)
用于加载MNIST数据集

def makeBatch(opt, data)
制作一个batch

def evalTest(opt, data, geometric, classifier)
评估准确率,后面解释geometric和classifier

def genPerturbations(opt)
生成初始的warp parameter
return pInit

里面有个细节,如下

pPert = np.matmul(np.linalg.inv(np.matmul(Jtransp, J)), np.matmul(Jtransp, dXY)).squeeze()

翻译成公式,作者

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值