基于matlab使用 YOLO V2深度学习进行多类对象检测(附源码)

一、前言

此示例演示如何训练多类对象检测器。

深度学习是一种强大的机器学习技术,可用于训练强大的多类对象检测器,例如 YOLO v2、YOLO v4、SSD 和 Faster R-CNN。此示例使用该函数训练 YOLO v2 多类室内对象检测器。经过训练的物体检测器能够检测和识别多个不同的室内物体。

二、使用预训练检测器执行对象检测

读取包含目标类对象的测试图像并将其显示。

下载并加载预训练的 YOLO v2 对象检测器。使用该函数检测图像中的对象及其标签。通过使用函数在图像上叠加检测到的边界框来可视化预测。

三、加载数据集

此示例使用由 Bishwo Adhikari  创建的室内物体检测数据集。该数据集由从室内场景中收集的 2213 个标记图像组成,包含 7 个类 - 灭火器、椅子、时钟、垃圾桶、屏幕和打印机。每个图像都包含上述类别的一个或多个标记实例。

下载数据集。图像被组织到不同序列的6个文件夹中。通过指定不同的文件夹路径来创建 。文件中提供了注释和数据集拆分。加载与训练、验证和测试拆分对应的注释和索引。请注意,拆分总共包含 2207 张图像,而不是 2213 张图像,因为 6 张图像没有与之关联的标签。将包含标签的图像的索引存储在 中。最后,将 和 .通过使用命令并指定预加载的索引,将组合数据存储拆分为训练数据存储、验证数据存储和测试数据存储。

四、分析数据

首先,使用数据集可视化数据集中的示例图像。

若要测量数据集中类标签的分布,请使用 按类标签计算对象数。按类可视化计数。

此数据集中的类是不平衡的。如果处理不当,这种不平衡可能会对学习过程有害,因为学习偏向于主导阶级。有多种技术用于处理此问题 - 对代表性不足的类进行过采样,修改损失函数和数据增强。您将在后面的部分中将数据增强应用于训练数据。

五、创建 Yolov2 对象检测网络

对于此示例,您将创建一个 YOLO v2 对象检测网络。YOLO v2 对象检测网络由两个子网组成。特征提取网络后跟检测网络。特征提取网络通常是预训练的CNN。此示例使用 ResNet-50 进行特征提取。

首先,指定网络输入大小和类数。选择网络输入大小时,请考虑网络本身所需的最小大小、训练图像的大小以及以所选大小处理数据所产生的计算成本。如果可行,请选择接近训练图像大小且大于网络所需输入大小的网络输入大小。但是,降低图像分辨率会使对象检测器更难检测到较小的对象。要在运行示例的准确性和计算成本之间保持平衡,请将网络输入大小指定为 [450 450 3]。

定义要检测的对象类数。择基础网络和要素提取图层。选择“activation_40_relu”作为要素提取图层,以将“activation_40_relu”后面的图层替换为检测子网。此特征提取层输出的要素图按系数 16 进行下采样。这种下采样量是空间分辨率和提取特征强度之间的良好权衡,因为网络下游提取的特征以空间分辨率为代价编码更强的图像特征。选择最优特征提取层需要实证分析。预处理训练数据以准备训练数据。预处理函数将调整图像和边界框的大小。此外,它还清理边界框以将其转换为有效形状。接下来,使用 estimateAnchorBox 根据训练数据中对象的大小估计两个锚框。选择最佳数量的锚框需要进行实证分析。

使用 yolov2Layers 函数创建 YOLO v2 对象检测网络。

六、数据增强

数据增强用于通过在训练过程中随机转换原始数据来提高网络准确性。通过使用数据增强,您可以向训练数据添加更多种类,而无需实际增加标记训练样本的数量。用于通过以下方式扩充训练数据

  • 水平随机翻转图像和关联的框标签。

  • 随机缩放图像,关联框标签。

  • 抖动图像颜色。

显示其中一个训练图像和框标签。

七、训练 YOLOv2 对象检测器

用于指定网络训练选项。

八、程序

使用Matlab R2022b版本,点击打开。(版本过低,运行该程序可能会报错)
程序下载:基于matlab使用YOLOV2深度学习进行多类对象检测资源-CSDN文库

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

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

相关文章

设计模式—“领域规则”

在特定领域中,某些变化虽然频繁,但可以抽象为某种规则。这时候,结合特定领域,将问题抽象为语法规则,从而给出在该领域下的一般性解决方案。 典型模式有:Interpreter Interpreter 动机 在软件构建过程中,如果某一个特定领域的问题比较复杂,类似的结构不断重复出现,…

SpringBoot + Vue前后端分离项目实战 || 五:用户管理功能后续

系列文章: SpringBoot Vue前后端分离项目实战 || 一:Vue前端设计 SpringBoot Vue前后端分离项目实战 || 二:Spring Boot后端与数据库连接 SpringBoot Vue前后端分离项目实战 || 三:Spring Boot后端与Vue前端连接 SpringBoot V…

数字图像处理(三)

目录 实验六、图像分割方法 实验七、图像识别与分类 实验六、图像分割方法 一、实验目的 了解图像分割技术相关基础知识;掌握几种经典边缘检测算子的基本原理、实现步骤理解阈值分割、区域分割等的基本原理、实现步骤。理解分水岭分割方法的基本原理、实现方法。…

在 Mac 上安装 K8S

本篇文章将介绍如何在 Mac 上使用 minikube 搭建单机版的 Kubernetes。 安装步骤 安装 Docker 安装 docker 主要是用于提供容器引擎。直接下载安装即可。 下载地址 安装 Kubectl 推荐使用 home brew 安装 brew install kubectl可以使用下面的命令查看是否已经安装完毕 …

css实现鼠标悬停时滑出层提示

css实现鼠标悬停时滑出层提示的方法介绍 这是一个简单的鼠标悬停提示特效&#xff0c;类似于alt标签&#xff0c;不过这一种是用纯CSS实现&#xff0c;扩展性好&#xff0c;而且在提示的层里可以加入图片或其它布局&#xff0c;这个要根据你的需要了。 代码如下: <!DOCTYPE…

Flink基础概念及常识

1.flink入门 官方定义&#xff1a;Apache Flink是一个框架和分布式处理引擎&#xff0c;用于在无边界和有边界数据流上进行有状态的计算&#xff0c;Flink能在所有常见集群环境中运行&#xff0c;并能以内存速度和任意规模进行计算。 简言之&#xff0c;Flink是一个分布式的计…

Spring相关API

⭐作者介绍&#xff1a;大二本科网络工程专业在读&#xff0c;持续学习Java&#xff0c;努力输出优质文章 ⭐作者主页&#xff1a;逐梦苍穹 ⭐所属专栏&#xff1a;JavaEE、Spring SpringAPI 1、继承体系2、 getBean() 1、继承体系 上述继承体系中的主要类和接口包括&#xff1…

[Spec] WiFi P2P Discovery

学习资料&#xff1a;Android Miracast 投屏 目录 学习资料&#xff1a;Android Miracast 投屏 P2P discovery Introduction Device Discovery procedures Listen State Search State Scan Phase Find Phase 总结 P2P discovery Introduction P2P发现使P2P设备能够快速…

SC7514运算放大器(OPA)可pin对pin兼容AD8694

SC751X 系列轨至轨 CMOS 运算放大器针对低电压单电源运行进行了优化。轨至轨输入和输出、低噪声(5nV/√Hz) 和高速运行 (38MHz, 22V/μs) 使得运算放大器非常适合驱动模数 (A/D) 转换器。可pin对pin兼容AD8694。而且也适用于手机功率放大器 (PA) 控制环路和视频处理(75Ω 驱动能…

如何清除浏览器的 DNS 缓存 (Chrome, Firefox, Safari)

如何清除浏览器的 DNS 缓存 (Chrome, Firefox, Safari) Chrome Chromium Edge Firefox Safari clear DNS Cache, flush DNS cache 请访问原文链接&#xff1a;https://sysin.org/blog/clear-browser-dns-cache/&#xff0c;查看最新版。原创作品&#xff0c;转载请保留出处。…

macOS FreeBSD 如何刷新 DNS 缓存

macOS FreeBSD 如何刷新 DNS 缓存 全文&#xff1a;如何刷新 DNS 缓存 (macOS, Linux, Windows) Unix Linux Windows 如何刷新 DNS 缓存 (macOS, FreeBSD, RHEL, CentOS, Debian, Ubuntu, Windows) 请访问原文链接&#xff1a;https://sysin.org/blog/how-to-flush-dns-cach…

无迹卡尔曼滤波在目标跟踪中的作用(一)

在前一节中&#xff0c;我们介绍了扩展卡尔曼滤波算法EKF在目标跟踪中的应用&#xff0c;其原理是 将非线性函数局部线性化&#xff0c;舍弃高阶泰勒项&#xff0c;只保留一次项 &#xff0c;这就不可避免地会影响结果的准确性&#xff0c;除此以外&#xff0c;实际中要计算雅各…