{
7 深度网络特殊结构
spatialtransformer layer
}
如下图所示,输入5和6,直接放大或者旋转,对于CNN来说认为是不一样的。那怎么办呢?那中间加一个Layer,旋转缩放层,即spatial transformer layer,也是一个NNlayer。它不仅可以transform输入图像,也可以transform feature map。
7.1.2平移变换
那么我们要怎么对一个image/feature map做transform呢?我们假设以下图左边这个image是transform前的结果layerl-1,右边这个image是transform后的结果layerl,此转换是把image由上往下做了平移。
下图右上角是将图像放大两倍的做法;右下角是将图像缩小,移到右上角的做法:
图像的旋转如下图:比如,逆时针旋转120度:
7.1.4仿射变换
如果要控制两张image之间的关系,只是旋转平移缩放的话,即tranform,其实只需要6个参数,也就是abcdef这6个参数,就可以把一张image变成另外一张image。即:神经网络的输入是一整张image,输出是一个六维的vector:
举例如下:
那么如果参数是小数的情况呢?如下图所示,计算出来结果是1.6,2.4
上面这个近似有没有问题呢?实际上在做这个的时候,需要做差值(interpolation)。
但是不能把对应的值直接设成离它距离最近的那个点,如果直接设成,可能导致没有办法微分。所以时机的做法应该是取那四个点做插值,如下图所示做法:
他们对应的权值都是与结果对应的距离相关的,如果目标图片发生了小范围的变化,这个式子也是可以捕捉到这样的变化的,这样就能用梯度下降法来优化了。
7.1.5参考文章
https://blog.csdn.net/qq_39422642/article/details/78870629