MobileNet

MobileNet (Efficient Convolutional Neural Networks for Mobile Vision Applications)——Google CVPR-2017

MobileNet引入了传统网络中原先采用的group思想,即限制滤波器的卷积计算只针对特定的group中的输入,从而大大降低了卷积计算量,提升了移动端前向计算的速度。

1.1 卷积分解

MobileNet借鉴factorized convolution的思想,将普通卷积操作分为两部分:

  • Depthwise Convolution,即逐通道的卷积,一个卷积核负责一个通道,一个通道只被一个卷积核滤波;其中M是输入通道数,DK是卷积核尺寸,则这里有 M 个 DK*DK 的卷积核;

  • Pointwise convolution,将 depth-wise convolution 得到的 feature map 再「串」起来,其实就是:输出的每一个 feature map 要包含输入层所有 feature map 的信息。然而仅采用 depth-wise convolution,是没办法做到这点,因此需要 pointwise convolution 的辅助。

    其中输入的 feature map 有 M 个,输出的 feature map 有 N 个。

+Depthwise convolution的计算复杂度为 DKDKMDFDF,其中DF是卷积层输出的特征图的大小。

+Pointwise Convolution的计算复杂度为 MNDFDF

+上面两步合称depthwise separable convolution

+标准卷积操作的计算复杂度为DKDKMNDFDF

因此,通过将标准卷积分解成两层卷积操作,可以计算出理论上的计算效率提升比例:

对于3x3尺寸的卷积核来说,depthwise separable convolution在理论上能带来约8~9倍的效率提升。

1.2 模型架构

MobileNet的卷积单元如上图所示,每个卷积操作后都接着一个BN操作和ReLU操作。在MobileNet中,由于3x3卷积核只应用在depthwise convolution中,因此95%的计算量都集中在pointwise convolution 中的1x1卷积中。而对于caffe等采用矩阵运算GEMM实现卷积的深度学习框架,1x1卷积无需进行im2col操作,因此可以直接利用矩阵运算加速库进行快速计算,从而提升了计算效率。

小结

  1. 核心思想是采用 depth-wise convolution 操作,在相同的权值参数数量的情况下,相较于 standard convolution 操作,可以减少数倍的计算量,从而达到提升网络运算速度的目的。
  2. depth-wise convolution 的思想非首创,借鉴于 2014 年一篇博士论文:《L. Sifre. Rigid-motion scattering for image classification. hD thesis, Ph. D. thesis, 2014》
  3. 采用 depth-wise convolution 会有一个问题,就是导致信息流通不畅,即输出的 feature map 仅包含输入的 feature map 的一部分,在这里,MobileNet 采用了 point-wise convolution 解决这个问题。在后来,ShuffleNet 采用同样的思想对网络进行改进,只不过把 point-wise convolution 换成了 channel shuffle,然后给网络美其名曰 ShuffleNet,欲知后事如何,请看 2.3 ShuffleNet

原文地址:https://www.cnblogs.com/CodingML-1122/p/9043078.html

时间: 2024-10-19 08:10:15

MobileNet的相关文章

轻量级网络 Inception, Pointwise Conv, Group Conv, Depthwise Conv, Bottleneck, Xception, MobileNet, ShuffeNet, ResNeXt, SqueezeNet, EfficientNet, MixConv

1. Abstract 本文旨在简单介绍下各种轻量级网络,纳尼?!好吧,不限于轻量级 2. Xception 2.1 Extreme Inception 2.2 Xception 3. MobileNet 3.1 MobileNet V1 3.2 MobileNet V2 3.3 MobileNet V3 4. ShuffeNet 4.1 ShuffeNet V1 Shuffe units Network Architecture Experiments 4.2 ShuffeNet V2 5. 

MobileNet论文学习

Abstract MobileNet 用于 移动或嵌入式应用,其主要方法是通过引入2个超参以在延迟和准确率上做trade off,是一个轻量级结构.可用于object detection, fine-grain classification,face attributes and large scale geo-localization. Introduction 自AlexNet开始的neural network致力于加大网络深度和复杂度,但在诸如robotics等实际应用中无法承受其时间复杂

MobileNet V2

https://zhuanlan.zhihu.com/p/33075914 http://blog.csdn.net/u011995719/article/details/79135818 https://blog.ddlee.cn/2018/01/18/%E8%AE%BA%E6%96%87%E7%AC%94%E8%AE%B0-Inverted-Residuals-and-Linear-Bottlenecks-Mobile-Networks-for-Classification-Detectio

使用基于Caffe的MobileNet分类踩坑备忘录

首先帮Caffe甩个锅:Caffe对图像处理进行了很高明的封装,以protobuffer形式组织的搭积木式的网络构建也很灵活方便,这里的坑都是自己走路不稳崴进去的. 1. Caffe的一个iter是一个batch,不是一个epoch. 2. 使用现有模型存档对网络进行fine_tune的时候,由于改变了输出的number,最后一层必须重新命名,目的是不复用最后一层的存档参数.和tensorflow不太一样的时候,如果最后一层的参数数量不一致,训练时不会抛出异常,居然可以正常运行,然后...收敛只

[神经网络]一步一步使用Mobile-Net完成视觉识别(五)

1.环境配置 2.数据集获取 3.训练集获取 4.训练 5.调用测试训练结果 6.代码讲解 本文是第五篇,讲解如何调用测试训练结果. 上一篇中我们输出了训练的模型,这一篇中我们通过调用训练好的模型来完成测试工作. 在object_detection目录下创建test.py并输入以下内容: import os import cv2 import numpy as np import tensorflow as tf import sys sys.path.append("..") fro

tensorflow Mobilenet 导出模型的方法

python export_inference_graph.py --input_type image_tensor --pipeline_config_path ssd_mobilenet_v1_coco.config --trained_checkpoint_prefix model.ckpt-134 // 注意这里是前缀 ,不是完整文件名.eg: model.ckpt-101.data-00000-of-00001 这里只需要 model.ckpt-101--output_director

MCC(移动国家码)和 MNC(移动网络码)

国际移动用户识别码(IMSI) international mobile subscriber identity 国际上为唯一识别一个移动用户所分配的号码. 从技术上讲,IMSI可以彻底解决国际漫游问题.但是由于北美目前仍有大量的AMPS系统使用MIN号码,且北美的MDN和MIN采用相同的编号,系统已经无法更改,所以目前国际漫游暂时还是以MIN为主.其中以O和1打头的MIN资源称为IRM(International Roaming MIN),由IFAST (International Forum

[Tensorflow] Object Detection API - build your training environment

Prepare protoc Download Protocol Buffers Create folder: protoc and unzip it. [email protected]UX303UB$ ls models Others protoc train_data [email protected]-UX303UB$ ls protoc/ bin include readme.txt [email protected]-UX303UB$ ls protoc/bin/ protoc Pr

MobileNets: Open-Source Models for Efficient On-Device Vision

https://research.googleblog.com/2017/06/mobilenets-open-source-models-for.html Wednesday, June 14, 2017 Posted by Andrew G. Howard, Senior Software Engineer and Menglong Zhu, Software Engineer (Cross-posted on the Google Open Source Blog) Deep learni