​听六小桨讲AI | 第7期:3D卷积和分组卷积

点击左上方蓝字关注我们

本栏目由百度飞桨工程师联手精心打造,对深度学习的知识点进行由浅入深的剖析和讲解。大家可视它为深度学习百科(面试秘籍也是可以哒),当然也可收藏为深度学习查询手册~

回顾前6期,我们用4期讲解了卷积的原理,包括卷积的基本概念、计算方式以及卷积的变体转置卷积和空洞卷积。因为卷积是卷积神经网络的基本单元,而卷积神经网络是深度学习在各个领域取得突破性成果的基石。既然这么重要,那还不赶紧学起来?

今天依然输出卷积的变体:3D卷积分组卷积


一、3D卷积


1.1 什么是3D卷积?

标准卷积是一种二维卷积,即2D卷积。计算方式如 图1 所示。在2D卷积中,卷积核在图片上沿着宽和高两个维度滑动,在每次滑动过程时,对应位置的图像元素与卷积核中的参数进行乘加计算,得到输出特征图中的一个值。

图1 2D卷积示意图

2D卷积仅仅考虑2D图片的空间信息,所以只适用于单张2D图片的视觉理解任务。在处理3D图像或视频时,网络的输入多了一个维度,输入由(c, depth, height)变为了(c, depth, height, width),其中c 是通道数,depth为输入数据的宽度。因此,对该数据进行处理时,需要卷积也作出相应的变换,由2D卷积变为3D卷积。

在2D卷积的基础上,3D卷积被提出。3D卷积在结构上较2D卷积多了一个维度,2D卷积的尺寸可以表示为,则3D卷积的尺寸可以表示为。3D卷积的具体的计算方式与2D卷积类似,即每次滑动时与个通道、尺寸大小为(depth, height, width)的图像做乘加运算,从而得到输出特征图中的一个值,如 图2 所示。

图2 3D卷积示意图

1.2 应用示例

3D卷积的主要应用是在视频理解任务和医疗图像领域中。

视频理解任务中, 就代表了时间维度,也就是每个3D卷积核处理的连续帧数。在视频理解领域的3D卷积计算中,首先会将个连续帧组成一个3D的图像序列,然后在图像序列中进行卷积计算。3D卷积核会在个连续帧上进行滑动,每次滑动个连续帧中对应位置内的元素都要与卷积核中的参数进行乘加计算,最后得到输出特征图中的一个值。

3D CNN中[1],使用了3D卷积对人体行为进行识别,网络结构如 图3 所示。网络只有3个卷积层、1个全连接层以及2个池化层。其中,前两个卷积层为3D卷积层,卷积核大小为7 x 7 x 3 和7 x 6 x 3,也就是说每个卷积核处理3个连续帧中7 x 7 和7 x 6 大小的区域。

图3 3D CNN网络结构

由于该模型使用了3D卷积,使得其可以从空间和时间的维度提取特征,从而捕捉从多个连续帧中得到的运动信息。

医疗图像领域中,医学数据通常是3D的,比如我们要分割出的肿瘤就是3D的。如果用2D的图像处理模型去处理3D物体也是可以的,但是需要将生物医学影像图片的每一个切片成组的(包含训练数据和标注好的数据)的喂给模型进行训练,在这种情况下会存在一个效率问题,因此我们使用的模型即将U-Net中2D卷积改为3D的形式,即3D U-Net[2],如 图4 所示。

图4 3D U-Net网络结构

该模型的网络结构跟2D结构的U-Net基本一样,唯一不同就是将2D卷积操作换成了3D卷积,因此,不需要单独输入每个切片进行训练,而是可以采取输入整张图片到模型中。


二、分组卷积

2.1 分组卷积提出背景

分组卷积(Group Convolution)最早出现在AlexNet[3]中。受限于当时的硬件资源,在AlexNet网络训练时,难以把整个网络全部放在一个GPU中进行训练,因此,作者将卷积运算分给多个GPU分别进行计算,最终把多个GPU的结果进行融合。因此分组卷积的概念应运而生。


2.2 分组卷积与标准卷积的区别

对于尺寸为的输入矩阵,当标准卷积核的尺寸为,共有个标准卷积核时,标准卷积会对完整的输入数据进行运算,最终得到的输出矩阵尺寸为。这里我们假设卷积运算前后的特征图尺寸保持不变,则上述过程可以展示为 图5

图5 标准卷积示意图

考虑到上述过程是完整运行在同一个设备上,这也对设备的性能提出了较高的要求。

分组卷积则是针对这一过程进行了改进。分组卷积中,通过指定组数 g 来确定分组数量,将输入数据分成 g 组。需要注意的是,这里的分组指的是在深度上进行分组,输入的宽和高保持不变,即将每个通道的数据分为一组。因为输入数据发生了改变,相应的卷积核也需要进行对应的变化,即每个卷积核的输入通道数也就变为了,而卷积核的大小是不需要改变的。同时,每组的卷积核个数也由原来的变为。对于每个组内的卷积运算,同样采用标准卷积运算的计算方式,这样就可以得到 g 组尺寸为的输出矩阵,最终将这 g 组输出矩阵进行拼接就可以得到最终的结果。这样拼接完成后,最终的输出尺寸就可以保持不变,仍然是。分组卷积的运算过程如 图6 所示。

图6 分组卷积示意图

由于我们将整个标准卷积过程拆分成了 g 组规模更小的子运算来并行进行,所以最终降低了对运行设备的要求。同时,通过分组卷积的方式,参数量也可以得到降低。使用标准卷积时,参数量为:

而使用分组卷积后,参数量则变为:


2.3 应用示例

对于尺寸为 H x W x 64 的输入矩阵,当标准卷积核的尺寸为3 x 3 x 64,共有 64 个标准卷积核时,7 为组数 g = 2 时的分组卷积计算方式。

图7 组数为2时分组卷积示意图

此时,每组的输入通道数变为32,卷积核通道数也变为为32。所以,标准卷积对应的参数量是3 x 3 x 64 x 64 = 36864,而分组卷积的参数量变为3 x 3 x 32 x 32 x 2 =18432,参数量减少了一半。

本节课老师讲解了3D卷积和分组卷积的数学推导以及应用。有疑问的同学可以及时留言,主桨人会及时回复哦。下节课为大家带来最后一个卷积变体-可分离卷积的介绍,敬请期待!


参考文献

[1] 3D Convolutional Neural Networks for Human Action Recognition

[2] 3D U-Net: Learning Dense Volumetric Segmentation from Sparse Annotation

[3] ImageNet Classification with Deep Convolutional Neural Networks

对于本系列所有课程内容,大家可以在飞桨深度学习资料获取一站式平台:

https://github.com/PaddlePaddle/awesome-DeepLearning

获取,该项目集成了深度学习教程、理论知识点解读、产业实践案例、常用Tricks和前沿模型解读等内容。

感兴趣的同学可以扫码关注或者fork和star哦~

回顾往期:

听六小桨讲AI | 第1期:卷积概念及计算

听六小桨讲AI | 第2期:卷积的批量计算及应用案例

听六小桨讲AI | 第3期:优化器及其三种形式BGD、SGD以及MBGD

听六小桨讲AI | 第4期:优化器合集

听六小桨讲AI | 第5期:卷积的变体之转置卷积

听六小桨讲AI | 第6期:卷积的变体之空洞卷积

如在使用过程中有问题,可加入官方QQ群进行交流:793866180。

如果您想详细了解更多飞桨的相关内容,请参阅以下文档。

·飞桨官网地址·

https://www.paddlepaddle.org.cn/

·飞桨开源框架项目地址·

GitHub: https://github.com/PaddlePaddle/Paddle 

Gitee: https://gitee.com/paddlepaddle/Paddle

????长按上方二维码立即star!????

飞桨(PaddlePaddle)以百度多年的深度学习技术研究和业务应用为基础,集深度学习核心训练和推理框架、基础模型库、端到端开发套件和丰富的工具组件于一体,是中国首个自主研发、功能完备、开源开放的产业级深度学习平台。飞桨企业版针对企业级需求增强了相应特性,包含零门槛AI开发平台EasyDL和全功能AI开发平台BML。EasyDL主要面向中小企业,提供零门槛、预置丰富网络和模型、便捷高效的开发平台;BML是为大型企业提供的功能全面、可灵活定制和被深度集成的开发平台。

END

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值