当前位置:   article > 正文

【改进YOLOv8】融合Gold-YOLO的车辆未礼让行人检测系统_yolov8-goldyolo-asf

yolov8-goldyolo-asf

1.研究背景与意义

项目参考AAAI Association for the Advancement of Artificial Intelligence

研究背景与意义

随着交通工具的普及和道路交通量的增加,交通安全问题日益凸显。尤其是车辆未礼让行人的情况频繁发生,给行人的生命安全带来了严重威胁。因此,开发一种高效准确的车辆未礼让行人检测系统具有重要的现实意义。

近年来,深度学习技术在计算机视觉领域取得了巨大的突破,特别是目标检测方面。目标检测是计算机视觉中的一个重要任务,其目的是在图像或视频中准确地定位和识别出感兴趣的目标。YOLO(You Only Look Once)是一种流行的目标检测算法,其具有快速、准确和端到端的特点,被广泛应用于各种实际场景中。

然而,传统的YOLO算法在车辆未礼让行人检测方面存在一些局限性。首先,YOLO算法在目标尺度变化和遮挡情况下的检测效果较差。其次,YOLO算法对于小目标的检测效果不佳,而行人往往属于小目标。此外,YOLO算法对于目标的边界框回归不够精确,容易出现误检和漏检的情况。

为了解决上述问题,本研究提出了一种改进的YOLOv8算法,并融合了Gold-YOLO的思想,用于车辆未礼让行人检测。改进的YOLOv8算法在YOLOv3的基础上进行了优化和改进,以提高检测的准确性和鲁棒性。同时,融合了Gold-YOLO的思想,引入了更加有效的目标检测策略,进一步提升了检测性能。

本研究的意义主要体现在以下几个方面:

  1. 提高交通安全:车辆未礼让行人是导致交通事故的主要原因之一。通过开发一种高效准确的车辆未礼让行人检测系统,可以及时发现并预警车辆未礼让行人的情况,有效降低交通事故的发生率,提高交通安全水平。

  2. 优化交通流量:车辆未礼让行人不仅会导致交通事故,还会造成交通拥堵和交通流量的不畅。通过车辆未礼让行人检测系统的应用,可以及时发现并处理车辆未礼让行人的情况,减少交通拥堵,优化交通流量,提高道路通行效率。

  3. 推动智能交通发展:智能交通是未来交通发展的重要方向,而车辆未礼让行人检测系统是智能交通系统的重要组成部分。通过开发一种高效准确的车辆未礼让行人检测系统,可以为智能交通系统的建设和应用提供技术支持,推动智能交通的发展。

  4. 拓展目标检测技术:本研究提出的改进的YOLOv8算法和融合Gold-YOLO的思想,对于目标检测技术的发展具有一定的参考价值。通过优化和改进传统的YOLO算法,提高了检测的准确性和鲁棒性,为目标检测技术的研究和应用提供了新的思路和方法。

综上所述,本研究旨在开发一种高效准确的车辆未礼让行人检测系统,以提高交通安全、优化交通流量、推动智能交通发展,并为目标检测技术的研究和应用提供新的思路和方法。该研究对于改善交通安全状况、提高交通效率和推动智能交通发展具有重要的现实意义和深远的影响。

2.图片演示

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

3.视频演示

【改进YOLOv8】融合Gold-YOLO的车辆未礼让行人检测系统_哔哩哔哩_bilibili

4.YOLOv8 概述

具体到 YOLOv8 算法,其核心特性和改动可以归结为如下:

提供了一个全新的 SOTA 模型,包括 P5 640 和 P6 1280 分辨率 的目标检测网络和基于 YOLACT 的实例分割模型。和 YOLOv5 一样,基于缩放系数也提供了 N/S/M/L/X 尺度的不同大小模型,用于满足不同场景需求
骨干网络和 Neck 部分可能参考了 YOLOv7 ELAN 设计思想,将 YOLOv5 的 C3 结构换成了梯度流更丰富的 C2f 结构,并对不同尺度模型调整了不同的通道数,属于对模型结构精心微调,不再是无脑一套参数应用所有模型,大幅提升了模型性能。不过这个 C2f 模块中存在 Split 等操作对特定硬件部署没有之前那么友好了
Head 部分相比 YOLOv5 改动较大,换成了目前主流的解耦头结构,将分类和检测头分离,同时也从 Anchor-Based 换成了 Anchor-Free
Loss 计算方面采用了 TaskAlignedAssigner 正样本分配策略,并引入了 Distribution Focal Loss
训练的数据增强部分引入了 YOLOX 中的最后 10 epoch 关闭 Mosiac 增强的操作,可以有效 地 提升精度
从上面可以看出,YOLOv8 主要参考了最近提出的诸如 YOLOX、YOLOv6、YOLOv7 和 PPYOLOE 等算法的相关设计,本身的创新点不多,偏向工程实践,主推的还是 ultralytics 这个框架本身 。

下面将按照模型结构设计、Loss 计算、训练数据增强、训练策略和模型推理过程共 5 个部分详细介绍 YOLOv8 目标检测的各种改进,实例分割部分暂时不进行描述。

模型结构设计

在这里插入图片描述

以上为基于 YOLOv8 官方代码所绘制的模型结构图。如果你喜欢这种模型结构图风格,可以查看 MMYOLO 里面对应算法 README 中的模型结构图,目前已经支持了 YOLOv5、YOLOv6、YOLOX、RTMDet 和 YOLOv8。MMYOLO 中重构的 YOLOv8 模型对应结构图如下所示:

详细地址为: https://github.com/open-mmlab/mmyolo/blob/dev/configs/yolov8/README.md

在暂时不考虑 Head 情况下,对比 YOLOv5 和 YOLOv8 的 yaml 配置文件可以发现改动较小。

在这里插入图片描述

左侧为 YOLOv5-s,右侧为 YOLOv8-s

骨干网络和 Neck 的具体变化为:

第一个卷积层的 kernel 从 6x6 变成了 3x3
所有的 C3 模块换成 C2f,结构如下所示,可以发现多了更多的跳层连接和额外的 Split 操作

在这里插入图片描述

去掉了 Neck 模块中的 2 个卷积连接层
Backbone 中 C2f 的block 数从 3-6-9-3 改成了 3-6-6-3
查看 N/S/M/L/X 等不同大小模型,可以发现 N/S 和 L/X 两组模型只是改了缩放系数,但是 S/M/L 等骨干网络的通道数设置不一样,没有遵循同一套缩放系数。如此设计的原因应该是同一套缩放系数下的通道设置不是最优设计,YOLOv7 网络设计时也没有遵循一套缩放系数作用于所有模型
Head 部分变化最大,从原先的耦合头变成了解耦头,并且从 YOLOv5 的 Anchor-Based 变成了 Anchor-Free。其结构如下所示:
在这里插入图片描述

5.核心代码讲解

5.2 predict.py

封装为类后的代码如下:

from ultralytics.engine.predictor import BasePredictor
from ultralytics.engine.results import Results
from ultralytics.utils import ops

class DetectionPredictor(BasePredictor):
    def postprocess(self, preds, img, orig_imgs):
        preds = ops.non_max_suppression(preds,
                                        self.args.conf,
                                        self.args.iou,
                                        agnostic=self.args.agnostic_nms,
                                        max_det=self.args.max_det,
                                        classes=self.args.classes)

        if not isinstance(orig_imgs, list):
            orig_imgs = ops.convert_torch2numpy_batch(orig_imgs)

        results = []
        for i, pred in enumerate(preds):
            orig_img = orig_imgs[i]
            pred[:, :4] = ops.scale_boxes(img.shape[2:], pred[:, :4], orig_img.shape)
            img_path = self.batch[0][i]
            results.append(Results(orig_img, path=img_path, names=self.model.names, boxes=pred))
        return results
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23

这个程序文件是一个名为predict.py的文件,它是一个基于检测模型进行预测的类DetectionPredictor的定义。该类继承自BasePredictor类,并包含一个postprocess方法用于后处理预测结果。该文件使用了Ultralytics YOLO库,采用AGPL-3.0许可证。

在postprocess方法中,首先对预测结果进行非最大值抑制处理,根据一定的置信度和IOU阈值来筛选出最终的预测结果。然后,将预测结果的边界框坐标进行缩放,以适应原始图像的尺寸。最后,将处理后的预测结果封装成Results对象,并返回一个Results对象列表。

该文件还包含一个示例用法,通过创建DetectionPredictor对象,并传入相应的参数,可以进行预测操作。

总之,这个程序文件定义了一个用于基于检测模型进行预测的类DetectionPredictor,并提供了相应的预测方法和后处理方法。

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