在深度学习中,我们常见的就是卷积神经网络。这篇博客来给大家介绍一下空洞卷积跟普通卷积的区别。

空洞卷积的应用处:空洞卷积(dilated convolution)是针对图像语义分割问题中下采样会降低图像分辨率、丢失信息而提出的一种卷积思路。利用添加空洞扩大感受野,让原本3x3的卷积核,在相同参数量和计算量下拥有5x5(dilated rate =2)或者更大的感受野,从而无需下采样。扩张卷积(dilated convolutions)又名空洞卷积(atrous convolutions),向卷积层引入了一个称为 “扩张率(dilation rate)”的新参数,该参数定义了卷积核处理数据时各值的间距。换句话说,相比原来的标准卷积,扩张卷积(dilated convolution) 多了一个hyper-parameter(超参数)称之为dilation rate(扩张率),指的是kernel各点之前的间隔数量,[正常的convolution 的 dilatation rate为 1]。

由上图可见,普通卷积就是特殊的空洞卷积。空洞卷积只是引入了一个“扩张率”的概念。

现在上代码来看看他们之间的区别吧!

编译环境:jupyter notebook

1.导入包

import numpy as np
import torch
import torch.nn as nn

2.生成一个一维数组

arr = np.array(range(1,26))
arr


3.将一维数组转化为一个二维数组

arr.shape(5,5)
arr


4.增加一个dim,为通道

arr = np.expand_dims(arr,2)
arr


这里可能有些困难,不了解np中expand_dims()这个函数的可能看不懂这里,我会在下文做出解释。
5.读取现在矩阵的长度

arr.shape

运行结果为 (5,5,1)
6.轴变化

arr = arr.transpose((2,0,1))#轴变化
arr
arr.shape

运行结果(1,5,5)

7.将numpy形式转化为tensor格式

arr = torch.Tensor(arr)
print(arr)


8.增加一个fake batch dimension

arr = arr.unsqueeze(0)
print(arr.size())


9.接下来先展示普通卷积

conv1 = nn.Conv2d(1, 1, 3, stride=1, bias=False, dilation=1)
nn.init.constant_(conv1.weight, 1)
out1 = conv1(arr)
out1


10.最后是空洞卷积

conv2 = nn.Conv2d(1, 1, 3, stride=1, bias=False, dilation=2)
nn.init.constant_(conv2.weight, 1)
out2 = conv2(arr)
out2



这就是空洞卷积和普通卷积的区别,现在补充一下刚刚的函数知识。

补充

np.shape

这个函数它的功能是读取矩阵的长度,比如shape[0]就是读取矩阵第一维度的长度。它的输入参数可以使一个整数表示维度,也可以是一个矩阵。

np.expand_dims(a,axis)

其中a指的是numpy矩阵,axis为需要添加纬度的轴
举个例子:
二维数组中

shape中2处于axis=0的位置,3处于axis=1的位置,若在axis=1的位置添加变量,则需在shape中axis=1的位置写1,同时3后移,shape变为(2,1,3)。调用索引时axis=1的位置一直为0

空洞卷积(Dilated Convolutions)相关推荐

  1. 总结-空洞卷积(Dilated/Atrous Convolution)、gridding问题以及解决方案、训练技巧BN和PReLU、CReLU

    这里有个可视化.直观的图:https://github.com/vdumoulin/conv_arithmetic https://zhuanlan.zhihu.com/p/50369448 http ...

  2. 膨胀卷积(空洞卷积 dilated convolution)

    学习的B站大佬的视频大部分图片来自于课中,文章结尾有大佬视频链接,以及阅读<深度学习之pytorch物体检测实战>,刚开始学习可能有些错误,希望大佬指正 1.空洞卷积了解 空洞卷积最初是为 ...

  3. 空洞卷积(dilated convolution)理解

    1.简介 Dilated/Atrous Convolution(中文叫做空洞卷积或者膨胀卷积) 或者是 Convolution with holes 从字面上就很好理解,是在标准的 convoluti ...

  4. 膨胀卷积(DILATED CONVOLUTIONS)

    膨胀卷积(DILATED CONVOLUTIONS)是在卷积核的元素之间插入一些额外的空间,而插入空间的量由参数膨胀因子d (dilation rate)来控制, 通常有d-1个空间在卷积核元素之间被 ...

  5. 空洞卷积dilated conv

    空洞卷积 a.b.c图卷积核均为3*3,图a和普通的卷积操作一样,a)图对应3x3的1-dilated conv,b)图对应3x3的2-dilated conv,2-dilated conv的前一层是 ...

  6. 深度学习之空洞卷积(Dilated/Atrous Convolution)

    空洞卷积 Convolution with holes 是在标准的卷积映射(convolution map )里注入空洞,以此来增加感受野( reception field),捕获多尺度上下文信息. ...

  7. casual Convolution因果卷积、空洞卷积dilated convolution、Hybrid Dilated Convolution (HDC)

    1.因果卷积 2.空洞因果卷积 3.HDC https://blog.csdn.net/qq_26369907/article/details/97624028 https://blog.csdn.n ...

  8. 因果卷积(causal Convolutions)和扩展卷积(Dilated Convolutions)

    背景 对于序列问题(Sequence Modeling)的处理方法,通常采用RNN或者LSTM,例如处理一段视频/音频,往往会沿着时间方向(时序)进行操作.通常CNN网络都被认为适合处理图像数据而不适 ...

  9. Multi-Scale Context Aggregation By Dilated Convolutions

    1 Introduction 之前的网络比如FCN或者Deep Lab v1都存在从小的分辨率图像往大了进行上采样,那么问题就来了,下采样是必要的嘛?话有一些方法提供多个重构版本(multiple r ...

最新文章

  1. VCL标准化皮肤组件Alphacontrols发布v10.27
  2. ★宣传广告变成社会标准
  3. 通过“远程桌面连接”连接到Ubuntu
  4. docker脚本安装 阿里云_让运行在 Docker 中的 Ghost 支持阿里云 OSS
  5. Windows server 1709(不含UI)模板部署
  6. javascript:面向对象编程基础:继承
  7. MySQL将utf8字符集改为utf8mb4
  8. Ubuntu12.04 LTS 忘记登录密码的解决方法
  9. jq checked 设置问题
  10. javascript 取得地址参数
  11. IDEA 代码分析工具
  12. 为什么要学习数据结构和算法?
  13. source test.sh、sh test.sh、./test.sh有什么区别
  14. 机器学习之朴素贝叶斯
  15. c#通过串口及CAN模块实现上位及下位机通讯
  16. Session与Cookie介绍
  17. Hystrix服务降级的两种处理方式@HystrixCommand注解和定义统一fallback接口
  18. 省时省力的PDF编辑技巧,不会实在可惜
  19. 和吴昊一起玩推理(第二季首映式)Round 11 —— 从无有到无穷
  20. 简单的JS实现口风琴设计

热门文章

  1. 为了监控老板,我用Python做了个摸鱼神器
  2. 三次技术转型的我在帝都的北漂奋斗史
  3. JESD204协议理解
  4. 自由下落距离的计算(1019)
  5. 【小程序】中WXML的语法详解
  6. android 微信刷步数,微信QQ自动手动刷步数支持98800步安卓应用
  7. SAP STMS导入队列显示队列末尾
  8. 在线tcp测试,tcp测试
  9. pr预设的卷及内核锐化是什么_PR内置特效合集
  10. 苹果M1 芯片机密遭窃,苹果急了:还资料,赔钱!