基于matlab使用深度学习进行图像类别分类(附源码)

一、前言

此示例演示如何使用预训练卷积神经网络 (CNN) 作为特征提取器来训练图像类别分类器。

卷积神经网络 (CNN) 是深度学习领域的一种强大的机器学习技术。CNN使用大量不同图像进行训练。从这些大型集合中,CNN可以学习各种图像的丰富特征表示。这些要素制图表达通常优于手工制作的要素,例如 HOG、LBP 或 SURF。在不投入时间和精力进行训练的情况下,利用 CNN 的强大功能的一种简单方法是使用预训练的 CNN 作为特征提取器。

在此示例中,来自花卉数据集[5]的图像使用从图像中提取的CNN特征训练的多类线性SVM分类。这种图像类别分类方法遵循使用从图像中提取的特征训练现成分类器的标准做法。例如,使用特征袋进行图像类别分类示例使用特征袋框架内的 SURF 特征来训练多类 SVM。这里的区别在于,不使用 HOG 或 SURF 等图像特征,而是使用 CNN 提取特征。

注意:此示例需要深度学习工具箱、统计和机器学习工具箱以及 ResNet-50 网络的深度学习工具箱模型。

二、下载图像数据

类别分类器将在花卉数据集中的图像上进行训练。

注意:数据的下载时间取决于您的互联网连接。下一组命令使用 MATLAB 下载数据,并将阻止 MATLAB。或者,您可以使用 Web 浏览器先将数据集下载到本地磁盘。要使用您从网络下载的文件,请将上面的“outputFolder”变量更改为下载文件的位置。

三、加载图像

使用 加载数据集以帮助您管理数据。由于对图像文件位置进行操作,因此图像在读取之前不会加载到内存中,因此可以有效地用于大型图像集合。

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

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

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

四、加载预训练网络

有几个预训练网络已经流行起来。其中大多数是在 ImageNet 数据集上训练的,该数据集有 1000 个对象类别和 1 万张训练图像。“ResNet-1”就是这样一种模型,可以使用神经网络工具箱中的函数加载。使用需要您首先安装 resnet50(深度学习工具箱)。

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

第一层定义输入维度。每个 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中提取的特征在图像识别任务中如此有效。请注意,可以使用深度学习工具箱™中可视化来自深层权重的要素。

请注意,网络的第一层如何学习用于捕获 blob 和边缘要素的筛选器。然后,这些“原始”特征由更深的网络层处理,这些网络层将早期特征组合在一起,形成更高级别的图像特征。这些更高级别的特征更适合识别任务,因为它们将所有原始特征组合成更丰富的图像表示[4]。

您可以使用该方法轻松地从更深的图层之一中提取要素。选择要选择的深层是一种设计选择,但通常从分类图层之前的图层开始是一个不错的起点。在 中,此层被命名为 'fc1000'。让我们使用该层提取训练特征。

请注意,激活功能会自动使用 GPU 进行处理(如果可用),否则将使用 CPU。

在上面的代码中,“MiniBatchSize”设置为32,以确保CNN和图像数据适合GPU内存。如果 GPU 内存不足,您可能需要降低“迷你批量大小”。此外,激活输出按列排列。这有助于加快随后的多类线性 SVM 训练。

八、使用 CNN 特征训练多类 SVM 分类器

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

九、程序

使用Matlab R2022b版本,点击打开。(版本过低,运行该程序可能会报错)

程序下载:基于matlab使用深度学习进行图像类别分类资源-CSDN文库

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/15453.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

QT自定义工具条渐变背景颜色一例

使用样式定义: QWidget* toolbar new QWidget(this);toolbar->setObjectName("main_tool");toolbar->setStyleSheet("#main_tool{background: qlineargradient(x1:0 , y1:0 , x2:1 , y2:0,""stop:0 rgba(0,255,0, 0.2),"&q…

5道Mysql面试题

1.什么Mysql的事务?事务的四大特性? Mysql中事务的隔离级别分为四大等级:读未提交(READ UNCOMMITTED)、读提交 (READ COMMITTED)、可重复读 (REPEATABLE READ)、串行化 …

多元回归预测 | Matlab基于逻辑回归(Logistic Regression)的数据回归预测,多输入单输出模型

文章目录 效果一览文章概述部分源码参考资料效果一览 文章概述 多元回归预测 | Matlab基于逻辑回归(Logistic Regression)的数据回归预测,多输入单输出模型 评价指标包括:MAE、RMSE和R2等,代码质量极高,方便学习和替换数据。要求2018版本及以上。 部分源码 %% 清空环境变量…

【开放麒麟】VMware + openKylin 尝鲜“开放麒麟1.0”

7月5日,我国首个开源桌面操作系统“开放麒麟1.0”正式发布,标志着我国拥有了操作系统组件自主选型、操作系统独立构建的能力,填补了我国在这一领域的空白。 本期分享通过虚拟机 Vmware 安装 openKylin 操作系统的方式,来尝鲜一下…

【码银送书第二期】《高并发架构实战:从需求分析到系统设计》

很多软件工程师的职业规划是成为架构师,但是要成为架构师很多时候要求先有架构设计经验,而不做架构师又怎么会有架构设计经验呢?那么要如何获得架构设计经验呢? 一方面可以通过工作来学习,观察所在团队的架构师是如何…

2023通感一体化系统架构与关键技术白皮书

1 通感一体化业务与性能指标 1.1 通感一体化业务分类 根据通信与感知的相互关系 通信辅助感知类业务:通信的参考信号作为感知信号,实现目标定位、测速、手势识别等业务——高速可靠的通信能力为感知数据的汇聚提供保障,能够进一步提高感知精…

python接口自动化(二十四)--unittest断言——中(详解)

简介 上一篇通过简单的案例给小伙伴们介绍了一下unittest断言,这篇我们将通过结合和围绕实际的工作来进行unittest的断言。这里以获取城市天气预报的接口为例,设计了 2 个用例,一个是查询北京的天气,一个是查询 南京为例&#xf…

计网之体系结构(一)

计网之体系结构(一) 计算机网络概述计算机网络的概念计算机网络的功能计算机网络的发展计算机网络发展第一阶段计算机网络发展第二阶段(三级结构)计算机网络发展第三阶段(多层次ISP结构) 概念,功…

阿里云服务器架构X86计算、ARM、GPU/FPGA、裸金属和超级计算集群

阿里云服务器架构有什么区别?X86计算、ARM计算、GPU/FPGA/ASIC、弹性裸金属服务器、超级计算集群有什么区别?阿里云服务器网分享云服务器ECS架构详细说明: 目录 阿里云服务器ECS架构说明 X86计算 ARM计算 GPU/FPGA/ASIC 弹性裸金属服务…

Windows平台软件工程关键路径PDM图

我是荔园微风,作为一名在IT界整整25年的老兵,今天来聊聊Windows平台下软件工程实践中涉及关键路径问题时常用的PDM图。 PDM图 我们用工程实例来完整讲解PDM图的节点表示, ES(最早开始时间) 、 LS(最迟开始时间)、EF(最早完成时间)、LF(最迟…

DevOps基础服务1——版本控制gitlab

文章目录 一、基本了解1.1 安装git客户端1.2 git命令1.2.1 本地仓库1.2.2 远程仓库 二、安装gitlab三、功能管理3.1 创建账号3.2 用户注册授权通知功能3.3 创建项目远程库3.4 ssh设置3.5 克隆远程库项目到本地3.6 上传本地项目代码到远程库3.7 授权用户查看项目权限 一、基本了…

03_007linux内存管理架构以虚拟内存空间布局架构

内存管理子系统架构 内存管理子系统架构可以分为:用户空间、内核空间及硬件部分3个层面,具体结构如 下图所示: 1、用户空间:应用程序使用malloc()申请内存资源/free()释放内存资源。 2、内核空间:内核总是驻留在内存中,是操作系统的一部分。内核空间为内…