理解depth-wise 卷积

2023-05-16

EfficientNet利用depth-wise卷积来减少FLOPs但是计算速度却并没有相应的变快。反而拥有更多FLOPs的RegNet号称推理速度是EfficientNet的5倍。非常好奇,这里面发生了什么,为什么计算量小的网络推理速度反而慢于计算量大的网络?

首先看看depth-wise卷积到底是什么:

https://towardsdatascience.com/a-basic-introduction-to-separable-convolutions-b99ec3102728​towardsdatascience.com/a-basic-introduction-to-separable-convolutions-b99ec3102728

这篇文章讲的非常全面,应有尽有,我不做重复工作了,捡重要的来说:

首先,对于普通卷积:

我们从[12,12,3]的input feature map到[8,8,256]的output feature map,需要256个[5,5,3]的卷积核。参数量为256 x 5 x 5 x 3 = 19200,乘法次数为256 x 5 x 5 x 3 x 8 x 8 = 1228800(可以理解为FLOPs)。

对于depth-wise卷积:

分为2部分:Separable Conv 以及 Point-wise Conv.

同样的,从[12,12,3]的input feature map到[8,8,256]的output feature map,需要3个[5,5,1]的卷积核和256个[1,1,3]的卷积核。参数量为3 x 5 x 5 x 1 + 256 x 1 x 1 x 3 = 843,乘法次数为3 x 5 x 5 x 1 x 8 x 8 + 256 x 1 x 1 x 3 x 8 x 8 = 53952(FLOPs)。

如此一来,depth-wise conv的FLOPs只有普通卷积的~4.4%,EfficientNet的参数量少也就不足为奇了。

那么,为什么推理速度反而更慢呢?

这就要说说,如何衡量推理速度了:

Phoenix Li:FLOPs与模型推理速度1054 赞同 · 98 评论文章

上文给出了非常好的解释,我也没必要做重复工作。简单来说,depth-wise卷积的FLOPs更少没错,但是在相同的FLOPs条件下,depth-wise卷积需要的IO读取次数是普通卷积的100倍,因此,由于depth-wise卷积的小尺寸,相同的显存下,我们能放更大的batch来让GPU跑满,但是此时速度的瓶颈已经从计算变成了IO。自然desired小尺寸卷积应该有的快速的特性,也无法实现。

当然,也不该如此绝望,也许未来某天GPU的IO性能进一步提升,基于depth-wise卷积的工作就可以真正称得上是Efficient了!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

理解depth-wise 卷积 的相关文章

随机推荐

  • 【OpenCV】 外接矩形、最小外接矩形、多边形拟合、外接圆

    任务 xff1a 给定这样一张图片求图片中白色区域的外接矩形 最小外接矩形 拟合多边形以及外接圆 1 外接矩形 x y w h 61 cv2 boundingRect points 输入 xff1a 点集 返回值 xff1a 左上角点坐标以
  • Windows柯尼卡打印机驱动安装

    打印机型号 xff1a 柯尼卡 bizhub C300i xff08 打印机机身可见 xff09 1 下载驱动 在柯尼卡驱动官网查找下载打印机驱动 在型号处直接下拉查找自己的型号 xff0c 例如bizhub C300i xff0c 点击搜
  • PyQt开发入门教程

    来源 xff1a PyQt完整入门教程 lovesoo 博客园 cnblogs com 1 GUI开发框架简介 1 1 通用开发框架 electorn xff1a 基于node js xff0c 跨平台 xff0c 开发成本低 xff0c
  • VOC数据集颜色表colormap与代码

    VOC颜色和分类的对于关系 code如下 xff0c 这里提供两个版本 xff0c 一个是list tuple 版本 xff0c 支持直接在opencv的color参数使用 xff1b 另一个是ndarray版返回 list 版 def v
  • 【译】Python3.8官方Logging文档(完整版)

    注 xff1a 文章很长 xff0c 约一万字左右 xff0c 可以先收藏慢慢看哟 01 基础部分 日志是用来的记录程序运行事件的工具 当程序员可以通过添加日志打印的代码来记录程序运行过程中发生的某些事件时 这些事件包含了诸如变量数据在内的
  • OpenCV Scalar value for argument ‘color‘ is not numeric错误处理

    import cv2 cur color 61 np array 128 0 128 astype np uint8 cv2 polylines cvImage ndata isClosed 61 True color 61 cur col
  • COCO格式数据集可视化为框

    使用pycocotools读取和opencv绘制 xff0c 实现COCO格式数据边框显示的可视化 xff0c 可视化前后的示例为 xff1a 代码 xff1a coding utf 8 import os import sys getop
  • 微波遥感(三、SAR图像特征)

    SAR 是主 动式侧视雷达系统 xff0c 且成像几何属于斜距投影类型 因此 SAR 图像与光学图像在成像机理 几何特征 辐射特征等方面都有较大的区别 在进行 SAR 图像处理和应用前 xff0c 需要了解 SAR 图像的基本特征 本文主要
  • 基于Slicing Aided Hyper Inference (SAHI)做小目标检测

    遥感等领域数据大图像检测时 xff0c 直接对大图检测会严重影响精度 xff0c 而通用工具多不能友好支持大图分块检测 Slicing Aided Hyper Inference SAHI 是一个用于辅助大图切片检测预测的包 目前可以良好的
  • YOLOv5训练参数简介

    YOLOv5参数解析 xff0c 这次主要解析源码中train py文件中包含的参数 1 1 39 weights 39 1 2 39 cfg 39 1 3 39 data 39 1 4 39 hyp 39 1 5 39 epochs 39
  • 亚米级土耳其地震影像数据下载

    下载地址1 xff0c 提供震前震后影像 部分震后影像的百度网盘存档 xff1a https pan baidu com s 1 rLV7cR F3casKRwQH7JTw 提取码 xff1a dou3 灾前 灾后影像 下载地址2 xff1
  • nms_rotated编译出错fatal error: THC/THC.h: No such file or directory

    问题描述 xff1a 使用 python setup py develop or 34 pip install v e 34 编译nms rotated时出错 xff1a fatal error THC THC h No such file
  • 解决 AttributeError: module ‘numpy‘ has no attribute ‘int‘

    原因 xff1a numpy int在NumPy 1 20中已弃用 xff0c 在NumPy 1 24中已删除 解决方式 xff1a 将numpy int更改为numpy int xff0c int 方法 xff1a 点击出现错误代码链接会
  • 机载高分辨率SAR数据(~0.1米)

    美国桑迪亚 xff08 sandia xff09 国家实验室提供一系列机载SAR数据 xff0c 包括MiniSAR FARAR等 数据分辨率4英寸 xff0c 约0 1米 原始数据下载地址 xff0c 数据是复数据 xff0c 以不同格式
  • ubuntu18.04 及以上版本命令模式和GUI切换

    网上大多数说的CTRL 43 ALT 43 F1 6进入命令模式 xff0c CTRL 43 ALT 43 F7进入GUI模式 xff0c 在ubuntu18 04 及以上无效 正确的方式是 xff1a 进入命令模式可以通过CTRL 43
  • Python内置库——http.client源码刨析

    看过了http client的文档 xff0c 趁热打铁 xff0c 今天继续研究一下http client的源码 xff08 一 xff09 你会怎么实现 开始之前先让我们回忆一下一个HTTP调用的完整流程 xff1a 看到这张图 xff
  • ssh连接ubuntu访问拒绝(access denied)

    网上大多针对ssh连接ubuntu访问拒绝的解决办法是安装ssh或防火墙开启端口等等 xff0c 但这些都没问题之后还是访问拒绝 xff0c 则考虑ssh包可能安装的有问题 xff0c 可以尝试重装 流程如下 xff1a 1 在ubuntu
  • 【论文-目标检测】RTMDet: An Empirical Study of Designing Real-Time Object Detectors

    论文 代码 官方原理与实现详解 发展YOLO系列并方便支持实例分割和斜框检测等任务 xff0c 亮点 xff1a 设计兼容性backbone和neck xff0c 采用大核深度可分离卷积 xff1b 动态标签分配中采用软标签计算匹配损失 x
  • 【OpenCV】图像金字塔 -- 下采样cv2.pyrDown() , 上采样cv2.pyrUp()

    参考 xff1a cv2 pyrDown TheAILearner 1 cv2 pyrDown 函数cv2 pyrDown 用于实现高斯金字塔中的下采样 函数原型 xff1a dst img 61 cv2 pyrDown src img d
  • 理解depth-wise 卷积

    EfficientNet利用depth wise卷积来减少FLOPs但是计算速度却并没有相应的变快 反而拥有更多FLOPs的RegNet号称推理速度是EfficientNet的5倍 非常好奇 xff0c 这里面发生了什么 xff0c 为什么