关于yolov8的一些理解

1.前言

YOLOv8 是 ultralytics 公司在 2023 年 1月 10 号开源的 YOLOv5 的下一个重大更新版本。是一款强大、灵活的目标检测和图像分割工具,它提供了最新的 SOTA 技术。
在这里插入图片描述
Github: yolov8

2.创新点及工作

  1. 提供了一个全新的SOTA模型。基于缩放系数也提供了N/S/M/L/X不同尺度的模型,以满足不同部署平台和应用场景的需求;
  2. 网络结构上引入C2F和SPPF模块,并对不同尺度的模型进行了精心微调,提升网络特征提取能力及模型性能的同时,平衡模型的推理速度;
  3. 采用Anchor-Free代替Anchor-Based,对网络输出头进行解耦,分离类别预测和目标框的回归,同时去掉置信度分支;
  4. 采用TaskAlignedAssigner 动态正样本分配策略,提高样本的生成质量
  5. 引入了 Distribution Focal Loss用于目标框的回归。

3. 网络结构

在这里插入图片描述

3.1 BackBone

3.1.1 C2F

网络结构优化的一种方法:替换基本组件;

  • 参考了YOLOv5的C3模块以及YOLOv7的ELAN的模块进行的设计,让YOLOv8可以在保证轻量化的同时,通过引入更多的分支跨层连接可以获得更加丰富的梯度流信息。
  • 相较于YOLOv7的ELAN模块的设计,C2F模块在输入/输出通道上没有做什么额外工作,在一定程度并不太符合ShuffleNet的一些设计准则:要想使卷积推理速度达到最快,输入通道应与输出通道保持一致。
  • C2F模块中存在 Split 等操作对特定硬件部署没有之前那么友好了
    在这里插入图片描述

3.1.2 结构微调

对不同尺度模型调整了通道数和模型的深度,属于对模型结构精心微调,不再是无脑一套参数应用所有模型,综合考虑模型的精度和推理速度
在这里插入图片描述

  • Yolov5中C3模块的堆叠遵循着3/6/9/3的配置,而在YOLOv8中,C2F的配置则是3/6/6/3的配置,其中的9被减小到了6,以压缩模型的规模
  • 对于较轻量的YOLOv8-N和YOLOv8-S,基本通道数遵循128->256->512->1024的变化规律,即乘以各自的width参数即可。 但是,对于较大的M/L/X,最后的1024则分别变成了768,512和512,如上图红框所示,C5尺度的通道数是有变化的。相当于加入一个参数ratio,简记r,基础通道数为512,那么从YOLOv8-N到YOLOv8-X,就一共有width(w)、depth(d)和ratio® 三组可调控的参数:
    在这里插入图片描述
  • 这种人为调控参数的目的在于提升模型精度的同时,控制计算量的大小,以实现和其它算法相比,达到SOTA效果;但这种强行调整的方式,人为雕琢的痕迹过重,网络结构的调整没有那么”优雅”。

3.1.2 SPPF

对比spp,将简单的并行max pooling 改为串行+并行的方式。对比如下(左边是SPP,右边是SPPF)
在这里插入图片描述

3.2 Neck

NECK部分和yolov5结构基本一致,区别主要有两点

  • C3模块更换为C2F模块
  • 去掉了上采样前用于降维的 1×1 卷积。
    在这里插入图片描述

3.3 Head

  • Anchor_base 调整为 Anchor_free
    • 个人认为anchor box在一定程度上能够起到先验的作用,但其尺寸一般基于数据集统计分析得到,在一定程度上依赖于数据集本身的分布;
    • 同时anchor的引入会带来额外的参数量,整体来说anchor_free还是较为简单明了;
  • 参考yolox操作,对预测结果进行解耦 :单独分支预测分类和定位
  • 去掉了置信度分支
  • 回归的内容是ltrb四个值(距离匹配到的anchor点的距离值),这里的regmax在后面进行解释
    在这里插入图片描述
  • 需要注意的是解耦头的类别分支和回归分支的通道数可能是不相等的,YOLOv8认为二者表征了两种不同的特征,应该不一样。因此,对于类别分支,YOLOv8将其通道数设置为 c
  • 5
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
yolov8n和yolov8s是yolov8模型的两个变种。它们之间有一些本质的区别。 首先,yolov8n中的anchors(锚点)与yolov8s有所不同。在yolov8n中,anchors只是一个锚点,即预测的中心点或者可以理解为每个像素的中心点。而且在yolov8n中,每个像素只有一个锚点。例如,yolov8n输出共有80*80、40*40、20*20等不同分辨率的网格,每个网格只有一个锚点,总共有8400个锚点。 另外,yolov8n和yolov8s在训练和验证的设置上也有一些差异。例如,在yolov8n的训练中,可以使用以下命令设置参数:yolov8_main2307/ultralytics$yolo task=detect mode=train model=models/v8/yolov8n.yaml data=/home/user/hlj/MyTrain/yolov8_main2307/ultralytics/yolo/v8/detect/data/my_yolov8.yaml imgsz=960 batch=32 epochs=100 workers=2。而在yolov8s的验证中,可以使用以下命令设置参数:yolo task=detect mode=val model=./runs/detect/base_yolov8s_pt22M/weights/best.pt data=./yolo/v8/detect/data/my_yolov8.yaml batch=8 workers=0。 总的来说,yolov8n和yolov8s是yolov8模型的两个不同版本,它们在锚点的设置和训练/验证的参数设置上有所区别。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [YOLOV8-网络结构](https://blog.csdn.net/weixin_40723264/article/details/130745025)[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^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [视频目标检测 yolo算法小模型自训练模型对比(yolov5 yolov7 yolov8)](https://blog.csdn.net/qq_42835363/article/details/131817017)[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^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值