YOLOv5

部署运行你感兴趣的模型镜像

 一、YOLOv5 原理

yolo系列的检测网络是典型的one-stage网络。YOLOv5的网络结构如下图。

 上图中给出的为yolov5s的网络结构,还有三种:yolov5m、yolov5l、yolov5x。这四种网络只是网络的深度和宽度有所不同,其中yolov5s是参数最少的结构。

目标检测网络一般分为输入端、Backbone、Neck、Prediction四个部分。接下来依次介绍一下yolov5的这四个部分。

1.输入端

采取Mosaic数据增强方式、自适应anchor计算自适应图片缩放

(1)Mosaic数据增强方式:是Yolov4中使用的,其受CutMix数据增强的启发,但CutMix只使用了两张图片进行拼接,而Mosaic数据增强则采用了4张图片,随机缩放、随机裁剪、随机排布的方式进行拼接。示意图如下。

 使用Mosaic数据增强方式可以大大丰富数据集,并且可以增加很多小目标(拼接成一张图像会使原图的目标变小)。

(2)自适应anchor计算:在Yolo算法中,针对不同的数据集,都会有初始设定长宽的锚框。在网络训练中,网络在初始锚框的基础上输出预测框,进而和真实框进行比对,计算两者差距,再反向更新,迭代网络参数。Yolov5中将此功能嵌入到代码中,每次训练时,自适应的计算不同训练集中的最佳锚框值。(通过k-means聚类得到先验框)

(3)自适应图片缩放:针对不同的目标检测算法而言,通常需要执行图片缩放操作,即将原始的输入图片缩放到一个固定的尺寸,再将其送入检测网络中。YOLO系列算法中常用的尺寸包括416*416,608 *608等尺寸。原始的缩放方法存在着一些问题,由于在实际的使用中的很多图片的长宽比不同,因此缩放填充之后,两端的黑边大小都不相同,然而如果填充的过多,则会存在大量的信息冗余,从而影响整个算法的推理速度。为了进一步提升YOLOv5算法的推理速度,提出一种方法能够自适应的添加最少的黑边到缩放之后的图片中。该操作仅在模型推理阶段执行。

2.Backbone

yolov5在Backbone中使用了focus结构和CSP结构。其中CSP结构如网络结构图所示。focus结构如下所示。

 输入为608*608*3,经过focus结构后变为304*304*12.Focus模块可以提高每个点感受野,并减少原始信息的丢失,该模块的设计主要是减少计算量加快速度。

3.Neck

yolov5在Neck仍然采用FPN(特征金字塔网络,后面卷积层经过上采样与前面的层concate,从而提升网络的多尺度检测能力)

4.Prediction

Yolov5中采用其中的GIOU_Loss做Bounding box的损失函数。此外,将nms中IOU修改成DIOU_nms。对于一些遮挡重叠的目标,会有一些改进。

二、YOLOv5总结

YOLOv5的优势:

  1. 使用PyTorch进行编写。https://github.com/ultralytics/yolov5
  2. 可以轻松编译成ONNX和CoreML。
  3. 体积小,速度极快,精度高。。
  4. 集成了YOLOv3-spp和YOLOv4部分特性。

您可能感兴趣的与本文相关的镜像

PyTorch 2.8

PyTorch 2.8

PyTorch
Cuda

PyTorch 是一个开源的 Python 机器学习库,基于 Torch 库,底层由 C++ 实现,应用于人工智能领域,如计算机视觉和自然语言处理

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值