第八周:机器学习周报

目录

摘要

Abstract

Spatial Transformation Layer

Image Transformation

平移和缩放

 旋转

Interpolation

Spatial Transformation Layer模型结构

 模型效果

 总结


摘要

       CNN的机理使得CNN在处理图像时可以做到transition invariant,但不能实现放缩和旋转的功能。因为CNN在处理图像时都会参考图像中物体的相对大小和位置方向。不同大小和不同方向的物体,对网络来说是不同的东西。STN(spatial transformer network)的提出,就是为了解决这个问题。它的任务就是训练得出一个可以将输入特征图进行一定的变换提高CNN的识别率,即把物体线性变换到模型正常的大小和方向的网络层。该网络层可以放在任何一个其他网络层之前,也可以和整个网络一起进行训练。STN在文字识别和图像识别上也能发挥一定的优势。

Abstract

  The mechanism of CNN enables it to achieve transition variation when processing images, but it cannot achieve scaling and rotation functions. Because CNN always refers to the relative size and position direction of objects in the image when processing images. Objects of different sizes and directions are different things for a network. The proposal of STN (Spatial Transformer Network) is aimed at solving this problem. Its task is to train a network layer that can perform certain transformations on the input feature map to improve the recognition rate of CNN, that is, linearly transform the object to the normal size and direction of the model. This network layer can be placed before any other network layer or trained together with the entire network. STN can also play a certain advantage in text recognition and image recognition.

Spatial Transformation Layer

在下图中,通常情况下这三张图像的大小不同,因此对于CNN来说它们是不一样的。input一个image,Spatial Transformation Layer训练学习得到一个layer,这个layer可以对image做旋转缩放,再放入CNN中,通常这种情况下CNN就能识别图中数字。Spatial Transformation Layer也是一个神经网,它可以放在其他网络的前面,也可以放到CNN里面一起训练。

how to transform an image/feature map

Layer l 就是将Layer l-1中的第一行向下进行平移,平移的实质就是调整连接权值的过程。

将layer l-1输入NN,NN输出一组参数,根据这些参数,就可以决定layer1中的每一个neuron要怎么连接到前一个layer的output

向右平移:将layer l-1整体向下平移一层,将a_{13}^{l-1}移动到a_{23}^{l}的位置,因此两者之间相对应,而a_{23}^{l}与Layer l-1中其他位置的连接权重为0。

向右旋转:将layer l-1整体向右旋转九十度,将a_{13}^{l-1}移动到a_{33}^{l}的位置,因此两者之间相对应,而a_{33}^{l}与Layer l-1中其他位置的连接权重为0。

把图片进行旋转缩放,只需要的是谁将weight的值做不同的设计,以下两个例子分别是对图像进行平移缩放和旋转。

Image Transformation

平移和缩放

\begin{bmatrix} 2 & &0 \\ 0& & 2 \end{bmatrix}将image放大一倍,后一项控制平移的大小,\begin{bmatrix} 0\\ 0\end{bmatrix}表示不发生平移。

\begin{bmatrix} 0.5 &0 \\ 0& 0.5 \end{bmatrix}将image缩小一倍,这时图形位于正中间,离上下左右的距离均为0.5,\begin{bmatrix} 0.5\\ 0.5\end{bmatrix}表示图形向上和右平移0.5。

 旋转

\begin{bmatrix} cos\theta & -sin\theta \\ sin\theta & cos\theta \end{bmatrix}表示逆时针选择\theta度,后一项代表平移大小。

localisation net的输入是前一层的特征,输出是仿射变换的参数,如果是平面的放射变换就是6个参数,只需要6个参数就能够将一张image随意转换,通过这六个参数可以控制整个图像的平移,旋转,缩放。x和y代表当前层的坐标位置,x'和y'代表前一层的坐标位置,a和d主要控制缩放,b和c主要控制旋转,后一项的e和f主要控制平移。

例如求Layer l中的a_{22}^{l}对应Layer l-1中哪个neuron的output,将x=2,y=2带入公式得x'=1,y'=1,因此Layer l中的a_{22}^{l}这一个neuron的input就是对应layerl-1中的a_{11}^{l-1}neuron的output。

如果x'和y'是小数,但是位置只能取正整数,那么可以直接取整吗?

前面的的x和y都是整数,因此得到的x'和y'都是整数,x'和y'可能是小数,而位置需要是正整数,如果采用取整的操作的话,网络就会变得不可梯度下降,没法更新参数了。我们想要的是,当六个参数发生微小的变化的时候,下一层的特征也发生变化,但是改动也是很小的,再进行四舍五入就会发现和之前的一样,并没有发生改变。这样才可以保证可以梯度下降。因此,需要采用Interpolation操作的插值方法。

Interpolation

采用了插值的方法来进行采样解决坐标小数取整问题。比如当坐标为[1.6,2.4]时,就用与之相近的整数点a_{12}^{l-1}a_{13}^{l-1}a_{22}^{l-1}a_{23}^{l-1}这几个值进行插值。这样一来a,b,c,d,e,f发生微小的变化之后,[x,y]位置采样得到的值也会有变化了。[1.6,2.4]的值发生些微变化的时候,a_{22}^{l-1}的值也会发生些微变化。

Spatial Transformation Layer模型结构

 spatial transformer被分成3个部分,分别是localisation net、grid generator和Sampler。 排在最前面的是localisation network,将特征图作为输入, 通过一系列隐层, 输出一组被用于spatial transformation的参数,即上面公式中的a,b,c,d,e,f六个参数。告诉你下一个layer的每一个output应该接到input那个Layer的哪个neuron。

spatial transformer layer是网络中的一层,用以变换特征图达到CNN能够更好识别的特征图,不仅可以放在input的地方,可以放在任意两层之间,并且可以在两层之间添加多个。

 模型效果

​ (1)文字识别

Street View House Number在每次conv后就做一次Spatial Transformation,这四次Spatial Transformation加起来network做的事情就是将比较小的“260”放大,“104”放大。加入Spatial Transformation Layer之后的文字识别任务中准确率得到了提高,但Spatial Transformation Layer只能进行数字识别的任务,下图右侧表格是不同模型在SVHN数据集上的错误率。

(2)鸟的辨识

辨识输入的image中的鸟是哪一种鸟,输入的image会通过两个Transformation,这两个Transformation分别会给你不同的结果,一个将image变成关注头部,一个将image变成关注脚部,载分别放到Inception(一个很深的network)中去,再从两百种鸟中辨识出来。下图中红色和绿色分别是两个Transformation要进行变换的位置,这里的方框都是正的,这是因为作者仿射变换中的参数[b,c]都设置为0了,右侧表格是不同模型在Caltech-UCSD Birds-200-2011数据集上的准确率。

 总结

​Spatial Transformer Layer的功能主要将输入的特征图进行一定的变换的过程,使得输入的数据更有益于CNN进行分类,提高识别正确率。至于是如何进行该种变化,需要通过训练学习得到一个层,也就是Spatial Transformer Layer,是网络中的一个层,并且可以在任何两层之间添加一个或者多个。

​ 

​ 

​ 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值