大作业毕设系统基于matlab的yolo交通目标检测应用



前言

Yolo 是当前流行的目标检测框架之一,通过简单地进行图像标记和网络配置就可以训练出Yolo 模型,用于自然场景下的目标检测。本次实验选择经典的交通目标检测应用,通过训练车辆目标、交通标志目标来得到 Yolo 模型并进行评测,以验证通用场景下交通目标检测模型的基本训练流程,方便小伙伴结合自定义的数据集进行拓展。


一、车辆目标的 YOLO 检测

1.1数据集

车辆检测是智能交通应用中的基础模块之一,一般需要对车辆做区域标记、网络参数设计等进行训练、模型存储和调用。本次实验选择 MATLAB 提供的 vehicleDataset 数据集进行训练和测试,如图 31-85 所示。
在这里插入图片描述
为 了 进 行 汽 车 目 标 检 测 的 训 练 , 我 们 还 需 要 做 数 据 标 注 , 这 里 直 接 通 过 读 取vehicleDatasetGroundTruth.mat 来获得数据集的标注信息。核心代码如下:

% 加载标注
data = load(fullfile(pwd, 'vehicleDatasetGroundTruth.mat'));
vehicleDataset = data.vehicleDataset; 
% 显示样例
vehicleDataset(1:4,:)

在这里插入图片描述
可以发现,数据集以 Table 数据格式来存储图片的文件路径、目标矩形框信息,我们选择前 4 副图像进行呈现。核心代码如下:

% 图片路径
vehicleDataset.imageFilename = fullfile(pwd, vehicleDataset.imageFilename);
im_list = [];
for i = 1 : 4
 % 读取
 I = imread(vehicleDataset.imageFilename{i});
 % 标注
 I = insertShape(I,'Rectangle',vehicleDataset.vehicle{i});
 im_list(:,:,:,i) = mat2gray(I);
end
figure; montage(im_list);

效果如下:
在这里插入图片描述
本次实验选择 80%的数据用于训练,选择 20%的数据用于测试。为了进行随机拆分,使用rand 函数对已有的数据集进行随机排序,得到随机序号并按比例分配。核心代码如下:

% 拆分训练集和测试集
shuffled_index = randperm(size(vehicleDataset,1));
idx = floor(0.8 * length(shuffled_index));
train_data = vehicleDataset(shuffled_index(1:idx),:);
test_data = vehicleDataset(shuffled_index(idx+1:end),:);

1.2yolo网络模型设计

本次实验选择基于 ResNet50 的 Yolo V2 网络,通过 yolov2Layers 对 ResNet50 网络进行修改,得到匹配汽车目标检测的网络结构。核心代码如下:

% 参数设置
image_size = [224 224 3];
num_classes = size(vehicleDataset,2)-1;
anchor_boxes = [
 43 59
 18 22
 23 29
 84 109
 ];
% 加载 ResNet50
base_network = resnet50;
% 修改网络
featureLayer = 'activation_40_relu';
lgraph = 
yolov2Layers(image_size,num_classes,anchor_boxes,base_network,featureLayer);

1.3模型训练

本次实验设置训练 100 步,由于网络相对较深,所以建议采用 GPU 环境进行训练,具体的训练配置如下:

% 训练参数
options = trainingOptions('sgdm', ...
 'MiniBatchSize', 16, ....
 'InitialLearnRate',1e-3, ...
 'MaxEpochs',100,...
 'CheckpointPath', checkpoint_folder, ...
 'Shuffle','every-epoch', ...
 'ExecutionEnvironment', 'gpu');
% 执行训练
[detector,info] = trainYOLOv2ObjectDetector(train_data,lgraph,options);

可以发现,运行耗时相对较长,这与实际的硬件配置有关。在本机环境下大概训练 30 分钟,其训练过程如图 31-89 所示。
在这里插入图片描述

1.4模型测试

核心代码在资源包里面,里面有文档解释
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

二、交通标志的 YOLO 检测

2.1交通标志数据集

交通标志检测也是智能交通应用中的基础模块之一,一般需要通过对道路上的交通标志做区域标记、网络参数设计等进行训练、模型存储和调用。本次实验选择 MATLAB 提供的stopSignsAndCars 数据集进行训练、测试,如图 31-93 所示。
在这里插入图片描述
目标标注信息,核心代码跟上面写的差不多,这里就不啰嗦了。
在这里插入图片描述
数据分配,和模型结构方式也是跟上面的一样,更详细的写在文档啦

2.2交通标志模型测试

在这里插入图片描述
在这里插入图片描述

总结

大数据和人工智能技术在不断发展,已经逐渐影响到我们生活的方方面面。伴随着刷脸支付、以图搜车、视频特效、美颜相机等的应用,计算机视觉和深度学习的融合应用也得以进一步落地和发展,并在底层的图像分类、目标检测、图像分割等领域不断改进,呈现逐渐普及的趋势,吸引着人们不断进行研究和应用。
最后提供完整程序代码、文档、运行视频,对你有帮助的话帮忙点个爱心吧,谢谢您的观看。

源码下载链接:

链接: link

  • 6
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

挂科边缘(毕业版)

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

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

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

打赏作者

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

抵扣说明:

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

余额充值