0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Google提出间接卷积算法,未来可会有突破?

WpOh_rgznai100 来源:YXQ 2019-07-15 16:24 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

本文介绍的内容主要聚焦Google 的一项最新工作:改变基于 GEMM 实现的 CNN底层算法提出的新方法。通用矩阵乘法(General Matrix Multiply, GEMM)是广泛用于线性代数、机器学习、统计学等各个领域的常见底层算法,其实现了基本的矩阵与矩阵相乘的功能,因此算法效率直接决定了所有上层模型性能,目前主流的卷积算法都是基于GEMM来实现的。来自谷歌的Peter Vajda在ECV2019中提出了一种全新的间接卷积算法,用于改进GEMM在实现卷积操作时存在的一些缺点,进而提升计算效率。

通用矩阵乘法

GEMM是基础线性代数子程序库(Basic Linear Algebra Subprograms, BLAS)中的一个函数。BLAS提供了实现矩阵和向量基本运算的函数,最早于1979年由C.L.LAWSON提出。BLAS的发展大致可以分为三个阶段(levels)的历程,这和函数定义,出版顺序,以及算法中多项式的阶数以及复杂性有关,第一阶段只包含与向量(vector)有关的运算,第二阶段添加了向量与矩阵进行运算的操作,第三阶段添加了矩阵与矩阵之间的运算,前两个阶段的BLAS都是用于向量处理器的,而第三阶段适用于矩阵处理器,所以BLAS的发展和硬件的发展密不可分。GEMM属于第三阶段的算法,正式公布于1990年,其迭代更新形式为:

其中A和B可以进行转置或hermitian共轭转置,而A、B和C都可以被忽略(be strided),因此实际上这个公式就表示了任意矩阵之间所有可能的加法和乘法组合,例如最基本的A*B,可以将α置1,C置为全0矩阵即可,这也是其通用性的表现。

由于矩阵乘法相对于向量-向量乘法以及向量-矩阵乘法,有更低的时间复杂度,效率更高,因此其广泛用于许多科学任务中,与之相关的GEMM算法成为了目前BLAS设计者的主要优化对象。例如可以将A和B分解为分块矩阵,使得GEMM可以递归实现。有关GEMM的详细信息可以参见[1][2][3]。如何对GEMM进行优化,是BLAS相关工作的研究热点。

基于 GEMM 的卷积算法及其缺点

卷积神经网络(CNN)在CV问题中的表现很出色,有多种在算法层面对齐进行实现的方法:直接卷积算法,采用7层循环,快速卷积算法,利用傅里叶变换来进行卷积,以及基于GEMM的卷积算法。

通过将卷积操作用矩阵乘法来代替,进而使用GEMM算法来间接进行卷积操作,这使得卷积操作可以在任何包含GEMM的平台上进行,并且受益于矩阵乘法的高效性,任何针对GEMM的改进和研究都能有助于卷积运算效率的提升,从而提高模型的运算速度,因此目前大部分主流的神经网络框架,例如Tensorflow、Pytorch和Caffe都使用基于GEMM的方法来在底层代码中实现卷积。

具体的,基于GEMM的卷积方法需要借助于 im2col或im2row buffer来内存转换,使得数据格式满足GEMM算法的输入要求,从而将卷积操作转化为GEMM操作,然而这个转换过程是一个计算开销和内存开销都比较大的过程,特别是在输入channel数较小时,这个过程会在整个卷积过程中占有很大的比例。简言之,就是在卷积过程中,每个pixel都会被多次重复的转换,这是不必要的计算开销。因此有许多工作都在对这一过程进行改进,本文工作提出了一种改进算法——间接卷积算法(Indirect Convolution algorithm),主要有以下两个优点:

1、去掉了im2row的转换过程,这使得算法性能有了巨大的提升(up to 62%)。

2、用了一个更小的indirection buffer来代替原来的im2row buffer。不同于im2row buffer的大小随着输入channel数线性增加,indirection buffer没有这个特性,因此indirection buffer的内存占用特性非常有利于输入channel数较多时的卷积操作。

间接卷积算法

原始的GEMM通过如下计算来不断迭代进行矩阵运算操作并输出矩阵:

其中A是输入张量,B是一个常量滤波器,C是输出矩阵,在传统的im2col+GEMM算法中,通常α=1而β=0,原始GEMM操作示意图如下:

图1 原始GEMM操作

其中 im2col buffer 代表矩阵A,filter tensor 代表矩阵B,A和B的乘积就是输出copy表示将输入的张量展开为一个二维矩阵,也就是im2col buffer。可以看到buffer的每一行则是由固定个数(步长)的pixel展开成一维的向量组成的,这些pixel都在原始tensor中的一个patch内,在经过和filter tensor相乘后,由于矩阵行列相乘得到一个元素,因此这几个pixel的信息都被整合成了一个值,也就是对他们进行了卷积操作。最后在输出矩阵C中,行数rows代表输出的像素点个数,columns代表输出的channel数。可以看到buffer的columns是和输入channel数有关的。

为了降低buffer带来的开销,作者提出了一种间接矩阵乘法的思想,不把输入的tensor直接展开并存储在buffer中,而只是在buffer中存放每个pixel在input tensor的坐标,也就是从存数据变成了存地址(类似于指针pointer思想),这样不管channel数有多少,存的地址信息始终只有二维,极大的降低了buffer的计算和存储开销,如下图:

图2 indirect convolution

当然,由于buffer中存的是地址信息,因此不能直接和filter做矩阵乘法,所以就只能通过在buffer的行间进行循环,根据该行的pointer找到对应的输入数据,再将输入数据与kernel相乘,并与之前循环的结果拼接起来,从而间接的实现矩阵乘法,因此叫做indirection buffer。

对于不同的卷积步长,只需要将不同步长对应的卷积patch位置确定即可。而对于padding策略,将指向填充位置的pointer对应的输入pixel的向量值全部设置为0。

间接卷积算法的缺点

间接卷积算法作为GEMM-BASED CNN算法的一种改进,能极大的提升计算效率,但是存在以下几个限制:

1. 这个算法是为NHWC layout设计的,也就是说应用范围比较窄,不能和目前的主流方法相比。

2. 算法适用于前向传播中的卷积操作,而在反向传播中作用不大,不及基于col2im和row2im的算法。

3. 具有和GEMM相同的缺点,在深度小卷积核的卷积操作中效率并不好。

实验测试结果

Efficient Deep Learning for Computer Vision主要聚焦于如何将深度学习部署到移动设备上,因此本文的工作主要在移动设备和移动芯片上进行测试,结果如下:

可以看到一旦步长增加,那么Indirect convolution带来的性能提升就会明显下降,这是因为步长越大,在原始的GEMM算法中重复计算的量就会减小,因此原始GEMM的性能本身就会提升,而indirect convolution并不受益于步长增加。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Google
    +关注

    关注

    5

    文章

    1801

    浏览量

    60264
  • 算法
    +关注

    关注

    23

    文章

    4760

    浏览量

    97142

原文标题:基于GEMM实现的CNN底层算法被改?Google提出全新间接卷积算法

文章出处:【微信号:rgznai100,微信公众号:rgznai100】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    CNN卷积神经网络设计原理及在MCU200T上仿真测试

    CNN算法简介 我们硬件加速器的模型为Lenet-5的变型,网络粗略分共有7层,细分共有13层。包括卷积,最大池化层,激活层,扁平层,全连接层。下面是各层作用介绍: 卷积层:提取特征。“不全
    发表于 10-29 07:49

    基于E203 RISC-V的音频信号处理系统 -ANC算法简介

    ANC算法介绍 主动降噪系统在移动终端中应用最广,例如摩托的丽音、三星Diamond Voice、苹果的Micphone Array等。最早提出使用声波干涉原理进行噪声消除概念的是Rayleigh
    发表于 10-28 07:50

    卷积运算分析

    卷积运算的基础运算是乘加运算(MAC,Multiplication and Accumulation),本文设计了基本运算单元PE模块来实现MAC运算。对于卷积运算而言,一次性至少处理一个感受域规模
    发表于 10-28 07:31

    炬芯科技正式支持Google Find Hub

    9月19日,炬芯科技宣布正式支持 Google Find Hub。依托炬芯科技在低功耗无线技术领域的深厚积累与持续突破,助力各类 AloT 终端设备高效、稳定地接入 Google 庞大的设备定位网络
    的头像 发表于 09-19 16:15 812次阅读

    【书籍评测活动NO.64】AI芯片,从过去走向未来:《AI芯片:科技探索与AGI愿景》

    到AGI,一起来探索AI芯片 本书从创新视角出发,系统梳理了AI芯片的前沿技术与未来方向,串联起从算法到系统的实现路径,全景式展现AI芯片的技术原理与应用场景。 书中核心内容可分为算法创新、工艺创新、材料
    发表于 07-28 13:54

    基于FPGA的SSD目标检测算法设计

    。有名的LeNet-5手写数字识别网络,精度达到99%,AlexNet模型和VGG-16模型的提出突破了传统图像识别算法,GooLeNet和ResNet推动了卷积神经网络的应用。
    的头像 发表于 07-10 11:12 2215次阅读
    基于FPGA的SSD目标检测<b class='flag-5'>算法</b>设计

    CES Asia 2025蓄势待发,聚焦低空经济与AI,引领未来产业新变革

    。 低空经济,作为新兴的战略性产业,正处于蓬勃发展的黄金时期。随着相关技术的不断突破,低空经济的应用场景得到了极大拓展。新型的载人飞行器不断涌现,其设计更加人性化、功能更加多元化,为未来的低空出行提供了更多
    发表于 07-09 10:29

    Google Fast Pair服务简介

    Google Fast Pair 是一项利用低功耗蓝牙(Bluetooth LE)技术,实现设备间快速安全配对及提供多种服务的协议。其主要功能包括: 设备处于配对模式时,显示半页通知,便于用户进行
    发表于 06-29 19:28

    Google发布最新AI模型Gemma 3

    Gemma 开放模型系列是 Google 推动实用 AI 技术普惠大众的重要基石。上个月,Gemma 迎来了首个生日。回望过去一年,其成果斐然:全球下载量突破 1 亿,社区欣欣向荣,衍生模型超过 6 万个1。Gemma 生态的蓬勃发展,不断激发我们的创新热情。
    的头像 发表于 03-18 09:51 1462次阅读

    如何使用MATLAB实现一维时间卷积网络

    本文对一维卷积操作进行介绍,包括一维扩展卷积和一维因果卷积,以及 MATLAB 对一维卷积的支持情况。在最后通过一个实例演示如何在 MATLAB 中将一维
    的头像 发表于 03-07 09:15 1665次阅读
    如何使用MATLAB实现一维时间<b class='flag-5'>卷积</b>网络

    如何开发一款Google Find My Tag?

    My 网络的配件(如 AirTag)。通过结合 GPS、蓝牙和众包网络,Find My 提供了高精度的定位功能,同时保护用户隐私 Google Find My网络同样也是由数亿台运行较新版本
    发表于 03-05 17:39

    FPGA+AI王炸组合如何重塑未来世界:看看DeepSeek东方神秘力量如何预测......

    突破40%;数据中心加速卡市场复合增长率达34%...... 2. 万亿级市场的四大赛道1) 智能驾驶新基建:单辆L4自动驾驶车搭载12-16片FPGA;动态可重构技术实现毫秒级算法切换
    发表于 03-03 11:21

    FPGA图像处理基础----实现缓存卷积窗口

    素行进行缓存与变换。由于在图像处理过程中,经常会使用到卷积,因此需要对图像进行开窗,然后将开窗得到的局部图像与卷积核进行卷积,从而完成处理。   图像数据一般按照一定的格式和时序进行传输,在我进行实验的时候,处理图像时,让其以V
    的头像 发表于 02-07 10:43 1414次阅读
    FPGA图像处理基础----实现缓存<b class='flag-5'>卷积</b>窗口

    如何利用Google Play实现出海应用增长

    本文内容来自于活动演讲内容的整理和总结,演讲人分别: Google Play 应用增长顾问 Tammy Taw,Google Play 商业拓展经理 Christina Li,Google Play
    的头像 发表于 01-22 11:52 1094次阅读
    如何利用<b class='flag-5'>Google</b> Play实现出海应用增长

    Google Play如何帮助您的应用变现

    本文内容来自于活动演讲内容的整理和总结,演讲人分别为: Google Play 资深产品经理 Kalpa Raj 和 Google Play 商业拓展经理 Maya Ma   在 Google
    的头像 发表于 01-21 11:21 1090次阅读
    <b class='flag-5'>Google</b> Play如何帮助您的应用变现