目标检测之网络篇(2)【STN-空间变换网络】

1. STN是什么

STN:Spatial Transformer Networks,即空间变换网络,是Google旗下 DeepMind 公司的研究成果。该论文提出空间变换网络STN,分为参数预测坐标映射像素采集三大部分,可以插入到现有的CNN模型中。通过对数据进行反向空间变换来消除图片上目标的变形,从而使得分类网络的识别更加简单高效。
在我的理解里,STN是一个可以放置在CNN前面,或嵌入到CNN其中的某一环节的模块(空间变形器)。

2. 问题的提出——CNN的平移不变性

CNN在图像分类中取得了显著的成效,主要是得益于 CNN 的深层结构具有空间不变性(spatially invariance)(平移不变性,旋转不变性),所以图像上的目标物体就算是做了平移或者旋转,CNN仍然能够准确的识别出来,这对于CNN的泛化能力是有益的。
在这里插入图片描述
传统CNN中使用卷积和池化操作在一定程度上实现了平移不变性,但这种人工设定的变换规则使得网络过分的依赖先验知识,既不能真正实现平移不变性(不变性对于平移的要求很高),又使得CNN对于旋转,扭曲等未人为设定的几何变换缺乏应有的特征不变性。因此提出了STN,具有以下特点:
(1) 为每一个输入提供一种对应的空间变换方式(如仿射变换)
(2) 变换作用于整个特征输入
(3) 变换的方式包括缩放、剪切、旋转、空间扭曲等等

具有可导性质的STN不需要多余的标注,能够自适应的学到对于不同数据的空间变换方式。它不仅可以对输入进行空间变换,同样可以作为网络模块插入到现有网络的任意层中实现对不同Feature map的空间变换。最终让网络模型学习了对平移、尺度变换、旋转和更多常见的扭曲的不变性,也使得模型在众多基准数据集上表现出了更好的效果。
CNN是尽力让网络适应物体的形变,而STN是直接通过空间变换将形变的物体给变回到正常的姿态,然后再给网络识别。

3. STN基本结构

在这里插入图片描述
一些符号意义:
在这里插入图片描述

Localisation network决定输入所需变换的参数θ,Grid generator通过θ和定义的变换方式寻找输出与输入特征的映射T(θ),Sample结合位置映射和变换参数对输入特征进行选择并结合双线性插值进行输出,下面对于每一个组成部分进行具体介绍。

3.1 Localisation network(参数预测)

Localisation net输入为一张Feature map;经过若干卷积或全链接操作后接一个回归层回归输出变换参数θ。θ的维度取决于网络选择的具体变换类型。θ的值决定了网络选择的空间变换的”幅度大小”。

3.2 Grid generator(坐标映射)

在这里插入图片描述
由上图可知,无论是平移,还是旋转、缩放、剪切,都可以由a,b,c,d,e,f六个参数控制。坐标映射这一步可以理解为找到原图包围内容的边框,并通过变换使其变成“正”的图像,如下图所示:
在这里插入图片描述

3.3 Sampler(像素采集)

经过以上的两步操作后,输出的Feature map上每一个像素点都会通过空间变换对应到输入Feature map的某个像素位置,但是由于feature score对于feature position的偏导数无法计算,因而我们需要构造一种position->score的映射,且该映射具有可导的性质,从而满足反向传播的条件。

4. 总结

这篇文章提出的空间变换结构能够很方便的嵌入到现有的CNN模型中去,并且实现端到端的训练,通过对数据进行反向空间变换来消除图片上目标的变形,从而使得分类网络的识别更加简单高效。现在的CNN的已经非常强大了,但是STN仍然能过通过增强空间不变性来提高性能表现。空间变换实际上是一种attention机制,可以用于目标检测,目标追踪等问题,还可以构建半监督模。

5. 参考文献

1.《Spatial Transformer Networks》
2. https://blog.csdn.net/qq_39422642/article/details/78870629
3. https://zhuanlan.zhihu.com/p/41738716
4. https://arleyzhang.github.io/articles/7c7952f0/

猜你喜欢

转载自blog.csdn.net/weixin_38708130/article/details/83616554