第十周学习周报

目录

摘要

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 makes CNN can do transition invariant when processing images, but cannot realize the function of zoom and rotation. This is because CNNs process images with reference to the relative size and positional orientation of objects in the image. Objects of different sizes and different orientations are different things to the network.STN(spatial transformer network) is proposed to solve this problem. Its task is to derive a network layer that can improve the recognition rate of the CNN by training a certain transformation of the input feature map. This network layer can be placed before any of the other network layers or can be trained along with the entire network.STN can also be of some 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整体向下平移一层,将移动到的位置,因此两者之间相对应,而与Layer l-1中其他位置的连接权重为0。

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

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

Image Transformation

(1)平移和缩放

将image放大一倍,后一项控制平移的大小,表示不发生平移。

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

(2)旋转

表示逆时针选择\theta度,后一项代表平移大小。

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

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

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

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

Interpolation

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

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,是网络中的一个层,并且可以在任何两层之间添加一个或者多个。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值