基于Matlab深度学习目标检测算法系统GUI,单目标、多目标检测

        深度学习是一种功能强大的机器学习方法,可用于训练稳健的目标检测器。目标检测有多种方法,包括 Faster R-CNN 和 you only look once (YOLO) v2!本文作者系统集成了单目标、多目标于一体化,只需更换数据集目标,简单方便,通过可视化按钮即可完成所有操作! 

        该系统支持持各种目标检测,包括:安全帽、汽车、火灾烟雾、交通标志、疲劳驾驶、口罩、车辆、行人、钢材缺陷、裂缝、药盒、车牌、人脸、信号灯....等

        随着深度学习在目标检测领域的大规模应用, 目标检测技术的精度和速度得到迅速提高, 已被广泛应用于 行人检测、人脸检测、文字检测、交通标志及信号灯检测和遥感图像检测等领域. 本文在基于调研国内外相关文 献的基础上对目标检测方法进行了综述. 首先介绍了目标检测领域的研究现状以及对目标检测算法进行检验的数 据集和性能指标. 对两类不同架构的目标检测算法, 基于区域建议的双阶段目标检测算法和基于回归分析的单阶段 目标检测算法的一些典型算法的流程架构、性能效果、优缺点进行了详细的阐述, 还补充了一些近几年来新出现 的目标检测算法, 并列出了各种算法在主流数据集上的实验结果和优缺点对比. 最后对目标检测的一些常见应用场 景进行说明, 并结合当前的研究热点分析了未来发展趋势。

         高度集成系统!傻瓜式操作,即可完成训练和检测,支持视频和图片加载识别方式!

一、目标检测概述 

        深度学习方法应用到目标检测领域之前, 目标检测领域发展平缓. 在 2012 年的 ImageNet[2] 分类任务 中, 卷积神经网络的应用使得图像分类任务的效果大 大提高, 在此推动下, Girshick 等[3] 首次在目标检测领 域中使用了区域卷积网络 (regions with CNN features, R-CNN), 在检测效果上取得了非常巨大的提升. 此后, 深度学习与目标检测任务的结合使得目标检测领域开 始迅速发展, 并在实践中得到广泛应用. 目标检测具有 广阔的应用前景, 已经在监控安防、自动驾驶、遥感侦测、医学图像病灶检测等领域取得了很好的效果。

二、加载数据集

        只需将指定数据集xml和图片放在相关的目录,然后点击数据选取即可!

% Display first few rows of the data set.
vehicleDataset(1:4,:)

shuffledIndices = randperm(height(vehicleDataset));
idx = floor(0.6 * length(shuffledIndices) );

trainingIdx = 1:idx;
trainingDataTbl = vehicleDataset(shuffledIndices(trainingIdx),:);

validationIdx = idx+1 : idx + 1 + floor(0.1 * length(shuffledIndices) );
validationDataTbl = vehicleDataset(shuffledIndices(validationIdx),:);

testIdx = validationIdx(end)+1 : length(shuffledIndices);
testDataTbl = vehicleDataset(shuffledIndices(testIdx),:);

三、创建目标检测

函数自动根据预训练的 ResNet-50 特征提取网络创建 YOLO 、RCNN等目标检测网络。

  • 网络输入大小
  • 锚框
  • 特征提取网络

        首先,指定网络输入大小和类的数量。选择网络输入大小时,请考虑网络本身所需的最低大小、训练图像的大小以及基于所选大小处理数据所产生的计算成本。如果可行,请选择接近训练图像大小且大于网络所需输入大小的网络输入大小。为了降低运行示例的计算成本,请指定网络输入大小为 [224 224 3],这是运行网络所需的最低大小。

四、数据增强

% Visualize the augmented images.
augmentedData = cell(4,1);
for k = 1:4
    data = read(augmentedTrainingData);
    augmentedData{k} = insertShape(data{1},'Rectangle',data{2});
    reset(augmentedTrainingData);
end
figure
montage(augmentedData,'BorderSize',10)

五、训练目标检测器

        使用 trainingOptions 指定网络训练选项。将 'ValidationData' 设置为经过预处理的验证数据。将 'CheckpointPath' 设置为临时位置。这样可在训练过程中保存经过部分训练的检测器。如果由于停电或系统故障等原因导致训练中断,您可以从保存的检查点继续训练。

options = trainingOptions('sgdm', ...
        'MiniBatchSize',16, ....
        'InitialLearnRate',1e-3, ...
        'MaxEpochs',20, ... 
        'CheckpointPath',tempdir, ...
        'ValidationData',preprocessedValidationData);

六、使用测试集评估检测器

        基于大量图像评估经过训练的目标检测器以测量其性能。Computer Vision Toolbox™ 提供目标检测器评估函数,用于测量常见指标,如平均精确率 (evaluateDetectionPrecision) 和对数平均泄漏检率 (evaluateDetectionMissRate)。对于此示例,使用平均精确率指标来评估性能。平均准确率提供单一数字,该数字综合反映了检测器进行正确分类的能力(精确率)和检测器找到所有相关对象的能力(召回率)。将应用于训练数据的同一预处理变换应用于测试数据。请注意,数据增强不适用于测试数据。测试数据应代表原始数据并且保持不变,以便进行无偏置的评估。

figure
plot(recall,precision)
xlabel('Recall')
ylabel('Precision')
grid on
title(sprintf('Average Precision = %.2f',ap))

 七、测试

        可选择图片、视频方式,高度集成!简易操作!

比如检测车辆,


详情资料请扣扣:1341703358 基于深度学习的目标检测技术因其巨大的优势, 如泛化能力强、复杂场景下效果出众、应用前景广阔 等已经成为一个计算机视觉领域的一个热门方向. 行 人检测、人脸检测、文字检测、交通标志及信号灯检 测和遥感图像检测等都是目标检测的常见应用场景. 通过对不同方式的目标检测算法的对比可以看出, 双 阶段目标检测算法先使用算法提取候选区域, 然后对 候选框目标进行二次修正, 精度较高且定位准确, 但是 训练复杂计算量大, 难以实现实时检测; 单阶段目标检 测算法没有候选区域推荐过程, 在一个阶段就能确定 目标类别并定位目标, 模型简单且速度快, 但是对小目 标和密集目标的检测精度有待提高. 近几年来, 视频目 标检测、显著目标检测和基于 GAN 的目标检测都有 良好的发展势头, 新出现的目标检测算法如 NASFPN、EfficientDet、YOLOF 等的提出也为目标检测 领域的发展提供了新的思路. 随着人们对基于深度学 习的目标检测技术的进一步深入, 相信其应用领域会 更加广泛, 为人类的生存发展带来更加巨大的效益。

猜你喜欢

转载自blog.csdn.net/Jiangtagong/article/details/124250723