理解1D、2D、3D卷积神经网络的概念

news/2024/11/23 3:13:56/

目录

  • 引言
  • 二维CNN | Conv2D
  • 一维CNN | Conv1D
  • 三维CNN | Conv3D
  • 总结

引言

当我们说卷积神经网络(CNN)时,通常是指用于图像分类的二维CNN。但是,现实世界中还使用了其他两种类型的卷积神经网络,即1维CNN和3维CNN。在本指南中,我们将介绍1D和3D CNN及其在现实世界中的应用。我假设您已经大体上熟悉卷积网络的概念。
初学者可能会理解为1维CNN处理一维的数据,2维CNN处理二维的数据,这是错误的!!!

在卷积神经网络(CNN)中,一维和二维滤波器并不是真正的一维和二维。这是只是描述的惯例。

二维CNN | Conv2D

在Lenet-5架构中首次引入的标准卷积神经网络,其Conv2D通常用于图像数据。之所以称其为2维CNN,是因为内核在数据上沿2维滑动,如下图所示。

内核在图像上滑动
内核在图像上滑动

使用CNN的整体优势在于,它可以使用其内核从数据中提取空间特征,而其他网络则无法做到。例如,CNN可以检测图像中的边缘,颜色分布等,这使得这些网络在图像分类和包含空间属性的其他类似数据中非常强大。

# 以下是在keras中添加Conv2D图层的代码。import kerasfrom keras.layers import Conv2Dmodel = keras.models.Sequential()model.add(Conv2D(1, kernel_size=(3,3), input_shape = (128, 128, 3)))model.summary()

参数input_shape(128、128、3)表示图像的(高度,宽度,深度)。参数kernel_size(3,3)表示内核的(高度,宽度),并且内核深度将与图像的深度相同。

一维CNN | Conv1D

在介绍Conv1D之前,首先给出一个提示。即在Conv1D中,内核沿一维滑动。现在,让我们在此处暂停博客,考虑哪种类型的数据仅需要内核在一个维度上滑动并具有空间特性?
答案是时间序列数据。让我们看一下以下数据。
来自加速度计的序列数据
来自加速度计的序列数据

该数据是从人戴在手臂上的加速度计中收集的。数据表示所有三个轴的加速度。一维CNN可以根据加速度计数据执行活动识别任务,例如人的身姿,行走,跳跃等。此数据有2个维度。第一维是时间步长,其他维是3轴上的加速度值。
下图说明了内核如何在加速度计数据上移动。每行代表某个轴的时间序列加速度。内核只能沿时间轴一维移动。

内核在加速度计数据上滑动
内核在加速度计数据上滑动

# Keras中的Conv1D层
import kerasfrom keras.layers import Conv1Dmodel = keras.models.Sequential()model.add(Conv1D(1, kernel_size=5, input_shape = (120, 3)))model.summary()

参数input_shape(120,3)表示120个时间步,每个时间步中有3个数据点。这3个数据点是x,y和z轴的加速度。参数kernel_size为5,表示内核的宽度,内核高度将与每个时间步中的数据点数相同。
同样,一维CNN也可用于 音频和文本数据因为我们还可以将声音和文本表示为时间序列数据。请参考下面的图片。
文本数据作为时间序列
文本数据作为时间序列

Conv1D广泛应用于感官数据,加速度计数据就是其中之一。

三维CNN | Conv3D

在Conv3D中,内核按3个维度滑动,如下所示。让我们再考虑一下哪种数据类型需要内核在3维上移动?
内核在3D数据上滑动
内核在3D数据上滑动

Conv3D主要用于3D图像数据。例如磁共振成像(MRI)数据。MRI数据被广泛用于检查大脑,脊髓,内部器官等。甲计算机断层扫描(CT)扫描也是三维数据,这是通过组合从身体周围的不同角度拍摄的一系列X射线图像的创建的一个例子。我们可以使用Conv3D对该医学数据进行分类或从中提取特征。
CT扫描和MRI的3D图像的横截面
CT扫描和MRI的3D图像的横截面

# 以下是在keras中添加Conv3D层的代码。
import kerasfrom keras.layers import Conv3Dmodel = keras.models.Sequential()model.add(Conv3D(1, kernel_size=(3,3,3), input_shape = (128, 128, 128, 3)))model.summary()

这里参数Input_shape(128,128,128,3)有4个维度。3D图像是4维数据,其中第四维代表颜色通道的数量。就像平面2D图像具有3维一样,其中3维代表色彩通道。参数kernel_size(3,3,3)表示内核的(高度,宽度,深度),并且内核的第4维与颜色通道相同。

总结

  • 在1D CNN中,内核沿1个方向移动。1D CNN的输入和输出数据是2维的。主要用于时间序列数据。
  • 在2D CNN中,内核沿2个方向移动。2D CNN的输入和输出数据是3维的。主要用于图像数据。
  • 在3D CNN中,内核在3个方向上移动。3D CNN的输入和输出数据是4维的。通常用于3D 图像数据(MRI,CT扫描)。

http://www.ppmy.cn/news/149124.html

相关文章

1D/1D动态规划

介绍 1 D / 1 D 1D/1D 1D/1D动态规划,就是指状态数为 O ( n ) O(n) O(n),转移为 O ( n ) O(n) O(n)的动态规划方程。一般的情况下求解的时间复杂度为 O ( n 2 ) O(n^2) O(n2),但是,通过优化可以使时间复杂度降到 O ( n l o g n ) …

深度学习之3D卷积神经网络

一、概述 3D CNN主要运用在视频分类、动作识别等领域,它是在2D CNN的基础上改变而来。由于2D CNN不能很好的捕获时序上的信息,因此我们采用3D CNN,这样就能将视频中时序信息进行很好的利用。首先我们介绍一下2D CNN与3D CNN的区别。如图1所示…

【一】1D测量 Measuring——meature_pairs()算子

😊😊😊欢迎来到本博客😊😊😊 🌟🌟🌟 Halcon算子太多,学习查找都没有系统的学习查找路径,本专栏主要分享Halcon各类算子含义及用法,有…

【一】1D测量 Measuring——measure_pos()算子

😊😊😊欢迎来到本博客😊😊😊 🌟🌟🌟 Halcon算子太多,学习查找都没有系统的学习查找路径,本专栏主要分享Halcon各类算子含义及用法,有…

基于卡尔曼滤波实现线性目标跟踪

文章目录 前言卡尔曼滤波基本推导运算 实现目标检测卡尔曼预测器ID分配器(跟踪器) 完整代码代码总结 前言 一个需求,在一个稳定的场景当中,实现目标检测计数算法。 任务点: 实现目标检测完成对不同类别的物品进行计数…

用于函数优化的一维 (1D) 测试函数

【翻译自 : One-Dimensional (1D) Test Functions for Function Optimization】 【说明:Jason Brownlee PhD大神的文章个人很喜欢,所以闲暇时间里会做一点翻译和学习实践的工作,这里是相应工作的实践记录,希望能帮到有…

数据结构—链表的相关理论点

链表(linked list)是一种常见的数据结构,用于实现电脑的动态内存分配。链表通过指针相互连接节点(Node),而该节点内保存了数据。 链表通常由头节点(head)和尾节点&#xff0…

vue 单点登录的方法

vue 单点登录的方法 当我们在使用 vue开发项目时,一般都是只有一个用户帐号,如果要实现多个帐号的单点登录,可以使用 Session和 LocalStorage这两个技术。这两个技术在实现单点登录时,都需要有一个用户名和一个密码,而…