空洞卷积(Dilated Convolutions)
在深度学习中,我们常见的就是卷积神经网络。这篇博客来给大家介绍一下空洞卷积跟普通卷积的区别。
空洞卷积的应用处:空洞卷积(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)相关推荐
- 总结-空洞卷积(Dilated/Atrous Convolution)、gridding问题以及解决方案、训练技巧BN和PReLU、CReLU
这里有个可视化.直观的图:https://github.com/vdumoulin/conv_arithmetic https://zhuanlan.zhihu.com/p/50369448 http ...
- 膨胀卷积(空洞卷积 dilated convolution)
学习的B站大佬的视频大部分图片来自于课中,文章结尾有大佬视频链接,以及阅读<深度学习之pytorch物体检测实战>,刚开始学习可能有些错误,希望大佬指正 1.空洞卷积了解 空洞卷积最初是为 ...
- 空洞卷积(dilated convolution)理解
1.简介 Dilated/Atrous Convolution(中文叫做空洞卷积或者膨胀卷积) 或者是 Convolution with holes 从字面上就很好理解,是在标准的 convoluti ...
- 膨胀卷积(DILATED CONVOLUTIONS)
膨胀卷积(DILATED CONVOLUTIONS)是在卷积核的元素之间插入一些额外的空间,而插入空间的量由参数膨胀因子d (dilation rate)来控制, 通常有d-1个空间在卷积核元素之间被 ...
- 空洞卷积dilated conv
空洞卷积 a.b.c图卷积核均为3*3,图a和普通的卷积操作一样,a)图对应3x3的1-dilated conv,b)图对应3x3的2-dilated conv,2-dilated conv的前一层是 ...
- 深度学习之空洞卷积(Dilated/Atrous Convolution)
空洞卷积 Convolution with holes 是在标准的卷积映射(convolution map )里注入空洞,以此来增加感受野( reception field),捕获多尺度上下文信息. ...
- 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 ...
- 因果卷积(causal Convolutions)和扩展卷积(Dilated Convolutions)
背景 对于序列问题(Sequence Modeling)的处理方法,通常采用RNN或者LSTM,例如处理一段视频/音频,往往会沿着时间方向(时序)进行操作.通常CNN网络都被认为适合处理图像数据而不适 ...
- Multi-Scale Context Aggregation By Dilated Convolutions
1 Introduction 之前的网络比如FCN或者Deep Lab v1都存在从小的分辨率图像往大了进行上采样,那么问题就来了,下采样是必要的嘛?话有一些方法提供多个重构版本(multiple r ...
最新文章
- VCL标准化皮肤组件Alphacontrols发布v10.27
- ★宣传广告变成社会标准
- 通过“远程桌面连接”连接到Ubuntu
- docker脚本安装 阿里云_让运行在 Docker 中的 Ghost 支持阿里云 OSS
- Windows server 1709(不含UI)模板部署
- javascript:面向对象编程基础:继承
- MySQL将utf8字符集改为utf8mb4
- Ubuntu12.04 LTS 忘记登录密码的解决方法
- jq checked 设置问题
- javascript 取得地址参数
- IDEA 代码分析工具
- 为什么要学习数据结构和算法?
- source test.sh、sh test.sh、./test.sh有什么区别
- 机器学习之朴素贝叶斯
- c#通过串口及CAN模块实现上位及下位机通讯
- Session与Cookie介绍
- Hystrix服务降级的两种处理方式@HystrixCommand注解和定义统一fallback接口
- 省时省力的PDF编辑技巧,不会实在可惜
- 和吴昊一起玩推理(第二季首映式)Round 11 —— 从无有到无穷
- 简单的JS实现口风琴设计