极智AI | 谈谈多通道img2col的实现

本文涉及的产品
视觉智能开放平台,视频资源包5000点
视觉智能开放平台,分割抠图1万点
视觉智能开放平台,图像资源包5000点
简介: 大家好,我是极智视界,本文来谈谈 多通道img2col的实现。

大家好,我是极智视界,本文来谈谈 多通道img2col的实现。

邀您加入我的知识星球「极智视界」,星球内有超多好玩的项目实战源码下载,链接:https://t.zsxq.com/0aiNxERDq

我在21年的时候写过一篇文章《【模型推理】一文看懂Img2Col卷积加速算法》,其中用手绘图 (画得比较丑陋) 详细解释了 直接卷积 和 img2col卷积加速算法的实现原理 (ps: 主要是数学原理,有兴趣的同学可以先去看看),其中主要说的输入图是灰度图,也就是单通道图,也就是c为1的图。写这篇主要是做一些延伸,详细解释一下多通道输入图的img2col加速的数学原理。

老生常谈,还是先说一下 img2col卷积加速是什么,img2col卷积加速算法是一种用于加速深度学习中卷积操作的技术,它通过将输入图像转换为一个2D矩阵,其中矩阵的每一列对应于卷积操作的一个感受野。这种转换允许卷积操作作为矩阵乘法来执行,可以使用优化的线性代数库进行高效计算。

下面开始。

首先需要抛个例子,输入图为 [1, 3, 4, 4],以 pytorch nchw 的 layout 来说,也即 n=1, c=3, h=4, w=4,c维也即通道维,为bgr,如下图:

img2col的卷积加速可以看成两个部分,首先是展平,然后是矩阵乘。对于矩阵乘来说,和灰度图的过程一致,反正最后给你展平成什么样了,你就直接乘就行。多通道img2col和单通道img2col的区别就在于怎么展平,对于单通道来说,因为c恒为1,如果不考虑n的话,其实是一个二维到二维的展平过程。而对于多通道来说,c不为1,如果不考虑n的话,其实是一个三维到二维的过程。那么三维到二维该怎么展呢。这其实又会涉及到数据排布,也就是layout,咱们这里默认是在pytorch里操作,所以数据排布按nchw来。那么展平后用图像的示意就是下面这样的。

对于nchw或者nhwc做展平操作的过程,可能很多同学会比较凌乱,其实抓住一个要点就是,比如对于nchw展平,先铺hw再铺c再铺n就行,同理适用于nhwc,就是从右往左看

还是拿n=1来说,其实展平后的特征图长这样:

然后回到img2col的卷积加速实现,就是拿卷积核去滑窗,先拿卷积核 [3, 3, 3, 1],步长为1,填充为0举例,它其实就是这么滑:

这里其实需要注意一点的是所谓的卷积核的维度的含义为 [核宽,核高,in_维度,out_维度],所以很明显就可以看出这里输入的 in_维度 为3 (跟输入的特征图对应),输出的 out_维度 为1,也就是咱们这个特征图经卷积后的c为1

下图很好的诠释了整个推理过程,得到最终的输出为 [1, 1, 2, 2]。

继续举个例子,如果卷积核为 [3, 3, 3, 3] 呢,那将会是这样的,最终输出为 [1, 3, 2, 2],通道为3,如下图展示。


好了,以上分享了 谈谈多通道img2col的实现。希望我的分享能对你的学习有一点帮助。


logo_show.gif


相关文章
|
7月前
|
机器学习/深度学习 存储 人工智能
极智AI | 周易AIPU算法部署仿真测试
本教程详细记录了使用周易 AIPU 进行算法部署仿真测试的方法,带大家尝尝鲜。
298 0
|
7月前
|
人工智能 JSON API
极智AI | 三谈昇腾CANN量化
大家好,我是极智视界,本文介绍一下 三谈昇腾CANN量化。
98 1
|
7月前
|
人工智能 API Python
极智AI | 再谈昇腾CANN量化
大家好,我是极智视界,本文介绍一下 再谈昇腾CANN量化。
149 1
|
7月前
|
人工智能 自然语言处理 算法
极智AI | TensorRT API构建模型推理流程
大家好,我是极智视界,本文介绍一下 TensorRT API 构建模型推理流程。
520 1
|
7月前
|
机器学习/深度学习 传感器 人工智能
极智AI | AI算法修复上世纪老照片 还你祖辈记忆
大家好,我是极智视界,本文介绍一下 用 AI 算法修复模糊老照片的方法。
262 1
|
7月前
|
机器学习/深度学习 人工智能 PyTorch
极智AI | GAN应用于玻璃表面水珠样本生成
大家好,我是极智视界,本文介绍一下 GAN 应用于玻璃表面水珠样本生成的方法。
81 0
极智AI | GAN应用于玻璃表面水珠样本生成
|
7月前
|
人工智能 算法 数据格式
极智AI | 谈谈昇腾CANN量化
大家好,我是极智视界,本文介绍一下 谈谈昇腾CANN量化。
197 0
|
7月前
|
人工智能 Ubuntu C++
极智AI | ncnn模型转换及量化流程
本文介绍一下 ncnn 模型转换及量化流程,以 from_darknet yolov4 为例。
345 0
|
7月前
|
机器学习/深度学习 人工智能 并行计算
极智AI | deepstream6.0部署yolov3和yolov4教程
大家好,我是极智视界,本文介绍了使用 deepstream6.0 部署 yolov3 和 yolov4 的方法。
321 0
|
8天前
|
机器学习/深度学习 人工智能 算法
AI技术在医疗诊断中的应用及前景展望
本文旨在探讨人工智能(AI)技术在医疗诊断领域的应用现状、挑战与未来发展趋势。通过分析AI技术如何助力提高诊断准确率、缩短诊断时间以及降低医疗成本,揭示了其在现代医疗体系中的重要价值。同时,文章也指出了当前AI医疗面临的数据隐私、算法透明度等挑战,并对未来的发展方向进行了展望。

热门文章

最新文章