计算机系统应用教程网站

网站首页 > 技术文章 正文

卷积神经网络CNN总结(五) 卷积神经网络conv1d

btikc 2024-11-01 11:27:01 技术文章 5 ℃ 0 评论

MobileNet系列作为轻量级网络的代表,使得CNN轻量化和移动端的部署成为可能。MobileNet系列目前总共有三个版本, 分别是MobileNet-v1、MobileNet-v2和MobileNet-v3,本文重点对MobileNet系列网络进行阐述。

MobileNet-v1

MobileNet v1论文为MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications,2017年由谷歌提出,主要专注于CNN的移动端使用和部署。

简单来说,MobileNet-v1就是将常规卷积替换为深度可分离卷积的VGG网络。下图分别是VGG和MobileNet-v1 一个卷积块所包含的网络层。

可以看到VGG的卷积块就是一个常规3x3卷积和一个BN和ReLU激活层。MobileNet-v1则是一个3x3深度可分离卷积和一个1x1卷积,后面分别跟着一个BN和ReLU层。MobileNet-v1的ReLU指的是ReLU6,区别于ReLU的是对激活输出做了一个裁剪,使得最大最输出值不超过6(ReLU的最大值可以无限大),这么做的目的是为了防止过大的激活输出值带来较大的精度损失。因此MobileNet-v1的创新点就是深度可分离卷积。

从维度的角度看,卷积核可以看成是一个空间维(宽和高)和通道维的组合,而卷积操作则可以视为空间相关性和通道相关性的联合映射。从Inception(上篇博客)的1x1卷积来看,卷积中的空间相关性和通道相关性是可以解耦的,将它们分开进行映射,可能会达到更好的效果。

深度可分离卷积是在1x1卷积基础上的一种创新,主要包括两个部分:深度卷积和1x1卷积。深度卷积的目的在于对输入的每一个通道都单独使用一个卷积核对其进行卷积,也就是通道分离后再组合。1x1卷积的目的则在于加强深度。

假设我们用128个3*3*3的滤波器对一个7*7*3的输入进行卷积,可得到5*5*128的输出。如下图所示:

普通卷积的计算量为5x5x128x3x3x3=86400。深度可分离卷积的第一步是深度卷积(Depth-Wise),分别用3个3x3x1的滤波器对输入的3个通道分别做卷积,也就是说要做3次卷积,每次卷积都有一个5x5x1的输出,组合在一起便是5x5x3的输出。之后为了拓展深度达到128,需要执行深度可分离卷积的第二步:1x1卷积(Point-Wise)。 采用128个1x1x3的滤波器对5x5x3进行卷积,就可以得到5x5x128的输出。完整过程如下图所示:

深度可分离卷积的计算量:第一步深度卷积的计算量为5x5x1x3x3x1x3=675。第二步1x1卷积的计算量:5x5x128x1x1x3=9600,合计计算量为10275次(普通卷积为86400 次)。因此深度可分离卷积是MobileNet v1能够轻量化的关键原因。

MobileNet v1完整网络结构如下图所示。

MobileNet v1与GoogleNet和VGG 16在ImageNet上的效果对比,如下表所示:

可以看到MobileNet-v1相比与VGG16精度损失不超过一个点的情况下,参数量小了32倍之多!

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表