2022年计算机视觉空洞卷积_第1页
2022年计算机视觉空洞卷积_第2页
2022年计算机视觉空洞卷积_第3页
2022年计算机视觉空洞卷积_第4页
2022年计算机视觉空洞卷积_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

「计算机视觉」空洞卷积

目录

.一、空洞卷积的提出

.二、空洞卷积原理

.三、空洞卷积问题

O感受野跳跃

O小尺度物体检测

.四、网络设计研究

•五、常用框架API介绍

oTensorFlow接口

oMXNet接口

•六、参考X

回到顶部

一、空洞卷积的提出

空洞卷积(atrousconvolutions)又名扩张卷积(dilatedconvolutions),向卷积层引入了

一个称为“扩张率(dilationrate)”的新参数,该参数定义了卷积核处理数据时各值的间距。

该结构的目的是在不用pooling(pooling层会导致信息损失)且计算量相当的情况下,提供

更大的感受野。顺便一提,卷积结构的主要问题如下:

池化层不可学

内部数据结构丧失;空间层级化信息丧失。

小物体信息无法重建(假设有四个poolinglayer则任何小于2"4=16pixel的物体信息

将理论上无法重建。)

而空洞卷积就有内部数据结构的保存和防止使用down-sampling这样的特性,优点明显。

回到顶部

二、空洞卷积原理

如下如,卷积核没有红点标记位置为0,红点标记位置同正常卷积核。

假设原始特征为featO,首先使用扩张率为1的空洞卷积生成featl,featl上一点相对featO

感受野为3x3(如图a);

然后使用扩张率为2的空洞卷积处理featl生成feat2(如图b),使第一次空洞卷积的卷

积核大小等于第二次空洞卷积的一个像素点的感受野,图b即featl上一个点综合了图a即

featO上3x3地域的信息,则生成的feat2感受野为7x7,即整个图b深色地域;

第三次处理同上,第二次空洞卷积的整个卷积核大小等于第三次空洞卷积的一个像素点的感

受野,图c即feat2上每个点综合了featO上7x7的信息(感受野),则采纳扩张率为3的

空洞卷积,生成的feat3每一个点感受野为15x15。

相比拟之下,使用stride为1的一般3x3卷积,三层之后感受野仅仅为(kernel-1)xlayer+1=7。

回到顶部

三、空洞卷积问题

感受野跳跃

我们对同一张图连续三次使用扩张率为1的空洞卷积,观察整张图的中心点的感受野(如

下列图)

很明显,感受野不连续(我们上一小结的例子就没这个问题,所以空洞卷积依赖网络设计)。

小尺度物体检测

类似第一个问题,仍旧需要调整扩张率的组合来解决这个问题。

回到顶部

四、网络设计研究

第一个特性是,叠加卷积的dilationrate不能有大于1的公约数。比方2,4,6则不是一个

好的三层卷积,依旧会出现griddingeffect«

第二个特性是,我们将dilationrate设计成锯齿状结构,例如1,2,5,1,2,5循环结构。

第三个特性是,我们需要满足一下这个式子:

其中是i层的dilationrate而是指在i层的最大dilationrate,那么假设总共

有n层的话,默认。假设我们应用于kernel为kxk的话,我们的目标则是,

这样我们至少可以用dilationrate1即standardconvolution的方法来覆盖掉全部洞。

一个简单的例子:dilationrate1,2,5with3x3kernel(可行的方案):

而这样的锯齿状本身的性质就比拟好的来同时满足小物体大物体的分割要求(小dilation

rate来关怀近距离信息,大dilationrate来关怀远距离信息)。

单分支设计的研究

通向标准化设计:HybridDilatedConvolution(HDC),可以很好的满足分割需要,如下列图

所示,

多分支研究解决多尺度分割

仅仅(在一个卷积分支网络下)使用dilatedconvolution去抓取多尺度物体是一个不正统的

方法.比方说,我们用一个HDC的方法来猎取一个大(近)车辆的信息,然而对于一个

小(远)车辆的信息都不再受用。假设我们再去用小dilatedconvolution的方法重新猎取

小车辆的信息,则这么做非常的冗余。

基于港中文和商汤组的PSPNet里的Poolingmodule(其网络同样获得当年的SOTA结

果),ASPP则在网络decoder上对于不同尺度上用不同大小的dilationrate来抓去多尺

度信息,每个尺度则为一个独立的分支,在网络最后把他合并起来再接一个卷积层输出预测

label。这样的设计则有效防止了在encoder上冗余的信息的猎取,直接关注与物体之间之

内的相关性。

回到顶部

五、常用框架API介绍

TensorFlow接口

conv2d(value,filters,rate,padding,name=None)

value:指需要做卷积的输入图像,要求是一个4维Tensor,具有batch,height,width,

channels]这样的shape,具体含义是训练时一个batch的图片数量,图片高度,图片宽度,

图像通道数]

filters:相当于CNN中的卷积核,要求是一个4维Tensor,具有filter_height,filter_width,

channels,out_channels]这样的shape,具体含义是卷积核的高度,卷积核的宽度,图像通

道数,卷积核个数],同理这里第三维channels,就是参数value的第四维

rate:要求是一个int型的正数,正常的卷积操作应该会有stride(即卷积核的滑动步长),

但是空洞卷积是没有stride参数的,这一点尤其要注意。取而代之,它使用了新的rate参

数,那么rate参数有什么用呢?它定义为我们在输入图像上卷积时的采样间隔,你可以理

解为卷积核当中穿插了(rate-1)数量的“0”,把原来的卷积核插出了很多“洞洞”,这样做

卷积时就相当于对原图像的采样间隔变大了。具体怎么插得,可以看后面更加详细的描述。

此时我们很简单得出rate=1时,就没有0插入,此时这个函数就变成了一般卷积。

padding:string类型的量,只能是"SAME"VALID"其中之一,这个值决定了不同边

缘填充方法。

函数默认stride=1,无法改变。

结果返回一个Tensor,填充方法为“VALID”时,返回

batch,height-2x(filter_width-1),width-2x(filter_height-1),out_channels]KlTensor,填充方法

为"SAME"时,返回batch,height,width,out_channels]的Tensor。

测试代码如下:

1img=tf.constant(value=l],2],3],4]],

2

31],2],3],4]],

41],2],3],4]]]],dtype=tf.i

5img=tf.concat(values=img,img],axis=3)

6

7filter=tf.constant(value=l,shape=3,3,2,5],dtype=tf.float32)

8out_imgl=tf.nn.atrous_conv2d(value=img,filters=filter,rate=l,padding』

9out_img2=tf.nn.atrous_conv2d(value=img,filters=filter,rate=l,padding』

10out_img3=tf.nn.atrous_conv2d(value=img,filters=filter,rate=2,padding』

11error

12out_img4=tf.nn.atrous_conv2d(value=img,filters=filter,rate=2,padding=,V/

13withtf.Session()assess:

14print(frate=l,SAMEmoderesult:?)

15print(sess.run(out_imgl))

16printCrate=l,VALIDmoderesult:*)

17print(sess.run(out_img2))

18printCrate=2,SAMEmoderesult:')

19print(sess.run(out_img3))errorprint5rate=2,VALIDmoderesult:'

print(sess.run(out_img4))

扩张率为1时,空洞卷积等价于一般卷积。对于SAME和VALID模式计算方法如下列图所

示,

扩张率为2的VALID模式计算过程,

扩张率为2的VALID模式会报错,此时卷积核大于图片,无法卷积。

MXNet接口

MXNet卷积操作自带扩张率参数,详见文档。

MXNet的通道存储与TensorFlow不太一致,所以我们打印一下(比照上面的图,可以体会

到为什么除了tf外大多框架把通道放在第二维),

1importmxnetasmx

2importmxnet.ndarrayasnd

3

4img=nd.array(1],2],3],4]],

51],2],3L4]]>

61],2],3],4]L

7U,2],3L4]]]])

8img=nd.concat(img,img,dim=-l)

9img=nd.transpose(img,axes=(0,3,1,2))

10

11w=nd.ones(5,2,3,3])

12b=nd.array(0for_inrange(5)])

13img

1.2.3.4.]

1.2.3.4.]

1.2.3.4.]

1.2.3.4.]]

1.2.3.4.]

1.2.3.4.]

1.2.3.4.]

1.2.3.4.]]]]

<NDArrayIx2x4x4@cpu(0)>

1nd.Convolution(img,w,b,kernel=w.shape2:],num_filter=w.shapeO],stride=(l,1

pad=(l,1),dilate=(l,1))

12.24.36.28.]

18.36.54.42.]

18.36.54.42.]

12.24.36.28.]]

12.24.36.28.]

18.36.54.42.]

18.36.54.42.]

12.24.36.28.]]

12.24.36.28.]

18.36.54.42.]

18.36.54.42.]

12.24.36.28.]]

12.24.36.28.]

18.36.54.42.]

1

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论