使用深度学习进行图像类别分类

简介: 使用预训练卷积神经网络 (CNN) 作为特征提取器来训练图像类别分类器。

​一、前言
使用预训练卷积神经网络 (CNN) 作为特征提取器来训练图像类别分类器。
卷积神经网络 (CNN) 是深度学习领域的一种强大的机器学习技术。CNN使用大量不同图像进行训练。从这些大型集合中,CNN可以学习各种图像的丰富特征表示。这些要素制图表达通常优于手工制作的要素,例如 HOG、LBP 或 SURF。在不投入时间和精力进行训练的情况下,利用 CNN 的强大功能的一种简单方法是使用预训练的 CNN 作为特征提取器。
来自花卉数据集[5]的图像使用从图像中提取的CNN特征训练的多类线性SVM分类。这种图像类别分类方法遵循使用从图像中提取的特征训练现成分类器的标准做法。例如,使用特征袋进行图像类别分类示例使用特征袋框架内的 SURF 特征来训练多类 SVM。这里的区别在于,不使用 HOG 或 SURF 等图像特征,而是使用 CNN 提取特征。

二、下载图像数据
类别分类器将在花卉数据集中的图像上进行训练。
三、加载图像
使用 加载数据集以帮助您管理数据。由于对图像文件位置进行操作,因此图像在读取之前不会加载到内存中,因此可以有效地用于大型图像集合。

下面,可以看到数据集中包含的某个类别的示例图像。
1.png

该变量现在包含与每个图像关联的图像和类别标签。标签是从图像文件的文件夹名称自动分配的。用于汇总每个类别的图像数。

因为上面每个类别包含的图像数量不相等,我们先调整一下,让训练集中的图像数量平衡。

四、加载预训练网络
有几个预训练网络已经流行起来。其中大多数是在 ImageNet 数据集上训练的,该数据集有 1000 个对象类别和 1 万张训练图像。“ResNet-1”就是这样一种模型,可以使用神经网络工具箱中的函数加载。

在 ImageNet 上训练的其他流行网络包括 AlexNet、GoogLeNet、VGG-16 和 VGG-19 ,可以使用从深度学习工具箱加载。用于可视化网络。由于这是一个大型网络,因此请调整显示窗口以仅显示第一部分。

2.png

第一层定义输入维度。每个 CNN 都有不同的输入大小要求。此示例中使用的图像需要 224 x 224 x 3 的图像输入。

中间层构成了CNN的大部分。这些是一系列卷积层,穿插着整流线性单元(ReLU)和最大池化层。在这些层之后是 3 个全连接层。最后一层是分类层,其属性取决于分类任务。在此示例中,加载的 CNN 模型经过训练以解决 1000 路分类问题。因此,分类图层具有来自 ImageNet 数据集的 1000 个类。

请注意,CNN 模型不会用于原始分类任务。它将被重新用于解决花卉数据集上的不同分类任务。

五、准备训练和测试映像集
将集拆分为训练数据和验证数据。从每组图像中选择 30% 的图像作为训练数据,其余 70% 的图像用于验证数据。随机化拆分以避免结果偏差。训练集和测试集将由CNN模型处理。

六、CNN 的预处理图像
如前所述,只能处理 224 x 224 的 RGB 图像。为避免将所有图像重新保存为此格式,请使用 即时调整大小并将任何灰度图像转换为 RGB。当用于网络训练时,也可用于额外的数据增强。

七、使用 CNN 提取训练特征
CNN的每一层都会对输入图像产生响应或激活。但是,CNN中只有少数层适合图像特征提取。网络开头的图层捕获基本图像要素,例如边缘和斑点。要看到这一点,请可视化第一个卷积层的网络过滤器权重。这有助于建立一种直觉,即为什么从CNN中提取的特征在图像识别任务中如此有效。
3.png

请注意,网络的第一层如何学习用于捕获 blob 和边缘要素的筛选器。然后,这些“原始”特征由更深的网络层处理,这些网络层将早期特征组合在一起,形成更高级别的图像特征。这些更高级别的特征更适合识别任务,因为它们将所有原始特征组合成更丰富的图像表示。
可以使用该方法轻松地从更深的图层之一中提取要素。选择要选择的深层是一种设计选择,但通常从分类图层之前的图层开始是一个不错的起点。在 中,此层被命名为 'fc1000'。让我们使用该层提取训练特征。

八、使用 CNN 特征训练多类 SVM 分类器
接下来,使用 CNN 图像特征训练多类 SVM 分类器。通过将函数的“学习器”参数设置为“线性”,使用快速随机梯度下降求解器进行训练。这有助于在使用高维 CNN 特征向量时加快训练速度。

目录
相关文章
|
2月前
|
机器学习/深度学习 TensorFlow 算法框架/工具
深度学习中的图像风格迁移
【9月更文挑战第26天】本文将探讨如何利用深度学习技术,实现图像风格的转换。我们将从基础的理论出发,然后逐步深入到具体的实现过程,最后通过代码实例来展示这一技术的实际应用。无论你是初学者还是有经验的开发者,都能在这篇文章中找到有价值的信息。让我们一起探索深度学习的奥秘吧!
|
1月前
|
机器学习/深度学习 人工智能 TensorFlow
利用深度学习实现图像风格迁移
【8月更文挑战第73天】本文通过深入浅出的方式,介绍了一种使用深度学习技术进行图像风格迁移的方法。我们将探讨如何将一张普通照片转化为具有著名画作风格的艺术作品。文章不仅解释了背后的技术原理,还提供了一个实际的代码示例,帮助读者理解如何实现这一过程。
|
18天前
|
机器学习/深度学习 人工智能 算法
基于深度学习的地面垃圾识别分类技术
AI垃圾分类系统结合深度学习和计算机视觉技术,实现高效、精准的垃圾识别与自动分类。系统集成高精度图像识别、多模态数据分析和实时处理技术,适用于市政环卫、垃圾处理厂和智能回收设备,显著提升管理效率,降低人工成本。
基于深度学习的地面垃圾识别分类技术
|
20天前
|
机器学习/深度学习 编解码 算法
什么是超分辨率?浅谈一下基于深度学习的图像超分辨率技术
超分辨率技术旨在提升图像或视频的清晰度,通过增加单位长度内的采样点数量来提高空间分辨率。基于深度学习的方法,如SRCNN、VDSR、SRResNet等,通过卷积神经网络和残差学习等技术,显著提升了图像重建的质量。此外,基于参考图像的超分辨率技术通过利用高分辨率参考图像,进一步提高了重建图像的真实感和细节。
|
1月前
|
机器学习/深度学习 数据处理 数据库
基于Django的深度学习视频分类Web系统
基于Django的深度学习视频分类Web系统
55 4
基于Django的深度学习视频分类Web系统
|
16天前
|
机器学习/深度学习 人工智能 自动驾驶
深度学习的奇迹:如何用神经网络识别图像
【10月更文挑战第33天】在这篇文章中,我们将探索深度学习的奇妙世界,特别是卷积神经网络(CNN)在图像识别中的应用。我们将通过一个简单的代码示例,展示如何使用Python和Keras库构建一个能够识别手写数字的神经网络。这不仅是对深度学习概念的直观介绍,也是对技术实践的一次尝试。让我们一起踏上这段探索之旅,看看数据、模型和代码是如何交织在一起,创造出令人惊叹的结果。
26 0
|
2月前
|
机器学习/深度学习 人工智能 算法
【新闻文本分类识别系统】Python+卷积神经网络算法+人工智能+深度学习+计算机毕设项目+Django网页界面平台
文本分类识别系统。本系统使用Python作为主要开发语言,首先收集了10种中文文本数据集("体育类", "财经类", "房产类", "家居类", "教育类", "科技类", "时尚类", "时政类", "游戏类", "娱乐类"),然后基于TensorFlow搭建CNN卷积神经网络算法模型。通过对数据集进行多轮迭代训练,最后得到一个识别精度较高的模型,并保存为本地的h5格式。然后使用Django开发Web网页端操作界面,实现用户上传一段文本识别其所属的类别。
93 1
【新闻文本分类识别系统】Python+卷积神经网络算法+人工智能+深度学习+计算机毕设项目+Django网页界面平台
|
1月前
|
机器学习/深度学习 PyTorch 算法框架/工具
深度学习入门案例:运用神经网络实现价格分类
深度学习入门案例:运用神经网络实现价格分类
|
2月前
|
机器学习/深度学习 并行计算 PyTorch
图像检测【YOLOv5】——深度学习
Anaconda的安装配置:(Anaconda是一个开源的Python发行版本,包括Conda、Python以及很多安装好的工具包,比如:numpy,pandas等,其中conda是一个开源包和环境管理器,可以用于在同一个电脑上安装不同版本的软件包,并且可以在不同环境之间切换,是深度学习的必备平台。) 一.Anaconda安装配置. 1.首先进入官网:https://repo.anaconda.com,选择View All Installers. 2.打开看到的界面是Anaconda的所以安装包版本,Anaconda3就代表是Python3版本,后面跟的是发行日期,我选择了最近的2022
73 28
|
1月前
|
机器学习/深度学习 传感器 监控
深度学习之动作识别与分类
基于深度学习的动作识别与分类是指通过深度学习模型从视频或传感器数据中自动识别和分类人类动作的过程。这项技术广泛应用于视频监控、安全监控、体育分析、医疗康复、虚拟现实(VR)和增强现实(AR)等领域。
65 1
下一篇
无影云桌面