Yolov8网络详解

Yolov8网络
在这里插入图片描述
YOLOv8创新改进点:
1.Backbone。使用的依旧是CSP的思想,不过YOLOv5中的C3模块被替换成了C2f模块,实现了进一步的轻量化,同时YOLOv8依旧使用了YOLOv5等架构中使用的SPPF模块;
2.PAN-FPN。毫无疑问YOLOv8依旧使用了PAN的思想,不过通过对比YOLOv5与YOLOv8的结构图可以看到,YOLOv8将YOLOv5中PAN-FPN上采样阶段中的卷积结构删除了,同时也将C3模块替换为了C2f模块
3.Decoupled-Head。是不是嗅到了不一样的味道?是的,YOLOv8走向了Decoupled-Head;
4.Anchor-Free。YOLOv8抛弃了以往的Anchor-Base,使用了Anchor-Free的思想;
5.损失函数。YOLOv8使用VFL Loss作为分类损失,使用DFL Loss+CIOU Loss作为分类损失;
Yolov8网络结构详解:
1.输入端
无锚框,resize到6406403;
2.Backbone
Yolov5中主要使用的C3(CSP)网络,而yolov8主要使用的是c2f模块。
Bottleneck的核心思想就是利用多个小的卷积核去代替大的卷积核,与最初的结构相比不仅加深了网络的深度,更减少了网络的参数量。
在这里插入图片描述
YOLOv8的C2f模块借鉴了YOLOv7中的ELAN思想,通过并行更多的梯度流分支,目的是为了在保证轻量化的同时获得更加丰富的梯度流信息,额外还增加了一个Split操作。
ELAN模块结构图
ELAN模块结构图
C2f本质上就是在结合了C3模块及ELAN模块的思想。将原本串接的Bottleneck模块运用梯度分流的思想连接,优化了模块结构,有效的避免了在深度过深时收敛性的恶化。在优化网络结构获得轻量化的同时,又可以获取到丰富的梯度流信息,提升了YOLOv8模型的整体性能。
在这里插入图片描述
C2f模块
3.特征增强模块Neck
YOLOv8的Neck层中,使用SPPF模块(Spatial Pyramid Pooling-Fast)替代原本的SPP模块,并且延续了YOLOv5中FPN+PAN模块,但在结构上稍作修改,进一步提高网络的特征提取能力。SPP模块在YOLOv5最初的版本中使用。SPP全称空间金字塔池化,结构如图所示。通过使用13×13、9×9、5×5、1×1四种大小的卷积核,对特征图像进行多个特征提取。SPP模块在一定程度上解决了多尺度问题,提高了算法检测的精度。
在这里插入图片描述
SPPF模块在SPP模块原有结构上进行优化,其结构如图b)图所示。SPPF模块将原有3种不同尺寸的卷积核,改为3个5×5的卷积核。这是因为将2个5×5的卷积核串联,其效果等价于1个9×9的卷积核。同理,3个5×5的卷积核串联等效于1个13×13的卷积核。与直接使用大的卷积核相比,多个小卷积核串联后减少了网络的计算量,提高了检测效率。在实际的实验中,对于相同的输入,SPP和SPPF输出结果相同,但后者的速度是前者的二倍。
PAN是在FPN的基础上又增加了从下到上的融合。深层的feature map携带更强的语义特征,较弱的定位信息,而浅层的feature map携带较强的位置信息和较弱的语义特征。FPN将深层的语义特征传到浅层,从而增强多个尺度上的的语义表达,而PAN则相反把浅层的定位信息传导到深层,增强多个尺度上的定位能力。
YOLOv8将YOLOv5的PAN中C3模块替换为C2f模块,并且去掉了上采样之前的1×1卷积,将Backbone不同阶段输出的特征直接送入了上采样操作。
在这里插入图片描述
在这里插入图片描述
4.Head
YOLOv8网络结构的另一部分改进集中在Head层部分,将YOLOv5中原本的耦合检测头(coupled head)替换为解耦检测头(decoupled head),并且从Anchor Based变成了Anchor Free。在此基础上,YOLOv8对原有检测头部分做出改进,结构如图所示。解耦检测decoupled head将分类与回归进行解耦,将其拆分为两个独立的分支。实验表明,对于相同的检测任务,使用解耦检测头可以加速收敛,检测精度也有所提高。
在这里插入图片描述
Anchor Based和Anchor Free
YOLOv5中的Anchor-based机制是一种目标检测方法,它依赖于预定义的锚框(anchor boxes)来预测目标物体的位置和大小。Anchor-based方法的核心思想是使用一组预先定义的锚框,这些锚框具有不同的尺寸和长宽比,以覆盖图像中可能出现的各种形状和大小的物体。在训练过程中,网络会学习调整这些锚框的位置和大小,以便更好地匹配图像中的实际物体。
(1)使用一系列预定义的锚框(anchor boxes)来覆盖图像中可能的目标位置。
(2)通过这些锚框进行目标的分类和边界框的回归。
(3)需要大量的超参数调整,如锚框的尺寸、宽高比和数量,以适应不同的数据集。
(4)训练过程中需要计算所有锚框与真实框之间的IOU值,计算复杂度较高。
Anchor Free不使用预定义的锚框,而是直接在图像的每个位置上预测目标的存在与否以及其边界框。通常依赖于特征金字塔网络(FPN)来处理不同尺度的目标,以及Focal Loss来提高对中心区域的预测准确性。可能导致较多的误检(false positives),但在召回率上通常表现得更好;相对于Anchor-based方法,Anchor-free方法更简单和灵活,但可能存在定位精度低的问题。
优点:
(1)Anchor-based:通过调整锚框可以较好地匹配图像中的物体,有助于减少定位误差。
(2)Anchor-free:由于不需要预设锚框,因此更为简单和灵活,可以减少超参数的调整工作。
缺点:
(1)Anchor-based:需要大量的超参数调整,普适性较差;计算复杂度高,正负样本不均衡问题严重。
(2)Anchor-free:虽然解空间大,但可能导致较多的误检,需要在后续处理中进行过滤。
损失函数
目标检测中的分类损失函数主要用于目标的分类,是计算模型对目标类别的预测概率与真实标签之间的差异。而回归损失函数则用于预测目标的边界框位置,用于计算模型预测的边界框(bounding box)与真实边界框之间的差异。
Yolov5中的分类损失函数是BCE Loss,回归损失函数为CIOU Loss。而YOLOv8中,分类损失函数为VFL(Varifocal Loss),回归损失采用CIoU Loss+DFL(Distribution Focal Loss)的形式。
Varifocal Loss函数
针对正负样本不均的问题,运用Varifocal Loss函数,提出了非对称的加权操作。Varifocal
Loss函数公式如式所示:
在这里插入图片描述
其中,q为label,在正样本时q为IoU值,反之q为0。即当为正样本时是一般的BCE损失函数,负样本时便是Focal损失函数。Varifocal Loss对正负样本的处理不再是对称的,它通过考虑二者不同的重要程度,将正样本突出为主体。
Distribution Focal Loss函数
Distribution Focal Loss(DFL)是一种用于目标检测任务的损失函数,它是对Focal Loss的改进和扩展。Focal Loss是一种广泛应用于目标检测中的损失函数,用于解决正负样本不平衡问题。DFL的核心思想是根据目标类别的分布情况,对Focal Loss进行调整。传统的Focal Loss通过引入一个调节因子来平衡正负样本的权重,减轻了正负样本不平衡带来的问题。然而,传统的Focal Loss没有考虑到目标类别的分布情况对损失函数的影响。在目标检测任务中,存在大量的负样本,即没有目标的锚框(anchor boxes)。为了解决这一问题,Distribution Focal Loss被提出,它通过交叉熵函数来优化标签y附近的概率分布,使得网络能够快速聚焦到标签附近的数值,从而提高模型的性能。
具体来说,Distribution Focal Loss的核心思想是使用交叉熵损失函数来优化标签y附近左右两个位置的概率密度,使得网络的预测分布尽可能集中在真实标签值附近。这样做的目的是为了让模型更快地学习到准确的预测框及其分布,提高目标检测的准确性。
总的来说,Distribution Focal Loss是目标检测领域中一个重要的损失函数,它通过优化概率分布的方式,有效地解决了负样本问题,并提高了模型对目标定位的准确性。

YOLOv7是一种目标检测的深度学习网络结构。根据引用,YOLOv7的基本结构包括YOLOv7的整体结构和YOLOv7 head。 YOLOv7的整体结构可以参考引用。YOLOv7是YOLO系列的最新版本,它在YOLOv5的基础上进行改进。引用中提到,YOLOv7是由YOLOv5和YOLOv6演化而来,同时还有YOLOv76的出现。YOLOv7的网络结构相对于之前的版本更加先进和复杂。 而YOLOv7 head是指网络结构中的头部部分,根据引用,YOLOv7 head采用了pafpn结构。pafpn结构是一种特征金字塔网络结构,用于多尺度目标检测。在YOLOv7中,pafpn结构被用于将不同层次的特征图进行融合和处理。 具体来说,YOLOv7 head首先对骨干网络(backbone)最后输出的32倍降采样特征图C5进行处理,通过SPPCSP操作,将通道数从1024降低为512。然后,根据top-down和C4、C3融合的原则,得到P3、P4和P5特征图。接着,根据bottom-up的原则,将P4和P5与其它特征图进行融合。 与YOLOv5相比,YOLOv7在融合模块方面做了一些改进。引用中提到,YOLOv7采用了ELAN-H模块替代了YOLOv5中的CSP模块,并且将下采样换成了MP2层。ELAN-H模块是一种新的模块,不同于backbone中的ELAN模块,它的主要区别在于cat的数量不同。 至于引用中提到的E-ELAN模块以及代码中的shuffle操作,目前还没有明确的说明。所以,有关这些方面的具体细节还需要进一步研究和理解。 综上所述,YOLOv7是一种目标检测的深度学习网络结构,它通过pafpn结构对不同层次的特征图进行融合处理,以实现多尺度的目标检测能力。YOLOv7相对于之前的版本有一些改进,包括头部结构的改进和模块的替换。然而,关于YOLOv7的更多细节和技术细节还需要进一步的研究和理解。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [深入浅出 Yolo 系列之 Yolov7 基础网络结构详解](https://blog.csdn.net/u010899190/article/details/125883770)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值