论文阅读笔记---HetConv

1 写在前边的话

HetConv性能:当使用HetConv取代标准卷积之后,FLOPs大概是之前的1/8到1/3,更重要的是精度几乎不变!!!

论文地址:https://arxiv.org/abs/1903.04120

2 HetConv的结构

实质:是分组卷积与逐点卷积结合的产物。具体如下:

对于卷积(标准卷积;深度卷积;分组卷积;逐点卷积)来讲,每一个filter的尺寸是完全一样的,文章中也称之为同构卷积。

所谓异构卷积,也就是说,对于同一个filter来讲,它的尺寸是不一样的,文章中是有两种。

这样讲可能有点抽象,举个例子来体会一下:

假设原有的一个fliter为:3x3xM,HetConv将M中M/P的3x3卷积核尺寸保留,剩余的M-M/P卷积核尺寸变为1x1的,其中P是一个比例系数。

上边讲的只是一个filter,现假设输出的通道数为N,HetConv是这样做的,假设第一个通道第一个3x3为在第一个位置开始,那么第二个通道中第一个3x3在第二个位置开始,以此类推,如下图所示:

3 计算量比较

假设输入特征图为:Di×Di×M,输出的特征图为:Do×Do×N,标准的卷积核为:K×K×M

对于标准卷积来讲:

计算量为:Do×Do×M×N×K×K

对于异构卷积来讲:

计算量为(Do×Do×M×N×K×K)/P + (Do×Do×N)×(MMP)

异构卷积的计算量/标准卷积的计算量==1P+(11/P)K2

通过上式中,我们发现,当P=1时,异构卷积就是标准卷积!

对于深度可分离卷积来讲:

计算量为Do×Do×M×K×K+M×N×Do×Do

深度可分离卷积的计算量/标准卷积的计算量==1N+1K2

论文中给出一个极端的case,当P=M时此时效果也比深度可分离卷积好,同时计算量也少,如下所示:

1M+(11/M)K2<1M+1K2

对于分组卷积+逐点卷积来讲:

计算量为(Do×Do×M×N×K×K)/G+M×N×Do×Do

分组卷积+逐点卷积的计算量/标准卷积的计算量=1G+1K2

当P=G时,有:

1P+(11/P)K2<1P+1K2

综上所述:

异构卷积比深度可分离卷积,分组卷积计算量都少,并且识别精度还高!

4 代码实现

pytorch实现:https://github.com/sxpro/HetConvolution2d_pytorch

posted @   珠峰上吹泡泡  阅读(660)  评论(0编辑  收藏  举报
编辑推荐:
· 大模型 Token 究竟是啥:图解大模型Token
· 35岁程序员的中年求职记:四次碰壁后的深度反思
· 继承的思维:从思维模式到架构设计的深度解析
· 如何在 .NET 中 使用 ANTLR4
· 后端思维之高并发处理方案
阅读排行:
· BotSharp + MCP 三步实现智能体开发
· BotSharp 5.0 MCP:迈向更开放的AI Agent框架
· 5. RabbitMQ 消息队列中 Exchanges(交换机) 的详细说明
· 在线聊天系统中的多窗口数据同步技术解密
· 【ESP32】两种模拟 USB 鼠标的方法
点击右上角即可分享
微信分享提示