当前位置:   article > 正文

数据科学与大数据分析之项目6-CNN模型图像分类_cnn分类模型

cnn分类模型

用预先训练好的CNN模型进行图像分类

项目介绍

本项目使用Caltech256来作为训练和测试集。

解压缩该文件,您将看到257个文件夹。每个文件夹对应一个类。使用预先训练的Inception- BatchNorm网络来提取Caltech256训练和测试集中每个图像的特征表示。

本项目包含:

  1. Cnn的图像分析的理解

  2. “卷积层”和“池化层”的功能

  3. Deep CNNs中的名词解释 activation function; epoch number;batch size; learning rate and momentum

  4. Caltech256训练和测试集介绍

  5. 项目代码与输出(R语言)

项目开始

1
深度卷积神经网络(CNNs)是一种深度人工神经网络。CNNs是一类特殊的多层感知器,非常适合于网格化的数据处理拓扑。他们是在至少一层中使用卷积代替一般矩阵乘法的网络。它是一种在神经网络设计中建立先验信息的方法。此外,CNN有时被设计成识别二维形状,对平移、缩放、倾斜和其他扭曲具有高度的不变性。

由于CNNs具有较好的性能、精度和对输入图像的一定程度的无失真性,因此适合于图像分析任务。常规NNs的问题是它们不能很好地随维度扩展。CNNs集成了一个可用于内置网络的分层模型,并最终指向一个完全连接的层,在该层中所有神经元相互连接并处理输出。CNNs能有效地将大量数据参数的图像维数降为少量参数,同时有效地保留图像特征。

NNS对图像失真非常敏感,忽略了输入数据的拓扑结构,在一定程度上避免了这些问题。CNNs考虑了神经元的三维体积,提出了一种参数共享方案,使网络所需的参数数目最小化。CNNs神经元按宽、高、深三个维度排列。

2
卷积层:

卷积层的作用是提取输入数据的特征。它包含几个卷积核。卷积核的每个元素对应一个权系数和一个偏倚向量。向量卷积层的每一层神经元与前一层相邻的感受野中的多个神经元相连。感受野的大小取决于卷积核的大小。卷积层参数包括卷积核大小、步长和填充量,它们共同决定了卷积层输出特征图的大小。卷积核的大小可以是任何小于输入图像大小的值。卷积核越大,提取的输入特征越复杂。

它允许网络学习对输入的局部区域作出最大响应的滤波器,从而利用输入的空间局部相关性。卷积层使用一组可学习的滤波器。滤波器用于检测原始图像中存在的特定特征或模式。这意味着通过迭代运算,多个卷积层可以实现逐步提取复杂特征的功能。

池化层:

在卷积层进行特征提取后,将输出的特征映射转移到池层进行特征选择和信息过滤。pooling层包含预先设置的pooling函数,其功能是用相邻区域的特征图统计信息替换特征图中单个点的结果。换言之,汇集层在感受野附近收集相似的信息并输出局部区域的主要响应。Pooling layer selection pooling area is controlled by pooling size, step size and filling.

它将输入图像分成若干个矩形区域,并输出每个子区域的最大值。由于过度拟合的空间表示和控制也被用来逐步减少网络的大小和计算量。

3
Activation function:

激活函数在学习和理解CNNs的复杂非线性函数中起着重要的作用。选择合适的激活函数可以加快学习速度过程。它将神经元的输入映射到输出。利用激活函数来增强神经网络模型的非线性。没有激活函数的每一层等价于矩阵乘法。经过几层之后,结果就是矩阵乘法。使用激活函数后,神经网络可以任意逼近任何非线性函数。这样,神经网络可以应用于许多非线性模型。

它将神经元的输入映射到输出。利用激活函数来增强神经网络模型的非线性。没有激活函数的每一层等价于矩阵乘法。经过几层之后,结果就是矩阵乘法。使用激活函数后,神经网络可以任意逼近任何非线性函数。这样,神经网络可以应用于许多非线性模型。

Epoch number:

The number of epochs is a hyperparameter of gradient descent that controls the number of complete passes through the training dataset. One epoch means that each sample in the training dataset has had an opportunity to update the internal model parameters. An epoch is comprised of one or more batches.

Batch size:
它是梯度下降的超参数,在模型内部参数更新之前控制训练样本的数量。将批处理视为对一个或多个样本进行迭代并进行预测的for循环。可以将训练数据集划分为一个或多个 batches 。当所有的训练样本都用于创建一个batch时,这种学习算法称为batch gradient descent。

Learning rate:

训练过程中权值的更新量称为步长或学习率。学习率是一个超参数,每次更新模型权值时,它根据估计误差控制模型的变化程度。选择一个学习率是很有挑战性的,因为如果值太小,可能会导致长时间的训练过程陷入困境,而值太大则可能导致学习过程的权重不理想或训练过程不稳定。

Momentum:

动量的引入加速了学习过程。在神经网络中,我们使用梯度下降优化算法来最小化误差函数以达到全局极小值。为了避免陷入局部极小值,我们在目标函数中使用了动量项,它是一个介于0和1之间的值,通过尝试从局部极小值跳转来增加朝着最小值所采取的步骤的大小。如果动量项较大,则学习速率应保持较小。

训练集中有257个类别,每个类别包含30张大小不同的图像。测试集包含257个类别,它们与train文件中的类相同。在每个类别文件中有50个不同大小的图像。训练集中的图片提供了目标物体的清晰直观的视图(正面视图),换句话说,训练集中的图片噪声较小。

下图为突击步枪的训练集
在这里插入图片描述
测试集中的图片覆盖了更多的场景,目标物体要么是被人拿着的,要么是在一个相对“混乱”的地方,我们不能总是得到目标物体的正面视图。下图为突击步枪的测试集。

在这里插入图片描述
综上所述,我们可以说训练集中的图片更容易识别和分类,测试集中的图片更接近真实世界,覆盖了其他可能的外观和使用场景。

5
首先,加载所需的库和包。
在这里插入图片描述
然后载入预先训练好的模型和平均值图像用于预处理。
在这里插入图片描述
Cropping and subtracting to 确保输入的图像符合要求。
在这里插入图片描述
使用给定的模型对图像进行分类,通过给定的索引找到类名。

在这里插入图片描述
例子1:
读取ak47图片:
在这里插入图片描述
通过模型,该图片被分类为“突击步枪、突击枪”(“assault rifle, assault gun”)
在这里插入图片描述
目标图片为:
在这里插入图片描述
例子2:
读取浴缸图片:
在这里插入图片描述
分类为“浴缸”(“bathtub”)
在这里插入图片描述
在这里插入图片描述
例子3:
读取安全别针图片
在这里插入图片描述
在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/286940
推荐阅读
相关标签
  

闽ICP备14008679号