目标检测之空间变形网络(STN)

一、STN定义

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

二、CNN的平移不变性

普通的CNN能够显示的学习平移不变性,以及隐式的学习旋转不变性,所以图像上的目标物体就算是做了平移或者旋转,CNN仍然能够准确的识别出来,这对于CNN的泛化能力是有益的。但是 CNN 有一个采样层,假设某个物体移动了很小的范围,经过采样后,它的输出可能和没有移动的时候是一样的,这是 CNN 可以有小范围的平移不变性的原因。
传统CNN中使用卷积和池化操作在一定程度上实现了平移不变性,但这种人工设定的变换规则使得网络过分的依赖先验知识,既不能真正实现平移不变性(不变性对于平移的要求很高),又使得CNN对于旋转,扭曲等未人为设定的几何变换缺乏应有的特征不变性,因此提出了STN。

三、STN基本结构

主要的部分一共有三个,它们的功能和名称如下:

  • 参数预测:Localisation net
  • 坐标映射:Grid generator
  • 像素的采集:Sampler
    1.localisation network.用来计算空间变换的参数θ。
  1. grid generator. 得到input map U∈RH×W×C到 output map 各位置的V∈RH′×W′×C对应关系 Tθ。
  2. sampler. 根据input map U 和 对应关系 Tθ,生成最终的output map。

1)Localisation net
  它的作用就是通过一个子网络(全连接或者卷积网,再加一个回归层),生成空间变换的参数θ。θ 的形式可以多样,如需实现2D仿射变换,θ 就是一个6维(2x3)向量的输出。

2)Parameterised Sampling Grid
  假设U (不局限于输入图片,也可以是其它层输出的feature map)每个像素的坐标为(x_si,y_si), V 的每个像素坐标为(x_ti,y_ti),空间变换函数 Tθ 为仿射变换函数,那么 (x_si,y_si) 和 (x_ti,y_ti) 的对应关系可以写为:
  (xsi,ysi)=Tθ(Gi)=Aθ(xti,yti)
  当然,Aθ也可以有其它形式,如3D仿射变换,透射变换等。

3)Differentiable Image Sampling
  在计算得到 Tθ 后,就可以由以下公式 U 得到 V 了(省略推导公式若干,只放上最终形式):
  Vci=∑nH∑mW U_cnm max(0,1−|xsi−m|)max(0,1−|ysi−n|)

一些符号的意义:

四、坐标映射


由上图可知,无论是平移,还是旋转、缩放、剪切,都可以由a,b,c,d,e,f六个参数控制。
1.实现平移

如果是平移变换,比如

我们可以令
其余均为0,就得到了
2 实现缩放

其实缩放也不难,如图所示,如果要把图放大来看,在x→(X2)→x′x→(X2)→x′,y→(X2)→y′y→(X2)→y′将其同时乘以2,就达到了放大的效果了,用矩阵表示如下:

3.实现旋转

既然前面的平移和缩放都是通过权值来改的,那旋转其实也是。但是旋转应该用什么样的权值呢?
仔细思考,不难发现,旋转是跟角度有关系的,那什么跟角度有关系呢?
正弦余弦嘛,为什么它们能做旋转呢?
一个圆圈的角度是360度,可以通过控制水平和竖直两个方向,就能控制了,如图所示。


由点A旋转θ度角,到达点B.得到
x′=Rcosα
y′=Rsinα
由A点得
x=Rcos(α+θ)
y=Rsin(α+θ)
展开,有:
x=Rcosα cosθ−Rsinα sinθ
y=Rsinα cosθ+Rcosα sinθ
把未知数 αα替换掉
x=x′ cosθ−y′sinθ
y=y′cosθ+x′sinθ

我们可以简单的理解为 cosθ,sinθ就是控制这样的方向的,把它当成权值参数,写成矩阵形式,就完成了旋转操作。
4.实现剪切
剪切变换相当于将图片沿x和y两个方向拉伸,且x方向拉伸长度与y有关,y方向拉伸长度与x有关,用矩阵形式表示前切变换如下:

由此,我们发现所有的这些操作,只需要六个参数[2X3]控制就可以了,所以我们可以把feature map U作为输入,过连续若干层计算(如卷积、FC等),回归出参数θ,在我们的例子中就是一个[2,3]大小的6维仿射变换参数,用于下一步计算;

五、Grid generator:

网格生成器负责将V中的坐标位置,通过矩阵运算,计算出目标图V中的每个位置对应原图U中的坐标位置。即生成T(G)。

这里的Grid采样过程,对于二维仿射变换(旋转,平移,缩放)来说,就是简单的矩阵运算。
上式中,s代表原始图的坐标,t代表目标图的坐标。A为Localisation Network网络回归出的6个角度值。

整个Grid生成过程就是,首先你需要想象上图中V-FeatureMap中全是白色或者全是黑色,是没有像素信息的。也就是说V-FeatureMap还不存在,有的只是V-FeatureMap的坐标位置信息。然后将目标图V-FeatureMap中的比如(0,0)(0,1)…位置的坐标,与2*3变换矩阵运算。就会生成出在原始图中对应的坐标信息,比如(5,0)(5,1)…。这样所有的目标图的坐标都经过这样的运算就会将每个坐标都产生一个与之对应的原图的坐标,即T(G)。然后通过T(G)和原始图U-FeatureMap的像素,将原始图中的像素复制到V-FeatureMap中,从而生成目标图的像素。

六、Sampler

Sampler就是用来解决Grid generator模块变换出现小数位置的问题的。针对这种情况,STN采用的是双线性插值(Bilinear Interpolation)

上图中( x , y )是变换后输出图像上的位置,带下标的坐标位置表示的是与( x , y )在输入图像对应的四个相邻的坐标。上面的坐标满足下面的关系
x1x_1x1​-x0x_0x0​=1
y1y_1y1​-y0y_0y0​=0

根据双线性插值的原则距离相邻点近的坐标占的比重越大,所以( x , y ) 对应的像素值为,我们用f(x,y)f _ (x,y)f(​x,y)表示点( x , y ) 所对应的像素值
f ( x , y ) =(x1x_1x1​-x)(y1y_1y1​-y)f(x0−y0)f(x0-y0)f(x0−y0)+(xxx-x0x_0x0​)(y1y_1y1​-y)f(x1−y0)f(x1-y0)f(x1−y0)

目标检测之空间变形网络(STN)相关推荐

  1. 空间变形网络——STN

    1 概述 CNN 的机理使得 CNN 在处理图像时可以做到 transition invariant,却没法做到 scaling invariant 和 rotation invariant.即使是现 ...

  2. 【NIPS2018】实时联合目标检测与语义分割网络

    本文发表于第32届神经信息处理系统会议(NIPS 2018),是法国汽车零部件供应商法雷奥集团(Valeo)研究提出的一种用于自动驾驶领域的多任务神经网络,可同时执行目标检测与语义分割任务. 代码开源 ...

  3. 【CV】FPN:用于目标检测的特征金字塔网络

    论文名称:Feature Pyramid Networks for Object Detection 论文下载:https://arxiv.org/abs/1612.03144 论文年份:2016 论 ...

  4. FLOPs优化神器!用于高效3D目标检测的空间剪枝稀疏卷积(SPS-Conv)

    ONE 引言 稀疏卷积神经网络由于其有效性和简单性已经成为解决3D目标检测问题的主要研究方向之一,然而精度的提高通常伴随着计算成本的增加,这限制了其在实际系统中的适用性. 如何在不牺牲准确性的情况下提 ...

  5. VoVNet:实时目标检测的新backbone网络

    目前基于深度学习的目标检测模型无不依赖CNN分类网络来作为特征提取器,如SSD采用VGG,YOLO采用DarkNet,Faster R-CNN采用ResNet,我们一般称这些网络为目标检测模型的bac ...

  6. 3d目标检测_CVPR 2020 |基用于3D目标检测的层级图网络

    论文:A Hierarchical Graph Network for 3D Object Detection on Point Clouds论文地址:https://www.aminer.cn/pu ...

  7. 沐神点赞!同济子豪兄精读AI经典论文,包括图像分类、目标检测、生成对抗网络、轻量化卷积神经网络等领域...

    读研/读博的你,是不是符合: 毕设/研一/博一科研小白刚进课题组,不知道如何写开题报告和综述? 前沿顶会.期刊论文.综述文献浩如烟海,不知道学习路径,无从下手? 导师放养,既不懂也不管,师兄各忙各的, ...

  8. CVPR2020最佳目标检测 | AdderNet(加法网络)含论文及源码链接

    点击蓝字关注我们 扫码关注我们 公众号 : 计算机视觉战队 扫码回复:加法网络,获取源码及论文链接 CVPR2020收录的结果已经早早公布,想必很多同学都有知晓一些,"计算机视觉战队&quo ...

  9. 一、针对工业领域线圈小目标检测,基于Yolov5s网络改进检测头实验及其检测效果对比

    背景: 基于7分类实验(异物.点胶不良.剥锡不良.打点不良.线圈外变形,线圈表面交错.氧化 修改后的网络结构图 保留原Yolov5s的检测头结构,扩增一层160×160size的feature map ...

最新文章

  1. 2012需要分析的一些技术(1)
  2. QTP 中 通过 Test Setting 设置 function libraries 与 test 的关联
  3. matlab创建符号常量出错,错误:代码中意外的符号/输入/字符串常量/数值常数/特殊...
  4. 数字图像处理实验(15):PROJECT 06-02,Pseudo-Color Image Processing
  5. Info.plist中常用的key简介
  6. java连接ibm mq
  7. SAP 电商云 Spartacus UI 回归测试 checkout-flow.core-e2e-spec.ts
  8. python pyqt eric_科学网—PyQt及Eric的安装 - 张鲁新的博文
  9. 大数据-HDFS文件系统是什么
  10. 地理位置经纬度在Mysql中用什么字段类型
  11. 阿里小二平时和商家交流的时候,明确告知流量喜欢什么样的产品?
  12. 深入理解JavaScript中的闭包
  13. 每日算法系列【LeetCode 810】黑板异或游戏
  14. Android音频路由策略
  15. scratch冬天下雪了 电子学会图形化编程scratch等级考试三级真题和答案解析2022年3月
  16. 睡眠小镇V4.6养成RPG的闹钟下载
  17. 查找Linux系统中某个软件是否安装/存在
  18. SQL中的内连接查询和外连接查询
  19. “程序员猝死”引发的思考
  20. html设计带图形的边框,css怎么设置图片的边框?

热门文章

  1. 服务器显示配置命令,linux查看服务器配置命令
  2. linux安装php支持redis拓展
  3. 2运行内存多大_电脑有没有必要升到16GB内存?今年内存这么便宜?要不要抄底升级到16GB?...
  4. nginx rewrite php参数,Nginx rewrite伪静态配置参数详解
  5. CF938G Shortest Path Queries
  6. 20155235 《网络攻防》 实验四 恶意代码分析
  7. 分享一些自己的学习过程和学习方法
  8. matlab积分使用
  9. app启动监听网络类型
  10. 大白话 设计模式之虚拟工厂