首页 > 编程知识 正文

简单的科学模型,cnn图像分类算法实现

时间:2023-05-04 10:08:39 阅读:12880 作者:2041

用事先训练的CNN模型开始图像分类项目的介绍项目

项目介绍

该项目使用Caltech256作为培训和测试集。

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

这个项目包括:

理解Cnn的图像分析

卷积层和池化层的功能

Deep CNNs名词描述激活功能; Epoch编号; batch size; 学习速率和文档

介绍Caltech256培训和测试集

项目代码和输出(r语言)

项目开始1

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

CNNs性能优异、精度高,对输入图像没有一定程度的失真,适用于图像分析任务。 普通的NNs问题是不能很好地扩展以适应维度。 cns集成了可在嵌入式网络中使用的分层模型,最终指向所有神经元相互连接以处理输出的完全连接的分层。 CNNs在将大量数据参数的图像维数降低到少量参数的同时,可以有效地保留图像特征。

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

2

卷积层:

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

由此,网络学习对输入的局部区域提供最大响应的滤波器,能够利用输入的空间局部相关性。 卷积层使用一组可学习的过滤器。 滤波器用于检测原始图像中存在的特定特征或图案。 这意味着通过反复运算,多个卷积层能够实现阶段性地提取复杂特征的功能。

池层:

在卷积层进行特征提取后,将输出的特征图转移到池层进行特征选择和信息滤波。 轮询层包含预设的轮询函数,其功能是将要素地图的各个点替换为相邻区域的要素地图统计信息后的结果。 也就是说,聚合层在感觉区附近收集类似的信息,输出局部区域的主要响应。 poolinglayerselectionpoolingareaiscontrolledbypoolingsize,step size and filling。

将输入图像分割为多个矩形区域,输出各子区域的最大值。 过度拟合的空间表示和控制也用于逐步减少网络的大小和计算量。

3

活动功能:

激活函数在学习和理解CNNs的复杂非线性函数中起着重要的作用。 选择合适的激活函数会加快学习速度。 将神经元的输入映射到输出。 利用激活函数提高神经网络模型的非线性。 没有激活函数的各层等价于矩阵乘法。 经过几层,结果是矩阵乘法。 激活函数允许神经网络近似为任何非线性函数。 这样,神经网络可以应用于许多非线性模型。

将神经元的输入映射到输出。 利用激活函数提高神经网络模型的非线性。 没有激活函数的各层等价于矩阵乘法。 经过几层,结果是矩阵乘法。 激活函数允许神经网络近似为任何非线性函数。 这样,神经网络可以应用于许多非线性模型。

Epoch number:

thenumberofepochsisahyperparameterofgradientdescentthatcontrolsthenumberofcompletepassesthroughthetrainingdataset.oneepochmemer iningdatasethashadanopportunitytoupdatetheinternalmodelparameters.anepochiscomprisedofoneormorebatches

Batch size :

坡度下降的超级参数,控制在模型内部参数更新之前训练样本的数量。 批处理被视为迭代预测一个或多个样本的for循环。 可以将训练数据集拆分为一个或多个batches。 如果所有培训示例都用于创建batch,则此学习算法称为batch梯度距离。

学习速率:

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

Momentum:

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

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

下图为突击步枪的训练集

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


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

5
首先,加载所需的库和包。

然后载入预先训练好的模型和平均值图像用于预处理。

Cropping and subtracting to 确保输入的图像符合要求。

使用给定的模型对图像进行分类,通过给定的索引找到类名。


例子1:
读取ak47图片:

通过模型,该图片被分类为“突击步枪、突击枪”(“assault rifle, assault gun”)

目标图片为:

例子2:
读取浴缸图片:

分类为“浴缸”(“bathtub”)


例子3:
读取安全别针图片

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。