【MATLAB】目标检测初探

0 前言

  之前因为项目原因,做了一个基于YOLOv5实现目标检测的程序,是基于Python做的,直接使用YOLOv5开源库,只需要导入数据训练再运行特定文件即可,简单的操作得到优秀的结果。因此当时没有仔细研究代码,更没有深究目标检测相关理论。最近学习了一些MATLAB中目标检测相关的内容,于是想结合官方文档和demo重新实现之前那个项目,作为一个入门参考。

1 目标检测概述

  所谓目标检测(Object Detection),其核心任务是从图像或视频中识别并定位感兴趣的对象,这不仅要求高准确率的分类,还需要精确的位置预测。相比于图像分类(Classification)只需要知道图片中是什么(what),目标检测既要知道“what”,也要知道“where”。

  目标检测经过二十多年的发展,从最初基于传统机器学习先提取特征,再进行图像分类,到现在使用卷积神经网络直接“端到端”,使特征提取自动化,同时也提高了目标检测的准确率。

  目前基于深度学习实现目标检测主要有两类做法,一种称为两段式目标检测,即先通过一个网络筛选出感兴趣的区域(ROI),或者说存在目标可能性较大的区域,这一步叫做region proposal,然后再根据这些筛选出的region,判断其属于哪种类别,即图像分类,两段式的代表算法有R-CNNSPPNetFast R-CNNFaster R-CNN等;另一种方法叫做一段式目标检测,即将上述两个步骤合并到一起进行,没有单独的region proposal的步骤,两段式最具代表性的算法就是YOLO系列算法,目前已经发展出多个版本,从YOLO v1到YOLO v8(来自不同的研究团队),比较知名的还是YOLO v5.

所谓YOLO,即You Only Look Once,顾名思义,必然是一段式的

  从研究情况来看,YOLO系列算法更受欢迎,各个YOLO系列算法也有各自的开源仓库(当然,都是Python的),目前MATLAB中已经支持YOLO v2,YOLO v3,YOLO v4,但没有和python开源仓库那种比较完善的,因此想基于帮助文档进行代码实践,对已有函数进行再次封装,提高其易用性的情况下测试一下我之前一个项目的数据集,并比较各算法优劣。

参考链接

2 算法实践

2.1 YOLO v2

  首先来看MATLAB自带的一个示例,在命令行输入help help,打开帮助文档,直接搜索YOLO,找到这个链接:

在这里插入图片描述

点开之后可以得到一个训练检测车辆目标的demo:

在这里插入图片描述

上述demo链接直达

依次运行该代码,可以发现其实核心主要有三个步骤:准备数据,导入模型,设置训练参数,这也是训练核心函数trainYOLOv2ObjectDetector的必要参数。

trainYOLOv2ObjectDetector详解

接下来依次实现。其带注解代码如下所示

clear,clc
% 导入训练数据
data = load('vehicleTrainingData.mat');
trainingData = data.vehicleTrainingData;
% 对数据进行处理——相对路径转换成绝对路径
dataDir = fullfile(toolboxdir('vision'),'visiondata');
trainingData.imageFilename = fullfile(dataDir,trainingData.imageFilename);
% 对数据进行处理——打乱数据,便于训练
rng(0); % 固定随机种子,保证运行结果可复现
shuffledIdx = randperm(height(trainingData));
trainingData = trainingData(shuffledIdx,:);
% 构建数据结构——datastore
imds = imageDatastore(trainingData.imageFilename); % 图片数据存储
blds = boxLabelDatastore(trainingData(:,2:end)); % 标注数据存储
ds = combine(imds, blds); % 将两个结合起来
% 导入网络
net = load('yolov2VehicleDetector.mat');
lgraph = net.lgraph;
% 设置训练选项
options = trainingOptions('sgdm',...    % 算法选择
          'InitialLearnRate',0.001,...  % 初始学习率
          'Verbose',true,...            % 是否输出训练信息
          'VerboseFrequency',30
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

记录无知岁月

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值