您当前的位置:首页 > IT编程 > 深度学习
| C语言 | Java | VB | VC | python | Android | TensorFlow | C++ | oracle | 学术与代码 | cnn卷积神经网络 | gnn | 图像修复 | Keras | 数据集 | Neo4j | 自然语言处理 | 深度学习 | 医学CAD | 医学影像 | 超参数 | pointnet | pytorch |

自学教程:深度可分离卷积和正常卷积图文解析浅显易懂

51自学网 2020-10-09 16:37:53
深度可分离卷积   深度学习
这篇教程深度可分离卷积和正常卷积图文解析浅显易懂写得很实用,希望能帮到您。

正常卷积

原始图像是二维的,大小是12x12。由于是RGB格式的,所以有三个通道,这相当于是一个3维的图片。其输入图片格式是:12x12x3。滤波器窗口大小是5x5x3。这样的话,得到的输出图像大小是8x8x1(padding模式是valid)。

12x12x3 * 5x5x3 => 8x8x1

在这里插入图片描述

一个5x5x3滤波器得到的输出图像8x8x1,仅仅提取到的图片里面的一个属性。如果希望获取图片更多的属性,譬如要提取256个属性,则需要:

12x12x3 * 5x5x3x256 => 8x8x256

如下图(图片引用自原网站。感觉应该将8x8x256那个立方体绘制成256个8x8x1,因为他们不是一体的,代表了256个属性):

在这里插入图片描述

正常卷积的问题在于,它的卷积核是针对图片的所有通道设计的(通道的总数就是depth)。那么,每要求增加检测图片的一个属性,卷积核就要增加一个。所以正常卷积,卷积参数的总数=属性的总数x卷积核的大小。

深度可分离卷积

深度可分离卷积的方法有所不同。正常卷积核是对3个通道同时做卷积。也就是说,3个通道,在一次卷积后,输出一个数。
深度可分离卷积分为两步:

  • 第一步用三个卷积对三个通道分别做卷积,这样在一次卷积后,输出3个数。
  • 这输出的三个数,再通过一个1x1x3的卷积核(pointwise核),得到一个数。

所以深度可分离卷积其实是通过两次卷积实现的。

第一步,对三个通道分别做卷积,输出三个通道的属性:
在这里插入图片描述
第二步,用卷积核1x1x3对三个通道再次做卷积,这个时候的输出就和正常卷积一样,是8x8x1:
在这里插入图片描述

如果要提取更多的属性,则需要设计更多的1x1x3卷积核心就可以(图片引用自原网站。感觉应该将8x8x256那个立方体绘制成256个8x8x1,因为他们不是一体的,代表了256个属性)::
在这里插入图片描述
可以看到,如果仅仅是提取一个属性,深度可分离卷积的方法,不如正常卷积。随着要提取的属性越来越多,深度可分离卷积就能够节省更多的参数。


深度可分离卷积计算量与参数量计算
二分类问题中,大量的负样本会影响到网络的训练吗?
51自学网,即我要自学网,自学EXCEL、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。
京ICP备13026421号-1