视频演示:

通过matlab训练和验证深度学习的目标检测_哔哩哔哩_bilibili

大家好,这里是 Coding茶水间

今天我们来学习如何使用 MATLAB 来进行 深度学习目标检测,并以 RCNN 算法 为例,完成一个交通标志检测的小项目。


一、RCNN 算法简介

在目标检测的发展历程中,RCNN(Region-based Convolutional Neural Network) 是一个非常重要的里程碑。它首次将 深度卷积神经网络(CNN) 引入到了目标检测任务中,大大提升了检测精度。

RCNN 的主要创新在于:

  • 使用 CNN 自动提取特征,替代了传统的人工特征工程。
  • 将候选区域(Region Proposal)与 CNN 特征结合,用于分类和回归。

虽然由于计算效率较低,RCNN 现在已经不再主流,但它作为目标检测的开山之作,为后续的 Fast RCNN、Faster RCNN、YOLO、SSD 等高效算法提供了重要的研究基础。


二、实验准备

我们本次实验基于 MATLAB,并准备了一个 比较简单的交通标志数据集,数据集主要包含两类:

  • slow(慢行标志)
  • stop(停车让行标志)

每类数据约 10 张图片左右,本次主要大概跑一下RCNN模型从数据标注到训练和验证的大概流程,所以我们这个数据集并没有准备太多,实际应用中我们需要准备大量的数据集才能尽可能的让模型收敛。


三、数据标注

MATLAB 提供了便捷的标注工具 Image Labeler,我们可以通过以下步骤完成标注:

  1. 打开 MATLAB,点击 APP → 更多应用 → Image Labeler

  1. 在工具界面中点击 Load → Add images from folder,导入我们准备好的两类图片。

  1. 在左上角新建类别标签:

    • slow → 对应慢行标志
    • stop → 对应停车让行标志

  1. 逐张图片框选目标,并指定类别。

  1. 点击 Export → To File,保存为 label_data.mat 文件。

标注结果包含:

  • 数据源路径
  • 目标类别
  • 标注框的坐标信息

四、模型训练

接下来进入 RCNN 训练阶段。MATLAB 提供了 trainRCNNObjectDetector 接口,我们只需完成数据准备和参数设置即可。

objectDetectorTrainingData方法可以直接把标注好的数据读取解析出来。

训练代码示例

clc;
clear;
close all; % 加载标注数据
load label_data % 将标注数据转换为RCNN训练所需的格式
trainingData = objectDetectorTrainingData(gTruth); % 加载预训练的AlexNet网络作为特征提取器
net = alexnet; % 配置训练参数
options = trainingOptions('sgdm', ...
'MiniBatchSize', 128, ... % 每批处理128个样本
'InitialLearnRate', 1e-3, ... % 初始学习率为0.001
'LearnRateSchedule', 'piecewise', ... % 分段学习率策略
'LearnRateDropFactor', 0.1, ... % 学习率下降因子为0.1
'LearnRateDropPeriod', 100, ... % 每100轮下降一次学习率
'MaxEpochs', 10, ... % 最大训练轮数为10
'Plots', 'training-progress', ... % 显示训练进度图
'Verbose', true); % 显示训练详细信息 % 训练RCNN目标检测器
% 设置正负样本的重叠阈值:IOU>0.5为正样本,IOU<0.3为负样本
rcnn = trainRCNNObjectDetector(trainingData, net, options, ...
'NegativeOverlapRange', [0 0.3], 'PositiveOverlapRange', [0.5 1]); % 保存训练好的模型
save rcnn_stop_slow_detector.mat rcnn;

训练效果

训练过程中,MATLAB 会显示:

  • 准确率曲线:随着迭代次数增加,准确率逐渐接近 100%。
  • 损失曲线:随着训练推进,loss 趋近于 0。


五、模型验证

训练完成后,我们使用 未出现在训练集中的新图片 来验证效果。

clc;
clear;
close all; load rcnn_stop_slow_detector
% 加载测试图像
I = imread('stop_sign_ch/stopstest.jpg'); % 使用训练好的检测器进行目标检测
[bboxes, scores, labels] = detect(rcnn, I); % 筛选置信度大于0.9
high_conf_indices = scores > 0.9;
bboxes = bboxes(high_conf_indices, :);
scores = scores(high_conf_indices);
labels = labels(high_conf_indices); % 在图像上标注检测结果并显示
if ~isempty(bboxes)
% 创建包含标签和分数的标注文本
annotations = string(labels) + ": " + string(scores); % 在图像上绘制边界框和标注
I = insertObjectAnnotation(I, 'rectangle', bboxes, annotations); else
fprintf('未检测到任何置信度大于0.9的目标\n');
end % 显示带有检测结果的图像
figure
imshow(I)
title('RCNN检测结果 - Stop和Slow标志');

验证效果:

  • 对于 stop 标志,模型能够高置信度框选目标。
  • 对于 slow 标志,模型同样能准确识别。


六、总结

通过本次实验,我们完成了:

  1. 使用 Image Labeler 完成数据标注。
  2. 基于 RCNN 模型和 AlexNet 预训练网络 进行目标检测训练。
  3. 对新图片进行验证,效果准确。

虽然 RCNN 在实际应用中已逐渐被更快的算法(如 YOLO、Faster RCNN)取代,但学习 RCNN 的意义在于:

  • 掌握深度学习引入目标检测的核心思想
  • 理解目标检测算法的发展历程
  • 为后续研究 YOLO、SSD、Mask RCNN 等算法奠定基础

通过matlab训练和验证深度学习的目标检测的更多相关文章

  1. 基于深度学习的目标检测技术演进:R-CNN、Fast R-CNN,Faster R-CNN

    基于深度学习的目标检测技术演进:R-CNN.Fast R-CNN,Faster R-CNN object detection我的理解,就是在给定的图片中精确找到物体所在位置,并标注出物体的类别.obj ...

  2. 深度学习-09(目标检测:Object Detection)

    文章目录 目标检测(Object Detection) 一 .基本概念 1. 什么是目标检测 2. 目标检测的核心问题 3. 目标检测算法分类 4. 目标检测应用 目标检测原理 1.候选区域产生 1 ...

  3. #Deep Learning回顾#之基于深度学习的目标检测(阅读小结)

    原文链接:https://www.52ml.net/20287.html 这篇博文主要讲了深度学习在目标检测中的发展. 博文首先介绍了传统的目标检测算法过程: 传统的目标检测一般使用滑动窗口的框架,主 ...

  4. 基于深度学习的目标检测(object detection)—— rcnn、fast-rcnn、faster-rcnn

    模型和方法: 在深度学习求解目标检测问题之前的主流 detection 方法是,DPM(Deformable parts models), 度量与评价: mAP:mean Average Precis ...

  5. [OpenCV实战]7 使用YOLOv3和OpenCV进行基于深度学习的目标检测

    目录 1 YOLO介绍 1.1 YOLOv3原理 1.2 为什么要将OpenCV用于YOLO? 1.3 在Darknet和OpenCV上对YOLOv3进行速度测试 2 使用YOLOv3进行对象检测(C ...

  6. 利用更快的r-cnn深度学习进行目标检测

    此示例演示如何使用名为“更快r-cnn(具有卷积神经网络的区域)”的深度学习技术来训练对象探测器. 概述 此示例演示如何训练用于检测车辆的更快r-cnn对象探测器.更快的r-nnn [1]是r-cnn ...

  7. 【深度学习】目标检测算法总结(R-CNN、Fast R-CNN、Faster R-CNN、FPN、YOLO、SSD、RetinaNet)

    目标检测是很多计算机视觉任务的基础,不论我们需要实现图像与文字的交互还是需要识别精细类别,它都提供了可靠的信息.本文对目标检测进行了整体回顾,第一部分从RCNN开始介绍基于候选区域的目标检测器,包括F ...

  8. 基于深度学习的目标检测技术演进:R-CNN、Fast R-CNN、Faster R-CNN

    object detection我的理解,就是在给定的图片中精确找到物体所在位置,并标注出物体的类别.object detection要解决的问题就是物体在哪里,是什么这整个流程的问题.然而,这个问题 ...

  9. (转)基于深度学习的目标检测技术演进:R-CNN、Fast R-CNN、Faster R-CNN

    object detection我的理解,就是在给定的图片中精确找到物体所在位置,并标注出物体的类别.object detection要解决的问题就是物体在哪里,是什么这整个流程的问题.然而,这个问题 ...

  10. 基于深度学习的目标检测算法:SSD——常见的目标检测算法

    from:https://blog.csdn.net/u013989576/article/details/73439202 问题引入: 目前,常见的目标检测算法,如Faster R-CNN,存在着速 ...

随机推荐

  1. Cocos3内置Effect(着色器)介绍

    创建材质后Effect有很多下拉选项,介绍一下: 在 Cocos Creator 中,材质(Material) 是用于定义物体表面渲染效果的资源,而 Effect(效果文件) 是材质的核心,它定义了如 ...

  2. hot100之数组

    最大子数组和(053) 先看代码 class Solution { public int maxSubArray(int[] nums) { int n = nums.length; int subS ...

  3. Windows系列操作系统,跳过开机密码直接登录

    要让 **Windows 11** 在启动时 **自动登录**,跳过开机输入密码,通常不推荐直接修改注册表来实现,但如果你希望使用注册表实现这个效果,可以按如下方式操作: --- ## 方法:修改注册 ...

  4. 从零开始实现简易版Netty(二) MyNetty pipeline流水线

    从零开始实现简易版Netty(二) MyNetty pipeline流水线 1. Netty pipeline流水线介绍 在上一篇博客中lab1版本的MyNetty参考netty实现了一个极其精简的r ...

  5. 启动HTTP代理服务器提示异常,target controller is configured to。。。

    启动HTTP代理服务器提示异常,target controller is configured to "use recording Controller" but no such ...

  6. C# WinForm 窗体阴影

    https://www.cnblogs.com/mqxs/p/9466218.html public class FormShadow : Form { public FormShadow() { I ...

  7. 抖音商单信息通过ETL工具快速同步

    一.抖音平台 抖音是一款热门的短视频社交平台,拥有海量用户和高度活跃的商业生态.在抖音上,商家可以开设商铺并发布商品,消费者可以在平台上购买商品并获得优惠.同时,抖音也是一个广告平台,商家可以通过购买 ...

  8. Django集成Swagger全指南:两种实现方案详解

    一.前言 概述 在前后端分离开发中,API 文档的重要性不言而喻.Swagger(现更名为 OpenAPI)作为主流的 API 文档生成工具,能自动生成交互式文档,极大提升开发效率.本文将介绍两种在 ...

  9. ${_parameter}mybatis中该参数的理解 ---九五小庞

    <select id="queryTableDataForMap" parameterType="String" resultType="map ...

  10. centos7 网卡接口命名规则 udev 详解

    在 CentOS 7 中,网络接口的命名由 ​​udev​​ 设备管理器管理.以下是详解 udev 规则如何控制网卡命名的流程: ​​核心机制​​ ​​udev 规则目录​​ 规则文件:/usr/li ...