目标检测——YOLOX算法解读

论文:YOLOX: Exceeding YOLO Series in 2021(2021.7.18)
作者:Zheng Ge, Songtao Liu, Feng Wang, Zeming Li, Jian Sun
链接:https://arxiv.org/abs/2107.08430
代码:https://github.com/Megvii-BaseDetection/YOLOX


YOLO系列算法解读:

  • YOLOv1通俗易懂版解读
  • SSD算法解读
  • YOLOv2算法解读
  • YOLOv3算法解读
  • YOLOv4算法解读
  • YOLOv5算法解读
  • YOLOR算法解读
  • YOLOX算法解读

PP-YOLO系列算法解读:

  • PP-YOLO算法解读
  • PP-YOLOv2算法解读
  • PP-PicoDet算法解读
  • PP-YOLOE算法解读
  • PP-YOLOE-R算法解读

文章目录

  • 1、算法概述
  • 2、YOLOX细节
  • 3、实验
  • 4、总结


1、算法概述

YOLOX是旷视科技2021年提出的目标检测算法,它基于YOLOv3-SPP进行改进,将原有的anchor-based调整为了anchor-free形式,并且集成了其他先进检测技术(比如decoupled head、label assignment SimOTA)取得了SOTA性能。类似于YOLOv5,它也提供了多个尺度版本的模型,Nano/Tiny/s/m/l/x,而且该方法的ONNX、TensorRT、NCNN、OpenVino推理模型均已开源。下图是YOLOX与其他检测算法的对比情况图:
在这里插入图片描述
以我实际的使用情况来看,对比YOLOv5算法,YOLOX在检测精度方面确实比YOLOv5更加优秀,但速度会稍微慢一点点。


2、YOLOX细节

作者以YOLOv3-SPP为基准,即backbone为Darknet-53,neck为SPP+FPN,head部分为分3个特征图输出NxNx(3x(4+1+80))。YOLOX对其进行一步步改进,下面来看具体的改进手段。

  • 首先训练YOLOv3-SPP baseline
    和YOLOv3论文中不一样的是,作者增加了一些策略,比如在训练过程中加入EMA权重更新技术,cosine学习率下降,IoUloss和IoU感知分支;用BCEloss训练分类分支和obj分支,用IoUloss训练回归分支。对于数据增强部分,作者只采用了随机水平翻转和颜色抖动以及多尺度训练,没有使用随机尺寸裁剪(因为作者认为这和后面的马赛克数据增强重叠了,不好评估马赛克数据增强带来的影响)。最终在COCO val数据集上是38.5%mAP。
  • Decoupled head
    在目标检测中,分类与回归任务的冲突是一种常见问题。因此,分类与定位头的解耦已被广泛应用到单阶段、两阶段检测中。然而YOLOv3/v4/v5都没有把检测头解耦,作者通过实验发现,解耦检测头能让训练收敛更快,如下图:
    在这里插入图片描述
    解耦头,意味着会检测头会多一个分支结构,所以参数量会增加,为了尽量少增加参数,作者在进入预测分支之前先用1x1卷积将特征通道减少,然后再接分类分支和回归分支。其结构如下所示:
    在这里插入图片描述
  • Strong data augmentation
    数据增强部分,作者将Mosaic和MixUp添加到增强策略中,以提高YOLOX的性能。在模型训练过程中采用MixUp和Mosaic对数据进行增强,并在最后15个epoch关闭它。实际应用下来看,最后15epoch关闭数据增强很有用。
  • Anchor-free
    Anchor-based方法的弊端:1、需要在优化之前,聚类分析数据集标注框的情况,这会导致训练出来的模型使用场景及泛化性能受限。2、锚框设计增加了检测头的复杂性,预测框数量会根据锚框设计的增加而增加。
    而无锚框机制显著减少了需要启发式调整的设计参数的数量和涉及的许多技巧(例如,锚框聚类,网格敏感)的良好性能,使检测器的训练和解码阶段大大简化。将anchor-based调整为anchor-free比较简单,作者将每个位置的预测从3个(YOLOv3是每个grid设置3个anchor)减少到1个,并使它们直接预测4个值,即网格左上角的两个偏移量,以及预测框的高度和宽度。改成anchor-free后,作者参考FCOS,将每个目标的中心定位正样本并预定义一个尺度范围以便于对每个目标指派FPN特征尺度。经过这个改进后,模型参数和GFLOPs都减少了,推理速度更快,而且性能还提升至42.9%mAP了。
  • Multi positives
    上面的匹配策略,一个gt框只能匹配一个正样本(因为采用center location匹配),这意味着会忽略掉周边高质量预测框,所以作者划定gt框中心点3x3的区域内匹配正样本,这个区域就类似于FCOS中的”center sampling”。这一改进促使模特mAP提升至45.0%。
  • SimOTA
    OTA从全局角度分析标签分配,并将分配过程制定为最优运输(Optimal Transport, OT)问题,从而产生当前分配策略中的SOTA性能。然而,在实践中我们发现用Sinkhorn-Knopp算法求解OT问题带来了额外25%的训练时间,这对于训练来说是相当昂贵的。因此,我们将其简化为动态top-k策略,命名为SimOTA,以获得近似解。在SimOTA中,预测框pj与gt框gi的匹配代价计算为
    在这里插入图片描述
    λ为平衡系数,前者为gi与pj的分类损失,后者为gi与pj的回归损失。
    对于每一个gt框gi,选择前topk个与之损失最小的预测框,且该预测框中心点在gi中心点3x3的范围内的可作为该gt框gi的正样本,其余则作为负样本。通过这个改进,mAP又提升至47.3%。
  • End-to-end YOLO
    即模型最后直接输出结果,不需要最后做nms,这样的改进会导致掉点,所以作者最终没有采用。

下面是上述改进的消融实验结果:
在这里插入图片描述
从表中可以看出,数据增强,划分3x3领域取更多正样本和SimOTA动态匹配正样本这三个改进对YOLOX提升比较大。

  • Other Backbones
    仿照YOLOv5的网络规模改进得到YOLOX-S/M/L/X,仿照YOLOv4-Tiny提出YOLOX-Tiny及YOLOX-Nano,实验结果均表明YOLOX的这些改进很优秀。
    在这里插入图片描述

3、实验

与现如今其他检测算法对比
在这里插入图片描述


4、总结

YOLOX和YOLOv5是我个人用得比较熟练的算法,工程代码都仔细研读过,写得都是非常优秀,代码结构清晰明了,如今YOLOX和YOLOv5都在工业界得到了广泛的应用,就我个人使用感觉而言,YOLOX的精度是略高于YOLOv5的,但速度比YOLOv5稍慢,两个算法都有不同的应用版本,可以方便各个平台适配;个人使用下来,YOLOX似乎对小目标漏检比较多,YOLOv5泛化性能更强一点。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/473509.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

爬虫案例-网站分词索引与站内搜索

文章目录 1.案例简介2.设计思路3.设计结构4.关键技术5.数据结构6.数据集合7.设计过程7.1 信息采集模块7.2 索引模块7.3 网页排名和搜索 8.示例效果 1.案例简介 本例使用Python建立一个指定网站专用的Web搜索引擎,它能爬取所有指定的网页信息,然后准确的…

智慧安全:守护智慧城市的安全屏障

随着信息技术的迅猛发展,智慧城市已成为现代城市发展的重要方向。智慧城市通过集成应用先进的信息通信技术,实现城市管理、服务、运行的智能化,为城市的可持续发展注入了新的活力。然而,在智慧城市的建设过程中,安全问…

综合案例-淘宝轮播图

代码&#x1f447; <!DOCTYPE html><html lang"en" xmlns"http://www.w3.org/1999/xhtml"> <head><meta charset"utf-8" /><title>淘宝轮播图</title><style>*{margin:0px;padding:0px;}.tb-promo {…

流畅的 Python 第二版(GPT 重译)(四)

第二部分&#xff1a;函数作为对象 第七章&#xff1a;函数作为一等对象 我从未认为 Python 受到函数式语言的重大影响&#xff0c;无论人们说什么或想什么。我更熟悉命令式语言&#xff0c;如 C 和 Algol 68&#xff0c;尽管我将函数作为一等对象&#xff0c;但我并不认为 Py…

Java 设计模式系列:行为型-中介者模式

简介 中介者模式是一种行为型设计模式&#xff0c;它定义了一个中介对象&#xff0c;用于简化对象之间的交互。中介者模式通过引入一个中介对象来解耦多个对象之间的交互&#xff0c;使得这些对象可以独立地改变和复用。 中介者模式的适用场景包括多个对象之间存在复杂的引用…

asp.net在线租车平台

说明文档 运行前附加数据库.mdf&#xff08;或sql生成数据库&#xff09; 主要技术&#xff1a; 基于asp.net架构和sql server数据库 功能模块&#xff1a; asp.net在线租车平台 用户功能有首页 行业新闻用户注册车辆查询租车介绍访问后台 后台管理员可以进行用户管理 管…

xinput1_3.dll丢失如何修复,xinput1_3.dll的安装修复教程分享

在Windows操作系统环境下&#xff0c;我们经常会遇到一些错误提示&#xff0c;其中之一就是“找不到xinput13.dll”。由于xinput1_3.dll是微软DirectX SDK的一部分&#xff0c;主要用于支持游戏手柄和其他外部设备的输入功能&#xff0c;缺失这一动态链接库文件可能导致某些依赖…

【WEB3安全基建项目Secwarex】空投指南

GoPlusSecurity是WEB3安全基建项目&#xff0c;3月8日完成400万美元的私募融资&#xff0c;目前总融资已经高达1500万美元&#xff0c;其中包括Binance Labs、Huobi Incubator、Kucoin Ventures、Avalanche等知名机构参投。 1、打开网址&#xff1a;secwarex.io&#xff0c;点…

node.js常用的命令

Node.js 是一个用于执行 JavaScript 代码的运行时环境。以下命令是 Node.js 开发中常用的命令&#xff0c;可以帮助你进行包管理、项目配置和代码执行等操作。 node -v&#xff1a;检查 Node.js 的版本。npm -v&#xff1a;检查 npm&#xff08;Node.js 包管理器&#xff09;的…

通配符ssl证书有哪几种

通配符SSL证书是数字证书中比较特别的一种。它可以同时保护主域名以及主域名下所有的子域名&#xff0c;对所保护的网站传输数据进行加密。在证书有效期内&#xff0c;通配符SSL证书还可以免费增加子域名站点。随着互联网的发展&#xff0c;越来越多的个人和企事业单位的开发者…

01.Queue-Basic

1. 队列简介 队列&#xff08;Queue&#xff09;&#xff1a;一种线性表数据结构&#xff0c;是一种只允许在表的一端进行插入操作&#xff0c;而在表的另一端进行删除操作的线性表。 我们把队列中允许插入的一端称为 「队尾&#xff08;rear&#xff09;」&#xff1b;把允许删…

nginx使用与配置文件

nginx服务配置与配置优化 nginx服务脚本配置 mkdir wwwroot cd wwwroot/ mkdir nginx1 touch index.php vim index.php<?php echo $_SERVER["REMOTE_ADDR"]; ​ ​ vim conf/nginx.confserver {listen 80;server_name localhost;root /www/wwwroot/nginx…

分布式之SleuthZipkin

Sleuth&Zipkin 学习当前课程&#xff0c;比必须要先掌握SpringCloud的基本应用&#xff08;Nacos&#xff0c;Feign调用&#xff09; 对Docker有一定的了解&#xff0c;知道docker-compose.yml如何启动一个容器 RabbitMQ&#xff0c;Elasticsearch有一定了解。 而且学习…

SQLiteC/C++接口详细介绍sqlite3_stmt类(五)

返回&#xff1a;SQLite—系列文章目录 上一篇&#xff1a;SQLiteC/C接口详细介绍sqlite3_stmt类&#xff08;四&#xff09;- 下一篇&#xff1a; 无 12. sqlite3_bind_text16函数 sqlite3_bind_text16函数用于将UTF-16编码的文本数据&#xff08;字符串&#xff09;绑定…

HTML,子元素使用float后,导致父元素高度塌陷

HTML学习中遇到的一个任务&#xff1a;header 标签有两个元素 div&#xff08;标题&#xff09; 和 nav&#xff08;导航&#xff09;&#xff0c;希望实现的效果是标题在左侧&#xff0c;导航在右侧。 基础代码如下&#xff1a; <!DOCTYPE html> <html><head&…

辐射展—2024深圳辐射监测与防护展览会

2024深圳辐射监测与防护展览会 展会时间&#xff1a;2024年5月15-17日 展会地点&#xff1a;深圳国际会展中心&#xff08;宝安&#xff09; 主办单位&#xff1a;广东省辐射防护协会 广东省环境监测协会 深圳中国环境监测总站技术创新研究院&#xff08;福田&#xff09;…

mysql未完成事务查看

因为MySQL的事务管理主要是基于InnoDB存储引擎的&#xff0c;并且事务的状态&#xff08;例如&#xff0c;是否已提交或回滚&#xff09;通常是内部的、不直接暴露给用户的,但是可以通过一些方法间接地检查或诊断与事务相关的问题 查看正在运行的事务 使用SHOW ENGINE INNODB…

Flink RocksDB状态后端优化总结

截至当前&#xff0c;Flink 作业的状态后端仍然只有 Memory、FileSystem 和 RocksDB 三种可选&#xff0c;且 RocksDB 是状态数据量较大&#xff08;GB 到 TB 级别&#xff09;时的唯一选择。RocksDB 的性能发挥非常仰赖调优&#xff0c;如果全部采用默认配置&#xff0c;读写性…

小程序应用市场的前世今生

最开始的开始&#xff0c;为软件开发者提供软件发布、运营和推广服务的平台称之为软件应用市场&#xff0c;其发展经历了以下3个阶段&#xff1a; 起源阶段&#xff1a;应用市场的起源可以追溯到桌面互联网时代&#xff0c;当时软件的开发和分发主要依靠软件网站。软件开发者可…

【每日一题】 2024年2月汇编(下)

&#x1f525;博客主页&#xff1a; A_SHOWY&#x1f3a5;系列专栏&#xff1a;力扣刷题总结录 数据结构 云计算 数字图像处理 力扣每日一题_ 【2.16】103.二叉树的锯齿形层序遍历 103. 二叉树的锯齿形层序遍历https://leetcode.cn/problems/binary-tree-zigzag-level-or…