基于YOLOv5的目标检测系统详解(附MATLAB GUI版代码)

news2024/11/16 10:25:57

摘要:本文重点介绍了基于YOLOv5目标检测系统的MATLAB实现,用于智能检测物体种类并记录和保存结果,对各种物体检测结果可视化,提高目标识别的便捷性和准确性。本文详细阐述了目标检测系统的原理,并给出MATLAB的实现代码、预训练模型,以及GUI界面设计。基于YOLOv5目标检测算法,在界面中可以选择各种图片、文件夹、视频进行检测识别。博文提供了完整的MATLAB代码和使用教程,适合新入门的朋友参考,完整代码资源文件请转至文末的下载链接。

文章目录

  • 1. 引言
  • 2. 系统界面演示效果
  • 3. 检测过程代码
  • 4. 系统实现
  • 5. 结果分析和优化建议
  • 下载链接
  • 6. 总结与展望
  • 结束语
  • 参考文献

基于YOLOv5的目标检测系统演示与介绍-MATLAB GUI版

➷点击跳转至文末所有涉及的完整代码文件下载页☇


1. 引言

        撰写这篇博客的初衷是分享YOLOv5目标检测算法的实现与应用,为大家提供实践指南。感谢粉丝们的支持。这里我非常鼓励读者深入理解背后原理,发挥创造力,进行探索与尝试,而不是简单地套用现成的解决方案。期待在未来的技术交流中,共同进步与成长。本博客内容为博主原创,相关引用和参考文献我已在文中标注,考虑到可能会有相关研究人员莅临指导,博主的博客这里尽可能以学术期刊的格式撰写,如需参考可引用本博客格式如下:

[1] 思绪无限. 基于YOLOv5的目标检测系统详解[J/OL]. CSDN, 2023.05. https://wuxian.blog.csdn.net/article/details/130472314.
[2] Wu, S. (2023, May). A Comprehensive Guide to Object Detection System Based on YOLOv5 [J/OL]. CSDN. https://wuxian.blog.csdn.net/article/details/130472314.

        目标检测作为计算机视觉领域的一个重要研究方向,旨在从图像或视频中检测并识别特定物体(Ren et al., 2015)[1]。近年来,随着深度学习技术的发展,卷积神经网络(CNN)在目标检测领域取得了显著成果。R-CNN(Girshick et al., 2014)[2]是第一个将卷积神经网络应用于目标检测的方法,该方法首先使用选择性搜索生成物体候选框,然后使用CNN对候选框进行特征提取,最后通过支持向量机进行分类。R-CNN相较于传统方法在目标检测任务上取得了较好的性能,但计算速度较慢,无法实现实时检测。

        为解决R-CNN速度问题,Girshick提出了Fast R-CNN(Girshick, 2015)[3]。Fast R-CNN通过引入RoI池化层,将物体候选框的特征提取与分类进行联合训练,大幅提高了检测速度。然而,Fast R-CNN仍依赖于选择性搜索生成物体候选框,导致检测速度仍有待提升。Faster R-CNN(Ren et al., 2015)[1]进一步改进了Fast R-CNN,通过引入区域提议网络(RPN),实现了物体候选框生成与特征提取的端到端学习。Faster R-CNN在保持较高精度的同时,取得了更快的检测速度。SSD(Liu et al., 2016)[4]是另一个流行的目标检测方法,通过在不同尺度的特征图上进行检测,实现了对不同尺度物体的高效检测。SSD在速度与精度上达到了较好的平衡,但在小物体检测上性能略逊于Faster R-CNN。

        YOLO(You Only Look Once,Redmon et al., 2016)[5]系列算法凭借其实时性和准确性在目标检测领域受到广泛关注。YOLO将目标检测任务视为回归问题,通过单次前向传播实现目标的位置与类别预测。YOLOv2(Redmon and Farhadi, 2017)[8]通过改进网络结构与训练策略,在保持实时性的同时进一步提高了检测精度。YOLOv3(Redmon 和 Farhadi, 2018)[9]采用了多尺度特征融合,引入了类别与物体性(objectness)分离的策略,提高了小物体检测性能。YOLOv4(Bochkovskiy et al., 2020)[7]在YOLOv3的基础上,融合了多种最新的目标检测技术,如CSPNet、PANet和SPP,进一步提高了检测精度与速度。YOLOv5(Bochkovskiy et al., 2020)[6]作为最新版本,在YOLOv4的基础上进行了架构优化,实现了更高的精度与更快的速度。

        虽然目前已经有许多基于YOLOv5的目标检测应用,但多数针对特定领域,缺乏统一、易用的界面。因此,本博客将介绍一种基于YOLOv5的目标检测系统,使用MATLAB实现,并提供图形化用户界面(GUI)以便于用户进行交互操作。本博客的贡献点如下:

  1. 提供了一个基于YOLOv5的通用目标检测系统,支持不同领域的目标检测任务;
  2. 详细介绍了MATLAB实现的原理,包括预处理、模型加载、预测、结果可视化等;
  3. 提供了一个易用的GUI界面,支持图片检测、批量检测、视频检测以及调用摄像头检测;
  4. 允许用户更换不同的网络模型,以满足不同任务的需求;
  5. 结果可视化方面,通过界面直观显示检测结果,便于用户分析。

2. 系统界面演示效果

        本节将介绍基于YOLOv5的目标检测系统的图形化用户界面(GUI)功能及演示效果。

(1)选择图片检测:用户可以通过文件选择对话框选择一张图片进行目标检测。系统会自动将图片调整为合适的尺寸,并将结果显示在GUI界面上。结果包括物体的类别、置信度以及边界框。

在这里插入图片描述

(2)选择文件夹批量检测:用户可以选择一个文件夹进行批量检测。系统会自动处理文件夹中的所有图片,并将检测结果记录在下方的表格中。输出结果包括带有边界框和类别标签的图片。

在这里插入图片描述

(3)选择视频检测:用户可以选择一个视频文件进行目标检测。系统会对视频中的每一帧图像进行目标检测,并将检测结果实时显示在GUI界面上。同时,用户可以选择将检测结果保存为视频文件。

在这里插入图片描述

(4)调用摄像头检测:用户可以使用系统内置的摄像头进行实时目标检测。系统会捕捉摄像头的视频流,并对每一帧图像进行目标检测。检测结果将实时显示在GUI界面上。

在这里插入图片描述

(5)更换不同网络模型:系统支持用户更换不同的YOLOv5网络模型。用户可以根据自己的需求,选择合适的模型进行检测。不同的模型在精度和速度上可能存在差异。

在这里插入图片描述

(6)通过界面显示结果和可视化:系统的GUI界面提供了直观的结果展示和可视化功能。用户可以清晰地查看检测到的物体、边界框、类别以及置信度。

在这里插入图片描述


3. 检测过程代码

        首先,创建一个名为Detector_YOLOv5的类,它封装了执行目标检测的所有方法。以下是类的主要组成部分:

        属性(Properties):类的属性定义了检测器所需的信息,例如类别名称(COCO数据集中的80个类别)、权重文件、置信度阈值、非极大值抑制(NMS)阈值和各类别的颜色;方法(Methods):类的方法定义了实现目标检测的功能。构造函数(Detector_YOLOv5)在初始化时加载预训练的YOLOv5模型。detect方法对给定的图像执行目标检测,代码还包括一些常量属性。

classdef Detector_YOLOv5 <handle
    properties
        cocoNames = {'person'; 'bicycle'; 'car'; 'motorbike'; 'aeroplane';'bus';...
            'train'; 'truck'; 'boat'; 'traffic light'; 'fire hydrant'; ...
            'stop sign'; 'parking meter'; 'bench'; 'bird'; 'cat'; 'dog';...
            'horse'; 'sheep'; 'cow'; 'elephant'; 'bear'; 'zebra'; ...
            'giraffe'; 'backpack'; 'umbrella'; 'handbag'; 'tie'; ...
            'suitcase'; 'frisbee'; 'skis'; 'snowboard'; 'sports ball'; ...
            'kite'; 'baseball bat'; 'baseball glove'; 'skateboard'; ...
            'surfboard'; 'tennis racket'; 'bottle'; 'wine glass'; ...
            'cup'; 'fork'; 'knife'; 'spoon'; 'bowl'; 'banana'; ...
            'apple'; 'sandwich'; 'orange'; 'broccoli'; 'carrot';...
            'hot dog'; 'pizza'; 'donut'; 'cake'; 'chair'; 'sofa'; ...
            'pottedplant'; 'bed'; 'diningtable'; 'toilet'; ...
            'tvmonitor'; 'laptop'; 'mouse'; 'remote'; ...
            'keyboard'; 'cell phone'; 'microwave'; 'oven'; ...
            'toaster'; 'sink'; 'refrigerator'; 'book'; 'clock';...
            'vase'; 'scissors'; 'teddy bear'; 'hair drier'; 'toothbrush'
            } ;
        cocoNames_Chinese = {'人';'自行车'; '汽车'; '摩托车'; '飞机'; '公共汽车'; '火车'; ...
            '卡车'; '船'; '交通灯'; '消防栓'; '停车标志'; '停车收费表'; ...
            '长凳'; '鸟'; '猫'; '狗'; '马'; '羊'; '牛'; '大象'; '熊'; ...
            '斑马'; '长颈鹿'; '背包'; '手提包'; '领带'; '手提箱'; '飞盘'; ...
            '飞盘'; '雪橇'; '单板滑雪板'; '运动球'; '风筝'; '棒球棒'; ...
            '棒球手套'; '滑板'; '冲浪板'; '网球拍'; '瓶子'; '酒杯'; '杯子'; ...
            '叉'; '刀'; '勺子'; '碗'; '香蕉'; '苹果'; '三明治'; '橙子'; ...
            '西兰花'; '胡萝卜'; '热狗'; '披萨'; '甜甜圈'; '蛋糕'; '椅子'; ...
            '沙发'; '盆栽植物'; '床'; '餐桌'; '马桶'; '电视'; '笔记本电脑'; ...
            '鼠标'; '遥控器'; '键盘'; '手机'; '微波炉'; '烤箱'; '烤面包机'; ...
            '水槽'; '冰箱'; '书'; '时钟'; '花瓶'; '剪刀'; '泰迪熊'; '吹风机'; ...
            '牙刷'}
        class_names = [];
        weights = [];

        throushHold = 0.3;     % 阈值
        nmsThroushHold = 0.5;  % nms阈值

        colors = [];  % 各类别颜色
    end

    properties(Constant)
        input_size = [640,640]; % 输入尺寸
        website = {'CSDN: https://wuxian.blog.csdn.net/';
            'Bilibili: https://space.bilibili.com/456667721';
            'Zhihu: https://www.zhihu.com/people/sixuwuxian';
            'CnBlog: https://www.cnblogs.com/sixuwuxian/'};

        author = '思绪无限';
        wechat = '公众号:AI技术研究与分享';
    end
end

        接下来,详细介绍detect方法的实现:

  1. 图像预处理:输入图像被调整为YOLOv5所需的尺寸(例如,640x640像素),然后将其归一化并调整维度以适应模型输入要求。
  2. 模型推理:将预处理后的图像传递给networks_yolov5sfcn函数,该函数使用预训练的YOLOv5模型计算预测结果。
  3. 后处理:根据预设的置信度阈值筛选预测结果。使用非极大值抑制(NMS)来合并重叠的边界框。
  4. 结果输出:将预测结果(边界框、分数和类别标签)返回给调用者。
methods  % 方法块开始
        %构造函数,特点也是和类同名
        function obj = Detector_YOLOv5(model, model_fcn)

            if nargin == 2
                % 导入模型
                obj.colors = randi(255, length(obj.cocoNames),3);
                obj.weights = importONNXFunction(model, model_fcn);
                obj.class_names = categorical(obj.cocoNames_Chinese);  % 类别标签
            end
        end

        % 成员方法,执行预测
        function [bboxes, scores, labels] = detect(obj, image)
            % 使用YOLOv5进行预测

            % 预处理图像
            [H,W,~] = size(image);
            image = imresize(image, obj.input_size);
            image = rescale(image, 0, 1);% 转换到[0,1]
            image = permute(image,[3,1,2]);
            image = dlarray(reshape(image,[1,size(image)])); % n*c*h*w,[0,1],RGB顺序
            if canUseGPU()
                image = gpuArray(image);
            end
			% 模型推理
            [labels, bboxes] = networks_yolov5sfcn(image, obj.weights,...
                'Training',false,...
                'InputDataPermutation','none',...
                'OutputDataPermutation','none');
            % 后处理: 阈值过滤+NMS
            if canUseGPU()
                labels = gather(extractdata(labels));
                bboxes = gather(extractdata(bboxes));
            end
            [maxvalue,idxs] = max(labels,[],2);
            validIdxs = maxvalue>obj.throushHold;
            % nms
            indexes = idxs(validIdxs);
            predictBoxes = bboxes(validIdxs,:);
            predictScores = maxvalue(validIdxs);
            predictNames = obj.class_names(indexes);
            predictBboxes = [predictBoxes(:,1)*W-predictBoxes(:,3)*W/2,...
                predictBoxes(:,2)*H- predictBoxes(:,4)*H/2,...
                predictBoxes(:,3)*W,...
                predictBoxes(:,4)*H];
			% 结果输出
            [bboxes,scores,labels] = selectStrongestBboxMulticlass(predictBboxes,...
                predictScores,...
                predictNames,...
                'RatioType','Min',...
                'OverlapThreshold', obj.nmsThroushHold);
        end

    end	% 方法块结束

        这里给出如何使用Detector_YOLOv5类对图像进行目标检测。首先加载模型,然后创建检测器实例。接着,读取图像,执行检测并可视化结果(在图像上绘制边界框、类别标签和置信度)。最后,将标注后的图像保存到文件。这里讲解如何使用已经训练好的YOLOv5 ONNX模型进行目标检测。首先加载模型并创建检测器实例:

model = './yolov5s_no.onnx'; % 模型位置
yolov5 = Detector_YOLOv5(model, 'networks_yolov5sfcn');

        首先,定义模型文件的路径,这里使用了预训练好的YOLOv5 ONNX模型。接着,利用Detector_YOLOv5类创建一个检测器实例。networks_yolov5sfcn是一个MATLAB导入的ONNX模型的函数,用于实现YOLOv5模型的前向传播。下面读取待检测的图像:

image_path = './test_/000328.jpg';
image = imread(image_path);

        指定待检测图像的路径,并使用imread函数读取图像。使用检测器进行目标检测:

tic
[bboxes, scores, labels] = yolov5.detect(image)
fprintf('预测时间: %0.2f s',toc);

在这里插入图片描述

        调用detect方法对读取的图像进行目标检测。detect方法返回三个输出:边界框(bboxes)、置信度得分(scores)和类别标签(labels)。同时,使用tic和toc函数计算检测所需的时间。绘制检测结果并保存标注后的图像:

annotations = string(labels) + ": " + string(round(scores*100)) + '%';
[~, ids] = ismember(labels, classesNames);
labelColors = colors(ids,:);
labeled_image = insertObjectAnnotation(image,'rectangle',bboxes,...
    cellstr(annotations),...
    'Font','华文楷体', ...
    'FontSize', 18, ...
    'color', labelColors,...
    'LineWidth',2);
imshow(labeled_image);
imwrite(labeled_image, 'labeled_image.png'); % 保存标记的图片

在这里插入图片描述

        将检测结果(类别标签、置信度得分和边界框)添加到图像上。首先,为每个检测到的目标生成一个包含类别标签和置信度的字符串(annotations)。然后,根据类别标签确定对应的颜色。接着,使用insertObjectAnnotation函数将检测结果绘制到图像上,并使用imshow函数显示标注后的图像。最后,使用imwrite函数将标注后的图像保存到文件。


4. 系统实现

        本节将详细介绍基于YOLOv5的目标检测系统的设计框架和实现方法。系统主要分为两个部分:预测部分和图形用户界面(GUI)部分。预测部分主要包括图片、文件夹分类、模型更换等功能。GUI部分则包含各种操作按钮和可视化结果展示。在设计GUI界面时,需要考虑如下几个方面:

  1. 界面布局:设计一个清晰、易于使用的界面布局,便于用户进行各种操作。
  2. 功能实现:实现用户在界面上执行的各种操作,例如选择图片、文件夹分类、模型更换等。
  3. 可视化结果展示:将检测结果以图形或文本的形式展示在界面上,便于用户查看和分析。

基于以上要求,可以设计一个包含以下功能的GUI界面:

  1. 选择图片检测:用户可以通过点击按钮选择一张图片进行目标检测。
  2. 选择文件夹批量检测:用户可以选择一个文件夹,对文件夹中的所有图片进行目标检测。
  3. 选择视频检测:用户可以选择一个视频文件,对视频中的每一帧进行目标检测。 调用摄像头检测:用户可以使用摄像头实时进行目标检测。
  4. 更换不同网络模型:用户可以在多个预训练模型之间进行切换,以满足不同场景的需求。
  5. 通过界面显示结果和可视化:将检测结果以图形或文本的形式展示在界面上。

        为了实现上述功能,可以使用MATLAB的App Designer工具来创建GUI界面。App Designer是一个基于MATLAB语言的交互式开发环境,可以方便地设计和创建具有各种功能的图形用户界面。以下是使用App Designer创建的基于YOLOv5的目标检测系统的GUI界面实现步骤:

在这里插入图片描述

        打开MATLAB,选择App Designer工具创建一个新的项目。

  1. 在设计界面中添加各种组件,例如按钮、文本框、图像框等。设置组件的属性和样式,以满足界面设计要求。
  2. 编写各个组件的回调函数,实现相应的功能。例如,点击“选择图片检测”按钮时,弹出文件选择对话框,让用户选择一张图片进行检测;点击“调用摄像头检测”按钮时,启动摄像头并实时显示检测结果。
  3. 在回调函数中调用YOLOv5目标检测算法,获取检测结果,并将结果显示在界面上。例如,将检测到的目标用矩形框标记,并在图像框中显示;将检测到的目标类别和置信度以文本的形式显示在文本框中。
  4. 根据需要,添加其他功能和组件,例如模型切换功能。在界面中添加一个下拉菜单,列出可用的预训练模型。当用户在下拉菜单中选择一个模型时,更新回调函数中的模型参数,以使用新的模型进行检测。
  5. 完成界面设计和功能实现后,保存并运行项目。在运行界面中测试各个功能,确保功能正常运行并满足需求。

对于需要进一步优化的功能,可以在App Designer的代码视图中进行修改和调整。例如,优化检测算法的性能,提高实时检测的帧率;调整界面布局,使其更美观易用。

在这里插入图片描述

        通过以上步骤,可以实现一个基于YOLOv5的目标检测系统的GUI界面。用户可以通过界面方便地选择图片、文件夹或视频进行目标检测,并在界面上查看和分析检测结果。同时,用户还可以根据不同场景的需求,切换不同的预训练模型进行检测。


5. 结果分析和优化建议

        在本节中,将对YOLOv5目标检测算法的检测结果进行分析,并提出一些建议以优化其性能。

        结果分析:通过使用预训练的YOLOv5模型进行目标检测,可以观察到以下特点

  1. 检测速度:YOLOv5具有较快的检测速度,这对于实时应用非常重要。尤其是在GPU加速的情况下,检测速度可以达到实时水平。
  2. 准确性:YOLOv5的检测准确性相对较高,可以在各种场景中准确检测出目标物体。然而,在一些复杂场景中,例如目标遮挡、小目标和低分辨率情况下,检测性能可能会受到影响。
  3. 通用性:YOLOv5能够检测多达80个类别的目标,具有较高的通用性。然而,对于一些特定的应用场景,可能需要在特定的数据集上进行微调,以提高检测性能。

        针对YOLOv5目标检测算法的特点,提出以下优化建议:

        模型微调:为了提高YOLOv5在特定应用场景的检测性能,可以在相关数据集上对模型进行微调。通过在有限的训练数据上进行微调,模型可以更好地适应新的场景,从而提高检测准确性。

        数据增强:在训练过程中,使用数据增强技术可以提高模型的泛化能力。例如,可以使用图像旋转、缩放、翻转、裁剪等方法扩充训练集。数据增强有助于模型学习到更多的特征,提高检测性能。

        模型融合:在一些复杂场景下,可以考虑将多个检测模型进行融合,以提高检测准确性。例如,可以将YOLOv5与其他目标检测算法(如Faster R-CNN、SSD等)进行融合,综合利用各自的优势,提高整体检测性能。

        多尺度检测:针对不同尺寸的目标,可以考虑使用多尺度检测策略。通过将输入图像调整到不同的尺寸,可以在不同的尺度上进行目标检测,从而提高检测准确性。

        根据实际应用场景的需求,可以对YOLOv5进行一定程度的调整以满足特定场景的要求:

        自定义类别:根据实际应用需求,可以对YOLOv5进行修改,以检测特定类别的目标。这需要重新训练模型,使其能够识别和检测自定义类别的物体。

        减小模型规模:为了适应边缘设备(如移动设备、嵌入式设备等)上的计算能力限制,可以考虑减小YOLOv5模型的规模。通过降低模型的层数、通道数等参数,可以降低模型的计算复杂度,提高在边缘设备上的运行速度。需要注意的是,这可能会对检测性能产生一定影响。

        模型压缩和优化:为了进一步提高模型在边缘设备上的运行速度和内存占用,可以采用模型压缩和优化技术,如模型剪枝、模型量化等。这些方法可以降低模型的计算复杂度和内存占用,提高运行速度,但可能对检测性能产生一定影响。

        实时检测优化:在进行实时目标检测时,可以考虑采用滑动窗口、跟踪等技术,减少重复检测区域,提高检测速度。此外,还可以结合场景信息,对感兴趣区域进行优先检测,从而提高检测效率。


下载链接

    若您想获得博文中涉及的实现完整全部程序文件(包括测试图片、视频,mlx, mlapp文件等,如下图),这里已打包上传至博主的面包多平台,见可参考博客与视频,已将所有涉及的文件同时打包到里面,点击即可运行,完整文件截图如下:

在这里插入图片描述

    在文件夹下的资源显示如下图所示:

在这里插入图片描述

注意:该代码采用MATLAB R2022a开发,经过测试能成功运行,运行界面的主程序为Detector_UI.mlapp,测试视频脚本可运行test_yolov5_video.py,测试摄像头脚本可运行test_yolov5_camera.mlx。为确保程序顺利运行,请使用MATLAB2022a运行并在“附加功能管理器”(MATLAB的上方菜单栏->主页->附加功能->管理附加功能)中添加有以下工具。

在这里插入图片描述

完整资源中包含数据集及训练代码,环境配置与界面中文字、图片、logo等的修改方法请见视频,项目完整文件下载请见参考博客文章里面,或参考视频的简介处给出:➷➷➷

参考博客文章:https://zhuanlan.zhihu.com/p/626540553

参考视频演示:https://www.bilibili.com/video/BV1ro4y1w75j/


6. 总结与展望

        本文详细介绍了YOLOv5目标检测算法的原理、网络结构及其在实际应用中的优化方法。YOLOv5作为一个高效、实时的目标检测算法,在各种场景中都表现出较好的性能。首先介绍了YOLOv5的背景知识,包括YOLO系列算法的发展历程和YOLOv5相较于前代算法的改进。接着,详细阐述了YOLOv5的网络结构和损失函数设计,并通过实际代码实现展示了如何使用YOLOv5进行目标检测。最后,讨论了针对实际应用场景的优化方法,以提高YOLOv5在各种场景中的目标检测能力。总的来说,YOLOv5是一个值得学习和应用的目标检测算法。通过对其进行一定程度的调整和优化,可以使其更好地满足实际应用场景的需求,提高目标检测的效果和效率。


结束语

        由于博主能力有限,博文中提及的方法即使经过试验,也难免会有疏漏之处。希望您能热心指出其中的错误,以便下次修改时能以一个更完美更严谨的样子,呈现在大家面前。同时如果有更好的实现方法也请您不吝赐教。


参考文献

[1] Ren, S., He, K., Girshick, R., & Sun, J. (2015). Faster R-CNN: Towards real-time object detection with region proposal networks. Advances in Neural Information Processing Systems, 28, 91-99.

[2] Girshick, R., Donahue, J., Darrell, T., & Malik, J. (2014). Rich feature hierarchies for accurate object detection and semantic segmentation. Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition, 580-587.

[3] Girshick, R. (2015). Fast R-CNN. Proceedings of the IEEE International Conference on Computer Vision, 1440-1448.

[4] Liu, W., Anguelov, D., Erhan, D., Szegedy, C., Reed, S., Fu, C. Y., & Berg, A. C. (2016). SSD: Single shot multibox detector. European Conference on Computer Vision, 9905, 21-37.

[5] Redmon, J., Divvala, S., Girshick, R., & Farhadi, A. (2016). You only look once: Unified, real-time object detection. Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition, 779-788.

[6] Bochkovskiy, A., Wang, C. Y., & Liao, H. Y. M. (2020). YOLOv5: An improved real-time object detection model. arXiv preprint arXiv:2006.05983.

[7] Bochkovskiy, A., Wang, C. Y., & Liao, H. Y. M. (2020). YOLOv4: Optimal speed and accuracy of object detection. arXiv preprint arXiv:2004.10934.

[8] Redmon, J., & Farhadi, A. (2017). YOLO9000: Better, faster, stronger. Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition, 7263-7271.

[9] Redmon, J., & Farhadi, A. (2018). YOLOv3: An incremental improvement. arXiv preprint arXiv:1804.02767.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/487257.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

IPRAN网络结构智能优化

IPRAN&#xff08;Internet Protocol Radio Access Network&#xff09;是指基于IP技术的无线接入网络&#xff0c;是当前移动通信重要基础网络。然而&#xff0c;随着技术的快速发展&#xff0c;IPRAN网络规模不断扩大&#xff0c;网络结构日趋复杂&#xff0c;运维网优愈发困…

基于数据和AI之上,数说故事首发“人、货、场、域”W-SCC测量体系|D3大会演讲实录

无测量&#xff0c;不营销。 品牌在加速更迭、场景在垂直发展、需求在不断升级&#xff0c;借助数字化力量可以实现更精准、长效的营销增长。但如果连营销效果都无法被量化测量&#xff0c;那么一切为了增长的“轮番”操作只会沦为“锦团花簇”&#xff0c;品牌营销的真正实效…

使用ChatGPT工具阅读文献的实战教程

大家好,我是herosunly。985院校硕士毕业,现担任算法研究员一职,热衷于机器学习算法研究与应用。曾获得阿里云天池比赛第一名,CCF比赛第二名,科大讯飞比赛第三名。拥有多项发明专利。对机器学习和深度学习拥有自己独到的见解。曾经辅导过若干个非计算机专业的学生进入到算法…

PySpark基础入门(1):基础概念+环境搭建

目录 Spark基础入门 spark基础概念 spark架构 Spark环境搭建 local模式 Standalone 模式 Spark On YARN 模式 PySpark开发环境搭建 Python On Spark 执行原理 更好的阅读体验&#xff1a;PySpark基础入门&#xff08;1&#xff09;&#xff1a;基础概念&#xff0b;环…

国产仪器 9906在线式户外多通道光伏组件评测系统 可替代EKO MP-160

9906 在线式户外多通道光伏组件评测系统可替代国外仪器型号&#xff1a;EKO MP-160 在线式户外多通道光伏组件评测系统是一款支持实时多通道光伏组件测试的评测系统&#xff0c;提供真6路电子负载&#xff0c;提供多至6通道的实时测试能力&#xff0c;并可根据用户需求订制通道…

TouchGFX开发(1)----安装软件

TouchGFX开发.1----安装软件 概述TouchGFX 特点下载&安装 概述 TouchGFX 是一个高性能的嵌入式图形库&#xff0c;主要用于为微控制器&#xff08;MCU&#xff09;驱动的设备创建现代用户界面&#xff08;UI&#xff09;。它提供了一套丰富的图形功能&#xff0c;使开发者…

[SWPU CTF]之Misc篇(NSSCTF)刷题记录⑥

NSSCTF-Misc篇-[SWPUCTF] [长城杯 2021 院校组]签到[巅峰极客 2021]签到[羊城杯 2021]签到题[鹤城杯 2021]流量分析[SWPU 2019]神奇的二维码[NISACTF 2022]为什么我什么都看不见[NISACTF 2022]bqt[SWPU 2020]套娃[NISACTF 2022]huaji&#xff1f;[SWPUCTF 2021 新生赛]gif好像有…

Mybatis之配置文件与映射文件的“那些事”,你真的知道吗?

编译软件&#xff1a;IntelliJ IDEA 2019.2.4 x64 操作系统&#xff1a;win10 x64 位 家庭版 Maven版本&#xff1a;apache-maven-3.6.3 Mybatis版本&#xff1a;3.5.6 目录 一.详解Mybatis的核心配置文件【mybatis-config.xml】1.1 核心配置文件概述1.2 核心配置文件之根标签1…

基于Java的房屋租赁管理系统开发与设计(附源码文档)-毕业设计

文章目录 1.适用人群2.你将收获3.项目概述3.1.项目背景3.2.项目简介3.3.软件技术栈 4.项目运行截图4.1.登陆界面4.2.首页4.3.修改密码4.4.用户管理模块4.5.权限管理模块4.6.资源管理模块4.7.区域设置模块4.8.房屋类型管理模块4.9.房屋管理模块4.10.房间管理模块4.11.房东管理模…

论文浅尝 | 利用关系路径的混合语义进行知识图的多跳问答

笔记整理&#xff1a;金龙&#xff0c;浙江大学硕士&#xff0c;研究方向知识图谱 链接&#xff1a;https://aclanthology.org/2022.coling-1.156/ 动机 知识图谱上回答自然语言问题(KGQA)仍然多跳推理面临的一个巨大的挑战。以前的方法通常是利用大规模的实体相关文本体或知识…

MAC移动硬盘无法正常推出:“磁盘无法推出,因为一个或多个程序正在使用它”

MAC移动硬盘在使用中&#xff0c;经常会碰到无法正常退出的情况&#xff0c;提示&#xff1a;“磁盘无法推出&#xff0c;因为一个或多个程序正在使用它”&#xff0c;如果你“直接拔掉”或“强行推出”的话&#xff0c;可能导致你下次重新连接移动硬盘无法识别。&#xff08;参…

[python] 协程学习从0到1,配合案例,彻底理解协程,耗费资源不增加,效果接近多线程

文章目录 前言1.python 生成器1.1 python 生成器概述1.2 关键字yield/yield from1.3 next/send函数1.4 StopInteration异常1.5 利用生成器实现生产者-消费者模型1.6 生成器和协程的关系 2.生成器协程调度器3.python事件驱动编程4.实现协程调度器5.python 协程生态 前言 多进程…

代码随想录算法训练营第二十九天 | 递增子序列(新的树层去重)、排列、排列中树枝树层去重

491.递增子序列 文档讲解&#xff1a;代码随想录 (programmercarl.com) 视频讲解&#xff1a;回溯算法精讲&#xff0c;树层去重与树枝去重 | LeetCode&#xff1a;491.递增子序列_哔哩哔哩_bilibili 状态&#xff1a;能直接写出来。不过还是要再看一遍&#xff0c;因为是新的去…

行人重识别(REID)——原理方法

行人重识别&#xff1a;短时 类内差异增大&#xff0c;类间差异减小 应用——行人跟踪 单摄像头单目标单摄像头多目标多摄像头多目标 行人重识别系统 特征提取 学习能够应对在不同摄像头下行人变化的特征 度量学习 将学习到的特征映射到新的空间使相同的人更近&#xff0c…

【每日一练】谷歌面试题:用JAVA翻转二叉搜索树

文章目录 前言题目分析实战演示1、创建一颗搜索二叉树2、中序遍历二叉搜索树3、根据题意创建二叉搜索树并展示4、算法增加二叉树翻转方法5、根据题意测试翻转二叉树结果6、完整代码 前言 很多同学应该都能够模拟出一个二叉树&#xff0c;那么又有多少同学能够写出翻转二叉树呢…

2d俯视视角游戏,可以切换多种枪械

文章目录 一、 介绍二、 人物移动、鼠标控制转向三、子弹脚本四、子弹随机抛壳五、 爆炸特效六、 发射子弹七、 子弹、弹壳对象池八、 散弹枪九、 火箭弹、发射火箭十、 下载工程文件 一、 介绍 2d俯视视角游戏。 人物视角跟随鼠标移动 多种枪械 抛壳效果 多种设计效果 对象池…

『python爬虫』10. 数据解析之xpath解析(保姆级图文)

目录 安装库xpath入门怎么快速得到xpath路径xpath节点的关系xpath方法小型实战总结 欢迎关注 『python爬虫』 专栏&#xff0c;持续更新中 欢迎关注 『python爬虫』 专栏&#xff0c;持续更新中 安装库 pip install lxmlxpath入门 怎么快速得到xpath路径 &#xff08;相对路…

第三十章 Unity角色控制器 Character Controller

在我们之前的章节中&#xff0c;我们已经了解了碰撞体和刚体。但是&#xff0c;对于刚体这个组件来讲&#xff0c;有两种使用方式。其一就是用它来模拟现实世界的移动或碰撞效果&#xff08;例如&#xff0c;门的开关&#xff09;&#xff1b;其二就是使用代码来控制物体移动或…

【网络进阶】HTTP服务器(一)

文章目录 1. HTTP简介2. HTTP工作原理3. HTTP注意事项4. HTTP消息结构5. 客户端请求消息6. 服务器响应消息7. GET传递数据实例8. HTTP请求方法9. HTTP响应头信息 1. HTTP简介 HTTP&#xff08;超文本传输协议&#xff0c;Hypertext Transfer Protocol&#xff09;是一种用于传…

Spring Cloud的五大组件你知道多少

前言 Spring Cloud是一系列框架的有序集合。它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发&#xff0c;如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等&#xff0c;都可以用Spring Boot的开发风格做到一键启动和部署。 Spring Clo…