极智AI | 一文看懂Img2Col卷积加速算法

本文涉及的产品
视觉智能开放平台,分割抠图1万点
视觉智能开放平台,图像资源包5000点
视觉智能开放平台,视频资源包5000点
简介: 本教程详细解释了直接卷积计算与Img2Col卷积加速算法的实现原理。

本教程详细解释了直接卷积计算与Img2Col卷积加速算法的实现原理。


1、直接卷积计算

直接卷积计算一定是很直接的,也是大多数人学习卷积神经网络时所直观了解的卷积计算方式。

直接卷积是按照卷积层的计算特性进行计算,卷积核中的权重矩阵在经过补零后的输入特征图中滑动,每次在输入特征图中会划出一个与权重矩阵大小一致的子矩阵与之进行对应元素的相乘并累加(点积运算)。

具体来讲,对于只有一个通道的输入特征图矩阵 X(5 x 5),现在共有两个卷积核,其中卷积核1的权重为 W1,b1偏置中的所有元素为0;卷积核2的权重为 W2,b2偏置中的所有元素为1;两个卷积核的权重都是 3 x 3 的矩阵,卷积核移动的步长为2,pad 为1。

进行卷积计算时,首先对于输入特征矩阵 X 进行pad补零,由于pad 为1,故将特征矩阵向外延伸一圈,得到矩阵 Xp。

正式计算时,权重 W1 在 Xp 矩阵中的初始位置 X1 开始计算,将权重元素与 Xp 中输入特征子矩阵 X1 处的所有元素进行对应的点积操作,再加上偏置后得到输出特征矩阵 Y1 的第一个元素的值 -2,其计算过程是:0 x 1 + 0 x 0 + 0 x 1 + 0 x 0 + 1 x 0 + 1 x (-1) + 0 x 0 + 1 x 0 + 1 x (-1) + 0 = -2。计算完成 Y1 的第一个元素后开始行滑动计算,权重 W1 矩阵向右滑动2个元素的步长,这时权重 W1 与 矩阵 Xp 中输入特征子矩阵 X2 重叠,进行对应元素的点积并加上偏置,得到输出特征矩阵 Y1 的第二个元素的值 -3。以此类推,完成输出特征矩阵 Y1 的第一行的所有元素的计算。在进行 Y1矩阵第二行的元素计算时,权重 W1 从输入特征子矩阵 X1 的位置垂直向下滑动 2个元素的步长,计算输出特征矩阵 Y1 中第二行的第一个元素值 1。卷积核移动的步长在输入特征图中的横向和纵向移动上都发挥着作用。由此经过9次的权重与输入特征子矩阵的点积运算后,得到输出特征图 Y1 的所有元素值。对于卷积核2可使用同样方法得到输出特征图 Y2。

至此,通过直接卷积的方式完成了输入特征图和权重矩阵的卷积计算,在实际中,每个卷积核有多个通道,需要使用每一卷积核中一个通道上的权重矩阵对同一通道中输入特征图进行卷积运算,完成该卷积核中所有通道的卷积运算后再把所有通道的结果累加起来作为该卷积核的最终输出特征图。


2、Img2Col 卷积加速算法

Img2Col 是通过矩阵乘法来实现卷积,这种方法被广泛应用在 CPU、GPU等一些具有通用编程性的计算芯片上。

首先将卷积层中的输入特征图和卷积核权重矩阵展开,然后将卷积中输入特征子矩阵和权重矩阵对应元素的点积操作转换成矩阵运算中行与列向量的乘加运算,这样就能够将卷积层中的大量卷积计算转换成矩阵运算本身的并行度。因此,处理器中只需要高效地实现矩阵乘法,就能够高效的进行卷积运算。CPU 和 GPU 都提供专门的基本线性代数程序集库(BLAS) 来高效的实现向量和矩阵运算。

Img2Col 的展开方法是将每一个输入特征子矩阵展开成一行 (也可以是一列),生成新的输入特征矩阵,其行数和输入特征子矩阵的个数相同。同时将卷积核中的权重矩阵展开成一列 (也可以是一行),多个权重矩阵可以排列成多列。

将输入特征图 Xp 通过 Img2Col 展开成新的矩阵 XI2c 的第一行,输入特征子矩阵 X2 展开成第二行,因为共有9个输入特征子矩阵,所有以此方法展开成 9 行,并生成最终的 XI2c 矩阵。同理,可将第 2 个卷积核的权重矩阵 W1、W2 按照列展开成矩阵 WI2c,偏置量矩阵 bI2c 也可以同样展开得到。接下来进行矩阵乘法运算,将 XI2c 的第1行 与 WI2c的第一列进行计算,再加上偏置便可得到 YI2c 的第1个元素值,依次计算下去得到整个输出特征矩阵 YI2c。

Img2Col 的作用就是将卷积通过矩阵乘法来计算,从而能在计算过程中将需要计算的特征子矩阵存放在连续的内存中,有利于一次将所需要计算的数据直接按照需要的格式取出进行计算,这样便减少了内存访问的次数,从而减小了计算的整体时间。而直接卷积计算时,由于输入特征子矩阵存放在内存中地址有重叠且不连续的空间上,在计算时有可能需要多次访问内存。由于多次访问内存直接增加了数据传输时间,从而进一步影响了卷积计算速度,因此 Img2Col 在卷积加速计算中起着促进作用,为卷积计算转换成矩阵乘法提供了必要的基础。

若卷积核偏置值为常数时,还可以对加偏置的计算进行优化。将偏置值和卷积核的权重矩阵进行合并,在输入特征矩阵中添加系数,直接通过矩阵乘法一次性实现矩阵乘法和累加偏置的计算。

在 XI2c 矩阵添加系数矩阵 I,I 矩阵为 9 x 1 矩阵且其元素全为 1;在 WI2c 矩阵中添加偏置矩阵 b,其中 b = [0 1]。则计算公式为:

通过增加矩阵的维度,可以仅仅使用矩阵乘法进行计算,在硬件上节省了计算资源,简化了计算步骤。

现代处理器中卷积还可以通过诸如快速傅里叶变换 (FFT) 和 Winograd 算法等其他方式实现,后面也会专门写文章来进行介绍。这些方式都是将复杂的卷积运算等价变换成另一个空间的简单运算,从而降低了计算复杂度。值得一提的是,英伟达公司提供的 cuDNN 库中的卷积部分就是使用了 Winograd 算法。一般在卷积神经网络中,卷积层的参数量和计算量占了整个网络的绝大多数,因此合理加速卷积层的计算能够极大提升整个网络的计算速度和系统的执行效率。


logo_show.gif

相关文章
|
16天前
|
人工智能 编解码 算法
DeepSeek加持的通义灵码2.0 AI程序员实战案例:助力嵌入式开发中的算法生成革新
本文介绍了通义灵码2.0 AI程序员在嵌入式开发中的实战应用。通过安装VS Code插件并登录阿里云账号,用户可切换至DeepSeek V3模型,利用其强大的代码生成能力。实战案例中,AI程序员根据自然语言描述快速生成了C语言的base64编解码算法,包括源代码、头文件、测试代码和CMake编译脚本。即使在编译错误和需求迭代的情况下,AI程序员也能迅速分析问题并修复代码,最终成功实现功能。作者认为,通义灵码2.0显著提升了开发效率,打破了编程语言限制,是AI编程从辅助工具向工程级协同开发转变的重要标志,值得开发者广泛使用。
7887 68
DeepSeek加持的通义灵码2.0 AI程序员实战案例:助力嵌入式开发中的算法生成革新
|
11天前
|
数据采集 人工智能 编解码
算法系统协同优化,vivo与港中文推出BlueLM-V-3B,手机秒变多模态AI专家
BlueLM-V-3B是由vivo与香港中文大学共同研发的多模态大型语言模型,专为移动设备优化。它通过算法和系统协同优化,实现了高效部署和快速生成速度(24.4 token/s),并在OpenCompass基准测试中取得优异成绩(66.1分)。模型小巧,语言部分含27亿参数,视觉编码器含4000万参数,适合移动设备使用。尽管如此,低端设备可能仍面临资源压力,实际应用效果需进一步验证。论文链接:https://arxiv.org/abs/2411.10640。
31 9
|
20天前
|
人工智能 算法
细思极恐,GPT-4竟串谋AI欺骗人类!哈佛PSU重磅揭秘算法共谋,AI教父预言正成真
近日,哈佛大学和宾夕大合著的重磅论文揭示,基于大型语言模型(如GPT-4)的算法可能自主串谋,损害消费者利益。研究发现,这些算法在虚拟市场中能迅速达成默契,提高价格以获取更高利润,类似于人类垄断行为。这一现象曾被DeepMind联合创始人Shane Legg预言,如今成为现实。论文呼吁加强对AI的监管,确保其透明性和可解释性,以防止潜在风险,并促进AI的可持续发展。
27 6
|
13天前
|
机器学习/深度学习 自然语言处理 算法
生成式 AI 大语言模型(LLMs)核心算法及源码解析:预训练篇
生成式 AI 大语言模型(LLMs)核心算法及源码解析:预训练篇
113 0
|
2月前
|
机器学习/深度学习 人工智能 算法
Transformer打破三十年数学猜想!Meta研究者用AI给出反例,算法杀手攻克数学难题
《PatternBoost: Constructions in Mathematics with a Little Help from AI》提出了一种结合传统搜索算法和Transformer神经网络的PatternBoost算法,通过局部搜索和全局优化交替进行,成功应用于组合数学问题。该算法在图论中的Ramsey数研究中找到了更小的反例,推翻了一个30年的猜想,展示了AI在数学研究中的巨大潜力,但也面临可解释性和通用性的挑战。论文地址:https://arxiv.org/abs/2411.00566
97 13
|
2月前
|
机器学习/深度学习 存储 人工智能
淘天算法工程师玩转《黑神话》,多模态大模型如何成为天命AI
淘天集团未来生活实验室的算法工程师们以ARPG游戏《黑神话:悟空》为平台,探索多模态大模型(VLM)在仅需纯视觉输入和复杂动作输出场景中的能力边界。他们提出了一种名为VARP的新框架,该框架由动作规划系统和人类引导的轨迹系统组成,成功在90%的简单和中等难度战斗场景中取得胜利。研究展示了VLMs在传统上由强化学习主导的任务中的潜力,并提供了宝贵的人类操作数据集,为未来研究奠定了基础。
|
10天前
|
人工智能
【活动报名】​AI应用启航workshop:瓴羊+通义助力企业迈入AI驱动的数智营销时代
【活动报名】​AI应用启航workshop:瓴羊+通义助力企业迈入AI驱动的数智营销时代
|
8天前
|
人工智能 弹性计算 Ubuntu
从零开始即刻拥有 DeepSeek-R1 满血版并使用 Dify 部署 AI 应用
本文介绍了如何使用阿里云提供的DeepSeek-R1大模型解决方案,通过Chatbox和Dify平台调用百炼API,实现稳定且高效的模型应用。首先,文章详细描述了如何通过Chatbox配置API并开始对话,适合普通用户快速上手。接着,深入探讨了使用Dify部署AI应用的过程,包括选购云服务器、安装Dify、配置对接DeepSeek-R1模型及创建工作流,展示了更复杂场景下的应用潜力。最后,对比了Chatbox与Dify的输出效果,证明Dify能提供更详尽、精准的回复。总结指出,阿里云的解决方案不仅操作简便,还为专业用户提供了强大的功能支持,极大提升了用户体验和应用效率。
598 18
从零开始即刻拥有 DeepSeek-R1 满血版并使用 Dify 部署 AI 应用
|
1天前
|
人工智能 前端开发 JavaScript
AI程序员:通义灵码 2.0应用VScode前端开发深度体验
AI程序员:通义灵码 2.0应用VScode前端开发深度体验,在软件开发领域,人工智能技术的融入正深刻改变着程序员的工作方式。通义灵码 2.0 作为一款先进的 AI 编程助手,与广受欢迎的代码编辑器 Visual Studio Code(VScode)相结合,为前端开发带来了全新的可能性。本文将详细分享通义灵码 2.0 在 VScode 前端开发环境中的深度使用体验。
42 2
|
8天前
|
人工智能 Java API
Spring AI与DeepSeek实战一:快速打造智能对话应用
在 AI 技术蓬勃发展的今天,国产大模型DeepSeek凭借其低成本高性能的特点,成为企业智能化转型的热门选择。而Spring AI作为 Java 生态的 AI 集成框架,通过统一API、简化配置等特性,让开发者无需深入底层即可快速调用各类 AI 服务。本文将手把手教你通过spring-ai集成DeepSeek接口实现普通对话与流式对话功能,助力你的Java应用轻松接入 AI 能力!虽然通过Spring AI能够快速完成DeepSeek大模型与。
235 11

热门文章

最新文章