Depth-wise Convolution keras 运行时间缓慢原因

提到depth-wise conv2D 大家都如数家珍,这里我就简单的介绍一下,用两张图就可以概述出来了,大家想要看具体的介绍可以看

A Basic Introduction to Separable Convolutions 这篇文章介绍的很清楚。

上图是一个正常的卷积操作,是一个12×12×3的特征图经过256个卷积核大小为5×5×3的卷积得到了一个8×8×256的特征图。这是正常的卷积。参数量为256 x 5 x 5 x 3 = 19200,乘法次数为256 x 5 x 5 x 3 x 8 x 8 = 1228800。

上图就是一个depthwisie-conv2D 卷积了。可以看到它采用了3个5×5×1的卷积核来操作得到3个8×8 ×3的特征图。其参数量

3 x 5 x 5 x 1 乘法次数为3 x 5 x 5 x 1 x 8 x 8。我们可以看到参数量核乘法次数大大降低了。下面是一个 Point-wise Conv.的操作。这两个加起来就是一个Separable Conv 了。

我们可以看到这两个卷积操作加起来的参数量和正常的卷积操作比起来大大降低了参数量。那么我们是不是可以直接用这个了。都有这么多优点了为啥我见到的用的人比较少昵。当我们使用keras 中的depthwiseconv2D 操作时这个时候发现网络的运行速度大大降低了。不是说好参数量减少了,不是说运行速度提升呀。这个问题我也时一直疑惑的。直到我看到这个文章。

Flops与模型的推理速度。这个文章解释的很清楚了。简单来说,depth-wise卷积的FLOPs更少没错,但是在相同的FLOPs条件下,depth-wise卷积需要的IO读取次数是普通卷积的100倍,因此,由于depth-wise卷积的小尺寸,相同的显存下,我们能放更大的batch来让GPU跑满,但是此时速度的瓶颈已经从计算变成了IO。自然desired小尺寸卷积应该有的快速的特性,也无法实现。

看到这里我终于明白为啥一些大组喜欢用这个卷积了,因为他们有很好的机器的,可以更好的发挥depthwiseconv2D 网络的性能了。

 

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Keras中实现深度可分离卷积可以使用SeparableConv2D层。这个层实质上是将普通的卷积操作分解成两个步骤:深度方向的空间卷积(depthwise convolution)和逐点卷积(pointwise convolution)。首先,深度方向的空间卷积会分别作用于每个输入通道,然后将所得输出通道混合在一起。这个操作可以通过设置depth_multiplier参数来控制深度步骤中每个输入通道生成多少个输出通道。接下来,我们可以使用一个1x1的卷积核对深度可分离卷积得到的输出进行常规卷积操作,得到最终的输出。在Keras中,可以通过构建一个Sequential模型,并添加SeparableConv2D层来实现深度可分离卷积。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [Keras(二十)深度可分离卷积网络实战](https://blog.csdn.net/TFATS/article/details/114025123)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [keras中的深度可分离卷积 SeparableConv2D与DepthwiseConv2D](https://blog.csdn.net/C_chuxin/article/details/88581411)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值