通过matlab训练和验证深度学习的目标检测
视频演示:
通过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,我们可以通过以下步骤完成标注:
- 打开 MATLAB,点击 APP → 更多应用 → Image Labeler。

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

- 在左上角新建类别标签:
slow→ 对应慢行标志stop→ 对应停车让行标志

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

- 点击 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 标志,模型同样能准确识别。

六、总结
通过本次实验,我们完成了:
- 使用 Image Labeler 完成数据标注。
- 基于 RCNN 模型和 AlexNet 预训练网络 进行目标检测训练。
- 对新图片进行验证,效果准确。
虽然 RCNN 在实际应用中已逐渐被更快的算法(如 YOLO、Faster RCNN)取代,但学习 RCNN 的意义在于:
- 掌握深度学习引入目标检测的核心思想
- 理解目标检测算法的发展历程
- 为后续研究 YOLO、SSD、Mask RCNN 等算法奠定基础
通过matlab训练和验证深度学习的目标检测的更多相关文章
- 基于深度学习的目标检测技术演进:R-CNN、Fast R-CNN,Faster R-CNN
基于深度学习的目标检测技术演进:R-CNN.Fast R-CNN,Faster R-CNN object detection我的理解,就是在给定的图片中精确找到物体所在位置,并标注出物体的类别.obj ...
- 深度学习-09(目标检测:Object Detection)
文章目录 目标检测(Object Detection) 一 .基本概念 1. 什么是目标检测 2. 目标检测的核心问题 3. 目标检测算法分类 4. 目标检测应用 目标检测原理 1.候选区域产生 1 ...
- #Deep Learning回顾#之基于深度学习的目标检测(阅读小结)
原文链接:https://www.52ml.net/20287.html 这篇博文主要讲了深度学习在目标检测中的发展. 博文首先介绍了传统的目标检测算法过程: 传统的目标检测一般使用滑动窗口的框架,主 ...
- 基于深度学习的目标检测(object detection)—— rcnn、fast-rcnn、faster-rcnn
模型和方法: 在深度学习求解目标检测问题之前的主流 detection 方法是,DPM(Deformable parts models), 度量与评价: mAP:mean Average Precis ...
- [OpenCV实战]7 使用YOLOv3和OpenCV进行基于深度学习的目标检测
目录 1 YOLO介绍 1.1 YOLOv3原理 1.2 为什么要将OpenCV用于YOLO? 1.3 在Darknet和OpenCV上对YOLOv3进行速度测试 2 使用YOLOv3进行对象检测(C ...
- 利用更快的r-cnn深度学习进行目标检测
此示例演示如何使用名为“更快r-cnn(具有卷积神经网络的区域)”的深度学习技术来训练对象探测器. 概述 此示例演示如何训练用于检测车辆的更快r-cnn对象探测器.更快的r-nnn [1]是r-cnn ...
- 【深度学习】目标检测算法总结(R-CNN、Fast R-CNN、Faster R-CNN、FPN、YOLO、SSD、RetinaNet)
目标检测是很多计算机视觉任务的基础,不论我们需要实现图像与文字的交互还是需要识别精细类别,它都提供了可靠的信息.本文对目标检测进行了整体回顾,第一部分从RCNN开始介绍基于候选区域的目标检测器,包括F ...
- 基于深度学习的目标检测技术演进:R-CNN、Fast R-CNN、Faster R-CNN
object detection我的理解,就是在给定的图片中精确找到物体所在位置,并标注出物体的类别.object detection要解决的问题就是物体在哪里,是什么这整个流程的问题.然而,这个问题 ...
- (转)基于深度学习的目标检测技术演进:R-CNN、Fast R-CNN、Faster R-CNN
object detection我的理解,就是在给定的图片中精确找到物体所在位置,并标注出物体的类别.object detection要解决的问题就是物体在哪里,是什么这整个流程的问题.然而,这个问题 ...
- 基于深度学习的目标检测算法:SSD——常见的目标检测算法
from:https://blog.csdn.net/u013989576/article/details/73439202 问题引入: 目前,常见的目标检测算法,如Faster R-CNN,存在着速 ...
随机推荐
- Cocos3内置Effect(着色器)介绍
创建材质后Effect有很多下拉选项,介绍一下: 在 Cocos Creator 中,材质(Material) 是用于定义物体表面渲染效果的资源,而 Effect(效果文件) 是材质的核心,它定义了如 ...
- hot100之数组
最大子数组和(053) 先看代码 class Solution { public int maxSubArray(int[] nums) { int n = nums.length; int subS ...
- Windows系列操作系统,跳过开机密码直接登录
要让 **Windows 11** 在启动时 **自动登录**,跳过开机输入密码,通常不推荐直接修改注册表来实现,但如果你希望使用注册表实现这个效果,可以按如下方式操作: --- ## 方法:修改注册 ...
- 从零开始实现简易版Netty(二) MyNetty pipeline流水线
从零开始实现简易版Netty(二) MyNetty pipeline流水线 1. Netty pipeline流水线介绍 在上一篇博客中lab1版本的MyNetty参考netty实现了一个极其精简的r ...
- 启动HTTP代理服务器提示异常,target controller is configured to。。。
启动HTTP代理服务器提示异常,target controller is configured to "use recording Controller" but no such ...
- C# WinForm 窗体阴影
https://www.cnblogs.com/mqxs/p/9466218.html public class FormShadow : Form { public FormShadow() { I ...
- 抖音商单信息通过ETL工具快速同步
一.抖音平台 抖音是一款热门的短视频社交平台,拥有海量用户和高度活跃的商业生态.在抖音上,商家可以开设商铺并发布商品,消费者可以在平台上购买商品并获得优惠.同时,抖音也是一个广告平台,商家可以通过购买 ...
- Django集成Swagger全指南:两种实现方案详解
一.前言 概述 在前后端分离开发中,API 文档的重要性不言而喻.Swagger(现更名为 OpenAPI)作为主流的 API 文档生成工具,能自动生成交互式文档,极大提升开发效率.本文将介绍两种在 ...
- ${_parameter}mybatis中该参数的理解 ---九五小庞
<select id="queryTableDataForMap" parameterType="String" resultType="map ...
- centos7 网卡接口命名规则 udev 详解
在 CentOS 7 中,网络接口的命名由 udev 设备管理器管理.以下是详解 udev 规则如何控制网卡命名的流程: 核心机制 udev 规则目录 规则文件:/usr/li ...