卷积神经网络CNN
本文介绍了图像处理和卷积神经网络(CNN)的基础知识。图像由像素组成,可表示为H×W×C的张量。CNN通过卷积层自动提取图像特征,包含卷积、激活、池化和全连接层。卷积层使用卷积核进行特征提取,具有参数共享和局部感知特性;池化层则用于降维。文章详细解释了卷积运算、padding操作、多通道处理以及特征图尺寸计算方法,并对比了最大池化和平均池化的区别。这些内容是理解CNN处理图像数据的关键基础。
一.图像概念
1.像素(Pixel)
图像是由许多小点组成的,这些小点被称为像素,每个像素表示图像中的一个颜色值(如RGB三通道值范围0-255)
2.通道
图像可以有一个或多个通道:
灰度图(Grayscale): 1个通道
彩色图(RGB):3个通道
3.图像的张量表示
H:高度,W:宽度,C:通道数
numpy (H,W,C)
pytorch: (C,H,W)
4.图像的显示与存储的API
matplotlib.pyplot.imshow() :显示图像
matplotlib.pyplot.imread(): 读取图片像素等信息
matplotlib.pyplot.imsave(): 保存图片
注意: 图像的形状是(H,W,C),读取画图保存需要用这种形式的numpy数据
二.CNN介绍
核心思想:是通过卷积操作自动提取图像的局部特征,并逐层构建更复杂的语义信息。
1.概念
卷积神经网络(Convolutional Neural Network)是含有卷积层的神经网络.
Convolutional neural network
2.组成结构
输入层:输入图像、视频、音频等
卷积层(Convolutional Layer):提取图像特征图
激励层(Activation Function):引入非线性能力,常用 ReLU
池化层(Pooling Layer):压缩特征图尺寸,减少计算量,增强平移不变性
全连接层(Fully Connected Layer):对提取的特征进行分类或回归
基本流程:输入图像 → 卷积层 → 激活函数 → 池化层 → 多个卷积块 → 全连接层 → 输出结果
3.CNN的优势(图解)

4.典型CNN网络结构示例(图解)

三.卷积层
1.作用
特征提取:自动从原始输入中提取有用的局部特征
参数共享:同一个卷积核在输入上滑动,共享参数,减少模型复杂度和计算量
局部感知:每个神经元只关注输入的一个局部区域,模拟人类视觉的局部感知机制
平移不变性:对输入中位置不敏感的特征具有一定的鲁棒性
2.API
1D卷积层: tf.keras.layers.Conv1D,torch.nn.Conv1d
2D卷积层: tf.keras.layers.Conv2D,torch.nn.Conv2d
最大池化 1D:torch.nn.MaxPool1d
全连接层:torch.nn.Linear
激活函数:torch.nn.functional.relu, torch.nn.Sigmoid
展平操作:x.view() 或 x.flatten(),例子:x = x.view(x.size(0), -1)
例:conv = nn.Conv2d(in_channels, out_channels, kernel_size, stride, padding)
in_channels:输入图像的通道数
out_channels:卷积核/神经元个数
kernel_size:卷积核形状
stride:步长, 默认1
padding:填充圈数, 默认0
3.卷积核/滤过器
本质是一个小型数值矩阵,形状通常是k x k(如3x3),也可以是其他形状的,在输入数据上滑动并进行局部加权求和,用于提取输入中的局部特征。在卷积神经网络中相当于神经元,有多少个卷积核就是有多少个神经元
4.卷积基本计算
根据卷积核大小进行点乘运算、点乘运算的结果=新特征图1个特征值、特征图的窗口矩阵=卷积核大小。
图解:

5.多卷积运算
如RGB图像有3个通道, 卷积核也有3个通道,每个通道进行点乘运算, 然后3个点乘结果求和=新特征图1个特征值(像素点)
图解:
单卷积核多通道

多通道多卷积核:
6.padding
特征图周围补0,防止边缘信息丢失(计算多次),新特征图和原特征图形状保持一致
图解:左边是填充了一圈的特征图,右边是进行了卷积计算的新图,卷积核核大小是3x3

7.特征图大小计算(重点)
图解(最直接明了):

四.池化层
1.作用
降维,只在H,W维度进行降维,不改变通道数C的个数
和卷积层的核心区别:没有神经元(卷积核)参与
2.池化计算
最大化池(例:nn.MaxPool2d(kernel_size=2, stride=2, padding=1))
作用:提取窗口范围内的最大特征值
平均化池(例:nn.AvgPool2d(kernel_size=2, stride=1, padding=0))
作用:提取窗口范围内的平均特征值
图解:

更多推荐


所有评论(0)