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

news2024/11/24 4:16:50

一、前言

此示例演示如何使用预训练卷积神经网络 (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.coloradmin.cn/o/722122.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【软考系统架构师】数据库三大模式:外模式、概念模式和内模式

目录 1 数据库的三种模式 1.1 内模式 1.2 概念模式 1.3 外模式 2 为什么要设置这些模式 2.1 物理层 2.2 概念层 2.3 用户层 1 数据库的三种模式 1.1 内模式 也称存储模式(Storage Schema),内模式是整个数据库的最低层表示&#xff…

【macOS 系列】mac设置截屏或其他操作的默认保存位置

1、第一步、在用户/图片文件夹下,新建“截图”文件夹 2、第二步、打开终端,输入defaults write com.apple.screencapture location ~/Pictures/截图/后回车 3、第三步、操作完成后,再次输入killall SystemUIServer后回车 如果你在web前端开发…

对输入图像按比例压缩、居中填充

摘要: 图像在输入神经网络之前,通常需要进行尺寸压缩,如yolov5的输入为640x640,分类网络Resnet-50的输入为224x224。通常地,分类网络直接将输入进行resize处理,而对于目标检测网络,为了防止目标…

js封装公用from表单验证工具验证长度邮件电话身份证非空

效果 function validateRequiredFields(formId) {var form document.getElementById(formId);var elements form.elements;var valid true;for (var i 0; i < elements.length; i) {var element elements[i];if (element.hasAttribute("req")) {var value e…

Linux:YUM仓库服务

Linux的yum仓库有4种 网络yum源 本地yum源 ftpyum源 httpyum源 第一个网络yum源不用做任何设置&#xff0c;官方默认的yum仓库配置就是从公网上下载的 环境&#xff1a; 主centos 192.168.254.11 从centos 192.168.254.10 思路&#xff1a; 我们在一台主服务器上做个本地…

30.RocketMQ之消费者拉取消息源码

highlight: arduino-light 消息拉取概述 消息消费模式有两种模式&#xff1a;广播模式与集群模式。 广播模式比较简单&#xff0c;每一个消费者需要拉取订阅主题下所有队列的消息。本文重点讲解集群模式。 在集群模式下&#xff0c;同一个消费者组内有多个消息消费者&#xff0…

split()分割字符串【JavaScript】

分割字符串 在JavaScript中&#xff0c;我们可以使用split&#xff08; &#xff09;方法把一个字符串分割成一个数组&#xff0c; 这个数组存放的是原来字符串的所有字符片段。 有多少个片段&#xff0c;数组元素个数就是多少。 语法 字符串名.split&#xff08;"分割…

TypeScript——简介、开发环境搭建、基本类型、编译选项、webpack、babel、类、面向对象的特点、接口、泛型

文章目录 第一章 快速入门0、TypeScript简介1、TypeScript 开发环境搭建2、基本类型3、编译选项4、webpack5、Babel 第二章&#xff1a;面向对象1、类&#xff08;class&#xff09;2、面向对象的特点3、接口&#xff08;Interface&#xff09;4、泛型&#xff08;Generic&…

6、架构:组件与物料设计

本章节主要是物料组件的开发设计&#xff0c;之前提到了物料的结构与构成&#xff0c;但是并没有做明确的解释。作为低代码编辑器中核心的模块之一。 物料即承担了一个提供者的角色&#xff0c;通过对编辑器注入物料组件来完成页面的渲染和可视化编辑器的编排&#xff0c;最终…

服务无法注册进Eureka

相同的配置&#xff0c;在demo里能注册&#xff0c;在自己项目的无法注册&#xff0c;眼睛都快盯出老花眼了&#xff0c;还是不行&#xff0c;果然出现的问题只有在发现问题以后才觉得简单&#xff08;虽然确实是小问题&#xff0c;但是排查了一整天&#xff0c;值得记录一下&a…

IntelliJ IDEA 控制台中文乱码和错误: 非法字符: ‘\ufeff‘

一、问题描述&#xff1a; 最近在 Windows 电脑上使用 IntelliJ IDEA 运行 Java 程序时&#xff0c;发现运行报错且控制台显示乱码。如下图1&#xff1a; &#xfffd;&#xfffd;&#xfffd;&#xfffd;: &#xfffd;&#xfffd;&#xfffd;&#xfffd; GBK &#xff…

Xshell7连接Linux服务器的两种方式

文章目录 一、创建会话式连接二、直接在窗口中连接服务器 一、创建会话式连接 打开Xshell7之后&#xff0c;点击左上角的新建。 然后可以看到一下界面 在名称位置填入会话的名称&#xff0c;自己命名的&#xff0c;叫什么都可以。 主机那里需要填写服务器的ip地址&#xff0…

100种思维模型之黄金圈思维模型-90

黄金圈法则由西蒙.斯涅克&#xff08;Simon.sinek&#xff09;在TED演讲而被人所熟知&#xff0c;它是一种更好地思考问题的习惯。 西蒙.斯涅克说&#xff1a;“世界上所有伟大的领袖和组织——无论是苹果公司&#xff0c;马丁路德金&#xff0c;还是莱特兄弟&#xff0c;他们的…

SpringBoot 集成 xxl-job 实现定时任务管理

SpringBoot 集成 xxl-job 实现定时任务管理 摘要XXL-Job 优势集成XXL-Job操作环境运行XXL-Job1. 下载XXL-Job2. 创建数据库并导入数据3. 修改数据库连接配置4. 启动项目 项目集成1. 导入依赖2. 配置 application.yml 信息3. XxlJobConfig 配置类4. 创建 XxlJobTest 任务测试dem…

qt实现日历和天气显示(QCalendarWidget)

完成展示效果&#xff1a; 本项目主要有QCalendarWidget类和获取天气api 一、QCalendarWidget 关键代码&#xff1a; ui->mCalendarWidget->setHorizontalHeaderFormat(QCalendarWidget :: ShortDayNames);//星期一、二ui->mCalendarWidget->setVerticalHeaderFo…

基于Tars高并发IM系统的设计与实现--进阶篇2

基于Tars高并发IM系统的设计与实现–进阶篇2 消息时序 分为时间和序号 时间 分布式系统中&#xff0c;消息的时间一般都取服务端本地时间戳&#xff0c;一般IM系统服务主机不止一台&#xff0c;每台机器上时间可能会有差异&#xff0c;系统处理也会有延时&#xff0c;时间也…

neo4j删除Property Keys值方法

首先&#xff0c;停止neo4j服务 然后删除安装目录下面databases下面所有文件 重新运行neo4j&#xff0c;发现Property Keys值已经完全清干净了

Docker如何安装Nacos

&#x1f353; 简介&#xff1a;java系列技术分享(&#x1f449;持续更新中…&#x1f525;) &#x1f353; 初衷:一起学习、一起进步、坚持不懈 &#x1f353; 如果文章内容有误与您的想法不一致,欢迎大家在评论区指正&#x1f64f; &#x1f353; 希望这篇文章对你有所帮助,欢…

邮件收发原理及部署postfix邮件系统

目录 一、邮件收发原理 1、原理图及名词解释 2、MTA功能介绍 3、POP和IMAP获取邮件介绍 二、部署postfix邮件系统 1、环境准备 2、DNS服务器部署 3、部署Postfix 4、部署Dovecot 三、使用Foxmail测试 1、修改DNS服务器 2、Foxmail登录测试账户 3、发送测试邮件 …

热力图问题

1.python画图怎么使用特殊符号 python画图怎么使用特殊符号&#xff1f;_python中怎么在绘图中加a b c d_sinysama的博客-CSDN博客python画图怎么使用特殊符号_python中怎么在绘图中加a b c dhttps://blog.csdn.net/QAQIknow/article/details/124390075?ops_request_misc%257…