关键词:
随着AlexNet 在2012年ImageNet 竞赛中赢得冠军之后,卷积神经网络在计算机视觉领域已开始变得无处不在。一个大的研究趋势是研究更深、更复杂的网络,从而实现更高的准确率。但这些提升准确率的改进并不一定会使网络在大小和速度上更加高效。
然而在许多现实世界的应用中,比如智能手机、机器人、无人机、自动驾驶、增强现实等,图像识别任务需要在计算资源受限的平台上高效的执行。
为此,出现了很多研究针对移动端与嵌入式设备上应用的小型高效的网络,比如MobileNetV1、MobileNetV2、ShuffleNetV1、ShuffleNetV2等。
为了后续更加深入的理解这些高效而准确的网络,本文先做一个铺垫,介绍这些网络中最常使用的卷积操作。当我们将这些不同类型的卷积操作以及它们之间的关系、它们的计算量的对比了解清楚,我们在读这些论文时才更容易真正明白为什么这些网络是小型且高效的。
我们从卷积的一般到特例,下文分别逐一介绍
- 普通的convolution
- group convolution
- depthwise convolution
- pointwise convolution
- pointwise group convolution
1. 普通convolution
假设输入的特征图大小为 D F ∗ D F ∗ M D_F * D_F *M DF∗DF∗M,其中 D F D_F DF表示输入特征图的空间宽度和高度, M M M表示输入特征图的通道数(深度);
假设卷积核大小为 D K ∗ D K ∗ M ∗ N D_K * D_K * M * N DK∗DK∗M∗N,其中 D K D_K DK表示卷积核的空间宽度和高度, M M M表示输入特征图的通道数,N表示卷积核的个数; 且卷积核的步距stride=1,采用same padding的填充方式。
那么得到的输出特征图大小为为 D F ∗ D F ∗ N D_F * D_F * N DF∗DF∗N。整个过程如下图所示。
根据以上的卷积过程,我们知道普通的convolution操作有两个特点:
- 每一个卷积核的通道数量,与输入特征图的通道数一致;
- 输出特征图的通道数量,与卷积核的个数一致。
我们计算得到一个普通的convolution的计算量是 D K ∗ D K ∗ M ∗ N ∗ D F ∗ D F D_K * D_K * M * N * D_F * D_F DK∗DK∗M∗N∗DF∗DF。其中$D_K * D_K * M $ 是计算得到输出特征图中的一个点的计算量,且输出特征图中一共有 N ∗ D F ∗ D F N * D_F * D_F N∗DF∗DF个点。
2. group convolution
假设输入的特征图大小为 D F ∗ D F ∗ M D_F * D_F *M DF∗DF∗M,其中 D F D_F DF表示输入特征图的空间宽度和高度, M M M表示输入特征图的通道数(深度);
假设我们要分的组 g r o u p = g group=g group=g, 且我们仍然使输出特征图的通道数为 N N N。
那么我们就对输入特征图的通道分为 g g g组。对于每一组来说,
- 输入的特征图大小为 D F ∗ D F ∗ ( M / g ) D_F * D_F * (M/g) DF∗DF∗(M/g)
- 卷积核大小为 D k ∗ D k ∗ ( M / g ) ∗ ( N / g ) D_k * D_k * (M/g) * (N/g) Dk∗Dk∗(M/g)∗(N/g)
我们计算一下group convolution 的计算量。
首先我们先计算一个组的计算量,然后将得到的计算量乘以 g g g即得到总共的计算量。
那么一个组的计算量为 D K ∗ D K ∗ ( M / g ) ∗ ( N / g ) ∗ D F ∗ D F D_K * D_K * (M/g) * (N/g) * D_F * D_F DK∗DK∗(M/g)∗(N/g)∗DF∗DF;
那么group convolution的计算量为 D K ∗ D K ∗ ( M / g ) ∗ ( N / g ) ∗ D F ∗ D F ∗ g = D K ∗ D K ∗ M ∗ N ∗ D F ∗ D F g D_K * D_K * (M/g) * (N/g) * D_F * D_F * g = \\fracD_K * D_K * M * N * D_F * D_Fg DK∗DK∗(M/g)∗(N/g)∗DF∗DF∗g=gDK∗DK∗M∗N∗DF∗DF
可见,group convolution 的计算量是普通的convolution的 1 g \\frac1g g1倍。
3. depthwise convolution
在上一节中,我们已经知道:
当我们对输入特征图的通道分为 g g g组,对于每一组来说,
- 输入的特征图大小为 D F ∗ D F ∗ ( M / g ) D_F * D_F * (M/g) DF∗DF∗(M/g)
- 卷积核大小为 D k ∗ D k ∗ ( M / g ) ∗ ( N / g ) D_k * D_k * (M/g) * (N/g) Dk∗Dk∗(M/g)∗(N/g)
当分组个数 g = M g = M g=M,且 M = N M= N M=N时,对于每一组来说,
- 输入的特征图大小为 D F ∗ D F ∗ 1 D_F * D_F * 1 DF∗DF∗1
- 卷积核大小为 D k ∗ D k ∗ 1 ∗ 1 D_k * D_k *1* 1 Dk∗Dk∗1∗1
也即是说,一共有N=M个卷积核,每个卷积核只有一个通道,且与输入特征图的一个通道相对应。如下图所示。
查看详情
图像分类shufflenet:一个极端高效的移动端卷积神经网络
码字不易,欢迎点赞。文章同步发布在公众号:CV前沿在上一篇文章中,我们已经介绍了一种针对移动端和嵌入式设备的卷积神经网络—-MobileNet。今天我们要介绍的是旷视科技在2017年12月份提出的更加高效的移动端卷... 查看详情
深度学习中常用的几种卷积(上篇):标准二维卷积转置卷积1*1卷积(附pytorch测试代码)(代码片段)
...sdn.net/qq_43665602/article/details/126708012。一、标准二维卷积在图像处理中 查看详情
paddle学习图像分类
...习模型中的卷积神经网络(ConvolutionNeuralNetwork,CNN)近年来在图像领域取得了惊人的成绩,CNN直接利用图像像素信息作为输入,最大程度上保留了输入图像的所有信息,通过卷积操作进行特征的提取和高层抽象,模型输出直接是图像... 查看详情
kerascifar-10图像分类resnet篇
KerasCIFAR-10图像分类ResNet篇除了用pytorch可以进行图像分类之外,我们也可以利用tensorflow来进行图像分类,其中利用tensorflow的后端keras更是尤为简单,接下来我们就利用keras对CIFAR10数据集进行分类。keras介绍keras是python深度学习中... 查看详情
第05课:cnn在机器视觉中的应用——图像分类(代码片段)
...网络发展历史回顾卷积与池化卷积神经网络的应用(图像分类)卷积一词来源于信号处理领域。以1D信号为例,f( 查看详情
计算机视觉中图像分类任务脉络梳理
本文大致梳理了计算机视觉中图像分类的脉络,包括常用数据集、经典模型和性能对比。1图像分类常用数据集以下是几种常用的分类数据集,难度依次递增。列举了各算法在各数据集上的性能排名。MNIST,60k训练图像、10k测试图... 查看详情
深度学习图像分类入门,从vgg16卷积神经网络开始
刚开始接触深度学习、卷积神经网络的时候非常懵逼,不知道从何入手,我觉得应该有一个进阶的过程,也就是说,理应有一些基本概念作为奠基石,让你有底气去完全理解一个庞大的卷积神经网络:本文... 查看详情
图像分类mobilenet:一点创新两个超参
MobileNet是2017年由Google提出的一个应用于移动端和嵌入式的卷积神经网络。它的主要应用场景包括有智能手机、无人机、机器人、自动驾驶、增强现实等等。在这之前,研究者更多还是关注于精度的提升,模型也是朝着深... 查看详情
具有任意数量输入通道(超过 RGB)的卷积神经网络架构
...布时间】:2019-02-0210:52:30【问题描述】:我对使用CNN进行图像识别非常陌生,目前使用Keras(VGG和ResNet)中可用的几种标准(预训练)架构进行图像分类任务。我想知 查看详情
unet图像语义分割入门深度学习(代码片段)
...程中,我们将学习如何利用UNET深度学习网络实现地震图像的语义分割,除了UNET,本文还介绍了图像处理的几种常见任务,以及卷积网络常用的操作和术语,例如卷积、最大池、接受域、上采样、转置卷积、跳... 查看详情
pytorch图像分类教程专栏目录
...架,广泛应用于人工智能领域的科学研究和工程实践等。图像分类问题是当前人工智能最重要的组成部分,基于PyTorch实现图像分类是迈入人工智能领域的关键前提。本专栏深入浅出、全面系统的介绍PyTorch实现图像分类的关键技... 查看详情
pytorch图像分类教程专栏目录
...架,广泛应用于人工智能领域的科学研究和工程实践等。图像分类问题是当前人工智能最重要的组成部分,基于PyTorch实现图像分类是迈入人工智能领域的关键前提。本专栏深入浅出、全面系统的介绍PyTorch实现图像分类的关键技... 查看详情
rsync常用的几种备份案例(代码片段)
作者简介:一只在互联网IDC运维的网络攻城狮,网络技术问题可联系QQ:1656209309rsync手工备份配置案例:服务器端:192.168.1.104客户端:192.168.1.501)环境准备说明:192.168.1.104rsyncserver(rsync服务端)192.168.1.50(客户端)2)配置前检查cat/et... 查看详情
cnn中常用的四种卷积详解
...遍历,最终得到一个结果矩阵,说白了就是一个卷积核在图像上滑动,并求取对应元素相乘求和的过程,如下图:卷积核为3*3,步长为2和填充的2D卷积 首先,一般情况下卷积层的作用都是用来自动提取图像的一些视觉特征,... 查看详情
深度学习卷积神经网络cnn(代码片段)
Contents 图像数据集基础全连接神经网络解决图片问题的弊端(前世)卷积神经网络的今生网络结构卷积操作池化操作小结 图像数据集基础 数字图像划分为彩色图像、灰度图像、二值图像和索引图像几种。其中,像素... 查看详情
用于图像检测/分类的卷积神经网络
】用于图像检测/分类的卷积神经网络【英文标题】:ConvolutionNeuralNetworkforimagedetection/classification【发布时间】:2016-10-0311:21:01【问题描述】:所以这里有设置,我有一组图像(标记为训练和测试),我想训练一个卷积网络,告诉... 查看详情
opencv图像模糊原理(代码片段)
...滤波代码示例模糊原理Smooth/Blur(平滑和模糊)是图像处理中最简单和常用的操作之一。使用该操作的原因之一就是为了给图像预处理时候降低噪声,把噪声与周围的数值平均一下就可以平滑噪声。使用Smooth/Blur操作... 查看详情