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

简介: 使用预训练卷积神经网络 (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 特征向量时加快训练速度。

目录
相关文章
|
1月前
|
机器学习/深度学习 自然语言处理 算法
【从零开始学习深度学习】49.Pytorch_NLP项目实战:文本情感分类---使用循环神经网络RNN
【从零开始学习深度学习】49.Pytorch_NLP项目实战:文本情感分类---使用循环神经网络RNN
|
2天前
|
机器学习/深度学习 TensorFlow 算法框架/工具
使用Python实现深度学习模型:图像风格迁移与生成
【7月更文挑战第13天】 使用Python实现深度学习模型:图像风格迁移与生成
9 2
|
13天前
|
机器学习/深度学习 算法 PyTorch
深度学习中的图像风格迁移技术探析
图像风格迁移是近年来深度学习领域备受关注的研究方向之一。本文将从算法原理、实现步骤到应用案例,全面分析和探讨几种主流的图像风格迁移技术,为读者深入理解和应用这一技术提供详实的指南。 【7月更文挑战第2天】
|
21天前
|
机器学习/深度学习 算法 固态存储
m基于深度学习的卫星遥感图像轮船检测系统matlab仿真,带GUI操作界面
在MATLAB 2022a中,使用GoogLeNet对卫星遥感图像进行轮船检测,展示了高效的目标识别。GoogLeNet的Inception架构结合全局平均池化增强模型泛化性。核心代码将图像切块并分类,预测为轮船的部分被突出显示,体现了深度学习在复杂场景检测中的应用。
103 8
|
20天前
|
机器学习/深度学习 自然语言处理 搜索推荐
深度学习之分类网络
深度学习的分类网络(Classification Networks)是用于将输入数据分配到预定义类别的神经网络。它们广泛应用于图像分类、文本分类、语音识别等任务。以下是对深度学习分类网络的详细介绍,包括其基本概念、主要架构、常见模型、应用场景、优缺点及未来发展方向。
47 4
|
1天前
|
机器学习/深度学习 PyTorch TensorFlow
在深度学习中,数据增强是一种常用的技术,用于通过增加训练数据的多样性来提高模型的泛化能力。`albumentations`是一个强大的Python库,用于图像增强,支持多种图像变换操作,并且可以与深度学习框架(如PyTorch、TensorFlow等)无缝集成。
在深度学习中,数据增强是一种常用的技术,用于通过增加训练数据的多样性来提高模型的泛化能力。`albumentations`是一个强大的Python库,用于图像增强,支持多种图像变换操作,并且可以与深度学习框架(如PyTorch、TensorFlow等)无缝集成。
8 0
|
1月前
|
机器学习/深度学习 计算机视觉 异构计算
基于YOLOv8深度学习的玉米叶片病害智能诊断与防治系统【python源码+Pyqt5界面+数据集+训练代码】深度学习实战、目标分类(2)
基于YOLOv8深度学习的玉米叶片病害智能诊断与防治系统【python源码+Pyqt5界面+数据集+训练代码】深度学习实战、目标分类
基于YOLOv8深度学习的玉米叶片病害智能诊断与防治系统【python源码+Pyqt5界面+数据集+训练代码】深度学习实战、目标分类(2)
|
12天前
|
机器学习/深度学习 文字识别 算法
深度学习助力版面分析技术,图像“还原”有方
深度学习助力版面分析技术,图像“还原”有方
15 0
|
1月前
|
机器学习/深度学习 数据采集 自动驾驶
探索深度学习的点云分类
点云分类是指将三维点云数据中的每个点或整个点云进行分类的任务。点云数据由大量三维点构成,每个点包含空间坐标(x, y, z),有时还包含其他信息如颜色和法向量。点云分类在自动驾驶、机器人导航、3D重建等领域有广泛应用。
28 1
|
2月前
|
机器学习/深度学习 算法 数据挖掘
深度学习面试问题目录 | 深度学习目标检测、语义分割、分类上百种面试问答技巧
这篇文章汇总了深度学习面试,特别是目标检测领域的常见问题,提供了一个详细的目录大纲,便于读者直接跳转至答案。通过理解和解答这些问题,求职者能展示其在深度学习专业的知识、解决问题的能力及对应用的理解,从而提高面试成功率和竞争力。包含多个专题,如损失函数、Python解释器、经典网络、YOLO系列、激活函数等。