首页 星云 工具 资源 星选 资讯 热门工具
:

PDF转图片 完全免费 小红书视频下载 无水印 抖音视频下载 无水印 数字星空

神经网络之卷积篇:详解三维卷积(Convolutions over volumes)

编程知识
2024年08月15日 09:02

详解三维卷积

从一个例子开始,假如说不仅想检测灰度图像的特征,也想检测RGB彩色图像的特征。彩色图像如果是6×6×3,这里的3指的是三个颜色通道,可以把它想象成三个6×6图像的堆叠。为了检测图像的边缘或者其他的特征,不是把它跟原来的3×3的过滤器做卷积,而是跟一个三维的过滤器,它的维度是3×3×3,这样这个过滤器也有三层,对应红绿、蓝三个通道。

给这些起个名字(原图像),这里的第一个6代表图像高度,第二个6代表宽度,这个3代表通道的数目。同样过滤器也有一个高,宽和通道数,并且图像的通道数必须和过滤器的通道数匹配,所以这两个数(紫色方框标记的两个数)必须相等。接下来,就会知道这个卷积操作是如何进行的了,这个的输出会是一个4×4的图像,注意是4×4×1,最后一个数不是3了。

研究下这背后的细节,首先先换一张好看的图片。这个是6×6×3的图像,这个是3×3×3的过滤器,最后一个数字通道数必须和过滤器中的通道数相匹配。为了简化这个3×3×3过滤器的图像,不把它画成3个矩阵的堆叠,而画成这样,一个三维的立方体。

为了计算这个卷积操作的输出,要做的就是把这个3×3×3的过滤器先放到最左上角的位置,这个3×3×3的过滤器有27个数,27个参数就是3的立方。依次取这27个数,然后乘以相应的红绿蓝通道中的数字。先取红色通道的前9个数字,然后是绿色通道,然后再是蓝色通道,乘以左边黄色立方体覆盖的对应的27个数,然后把这些数都加起来,就得到了输出的第一个数字。

如果要计算下一个输出,把这个立方体滑动一个单位,再与这27个数相乘,把它们都加起来,就得到了下一个输出,以此类推。

那么,这个能干什么呢?举个例子,这个过滤器是3×3×3的,如果想检测图像红色通道的边缘,那么可以将第一个过滤器设为\(\begin{bmatrix}1 & 0 & - 1 \\ 1 & 0 & - 1 \\ 1 & 0 & - 1 \\\end{bmatrix}\),和之前一样,而绿色通道全为0,\(\begin{bmatrix} 0& 0 & 0 \\ 0 &0 & 0 \\ 0 & 0 & 0 \\\end{bmatrix}\),蓝色也全为0。如果把这三个堆叠在一起形成一个3×3×3的过滤器,那么这就是一个检测垂直边界的过滤器,但只对红色通道有用。

或者如果不关心垂直边界在哪个颜色通道里,那么可以用一个这样的过滤器,\(\begin{bmatrix}1 & 0 & - 1 \\ 1 & 0 & - 1 \\ 1 & 0 & - 1 \\ \end{bmatrix}\)\(\begin{bmatrix}1 & 0 & - 1 \\ 1 & 0 & - 1 \\ 1 & 0 & - 1 \\ \end{bmatrix}\)\(\begin{bmatrix}1 & 0 & - 1 \\ 1 & 0 & - 1 \\ 1 & 0 & - 1 \\\end{bmatrix}\),所有三个通道都是这样。所以通过设置第二个过滤器参数,就有了一个边界检测器,3×3×3的边界检测器,用来检测任意颜色通道里的边界。参数的选择不同,就可以得到不同的特征检测器,所有的都是3×3×3的过滤器。

按照计算机视觉的惯例,当输入有特定的高宽和通道数时,过滤器可以有不同的高,不同的宽,但是必须一样的通道数。理论上,过滤器只关注红色通道,或者只关注绿色或者蓝色通道也是可行的。

再注意一下这个卷积立方体,一个6×6×6的输入图像卷积上一个3×3×3的过滤器,得到一个4×4的二维输出。

现在已经了解了如何对立方体卷积,还有最后一个概念,对建立卷积神经网络至关重要。就是,如果不仅仅想要检测垂直边缘怎么办?如果同时检测垂直边缘和水平边缘,还有45°倾斜的边缘,还有70°倾斜的边缘怎么做?换句话说,如果想同时用多个过滤器怎么办?

让这个6×6×3的图像和这个3×3×3的过滤器卷积,得到4×4的输出。(第一个)这可能是一个垂直边界检测器或者是学习检测其他的特征。第二个过滤器可以用橘色来表示,它可以是一个水平边缘检测器。

所以和第一个过滤器卷积,可以得到第一个4×4的输出,然后卷积第二个过滤器,得到一个不同的4×4的输出。做完卷积,然后把这两个4×4的输出,取第一个把它放到前面,然后取第二个过滤器输出,把它画在这,放到后面。所以把这两个输出堆叠在一起,这样就都得到了一个4×4×2的输出立方体,可以把这个立方体当成,重新画在这,就是一个这样的盒子,所以这就是一个4×4×2的输出立方体。它用6×6×3的图像,然后卷积上这两个不同的3×3的过滤器,得到两个4×4的输出,它们堆叠在一起,形成一个4×4×2的立方体,这里的2的来源于用了两个不同的过滤器。

总结一下维度,如果有一个\(n \times n \times n_{c}\)(通道数)的输入图像,在这个例子中就是6×6×3,这里的\(n_{c}\)就是通道数目,然后卷积上一个\(f×f×n_{c}\),这个例子中是3×3×3,按照惯例,这个(前一个\(n_{c}\))和这个(后一个\(n_{c}\))必须数值相同。然后就得到了\((n-f+1)×(n-f+1)×n_{c^{'}}\),这里\(n_{c^{'}}\)其实就是下一层的通道数,它就是用的过滤器的个数,在例子中,那就是4×4×2。写下这个假设时,用的步幅为1,并且没有padding。如果用了不同的步幅或者padding,那么这个\(n-f+1\)数值会变化。

这个对立方体卷积的概念真的很有用,现在可以用它的一小部分直接在三个通道的RGB图像上进行操作。更重要的是,可以检测两个特征,比如垂直和水平边缘或者10个或者128个或者几百个不同的特征,并且输出的通道数会等于要检测的特征数。

对于这里的符号,一直用通道数(\(n_{c}\))来表示最后一个维度,在文献里大家也把它叫做3维立方体的深度。这两个术语,即通道或者深度,经常被用在文献中。但觉得深度容易让人混淆,因为通常也会说神经网络的深度。所以,在这里会用通道这个术语来表示过滤器的第三个维度的大小。

From:https://www.cnblogs.com/oten/p/18360309
本文地址: http://www.shuzixingkong.net/article/1116
0评论
提交 加载更多评论
其他文章 canvas实现手动绘制矩形
开场白 虽然在实际的开发中我们很少去绘制流程图 就算需要,我们也会通过第3方插件去实现 下面我们来简单实现流程图中很小的一部分 手动绘制矩形 绘制一个矩形的思路 我们这里绘制矩形 会使用到canvas.strokeRect(x,y, w, h)方法绘制一个描边矩形 x:矩形起点的 x 轴坐标。 y:
canvas实现手动绘制矩形 canvas实现手动绘制矩形 canvas实现手动绘制矩形
《痞子衡嵌入式半月刊》 第 106 期
痞子衡嵌入式半月刊: 第 106 期 这里分享嵌入式领域有用有趣的项目/工具以及一些热点新闻,农历年分二十四节气,希望在每个交节之日准时发布一期。 本期刊是开源项目(GitHub: JayHeng/pzh-mcu-bi-weekly),欢迎提交 issue,投稿或推荐你知道的嵌入式那些事儿。 上期回
《痞子衡嵌入式半月刊》 第 106 期 《痞子衡嵌入式半月刊》 第 106 期 《痞子衡嵌入式半月刊》 第 106 期
Binance 如何使用 Quickwit 构建 100PB 日志服务(Quickwit 博客)
三年前,我们开源了 Quickwit,一个面向大规模数据集的分布式搜索引擎。我们的目标很宏大:创建一种全新的全文搜索引擎,其成本效率比 Elasticsearch 高十倍,配置和管理显著更简单,并且能够扩展到 PB 级别的数据。 https://quickwit.io/blog/quickwit-f
Binance 如何使用 Quickwit 构建 100PB 日志服务(Quickwit 博客) Binance 如何使用 Quickwit 构建 100PB 日志服务(Quickwit 博客) Binance 如何使用 Quickwit 构建 100PB 日志服务(Quickwit 博客)
如何在实验室信息管理系统实现不定行,不定列检测?
前言 实验室信息管理系统,即 LIMS(Laboratory Information Management System),它是由计算机和应用软件组成,能够完成实验室数据和信息的收集、分析、报告和管理。早期的 LIMS 系统大多基于计算机局域网,专门针对一个实验室的整体环境而设计,是一个包括了信号采
如何在实验室信息管理系统实现不定行,不定列检测? 如何在实验室信息管理系统实现不定行,不定列检测? 如何在实验室信息管理系统实现不定行,不定列检测?
Deformable DETR:商汤提出可变型 DETR,提点又加速 | ICLR 2021 Oral
DETR能够消除物体检测中许多手工设计组件的需求,同时展示良好的性能。但由于注意力模块在处理图像特征图方面的限制,DETR存在收敛速度慢和特征分辨率有限的问题。为了缓解这些问题,论文提出了Deformable DETR,其注意力模块仅关注参考点周围的一小组关键采样点,通过更少的训练次数实现比DETR
Deformable DETR:商汤提出可变型 DETR,提点又加速 | ICLR 2021 Oral Deformable DETR:商汤提出可变型 DETR,提点又加速 | ICLR 2021 Oral Deformable DETR:商汤提出可变型 DETR,提点又加速 | ICLR 2021 Oral
PHP转Go系列 | ThinkPHP与Gin框架之打造基于WebSocket技术的消息推送中心
在早些年前客户端想要实时获取到最新消息,都是使用定时长轮询的方式,不断的从服务器上获取数据,这种粗暴的骚操作实属不雅。
PHP转Go系列 | ThinkPHP与Gin框架之打造基于WebSocket技术的消息推送中心 PHP转Go系列 | ThinkPHP与Gin框架之打造基于WebSocket技术的消息推送中心 PHP转Go系列 | ThinkPHP与Gin框架之打造基于WebSocket技术的消息推送中心
优化系统性能:深入探讨Web层缓存与Redis应用的挑战与对策
Web层缓存显著提高了应用性能,通过减少重复的数据处理和数据库查询来加快响应时间。Redis作为高效的内存数据结构存储系统,在实现缓存层中发挥了重要作用,它支持各种数据结构,能够迅速存取数据,从而减少数据库负担,提升用户体验。然而,缓存机制也面临挑战,如缓存穿透、缓存击穿和缓存雪崩等问题。缓存穿透通
优化系统性能:深入探讨Web层缓存与Redis应用的挑战与对策
程序员失业日记3:工作真不好找
自从上个月写了失业连载之后,一个月都挺忙的,前几天有小伙伴催更,赶紧再续上一篇。 裁员后一两周,在家基本都是睡到自然醒,悠闲的做个午饭或者晚饭。计划是有了赔偿金之后休息两个月再找工作。开始在深圳周边玩,去了周边的塘朗山、盐田港海边和福田博览园。国庆之后就去了香港玩,2019年去过一次香港,后面疫情就
程序员失业日记3:工作真不好找 程序员失业日记3:工作真不好找