data augmentation/spacial transformer
CNN 并不能够处理影像放大缩小,或者是旋转的问题。所以在做影像辨识的时候,往往都要做 Data Augmentation,把你的训练数据截一小块出来放大缩小、把图片旋转,CNN 才会做到好的结果。
有一个架构叫 spacial Transformer Layer可以处理。
设计一个层,需要的地方=1,不要的地方=0
经过一个NN,FP发生平移
还可以放大或缩小,只需要改变参数
旋转一共需要6个参数
当6个参数全部设定的是整数时,结果比较好处理
但如果是小数时呢?通过最终答案的四舍五入得到结果。但此时梯度也不好计算。
可以这样假设:假设最终结果发生一些微小的变化,四舍五入后得到的结果是一样的,这就说明梯度几乎=0!!
使用插值方法代替四舍五入
最终结果与周围四个值都有关。此时输出值的变化时刻影响最终结果。
把ST看成橙色,它可以放在很多地方。
这个视频的含义是改变一些输入后(变大 变小 左右旋转),经过ST层,输出结果基本不变。
实例
这里用了single ST和multi ST,效果有些变化
这个例子用了2层和4层的ST,输入图片有两种大小规格。
2层的是只识别鸟嘴和鸟翼;4层还识别了其他地方。