目标检测 YOLOv5 - 如何提高模型的指标,提高精确率,召回率,mAP等

这篇具有很好参考价值的文章主要介绍了目标检测 YOLOv5 - 如何提高模型的指标,提高精确率,召回率,mAP等。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目标检测 YOLOv5 - 如何提高模型的指标,提高精确率,召回率,mAP等

flyfish

文中包括了YOLOv5作者分享的提高模型指标小技巧和吴恩达(Andrew Ng)在做缺陷检测项目( steel sheets for defects)时遇到的需要提高模型指标的问题是如何解决的。

1 YOLOv5获得最佳训练效果指南

大多数情况下,只要数据集足够大且良好标注(provided your dataset is sufficiently large and well labelled),就可以在不更改模型或训练设置的情况下获得良好的结果。如果一开始没有得到好的结果,在考虑任何更改之前,首先使用所有默认设置进行训练。这有助于建立性能baseline和需要改进的地方。

YOLOv5提供了大量的信息包括训练损失, 验证损失, 精确率(P), 召回率(R), mAP等可视化结果, 包括PR曲线(PR curve), 混淆矩阵(confusion matrix, 马赛克训练, 测试结果等数据集统计图像。这些信息的图像所在目录是yolov5/runs/Train/exp

1.1 数据集方面

1.1.1 每个类别的图像

每个类别的图像张数大于1500张

1.1.2 每个类别的实例

我们人工标注的目标框就是实例,每个类别的实例要大于10000张。

1.1.3 图像的多样性

数据集必须展现出部署环境,推荐来自一天中不同时间、不同季节、不同天气、不同光照、不同角度、不同数据源(在线抓取、本地收集、不同相机)等的图像。

1.1.4 标注的一致性

所有图像中所有类的所有实例都必须标注。部分标注将不起作用。

1.1.5 标注的精度

边框必须紧密地包围每个目标。目标和边框之间不应存在任何空。任何目标都不应缺少标签。
背景图像:背景图像是图像里没有感兴趣目标的图像,加到数据集以减少误报 (FP) 。建议约 0-10% 的背景图像,以帮助减少 FP(COCO数据集有1000张背景图像供参考,占总数的 1%)。

1.2 模型选择

更大的模型,如YOLOv5x,在几乎所有情况下都会产生更好的结果,但参数更多,运行速度也更慢。对于移动应用推荐YOLOv5s/m;对于云或桌面应用,推荐YOLOv5l/x。 对于所有YOLOv5系列模型全面的比较,请看这里

1.3 训练设置

在修改任何内容之前,首先使用默认设置进行训练,以建立性能baseline。
( first train with default settings to establish a performance baseline)
training.py的argparser中提供了训练设置的完整列表。

1.3.1 epochs:

从300个epoch开始。如果过早过拟合,那么可以减少epochs。如果在300个epoch后没有发生过拟合,则训练更长时间,即 600、1200 个等epoch。

1.3.2 图像大小

COCO以–img 640的原始分辨率训练,尽管由于数据集中有大量的小目标,它可以从更高分辨率(如-img 1280)的训练中受益。如果有许多小目标,则自定义数据集将从原始或更高分辨率的训练中受益。最佳推理结果是训练时设置的 --img x与推理时设置的–img x相同,例如如果–img 1280训练,则在–img 1280进行推理测试。

1.3.3 batch size

使用自己的硬件资源允许的最大Batch size。小的Batch size会产生较差的batchnorm统计,应该避免。

1.3.4 超参数

默认超参数位于hpy.scratch.yaml中。建议先使用默认超参数进行训练,然后再考虑修改任何参数。一般来说,增加augmentation超参数将减少和延迟过度拟合,从而允许更长的训练时间和更高的最终mAP。减少loss component gain 超参数(如hyp[‘obj’])将有助于减少对特定loss component的过度拟合。

2 以数据为中心的AI(Data-Centric AI)

以数据为中心的AI(data-centric AI)这一概念是吴恩达(Andrew Ng)的提出的。
AI system = Code + Data
Code = model / algorithm
提高模型指标的两种路径

以模型为中心

通过改进模型来提升表现(Asks how you can change the model to improve performance.)

以数据为中心

通过改进数据来提升表现(Asks how you can change or improve your data to improve performance.)

2.1 听听大佬怎么说的

  1. 训练神经网络的第一步是根本不是接触任何神经网络代码,而是从彻底检查数据开始。这一步至关重要。(The first step to training a neural net is to not touch any neural net code at all and instead begin by thoroughly inspecting your data. This step is critical.)
  2. 你的模型架构足够好了。总而言之,不要试图和一屋子的博士比聪明。相反,在尝试改进模型之前,请确保数据的质量是一流的。(your model architecture is good enough.To summarize — don’t try to outsmart a room full of PhDs. Instead, make sure the quality of your data is top-notch before trying to improve the model.)
  3. 以数据为中心的ML归结为以下三点:
    (1)数据飞轮:同步开发模型和数据。(The data flywheel: develop model and data in tandem)
    (2)您可以自己对数据进行注释,至少在开始时是这样。(Annotate the data yourself, at least at the beginning)
    (3)使用工具尽可能减少MLOps的麻烦(Use tools to reduce the MLOps hassle as much as possible)
    注释
    tandem: adv. 二马纵列地,这里翻译成两项工作同时展开
    MLOps: 全称是Machine Learning Operations ,Andrew Ng在他的ppt中这样描述MLOps最重要的任务是在ML项目生命周期的所有阶段提供高质量的数据。(MLOps’ most important task is to make high quality data available through all stages of the ML project lifecycle.)

2.2 什么是好的标注

数据数量还是数据质量(Data Quantity vs. Data Quality)
如果要追求数据的质量,我们就必须有严格而统一的标注规则,反之就是指标下降
目标检测 YOLOv5 - 如何提高模型的指标,提高精确率,召回率,mAP等

2.3 deeplearning.ai提供了Andrew Ng在遇到一个检测问题是如何解决的

Andrew Ng和他的团队在进行钢铁缺陷检测项目( steel sheets for defects)时,accuracy卡在了76.2%,期望结果是accuracy>=90%。于是他把团队拆分,各个小组做不同的事。一个小组保持模型不变,做new examples,data augmentation, labeling等提高数据质量的工作,另一个小组保持数据不变,但尝试改进模型。从事数据工作的小组能够将准确率提高到 93.1%,而另一个小组却丝毫没能提高baseline。
详细结果看Andrew Ng的ppt,如下图
目标检测 YOLOv5 - 如何提高模型的指标,提高精确率,召回率,mAP等
参考
Stop treating data as a commodity
Andrew Ng MLOps-From-Model-centric-to-Data-centric-AI
A Recipe for Training Neural Networks
YOLOv5 issues
YOLOv5 issues文章来源地址https://www.toymoban.com/news/detail-447688.html

到了这里,关于目标检测 YOLOv5 - 如何提高模型的指标,提高精确率,召回率,mAP等的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【pytorch】目标检测:一文搞懂如何利用kaggle训练yolov5模型

    笔者的运行环境:python3.8+pytorch2.0.1+pycharm+kaggle。 yolov5对python和pytorch版本是有要求的,python=3.8,pytorch=1.6。yolov5共有5种类型nslmx,参数量依次递增,对训练设备的要求也是递增。本文以yolov5_6s为切入点,探究yolov5如何在实战种运用。 roboflow是一个公开数据集网站,里面有很

    2024年02月12日
    浏览(49)
  • YOLOv8/YOLOv7/YOLOv5系列算法改进【NO.6】增加小目标检测层,提高对小目标的检测效果

    前 言: 作为当前先进的深度学习目标检测算法YOLO,已经集合了大量的trick,但是在处理一些复杂检测问题的时候,还是容易出现错漏检的问题。此后的系列文章,将重点对YOLOv8、YOLOv7以及YOLOv5的如何改进进行详细的介绍,目的是为了给那些搞科研的同学需要创新点或者搞工

    2024年02月02日
    浏览(54)
  • 【目标检测】yolov5模型详解

    yolov5于2020年由glenn-jocher首次提出,直至今日yolov5仍然在不断进行升级迭代。 Yolov5有YOLOv5s、YOLOv5m、YOLOv5l、YOLOv5x四个版本。文件中,这几个模型的结构基本一样,不同的是depth_multiple模型深度和width_multiple模型宽度这两个参数。 yolov5主要分为以下几部分: Input:输入 Backbone:

    2024年02月07日
    浏览(51)
  • 【目标检测】YOLOv5:模型构建解析

    最近在看一些目标检测的最新论文和代码,大多数都是在YOLOv5的基础上进行魔改。 改的最多的基本是原版本的网络结构,这篇博文就从源码角度来解析YOLOv5中,模型是如何构建出来的。 本文使用的是YOLOv5-5.0版本。 在YOLOv5中,模型结构基本是写在了 .yaml 中,5.0版本的YOLOv5共

    2024年02月06日
    浏览(90)
  • YOLO等目标检测模型的非极大值抑制NMS和评价指标(Acc, Precision, Recall, AP, mAP, RoI)、YOLOv5中mAP@0.5与mAP@0.5:0.95的含义

    YOLOv5正负样本定义 yolov5输出有3个预测分支,每个分支的每个网格有3个anchor与之对应。 没有采用IOU最大的匹配方法,而是通过计算该bounding-box和当前层的anchor的宽高比,如果最大比例大于4(设定阈值),则比例过大,则说明匹配度不高,将该bbox过滤,在当前层认为是背景

    2024年02月03日
    浏览(51)
  • YOLOv7如何提高目标检测的速度和精度,基于优化算法提高目标检测速度

    大家好,我是哪吒。 上一篇介绍了YOLOv7如何提高目标检测的速度和精度,基于模型结构提高目标检测速度,本篇介绍一下 基于优化算法提高目标检测速度 。 🏆本文收录于,目标检测YOLO改进指南。 本专栏为改进目标检测YOLO改进指南系列,🚀均为全网独家首发,打造精品专

    2023年04月26日
    浏览(50)
  • 目标检测 YOLOv5 预训练模型下载方法

    目标检测 YOLOv5 预训练模型下载方法 flyfish https://github.com/ultralytics/yolov5 https://github.com/ultralytics/yolov5/releases 可以选择自己需要的版本和不同任务类型的模型 后缀名是pt

    2024年02月08日
    浏览(58)
  • 【目标检测】YOLOv5算法实现(九):模型预测

      本系列文章记录本人硕士阶段YOLO系列目标检测算法自学及其代码实现的过程。其中算法具体实现借鉴于ultralytics YOLO源码Github,删减了源码中部分内容,满足个人科研需求。   本系列文章主要以YOLOv5为例完成算法的实现,后续修改、增加相关模块即可实现其他版本的

    2024年01月21日
    浏览(46)
  • 【目标检测】YOLOv5算法实现(八):模型验证

      本系列文章记录本人硕士阶段YOLO系列目标检测算法自学及其代码实现的过程。其中算法具体实现借鉴于ultralytics YOLO源码Github,删减了源码中部分内容,满足个人科研需求。   本系列文章主要以YOLOv5为例完成算法的实现,后续修改、增加相关模块即可实现其他版本的

    2024年01月22日
    浏览(48)
  • 【目标检测】YOLOv5算法实现(七):模型训练

      本系列文章记录本人硕士阶段YOLO系列目标检测算法自学及其代码实现的过程。其中算法具体实现借鉴于ultralytics YOLO源码Github,删减了源码中部分内容,满足个人科研需求。   本系列文章主要以YOLOv5为例完成算法的实现,后续修改、增加相关模块即可实现其他版本的

    2024年01月22日
    浏览(60)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包