PYTHON TENSORFLOW 2二维卷积神经网络CNN对图像物体识别混淆矩阵评估|数据分享

简介: PYTHON TENSORFLOW 2二维卷积神经网络CNN对图像物体识别混淆矩阵评估|数据分享

原文链接:http://tecdat.cn/?p=26230 

什么是CNN

本文演示了如何训练一个简单的卷积神经网络 (CNN) 来对图像查看文末了解数据获取方式进行分类。

Convolutional Neural Networks (ConvNets 或 CNNs)是一类神经网络,已被证明在图像识别和分类等领域非常有效。与传统的多层感知器架构不同,它使用两个称为 convolutionpooling 的操作将图像简化为其基本特征,并使用这些特征来理解和分类图像。

CNN重要术语

卷积层

卷积是从输入图像中提取特征的第一层。卷积通过使用输入数据的小方块学习图像特征来保留像素之间的关系。这是一个数学运算,需要两个输入,例如 image matrixfilterkernel。然后图像矩阵的卷积乘以过滤器矩阵,称为 Feature Map

使用不同滤波器对图像进行卷积可以通过应用滤波器来执行边缘检测、模糊和锐化等操作。

激活函数

由于卷积是线性操作,图像远非线性,非线性层通常直接放在卷积层之后,以引入 nonlinearity 激活图。

有几种类型的非线性操作,流行的是:

Sigmoid: sigmoid 非线性具有数学形式 f(x) = 1 / 1 + exp(-x)。它取一个实数值并将其标准化到 0 到 1 之间的范围内。

Tanh: Tanh 将实数值压缩到 [-1, 1] 范围内。

ReLU: 线性单元 (ReLU) 计算函数 ƒ(κ)=max (0,κ)。

Leaky ReL:Leaky ReLU 函数只不过是 ReLU 函数的改进版本。Leaky ReLU 就是为了解决这个问题而定义的。

Maxout:Maxout 激活是 ReLU 和leaky ReLU 函数的泛化。

ELU:Exponential Linear Unit 或简称ELU,也是Rectiufied Linear Unit (ReLU)的一种变体。与leaky relu和parametric ReLU函数不同,ELU不是直线,而是使用对数曲线来定义负值。

过滤器 | 核大小 | 过滤器数量

卷积使用a 从输入图像kernel 中提取某些 特征内容。核是一个矩阵,它与输入相乘,从而以某种理想的方式增强输出。

核是一个权重矩阵,它与输入相乘以提取相关特征。核矩阵的维度是卷积的名称。例如,在 中 2D convolutions,核矩阵是 2D matrix

一个普通的卷积层实际上由多个这样的过滤器组成。

image.png

步长

在输入矩阵上移动的像素数。当步长为 1 时,我们一次将过滤器移动到 1 个像素。当步长为 2 时,我们一次将过滤器移动到 2 个像素,依此类推。下图显示卷积将以 1 的步长工作。

填充

padding 意味着在数据的边界处提供额外的像素。有时过滤器不能完全适合输入图像,那么我们将使用填充。

我们有两个选择:

  • 用零填充图片(零填充),使其适合
  • 删除过滤器不适合的图像部分。这称为有效填充,它只保留图像的有效部分。

8a1d0e76f882363e6d38b0ad4e3d242a_640_wx_fmt=gif&tp=webp&wxfrom=5&wx_lazy=1.gif

池化层

A pooling layer 是在卷积层之后添加的新层。具体来说,在对卷积层输出的特征图应用非线性(例如 ReLU)之后;

当图像太大时,池化层部分会减少参数的数量。 Spatial pooling 也称为 subsamplingdownsampling 减少每个地图的维数但保留重要信息。

空间池可以有不同的类型:

  • 最大池化
  • 平均池化

Max pooling 从校正后的特征图中取最大元素。计算特征图上每个补丁的平均值称为 average pooling。特征图调用中每个补丁的所有元素的总和为 sum pooling.

image.png

扁平化和密集层

Flattening 正在将数据转换为一维数组以将其输入到下一层。我们展平卷积层的输出以创建单个长特征向量。

Fully connected layer :传统的多层感知器结构。它的输入是一个一维向量,表示前几层的输出。它的输出是附在图像上的不同可能标签的概率列表(例如狗、猫、鸟)。接收概率最高的标签是分类决策。

下载数据和模型构建

该数据集包含 60,000 张彩色图像有10类别,每个类别有 6,000 张图像。数据集分为 50,000 张训练图像和 10,000 张测试图像。这些类是互斥的,它们之间没有重叠。

X\_train = X\_train/255
X\_test = X\_test/255
X\_train.shape, X\_test.shape

image.png

验证数据

为了验证数据集看起来是否正确,让我们绘制测试集中的第一张图像并显示图像。

plt.imshow(X_test\[0\])

image.png

y_test

image.png


构建 CNN 模型

下面的 8 行代码使用一个通用模式定义了卷积基:一堆 Conv2DMaxPooling2D  、 DropoutFlattenDense

作为输入,a Conv2D 采用形状 (image\_height, image\_width, color_channels) 的张量。

Maxpool2D()通过对沿特征轴的每个维度在 (2,2)Downsamples 定义的窗口上取最大值来对输入表示进行  分层 。

Dropout() 用于在训练阶段的每次更新时将隐藏单元的出边随机设置为 0。

Flatten() 用于将数据转换为一维数组,用于输入到下一层。

Dense() 层是具有 128 个神经元的常规深度连接神经网络层。输出层也是一个密集层,有 10 个神经元用于 10 个类。

使用的激活函数是 softmax。Softmax 将实数向量转换为分类概率向量。输出向量的元素在 (0, 1) 范围内并且总和为 1。

model.add(Flatten())
model.add(Dense(units = 128, activation='relu'))
model.add(Dense(units=10, activation='softmax'))
model.summary()

image.png

编译和训练模型

这是 compiling 编译模型和 fitting 训练数据。我们将使用 10步长 epochs 来训练模型。一个时期是对所提供的整个数据的迭代。  是在每个 epoch 结束时validation_data 评估和任何模型指标的 数据。loss模型不会根据这些数据进行训练。由于指标 = ['sparse_categorical_accuracy'] 模型将基于 accuracy.

history = model.fit(X_train

image.png

我们现在将绘制 model accuracy and  model loss。在模型准确度中,我们将绘制训练准确度和验证准确度,在模型损失中,我们将绘制训练损失和验证损失。

# 绘制训练和验证的准确值
epoch_range = range(1, 11)
plt.plot(epoch\_range, history.history\['sparse\_categorical_accuracy'\])
# 绘制训练和验证的损失值
plt.plot(epoch_range, history.history\['loss'\])


image.png

image.png

y\_pred = model.predict\_classes(X_test)
confusion_matrix
mat
plot

image.png

结论:

在本教程中,我们训练了简单的卷积神经网络 (CNN) 来对 图像进行分类。从学习曲线图中我们观察到,在 3 个 epoch 之后,验证准确度低于训练集准确度,即我们的模型是过拟合,这意味着我们增加了模型的复杂性。还使用混淆矩阵评估模型。观察到该模型对鸟、猫、鹿、狗等标签的预测精度较低。


相关文章
|
11天前
|
机器学习/深度学习 人工智能 自然语言处理
深度学习的魔法:如何用神经网络解锁数据的奥秘
在人工智能的璀璨星空中,深度学习犹如一颗最亮的星,它以其强大的数据处理能力,改变了我们对世界的认知方式。本文将深入浅出地介绍深度学习的核心概念、工作原理及其在不同领域的应用实例,让读者能够理解并欣赏到深度学习技术背后的奇妙和强大之处。
25 3
|
5天前
|
机器学习/深度学习 人工智能 TensorFlow
深度学习入门:理解卷积神经网络(CNN)
【9月更文挑战第14天】本文旨在为初学者提供一个关于卷积神经网络(CNN)的直观理解,通过简单的语言和比喻来揭示这一深度学习模型如何识别图像。我们将一起探索CNN的基本组成,包括卷积层、激活函数、池化层和全连接层,并了解它们如何协同工作以实现图像分类任务。文章末尾将给出一个简单的代码示例,帮助读者更好地理解CNN的工作原理。
20 7
|
7天前
|
机器学习/深度学习 人工智能 TensorFlow
神经网络深度剖析:Python带你潜入AI大脑,揭秘智能背后的秘密神经元
【9月更文挑战第12天】在当今科技飞速发展的时代,人工智能(AI)已深入我们的生活,从智能助手到自动驾驶,从医疗诊断到金融分析,其力量无处不在。这一切的核心是神经网络。本文将带领您搭乘Python的航船,深入AI的大脑,揭秘智能背后的秘密神经元。通过构建神经网络模型,我们可以模拟并学习复杂的数据模式。以下是一个使用Python和TensorFlow搭建的基本神经网络示例,用于解决简单的分类问题。
31 10
|
3天前
|
机器学习/深度学习 算法 算法框架/工具
深度学习中的卷积神经网络(CNN)及其在图像识别中的应用
【9月更文挑战第16天】本文将深入浅出地介绍卷积神经网络(CNN)的基本概念、结构和工作原理,同时通过一个实际的代码示例来展示如何在Python中使用Keras库构建一个简单的CNN模型进行图像识别。我们将看到,即使是初学者也能够通过简单的步骤实现深度学习的强大功能,进而探索其在复杂数据集上的应用潜力。
|
8天前
|
机器学习/深度学习 人工智能 TensorFlow
深入骨髓的解析:Python中神经网络如何学会‘思考’,解锁AI新纪元
【9月更文挑战第11天】随着科技的发展,人工智能(AI)成为推动社会进步的关键力量,而神经网络作为AI的核心,正以其强大的学习和模式识别能力开启AI新纪元。本文将探讨Python中神经网络的工作原理,并通过示例代码展示其“思考”过程。神经网络模仿生物神经系统,通过加权连接传递信息并优化输出。Python凭借其丰富的科学计算库如TensorFlow和PyTorch,成为神经网络研究的首选语言。
11 1
|
9天前
|
机器学习/深度学习 自然语言处理 计算机视觉
用于图像和用于自然语言的神经网络区别
主要区别总结 数据结构:图像数据是二维像素矩阵,具有空间结构;文本数据是一维序列,具有时间结构。 网络架构:图像处理常用CNN,注重局部特征提取;自然语言处理常用RNN/LSTM/Transformer,注重序列和全局依赖。 操作单元:图像处理中的卷积核在空间上操作;自然语言处理中的注意力机制在序列上操作。
10 2
|
10天前
|
机器学习/深度学习 自然语言处理 自动驾驶
CNN的魅力:探索卷积神经网络的无限可能
卷积神经网络(Convolutional Neural Networks, CNN)作为人工智能的重要分支,在图像识别、自然语言处理、医疗诊断及自动驾驶等领域展现了卓越性能。本文将介绍CNN的起源、独特优势及其广泛应用,并通过具体代码示例展示如何使用TensorFlow和Keras构建和训练CNN模型。
|
10天前
|
机器学习/深度学习 数据采集 数据可视化
深度学习实践:构建并训练卷积神经网络(CNN)对CIFAR-10数据集进行分类
本文详细介绍如何使用PyTorch构建并训练卷积神经网络(CNN)对CIFAR-10数据集进行图像分类。从数据预处理、模型定义到训练过程及结果可视化,文章全面展示了深度学习项目的全流程。通过实际操作,读者可以深入了解CNN在图像分类任务中的应用,并掌握PyTorch的基本使用方法。希望本文为您的深度学习项目提供有价值的参考与启示。
|
5天前
|
机器学习/深度学习 算法 数据安全/隐私保护
基于NSCT非采样轮廓波变换和CNN网络人脸识别matlab仿真
本项目展示了一种结合非采样轮廓波变换(NSCT)与卷积神经网络(CNN)的人脸识别系统。通过NSCT提取多尺度、多方向特征,并利用CNN的强大分类能力实现高效识别。项目包括ORL人脸库的训练结果对比,提供Matlab 2022a版本下的完整代码及详细中文注释,另有操作步骤视频指导。
|
5天前
|
机器学习/深度学习 人工智能 TensorFlow
深度学习中的卷积神经网络(CNN)及其在图像识别中的应用
【9月更文挑战第13天】本文将深入浅出地介绍卷积神经网络(CNN)的基本原理,并探讨其在图像识别领域的应用。通过实例演示如何利用Python和TensorFlow框架实现一个简单的CNN模型,我们将一步步从理论到实践,揭示CNN如何改变现代图像处理技术的面貌。无论你是深度学习新手还是希望深化理解,这篇文章都将为你提供价值。