深入浅出Yolo系列之Yolox核心基础完整讲解

本文详细介绍了YOLOX算法的改进点,包括选用YOLOv3_SPP作为基准模型,采用DecoupledHead、SimOTA等技术提升精度,以及在数据增强、轻量级网络设计等方面的研究。通过对YOLOv3、YOLOv4、YOLOv5系列的对比,阐述了YOLOX在精度、速度上的优势,并提供了不同部署方式的选择。此外,还探讨了自有数据集训练的实践方法,以及YOLOX与其他YOLO版本的差异,展示了其在目标检测领域的创新和实用性。

在Yolov4、Yolov5刚出来时,大白就写过关于Yolov3、Yolov4、Yolov5的文章,并且做了一些讲解的视频,反响都还不错。

而从2015年的Yolov12016年Yolov22018年的Yolov3,再到2020年的Yolov4Yolov5,Yolo系列也在不断的进化发展。

就在大家质疑,Yolo如何进一步改进时,旷视科技发表了研究改进的Yolox算法。

大白对于Yolox文章和相关的代码,进行了学习,发现有很多改进的方式。

比如Decoupled Head、SimOTA等方式,效果还是非常不错的,很值得借鉴。

但因为很难直接可视化的学习,了解Yolox和之前Yolo相关算法的区别。

因此本文,大白对Yolox的一些细节,和之前的Yolov3、Yolov4、Yolov5算法对比,进行深入浅出的分析讲解,和大家一些探讨学习。


1 Yolov3&Yolov4&Yolov5相关资料

在了解Yolox之前,我们首先要对之前的一些Yolo算法,比如Yolov3、Yolov4、Yolov5进行了解。

因为Yolox很多的网络结构,都是在其基础上,延伸而来的。

比如Yolox-Darknet53,就是在Yolov3的基础上进行的改进。

Yolox-s、Yolox-l等网络,就是在olov5-s、Yolov5-lY等网络的基础上,进行的改进。

所以大白将之前整理的,Yolo相关文章和视频,进行汇总。有需要的同学,可以先进行了解。

① Yolov3相关资料

【视频】:深入浅出Yolov3(上)深入浅出Yolov3(下)

【文章】:《深入浅出Yolo系列之Yolov3&v4核心基础知识完整讲解》

② Yolov4相关资料

【视频】:深入浅出Yolov4(上)深入浅出Yolov4(下)

【文章】:《深入浅出Yolo系列之Yolov3&v4核心基础知识完整讲解》

③ Yolov5相关资料

【文章】:《深入浅出Yolo系列之Yolov5核心基础知识完整讲解》

④ Yolox相关资料

【文章】:《深入浅出Yolo系列之Yolovx核心基础知识完整讲解》

【文章】:《深入浅出Yolox之自有数据集训练》

2 Yolox相关基础知识点

2.1 Yolox的论文及代码

Yolox论文名:《YOLOX: Exceeding YOLO Series in 2021》

Yolox论文地址:https://arxiv.org/abs/2107.08430

Yolox代码地址:https://github.com/Megvii-BaseDetection/YOLOX

2.2 Yolox各版本网络结构图

想学习一个算法,最好从直观图示的角度,进行了解。

如果纯粹从代码上进行查看,很可能会一头雾水。

而且Yolox的各种网络结构也很多,比如下面的各个网络结构权重文件。

在这里插入图片描述

因此可以采用,将各个模型文件转换成onnx格式,再用netron工具打开的方式,对网络结构进行可视化学习。

在这里插入图片描述

2.2.1 Netron工具

如果有同学对netron工具还不是很熟悉,这里还是放上netron工具安装的详细流程。

可以移步大白的另一篇文章:《网络可视化工具netron详细安装流程》

2.2.2 各个Yolox的onnx文件

各个onnx文件,可以采用代码中的,tools/export_onnx.py脚本,进行转换。

此外,官方代码中的这个版块,已经转换好了各个版本的onnx,也可以直接下载使用。

在这里插入图片描述

2.2.3 各个Yolox网络结构图

不过考虑到,有些同学可能不方便,使用netron查看。

因此,大白也上传了使用netron打开的,每个网络结构图的图片,也可以直接点击查看。

(1)Yolox-Nano

Yolox-Nano是Yolox系列最小的结构,网络参数只有0.91M。

此处放上netron打开的,Yolox-Nano网络结构可视图,点击即可查看。

2)Yolox-Tiny

此处放上Yolox-Tiny网络结构可视图,点击即可查看。

(3)Yolox-Darknet53

Yolox-Darknet53是在Yolov3的基础上,进行的改进,也是后面主要介绍的网络结构。

此处放上Yolox-Darknet53网络结构可视图,点击即可查看。

(4)Yolox-s

Yolox-s是在Yolov5-s的基础上,进行的改进,也是后面主要介绍的网络结构。

此处放上Yolox-s网络结构可视图,点击即可查看。

(5)Yolox-m

此处放上Yolox-m网络结构可视图,点击即可查看。

(6)Yolox-l

此处放上Yolox-l网络结构可视图,点击即可查看。

(7)Yolox-x

此处放上Yolox-x网络结构可视图,点击即可查看。

3 Yolox核心知识点

3.1 Yolov3&Yolov4&Yolov5网络结构图

在学习Yolox之前,我们先了解一下Yolov3、Yolov4、Yolov5的网络结构图,而后面的Yolox网络,都是在此基础上延伸而来的。

① Yolov3网络结构图

在这里插入图片描述

Yolov3是在2018年提出,也是工业界使用非常广泛的目标检测算法。

不过在Yolox系列中的,Yolox-Darknet53模型,采用的Baseline基准网络,采用的并不是Yolov3版本,而是改进后的Yolov3_spp版本。

而Yolov3和Yolov3_spp的不同点在于,Yolov3的主干网络后面,添加了spp组件,这里需要注意。

② Yolov4网络结构图

在这里插入图片描述

上图是DarknetAB大神,在2020年提出的Yolov4算法。

在此算法中,网络的很多地方,都进行了改进。

比如输入端:采用Mosaic数据增强;

Backbone:采用了CSPDarknet53、Mish激活函数、Dropblock等方式;

Neck:采用了SPP(按照DarknetAB的设定)、FPN+PAN结构;

输出端:采用CIOU_Loss、DIOU_Nms操作。

因此可以看出,Yolov4对Yolov3的各个部分,都进行了很多的整合创新。

关于Yolov4,如果有不清楚的,可以参照大白之前写的《深入浅出Yolo系列之Yolov3&Yolov4核心基础知识完整讲解》,写的比较详细。

③ Yolov5网络结构图

在这里插入图片描述

而在Yolov5网络中,和Yolov4不同,最大的创新点在于,作者将网络结构,做成了可选择配置的方式。

比如主干网络结构,根据各个网络的宽度、高度不同,可以分为Yolov5s、Yolov5l、Yolov5s、Yolo5x等版本

这种转变,在目标检测领域,引领了一股网络拆分的热潮。

本文的Yolox算法,也从这个角度出发,将Yolox模型,变为多种可选配的网络,比如标准网络结构和轻量级网络结构。

(1)标准网络结构:Yolox-s、Yolox-m、Yolox-l、Yolox-x、Yolox-Darknet53。

(2)轻量级网络结构:Yolox-Nano、Yolox-Tiny。

在实际的项目中,大家可以根据不同项目需求,进行挑选使用。

3.2 Yolox基础知识点

从上面的描述中,我们可以知道Yolox整体的改进思路

(1)基准模型:Yolov3_spp

选择Yolov3_spp结构,并添加一些常用的改进方式,作为Yolov3 baseline基准模型

(2)Yolox-Darknet53

对Yolov3 baseline基准模型,添加各种trick,比如Decoupled Head、SimOTA等,得到Yolox-Darknet53版本

(3)Yolox-s、Yolox-m、Yolox-l、Yolox-x系列

对Yolov5的四个版本,采用这些有效的trick,逐一进行改进,得到Yolox-s、Yolox-m、Yolox-l、Yolox-x四个版本

(4)轻量级网络

设计了Yolox-Nano、Yolox-Tiny轻量级网络,并测试了一些trick的适用性;

总体来说,论文中做了很多的工作,下面和大家一起,从以上的角度,对Yolox算法的网络结构,以及各个创新点进行讲解。

3.2.1 基准模型:Yolov3_spp

在设计算法时,为了对比改进trick的好坏,常常需要选择基准的模型算法

而在选择Yolox的基准模型时,作者考虑到:

Yolov4和Yolov5系列,从基于锚框的算法角度来说,可能有一些过度优化,因此最终选择了Yolov3系列。

不过也并没有直接选择Yolov3系列中,标准的Yolov3算法,而是选择添加了spp组件,进而性能更优的Yolov3_spp版本

以下是论文中的解释:

Considering YOLOv4 and YOLOv5 may be a little over-optimized for the anchor-based pipeline, we choose YOLOv3 [25] as our start point (we set YOLOv3-SPP as the default YOLOv3)。

为了便于大家理解,大白在前面Yolov3结构图的基础上,添加上spp组件,变为下图所示的Yolov3_spp网络

在这里插入图片描述

大家可以看到,主干网络Backbone后面,增加了一个SPP组件。

当然在此基础上,对网络训练过程中的很多地方,都进行了改进,比如:

(1)添加了EMA权值更新、Cosine学习率机制等训练技巧

(2)使用IOU损失函数训练reg分支,BCE损失函数训练cls与obj分支

(3)添加了RandomHorizontalFlip、ColorJitter以及多尺度数据增广,移除了RandomResizedCrop。

在此基础上,Yolov3_spp的AP值达到38.5,即下图中的Yolov3 baseline。

在这里插入图片描述

不过在对上图研究时,有一点

### 回答1: 这是关于使用 YOLOv5 深入浅出的问题。YOLOv5目标检测领域的一种深度学习框架,它建立在 YOLO 系列基础上,具有更快的速度和更高的精度。YOLov5核心基础知识包括卷积神经网络和目标检测算法等。 ### 回答2: 目前,Yolo系列算法已经成为了目标检测领域的主流算法之一。其中,Yolov5作为Yolo系列的最新版本,相比之前版本,在检测速度和精度上都有了大幅度的提升。本文将从以下四个方面对Yolov5进行深入浅出地解析。 一、Yolov5基础框架 Yolov5基础框架由三个主要部分组成,分别是:Backbone、Neck和Head。Backbone通常采用的是骨干网络,如ResNet、EfficientNet等,用于提取图像特征。Neck是用来融合不同层级的特征图,一般采用的是FPN(Feature Pyramid Network)或PAN(Path Aggregation Network)。Head是由若干个卷积层和全连接层组成的一个模块,用于进行目标检测。 二、Yolov5中的anchor boxes 在目标检测中,anchor boxes是非常重要的一部分。在Yolov5中,anchor boxes是通过k-means算法进行聚类得到的。这里的k-means算法是针对训练集中目标的大小进行的聚类,目的是得到最适合的anchor boxes尺寸。 三、Yolov5网络结构的变化 相比于Yolov4Yolov5在网络结构上的变化主要包括:去掉了大量瓶颈块,增大了通道数,增加了下采样层数,减少了最大池化层。这些变化都是为了提高检测速度和准确率。 四、Yolov5的训练技巧 在训练阶段,Yolov5采用了GIoU损失函数和Mosaic数据增强方式。GIoU损失函数是一种与边框大小无关的、能够有效地惩罚预测框的偏移和错位的损失函数。而Mosaic数据增强方式则是一种结合了多张图像的数据增强方式,在提高数据样本多样性的同时还能有效避免过拟合。 综上所述,Yolov5作为Yolo系列的最新版本,不仅在检测速度和准确率上有了大幅提升,还采用了一系列新的训练技巧。对于从事目标检测研究的人员来说,了解和掌握Yolov5核心基础知识是非常重要的。 ### 回答3YOLOv5是一种新的目标检测算法,它通过使用深度学习技术来实现图像中物体的检测。这个算法具有很高的准确率和比较快的处理速度,因此在实际应用中得到了广泛的应用。下面来深入浅出讲解YOLOv5基础知识。 1、YOLOv5的特点:YOLOv5采用的是深度学习技术,利用神经网络对图像进行处理,从而实现物体检测。它的特点是速度快,准确率高。相比传统的目标检测方法,YOLOv5还可以同时处理多个物体的检测,所以它比较适合用于实时场景中的物体检测。 2、YOLOv5的网络结构:YOLOv5采用的是一种叫做YOLOv4的网络结构,它是一种非常复杂的卷积神经网络模型。整个网络分为多个层次,每一层都是由卷积、池化、激活函数等多个操作组成。通过这些层级的处理,YOLOv5可以进行对图像的特征提取,并最终输出每个物体的位置和类别。 3YOLOv5的训练过程:YOLOv5的训练过程是一个比较复杂的过程,需要利用大量的标注好的图像数据进行训练。这个过程需要用到一些特殊工具和方法,比如数据增强、批量训练、学习率调整等。通过这些方法,YOLOv5可以不断地优化自己的检测能力,从而提升对物体的检测准确率。 4YOLOv5的应用场景:YOLOv5的应用场景非常广泛,可以应用于工业生产、安防监控、交通管理等多个领域。比如在工业生产中,可以用来对自动化生产线上的产品进行检测;在安防监控中,可以用来对物体进行追踪和识别;在交通管理中,可以用来对车辆、行人等进行检测和统计。 以上就是YOLOv5核心基础知识的完整讲解了,希望能对大家有所启发。总的来说,YOLOv5是一种比较先进的目标检测算法,其准确率和速度都较高,可以应用于多个领域。但是其训练过程比较复杂,需要有一定的专业知识和技能才能够进行有效的训练和优化。
评论 20
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值