赞
踩
Yolo 是当前流行的目标检测框架之一,通过简单地进行图像标记和网络配置就可以训练出Yolo 模型,用于自然场景下的目标检测。本次实验选择经典的交通目标检测应用,通过训练车辆目标、交通标志目标来得到 Yolo 模型并进行评测,以验证通用场景下交通目标检测模型的基本训练流程,方便小伙伴结合自定义的数据集进行拓展。
车辆检测是智能交通应用中的基础模块之一,一般需要对车辆做区域标记、网络参数设计等进行训练、模型存储和调用。本次实验选择 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),:);
本次实验选择基于 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);
本次实验设置训练 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 所示。
核心代码在资源包里面,里面有文档解释
交通标志检测也是智能交通应用中的基础模块之一,一般需要通过对道路上的交通标志做区域标记、网络参数设计等进行训练、模型存储和调用。本次实验选择 MATLAB 提供的stopSignsAndCars 数据集进行训练、测试,如图 31-93 所示。
目标标注信息,核心代码跟上面写的差不多,这里就不啰嗦了。
数据分配,和模型结构方式也是跟上面的一样,更详细的写在文档啦
大数据和人工智能技术在不断发展,已经逐渐影响到我们生活的方方面面。伴随着刷脸支付、以图搜车、视频特效、美颜相机等的应用,计算机视觉和深度学习的融合应用也得以进一步落地和发展,并在底层的图像分类、目标检测、图像分割等领域不断改进,呈现逐渐普及的趋势,吸引着人们不断进行研究和应用。
最后提供完整程序代码、文档、运行视频,对你有帮助的话帮忙点个爱心吧,谢谢您的观看。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。