卷积神经网络CNN

发布于:2025-06-21 ⋅ 阅读:(14) ⋅ 点赞:(0)

一、图像概念

图像是人类视觉的基础,是自然景物的客观反映,是人类认识世界和人类本身的重要源泉。

简单讲:图像是由像素点组成的,每个像素点的取值范围在[0,255]。

像素值越接近于0,颜色越暗,接近于黑色;像素值越接近255,颜色越亮,接近于白色。

在计算机中,按照颜色和灰度的多少可以将图像分为四种基本类型:

①二值图像 ②灰度图像 ③索引图像 ④真彩色RGB图像(深度学习中使用较多)。

图像类型 通道数 像素值范围 主要特点 常见用途
二值图像 1通道 0或1 每个像素只有黑白两种值 形态学操作、二值化、轮廓检测
灰度图像 1通道 0到255 每个像素表示灰度(亮度) 图像预处理、物体检测、人脸识别
索引图像 1通道 0到255(索引) 像素值为颜色表的索引,颜色表决定实际颜色 存储压缩、较少颜色的图像表示
RGB图像 3通道(R、G、B) 0到255 每个像素由红绿蓝三个通道组成 普通色彩图像显示、图像处理与分析

图片的表示:

在numpy中:(H,W,C)

在pytorch中:(C,H,W)

三个关键词含义:① 通道:Channel        单位:个     

                             ② 高:Height        单位:像素

                             ③ 宽:Width        单位:像素

图像加载:

图像是通过1个二维矩阵或3个二维矩阵表示,矩阵的值就是像素点(特征值);

三大API:

imread()--读取图片像素等信息;imshow()--根据像素等信息画图;imsave()--保存图片。

# 导包
import numpy as np
import matplotlib.pyplot as plt

# TODO 1.绘制黑色图像
# 准备数据
n1 = np.zeros(shape=[2, 2, 3])
print(n1)
# 画图
plt.imshow(n1)
plt.show()

# TODO 2.绘制白色图像
# 准备数据
n2 = np.full(shape=[2, 2, 3], fill_value=255)
print(n2)
# 画图
plt.imshow(n2)
plt.show()

# TODO 3.绘制彩色图像
# 加载数据
n3 = plt.imread('data/img.jpg')
print(n3)
plt.imshow(n3)
plt.show()
# 保存图像
plt.imsave('data/img_save.jpg', n3)

二、CNN介绍

概念:包含卷积层和池化层的神经网络计算模型。

组成:输入层、卷积层、激励层、池化层、全连接层。

其中输入层需要输入图、视频、音频;卷积层用于提取图像特征;激励层用于激活函数;池化层用于降低卷积层特征图维度;全连接层数据是二维数据集,一张图像是1个一维向量, 有多少个值就是有多少个像素点(C*H*W)。

应用于:图像分类、目标检测、面部解锁、自动驾驶等领域。

三、卷积层

1.作用

提取图像特征图,权重共享,局部连接,空间不变性

2.滤波器/卷积核

带有参数的神经元,有多少滤波器就有多少神经元

3.卷积基本计算

卷积运算本质上就是在滤波器和输入数据的局部区域间做点积,根据卷积核大小对特征图进行点乘运算,点乘运算结果=新特征图1个特征值,特征图的窗口矩阵=卷积核大小。

4.padding

在特征图周围补0。防止边缘信息丢失,新特征图和原特征图形状保持一致。

5.stride

窗口矩阵移动步长。降维,提高感受视野。

6.多通道卷积计算

RGB图像有3个通道, 卷积核也有3个通道;每个通道进行点乘运算, 然后3个点乘结果求和=新特征图1个特征值(像素点);1个二维特征图。

7.多通道多卷积核计算

多个卷积核就是多个神经元;每个神经元提取1个二维特征图;有多少个神经元就会提取多少个二维特征图。

8.特征图大小计算

公式:N=\frac{W-F+2P}{S}+1

参数详解:N特征图大小,W输入图像大小,F卷积核大小(奇数),P填充大小,S步长大小

9.API

conv = nn.Conv2d(in_channels, out_channels, kernel_size, stride, padding)

参数解释:

in_channels:输入图像的通道数

 out_channels:卷积核/神经元个数,有多少个神经元就会提取多少个二维特征图

kernel_size:卷积核形状,滑动窗口大小

stride:步长, 默认1

padding:填充圈数, 默认0

四、池化层

1.作用

降维,只在H和W维度上降维;

和卷积层的核心区别是:没有神经元(卷积核)参与!

2.池化计算

最大池化:提取窗口范围内的最大特征值;

平均池化:提取窗口范围内的平均特征值。

3.多通道池化计算

注意:不改变通道数,只在H和W维度上池化。

4.API

最大池化:nn.MaxPool2d(kernel_size=2,stride=2,padding=1)

平均池化:nn.AvgPool2d(kernel_size=2,stride=1,padding=0)


网站公告

今日签到

点亮在社区的每一天
去签到