卷积神经网络(CNN)入门指南

卷积神经网络CNN)是一种深度学习算法,专为处理图像和视频而设计。它能够接收图像作为输入,提取并学习图像的特征,并基于这些特征对图像进行分类。这种算法的灵感来自于人类大脑中负责处理外界视觉信息的部分——视觉皮层。视觉皮层由多个层次组成,每个层次通过提取图像或视觉信息中的信息来执行特定的功能。最终,所有层次收集到的信息结合起来,用于解释或对图像或视觉进行分类。

与此类似,CNN利用各种滤波器,每个滤波器从图像中提取特定信息,如边缘和不同形状(垂直、水平、圆形)。这些提取的特征结合起来,有助于识别图像。

可能有人会问:为什么不能使用人工神经网络(ANN)来实现同样的目的?这是因为ANN在处理图像时存在一些缺点:

  • 对于ANN模型来说,训练大型图像和不同类型的图像通道需要大量的计算。
  • ANN无法像CNN模型那样捕捉图像中的所有信息,CNN能够捕捉图像的空间依赖性。
  • ANN对图像中物体的位置敏感,即如果同一物体的位置发生变化,ANN可能无法正确分类。

CNN的组成部分

CNN模型的工作分为两个步骤:特征提取和分类。特征提取阶段,各种滤波器和层次应用于图像以提取信息和特征。一旦这个过程完成,提取的数据就移动到下一个阶段,即分类,根据问题的靶变量对数据进行分类。

典型的CNN模型结构如下:

  • 输入层
  • 卷积层 + 激活函数
  • 池化层
  • 全连接层

顾名思义,这是输入图像,可以是灰度或RGB。每张图像由像素组成,像素值范围从0到255。需要将它们归一化,即转换为0到1之间的范围,然后再将其传递给模型。

卷积层将滤波器应用于输入图像以提取或检测其特征。滤波器多次处理图像,创建一个特征图,有助于对输入图像进行分类。

在上述图像中,有一个6*6大小的输入图像,并对其应用了一个3*3的滤波器来检测某些特征。在这个例子中,只应用了一个滤波器,但在实际应用中,会应用许多这样的滤波器来从图像中提取信息。

池化层紧随卷积层之后,减少了特征图的维度,有助于保留输入图像的重要信息和特征,同时也减少了计算时间。

到目前为止,已经完成了特征提取步骤,现在来进行分类部分。全连接层(如在ANN中使用的)用于将输入图像分类为标签。这一层将从前几步(即卷积层和池化层)提取的信息连接到输出层,并最终将输入分类为所需的标签。

如何在Python中实现CNN

from tensorflow.keras.datasets import mnist from tensorflow.keras.models import Sequential from tensorflow.keras.layers import Conv2D from tensorflow.keras.layers import MaxPool2D from tensorflow.keras.layers import Flatten from tensorflow.keras.layers import Dropout from tensorflow.keras.layers import Dense # 加载数据 (X_train,y_train) , (X_test,y_test)=mnist.load_data() # 重塑数据 X_train = X_train.reshape((X_train.shape[0], X_train.shape[1], X_train.shape[2], 1)) X_test = X_test.reshape((X_test.shape[0],X_test.shape[1],X_test.shape[2],1)) # 归一化像素值 X_train=X_train/255 X_test=X_test/255 # 定义模型 model=Sequential() # 添加卷积层 model.add(Conv2D(32,(3,3),activation='relu',input_shape=(28,28,1))) # 添加池化层 model.add(MaxPool2D(2,2)) # 添加全连接层 model.add(Flatten()) model.add(Dense(100,activation='relu')) # 添加输出层 model.add(Dense(10,activation='softmax')) # 编译模型 model.compile(loss='sparse_categorical_crossentropy',optimizer='adam',metrics=['accuracy']) # 拟合模型 model.fit(X_train,y_train,epochs=10)
Q1. Python中的CNN是什么?
A.卷积神经网络(CNN)是一种用于机器学习中图像识别和分类任务的深度神经网络。Python库如TensorFlow、Keras、PyTorch和Caffe提供了预构建的CNN架构和工具,用于在特定数据集上构建和训练它们。
Q2. CNN有哪4种类型?
A. 四种常见的卷积神经网络(CNN)是LeNet、AlexNet、VGGNet和ResNet。LeNet是第一个为手写数字识别设计的CNN架构。相比之下,AlexNet、VGGNet和ResNet是深度CNN,它们在ImageNet大规模视觉识别挑战(ILSVRC)中取得了顶尖表现。
Q3. Python中的tensorflow是什么?
A. TensorFlow是由Google Brain Team开发的开源机器学习和人工智能库。它用Python编写,并提供高级API如Keras,以及用于构建和训练机器学习模型的低级API。TensorFlow还提供了数据预处理、可视化和分布式计算的工具。
沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485