深度学习卷积神经网络图像识别介绍

本文涉及的产品
图像搜索,任选一个服务类型 1个月
简介: 深度学习卷积神经网络图像识别介绍

1 手写体识别

在机器学习、神经网络领域,有一个应用层的经典“Hello World”:手写体识别,于是它成为了众多入门者的实践项目。

这是一个手写体“5”,它是由 28 * 28 的灰度图,每一个像素用一个字节的无符号数表示它的等级。如果是0,那就是最暗(纯黑色);如果是255,那就是最亮(纯白色)。


现实中,人毕竟不同于精准但呆板的计算机,每次手写一个数字都可能不太一样,比如第一次我们写成这样:

第二次由于手抖写成这样:

这时候就没有什么确定的规则去根据像素的灰度值判断是什么数字了,换句话说这不再是一个适用于计算机机械逻辑做判断的问题,我们需要用有一定的容错能力的系统来做这件事,很明显神经网络是一个很好的选择。

我们把mnist数据集(手写图片数据)以784维向量作为输入,依次送入神经网络进行训练就好。


模型在训练集和测试集上的不同表现导致了机器学习中三种常见的现象:

1.训练集准确率很低,额,这个模型多半是废了,这个现象称为欠拟合,可能模型过于简单

2.训练集准确率高,测试集准确率低,说明该模型拥有很好的泛化能力,有能力去解决新的问题

3.训练集和测试集准确率都很高,说明这个模型的泛化能力不行,称为过拟合,原因有很多,比如用一个过分复杂的模型拟合一个实则简单的问题,,当然解决过拟合也有很多方式,比如:调整神经网络结构、L2正则化、节点失活(Dropout)正则化等等


当然这节我们主要以全连接神经网络讲解,而图像作为一个二维物体,相邻元素之间总是存在关联的,如果我们强行把它降低到一维也就破坏了这些关联,失去了重要的特征。在实际中,卷积神经网络会有更好的效果,也是更为常用的方法。这也说明了重要特征对提高模型的泛化能力有很大作用。

至于如何提取重要特征,这里简单说明一下,我们还是以上面的“5”为例:

💡嗯…怎么快速理解这个卷积核呢,我们以一幅茶杯图像为例,思考卷积后的图像是什么样子呢?

结果发现,把垂直的边沿给提取出来了。

我们再以8*8的小图来看一下细节:

你会发现,结果图片都有垂直条纹的特征

我们在搞一张极端的情况,还是以上面的杯子为例:

我们对这个图像进行卷积,机智如你,会发现:只有中间两列有值,其他两列均为0

对于两边,它们就会在左右的一正一负相互抵消

对于中间部分,左大右小完全不对称,加起来之后就会把这个值变得很大,或者说特征被凸显出来了

2 炼丹

我们对上述过程代码实现:mnist_recognizer.py

# 导入数据集
from keras.datasets import mnist
from keras.models import Sequential
from keras.layers import Dense
from keras.optimizers import SGD
import matplotlib.pyplot as plt
# one-hot编码转化
from keras.utils import to_categorical
(X_train, Y_train), (X_test, Y_test) = mnist.load_data()
# 查看样本数据的类型:60000, 28, 28
print("X_train.shape:" + str(X_train.shape))
print("X_test.shape:" + str(X_test.shape))
print("Y_train.shape:" + str(Y_train.shape))
print("Y_test.shape:" + str(Y_test.shape))
# # 打印标签值
# print(Y_train[0])
# # 训练集的第一个样本数据,绘图模式:灰度图
# plt.imshow(X_train[0], cmap="gray")
# plt.show()
# 28 * 28 = 784 二维变一维
X_train = X_train.reshape(60000, 784) / 255.0 # 减少差距,加快梯度下降
X_test = X_test.reshape(10000, 784) / 255.0
Y_train = to_categorical(Y_train, 10)
Y_test = to_categorical(Y_test, 10)
model = Sequential()
model.add(Dense(units=256, activation='relu', input_dim=784))
model.add(Dense(units=256, activation='relu'))
model.add(Dense(units=256, activation='relu'))
model.add(Dense(units=10, activation='softmax'))
# 使用多分类交叉熵代价函数
model.compile(loss='categorical_crossentropy', optimizer=SGD(lr=0.05), metrics=['accuracy'])
model.fit(X_train, Y_train, epochs=5000, batch_size=256)
loss, accuracy = model.evaluate(X_test, Y_test)
print("loss" + str(loss))
print("accuracy" + str(accuracy))

目录
相关文章
|
27天前
|
机器学习/深度学习 PyTorch TensorFlow
卷积神经网络深度解析:从基础原理到实战应用的完整指南
蒋星熠Jaxonic,深度学习探索者。深耕TensorFlow与PyTorch,分享框架对比、性能优化与实战经验,助力技术进阶。
|
9天前
|
机器学习/深度学习 人工智能 文字识别
中药材图像识别数据集(100类,9200张)|适用于YOLO系列深度学习分类检测任务
本数据集包含9200张中药材图像,覆盖100种常见品类,已标注并划分为训练集与验证集,支持YOLO等深度学习模型。适用于中药分类、目标检测、AI辅助识别及教学应用,助力中医药智能化发展。
|
28天前
|
机器学习/深度学习 数据采集 人工智能
深度学习实战指南:从神经网络基础到模型优化的完整攻略
🌟 蒋星熠Jaxonic,AI探索者。深耕深度学习,从神经网络到Transformer,用代码践行智能革命。分享实战经验,助你构建CV、NLP模型,共赴二进制星辰大海。
|
1月前
|
机器学习/深度学习 人工智能 算法
卷积神经网络深度解析:从基础原理到实战应用的完整指南
蒋星熠Jaxonic带你深入卷积神经网络(CNN)核心技术,从生物启发到数学原理,详解ResNet、注意力机制与模型优化,探索视觉智能的演进之路。
305 11
|
4月前
|
机器学习/深度学习 算法 数据安全/隐私保护
基于PSO粒子群优化TCN-LSTM时间卷积神经网络时间序列预测算法matlab仿真
本内容展示了一种基于粒子群优化(PSO)与时间卷积神经网络(TCN)的时间序列预测方法。通过 MATLAB2022a 实现,完整程序运行无水印,核心代码附详细中文注释及操作视频。算法利用 PSO 优化 TCN 的超参数(如卷积核大小、层数等),提升非线性时间序列预测性能。TCN 结构包含因果卷积层与残差连接,结合 LSTM 构建混合模型,经多次迭代选择最优超参数,最终实现更准确可靠的预测效果,适用于金融、气象等领域。
|
1月前
|
机器学习/深度学习 传感器 数据采集
【故障识别】基于CNN-SVM卷积神经网络结合支持向量机的数据分类预测研究(Matlab代码实现)
【故障识别】基于CNN-SVM卷积神经网络结合支持向量机的数据分类预测研究(Matlab代码实现)
153 0
|
3月前
|
机器学习/深度学习 人工智能 PyTorch
零基础入门CNN:聚AI卷积神经网络核心原理与工业级实战指南
卷积神经网络(CNN)通过局部感知和权值共享两大特性,成为计算机视觉的核心技术。本文详解CNN的卷积操作、架构设计、超参数调优及感受野计算,结合代码示例展示其在图像分类、目标检测等领域的应用价值。
211 7
|
5月前
|
机器学习/深度学习 人工智能 算法
深度解析:基于卷积神经网络的宠物识别
宠物识别技术随着饲养规模扩大而兴起,传统手段存在局限性,基于卷积神经网络的宠物识别技术应运而生。快瞳AI通过优化MobileNet-SSD架构、多尺度特征融合及动态网络剪枝等技术,实现高效精准识别。其在智能家居、宠物医疗和防走失领域展现广泛应用前景,为宠物管理带来智能化解决方案,推动行业迈向新高度。
|
5月前
|
机器学习/深度学习 算法 数据安全/隐私保护
基于PSO粒子群优化TCN时间卷积神经网络时间序列预测算法matlab仿真
本内容介绍了一种基于PSO(粒子群优化)改进TCN(时间卷积神经网络)的时间序列预测方法。使用Matlab2022a运行,完整程序无水印,附带核心代码中文注释及操作视频。TCN通过因果卷积层与残差连接处理序列数据,PSO优化其卷积核权重等参数以降低预测误差。算法中,粒子根据个体与全局最优位置更新速度和位置,逐步逼近最佳参数组合,提升预测性能。
|
4月前
|
机器学习/深度学习 数据采集 监控
基于CNN卷积神经网络和GEI步态能量提取的步态识别算法matlab仿真,对比不同角度下的步态识别性能
本项目基于CNN卷积神经网络与GEI步态能量提取技术,实现高效步态识别。算法使用不同角度(0°、45°、90°)的步态数据库进行训练与测试,评估模型在多角度下的识别性能。核心流程包括步态图像采集、GEI特征提取、数据预处理及CNN模型训练与评估。通过ReLU等激活函数引入非线性,提升模型表达能力。项目代码兼容Matlab2022a/2024b,提供完整中文注释与操作视频,助力研究与应用开发。

热门文章

最新文章