IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> Group Conv && Depthwise && Pointwise -> 正文阅读

[人工智能]Group Conv && Depthwise && Pointwise

Conv

首先是常规卷积,假设我们有一张 6 × 4 × 4 6 \times 4 \times 4 6×4×4的特征图,现在想得到一张 10 × 3 × 3 10 \times 3 \times 3 10×3×3的图,如果直接使用卷积操作,大卷积核(包含channel,3维)一共有10个,每个大小为 6 × 2 × 2 6 \times 2 \times 2 6×2×2。代码及计算过程如下图所示

conv = nn.Conv2d(6, 10, kernel_size=2, stride=1, padding=0, bias=False, groups=1)
input = torch.ones((1, 6, 4, 4))
output = conv(input)
print(output.size())
'''
torch.Size([1, 10, 3, 3])
'''

Normal Convolution

参数和计算量

参数:10个输出channel,6个输入channel,卷积核大小为2 * 2
计算量:10个输出channel,6个输入channel,卷积核大小为2 * 2,输出图为3 * 3

参数: 10 ? 6 ? 2 × 2 = 240 10 * 6 * 2\times 2=240 10?6?2×2=240
计算量: 10 ? 6 ? 3 × 3 ? 2 × 2 = 2160 10 * 6 * 3 \times3 *2 \times 2 =2160 10?6?3×3?2×2=2160

Group Conv

分组卷积可降低参数量,我们假设一张 6 × 4 × 4 6 \times 4 \times 4 6×4×4的特征图,现在想得到一张 10 × 3 × 3 10 \times 3 \times 3 10×3×3的图,设分组卷积数为2,因此每个大卷积核的大小为 3 × 2 × 2 3 \times 2 \times 2 3×2×2,一共有 5 + 5 = 10 5+5=10 5+5=10个大卷积核。代码及计算过程如下图所示

group_conv = nn.Conv2d(6, 10, kernel_size=2, stride=1, padding=0, bias=False, groups=2)
input = torch.ones((1, 6, 4, 4))
output = group_conv(input)
print(output.size())
'''
torch.Size([1, 10, 3, 3])
'''

Group Convolution

参数和计算量

参数:10个输出channel(分组为2,每组5 channel),6个输入channel(分组为2,每组3 channel),大卷积核一共分为两组,每组大小为3 * 2 * 2,卷积核大小为2 * 2
计算量:10个输出channel,6个输入channel,卷积核大小为2 * 2,输出图为3 * 3

参数: ( 5 + 5 ) ? 3 ? 2 × 2 = 120 (5+5) * 3 * 2 \times 2=120 (5+5)?3?2×2=120
计算量: 5 ? 3 ? 3 × 3 ? 2 × 2 ? 2 ( g r o u p ) = 1080 5 * 3 * 3 \times3 *2 \times 2 * 2(group)=1080 5?3?3×3?2×2?2(group)=1080

Depthwise Separable Convolution

depthwise separable convolution是Google在2017年提出的arXiv

这个模型为MobileNet,主要是在显著降低参数和计算量的情况下保证性能,depthwise separable convolution一共分为两步:depthwise conv以及pointwise conv

1. Depthwise Conv

depthwise中每个卷积核只负责一个通道,卷积只能在二维平面内进行,因此他没有办法增加通道数

继续上面的例子,我们假设一张 6 × 4 × 4 6 \times 4 \times 4 6×4×4的特征图,因为depthwise没办法增加通道数,所以我们只能得到一张 6 × 3 × 3 6 \times 3 \times 3 6×3×3的图

Depthwise Convolution

参数和计算量

参数:6个输出channel,6个输入channel,大卷积核大小为1 * 2 * 2,卷积核大小为2 * 2
计算量:6个输出channel,6个输入channel,卷积核大小为2 * 2,输出图为3 * 3

参数: 6 ? 1 ? 2 × 2 = 24 6 * 1 * 2 \times 2=24 6?1?2×2=24
计算量: 3 × 3 ? 2 × 2 ? 6 = 216 3 \times3 *2 \times 2 * 6=216 3×3?2×2?6=216

2. Pointwise Conv

因为我们想获得 10 × 3 × 3 10 \times 3 \times 3 10×3×3的特征图,但是目前经过depthwise我们得到了 6 × 3 × 3 6 \times 3 \times 3 6×3×3的特征图,现在我们用 1 × 1 1 \times 1 1×1的核来进行pointwise操作,每个卷积核的大小为 6 × 1 × 1 6 \times1 \times 1 6×1×1,一共有10个

Pointwise Convolution

参数和计算量

参数:10个输出channel,6个输入channel,大卷积核大小为6 * 1 * 1,卷积核大小为1 * 1
计算量:10个输出channel,6个输入channel,卷积核大小为2 * 2,输出图为3 * 3

参数: 10 ? 6 ? 1 × 1 = 60 10 * 6 * 1\times 1 = 60 10?6?1×1=60
计算量: 10 ? 6 ? 3 × 3 ? 1 × 1 = 540 10 * 6 * 3\times 3 * 1 \times 1=540 10?6?3×3?1×1=540

上述两步的代码如下所示

depthwise = nn.Conv2d(6, 6, kernel_size=2, stride=1, padding=0, bias=False, groups=6)
pointwise = nn.Conv2d(6, 10, kernel_size=1, stride=1, padding=0, bias=False, groups=1)
input = torch.ones((1, 6, 4, 4))
output = depthwise(input)
print(output.size())
output = pointwise(output)
print(output.size())
'''
torch.Size([1, 6, 3, 3])
torch.Size([1, 10, 3, 3])'''

总结:特征图 6 × 4 × 4 → 10 × 3 × 3 6 \times 4 \times 4 \rightarrow10 \times 3 \times 3 6×4×410×3×3

modelparamsflops
Normal Conv2402160
Group Conv1201080
Separable Conv24+60216+540
  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2022-04-01 00:02:58  更:2022-04-01 00:03:17 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年1日历 -2025/1/9 2:05:16-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码