当前位置:   article > 正文

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

matlab大作业


前言

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


一、车辆目标的 YOLO 检测

1.1数据集

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

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

在这里插入图片描述
可以发现,数据集以 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);
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

效果如下:
在这里插入图片描述
本次实验选择 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
  • 2
  • 3
  • 4
  • 5

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
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

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);
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

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

1.4模型测试

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

二、交通标志的 YOLO 检测

2.1交通标志数据集

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

2.2交通标志模型测试

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

总结

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/442359
推荐阅读
相关标签
  

闽ICP备14008679号