当前位置: 首页 > news >正文

yolox相关

yolox

  • YOLOX
  • YOLOX-DarkNet53
    • yolov3作为baseline
    • 输入端
      • Strong data augmentation
        • Mosaic数据增强
        • MixUp数据增强
        • 注意
    • Backbone
    • Neck
    • Prediction层
      • Decoupled head
        • Decoupled Head 细节
      • Anchor-free
        • Anchor Based方式
        • Anchor Free方式
          • 标签分配
            • 初步筛选
            • 精细化筛选 SimOTA
            • SimOTA
  • Other Backbones
    • Yolox-s、l、m、x系列

参考:
B站论文详解
YOLOX解读与感想
江大白 深入浅出Yolo系列之Yolox核心基础完整讲解

windows10搭建YOLOx环境 训练+测试+评估
江大白 深入浅出Yolox之自有数据集训练超详细教程

YOLOX

yolox主要提出解耦Head、anchor-free和SimOTA
Yolox-s是在Yolov5-s的基础上,进行的改进

YOLOX-DarkNet53

Yolox-Darknet53是在Yolov3的基础上,进行的改进

yolov3作为baseline

用BCE的loss训练分类和objectness置信度 的分支 ,用IOU的loss训练Regesison。对IOU的改进可以大大提高yolo系列网络收敛的速度,成为改进yolov3 的标配。
会使用一些mosaic和RandomHorizontalFlip的augmentation的方式
FPN自顶向下,将高层的特征信息,通过上采样的方式进行传递融合,得到进行预测的特征图。
而在Yolov4、Yolov5、甚至Yolox-s、l等版本中,都是采用FPN+PAN的形式,这里需要注意。

Yolov3_spp网络
Yolov3_spp网络
Yolox-Darknet53网络结构
Yolox-Darknet53
对Yolox-Darknet53网络结构进行拆分,变为四个板块:
① 输入端:Strong augmentation数据增强
② BackBone主干网络:主干网络没有什么变化,还是Darknet53。
③ Neck:没有什么变化,Yolov3 baseline的Neck层还是FPN结构。
④ Prediction:Decoupled Head、End-to-End YOLO、Anchor-free、Multi positives。

输入端

Strong data augmentation

加入了 Mosaic 和 MixUp,和yolov5一样。

Mosaic数据增强

随机缩放、随机裁剪、随机排布

MixUp数据增强

将Image_1和Image_2,加权融合

注意

在最后的15个epoch关掉。
由于采取了更强的数据增强方式,使用强大的数据增强后,发现ImageNet预训练没有用了,所以所有的模型都是从头训练。

Backbone

在这里插入图片描述
Yolox-Darknet53的Backbone主干网络,和原本的Yolov3 baseline的主干网络都是一样的

Neck

在这里插入图片描述
Yolox-Darknet53和Yolov3 baseline的Neck结构,也是一样的,都是采用FPN的结构进行融合
FPN自顶向下,将高层的特征信息,通过上采样的方式进行传递融合,得到进行预测的特征图。
FPN

而在Yolov4、Yolov5、甚至后面讲到的Yolox-s、l等版本中,都是采用FPN+PAN的形式,这里需要注意。
PAN

Prediction层

输出层中,主要从四个方面进行讲解:Decoupled Head、Anchor Free、标签分配、Loss计算。
在这里插入图片描述

Decoupled head

随着yolo系列的backbone和特征金字塔(FPN,PAN)不断演变,他们都是耦合。实验表明,耦合探测头可能会损害性能
Decoupled head对于端到端版本的YOLO至关重要,才能进行anchor free。
在这里插入图片描述

对于每一层FPN特征。包含一个1×1 conv层以减小通道尺寸(将特征通道减少到256),然后是两个分别具有两个3×3 conv层的并行分支(分别用于分类和回归),IoU分支添加到回归分支上。

yolov3~v5就是把FPN的输出放到head里面输出,这个矩阵的大小是HW(C+4+1)

在这里插入图片描述
上图右面的Prediction中,我们可以看到,有三个Decoupled Head分支。
但是需要注意的是:将检测头解耦,会增加运算的复杂度。
因此作者经过速度和性能上的权衡,最终使用 1个1x1 的卷积先进行降维,并在后面两个分支里,各使用了 2个3x3 卷积,最终调整到仅仅增加一点点的网络参数。

Decoupled Head 细节

在这里插入图片描述
将Yolox-Darknet53中,Decoupled Head①提取出来,经过前面的Neck层,这里Decouple Head①输入的长宽为2020。
从图上可以看出,Concat前总共有三个分支:
(1)cls_output:主要对目标框的类别,预测分数。因为COCO数据集总共有80个类别,且主要是N个二分类判断,因此经过Sigmoid激活函数处理后,变为20
2080大小。
(2)obj_output:主要判断目标框是前景还是背景,因此经过Sigmoid处理好,变为20
201大小。
(3)reg_output:主要对目标框的坐标信息(x,y,w,h)进行预测,因此大小为20
204。
最后三个output,经过Concat融合到一起,得到20
20*85的特征信息。

Decoupled Head②输出特征信息,并进行Concate,得到404085特征信息。
Decoupled Head③输出特征信息,并进行Concate,得到808085特征信息。
再对①②③三个信息,进行Reshape操作,并进行总体的Concat,得到840085的预测信息。
并经过一次Transpose,变为85
8400大小的二维向量信息。
这里的8400,指的是预测框的数量,而85是每个预测框的信息(reg,obj,cls)。

有了预测框的信息,下面了解如何将这些预测框和标注的框,即groundtruth进行关联,从而计算Loss函数,更新网络参数

Anchor-free

Anchor Based方式

Yolov3、Yolov4、Yolov5中,通常都是采用Anchor Based的方式,来提取目标框,进而和标注的groundtruth进行比对,判断两者的差距。
比如输入图像,经过Backbone、Neck层,最终将特征信息,传送到输出的Feature Map中。这时,就要设置一些Anchor规则,将预测框和标注框进行关联。从而在训练中,计算两者的差距,即损失函数,再更新网络参数。
比如在yolov3_spp,最后的三个Feature Map上,基于每个单元格,都有三个不同尺寸大小的锚框。

Anchor Free方式

锚定机制增加了检测头的复杂性,以及每个图像的预测数量。
减少了设计参数的数量
每个位置的预测从三个变成一个,同时输出四个值:网格左上角的两个偏移量以及预测框的高度和宽度。
直接把每个物体的中心点当做正样本。预先定义比例范围,以指定每个对象的FPN级别

yolox把原来的yolo的anchor-based框架改成了anchor-free框架。
在这里插入图片描述
最后黄色的858400,不是类似于Yolov3中的Feature Map,而是特征向量。当输入为640640时,最终输出得到的特征向量是85*8400。

在这里插入图片描述
将前面Backbone中,下采样的大小信息引入进来。最上面的分支,下采样了5次,2的5次方为32。并且Decoupled Head①的输出,为202085大小。
在这里插入图片描述
因此如上图所示:
最后8400个预测框中,其中有400个框,所对应锚框的大小,为3232。
同样的原理,中间的分支,最后有1600个预测框,所对应锚框的大小,为16
16。
最下面的分支,最后有6400个预测框,所对应锚框的大小,为8*8。

当有了8400个预测框的信息,每张图片也有标注的目标框的信息。
这时的锚框,就相当于桥梁。
这时需要做的,就是将8400个锚框,和图片上所有的目标框进行关联,挑选出正样本锚框。
而相应的,正样本锚框所对应的位置,就可以将正样本预测框,挑选出来。

这里采用的关联方式,就是标签分配。

标签分配

当有了8400个Anchor锚框后,这里的每一个锚框,都对应85*8400特征向量中的预测框信息。
不过需要知道,这些预测框只有少部分是正样本,绝大多数是负样本。
需要利用锚框和实际目标框的关系,挑选出一部分适合的正样本锚框。

如何挑选正样本锚框,涉及到两个关键点:初步筛选、SimOTA

初步筛选

指出了yolov3里的问题,仅为每个对象选择一个正样本(中心位置),同时忽略其他高质量预测框,但是这些高质量预测框是有助于网络收敛的。
Multi positives:将中心3×3区域指定为正(落在这个区域所有的预测框),在FCOS中也称为“中心采样”

初步筛选的方式主要有两种:根据中心点来判断、根据目标框来判断
根据中心点来判断:寻找anchor_box中心点,落在groundtruth_boxes矩形范围的所有anchors。groundtruth的矩形框范围确定了,再根据范围去选择适合的锚框。
根据目标框来判断:以groundtruth中心点为基准,设置边长为5的正方形,挑选在正方形内的所有锚框。groundtruth正方形范围确定了,再根据范围去挑选锚框。

经过上面两种挑选的方式,就完成初步筛选了,挑选出一部分候选的anchor,进入下一步的精细化筛选。

精细化筛选 SimOTA

主要分为四个阶段:
a.初筛正样本信息提取
b.Loss函数计算
c.cost成本计算
d.SimOTA求解

SimOTA

label assignment 标签分配四个关键
1). loss/quality aware,
2). center prior,
3). dynamic number of positive anchors for each ground-truth (abbreviated as dynamic top-k),
4). global view.
满足这四个条件就会有比较好的 label assignment

流程如下:
设置候选框数量
通过cost挑选候选框
过滤共用的候选框
Loss计算(可以看到:检测框位置的iou_loss,Yolox中使用传统的iou_loss,和giou_loss两种,可以进行选择。而obj_loss和cls_loss,都是采用BCE_loss的方式。)

Other Backbones

除了DarkNet53之外还测试了其他不同尺寸的主干上的YOLOX

YOLOv5中改进的CSPNet
Tiny and Nano detectors
模型大小和数据扩充

Yolox-s、l、m、x系列

Yolov5s的网络结构
在这里插入图片描述
Yolox-s的网络结构
在这里插入图片描述
Yolox-s:
(1)输入端:在Mosac数据增强的基础上,增加了Mixup数据增强效果;
(2)Backbone:激活函数采用SiLU函数;
(3)Neck:激活函数采用SiLU函数;
(4)输出端:检测头改为Decoupled Head、采用anchor free、multi positives、SimOTA的方式。



官方数据集结果
在这里插入图片描述

相关文章:

yolox相关

yolox YOLOXYOLOX-DarkNet53yolov3作为baseline输入端Strong data augmentationMosaic数据增强MixUp数据增强注意 BackboneNeckPrediction层Decoupled headDecoupled Head 细节 Anchor-freeAnchor Based方式Anchor Free方式标签分配初步筛选精细化筛选 SimOTASimOTA Other Back…...

递归专题训练详解(回溯,剪枝,深度优先)

1.汉诺塔问题 在经典汉诺塔问题中,有 3 根柱子及 N 个不同大小的穿孔圆盘,盘子可以滑入任意一根柱子。一开始,所有盘子自上而下按升序依次套在第一根柱子上(即每一个盘子只能放在更大的盘子上面)。移动圆盘时受到以下限制: (1) 每次只能移动…...

JavaScript系列从入门到精通系列第七篇:JavaScrip当中的运算符,主要涉及JavaScript当中的六大数据类型的四则运算

文章目录 前言 一:算数运算符 1:Number类型的四则运算 2:其他数据类型的四则运算 (一):加法运算 (二):减法运算 3:乘法运算 4:除法运算 5:取模运算 前言 运算符也叫操作符。…...

计算机网络 实验二 交换机的基本配置

实验二 交换机的基本配置 实验目的 • 掌握交换机的配置方式及切换命令; • 掌握交换机端口的基本配置; • 掌握交换机mac地址的查看与管理方法。 实验设备 以太网交换机一台服务器一台PC机五台配置电缆、网线若干 网络拓扑及IP地址分配 给计算…...

Tor网络的全面解析

一、Tor网络概述 Tor网络,即“洋葱路由器”(The Onion Router),是一种用于保护用户隐私、避免网络监控的开源软件,可以实现匿名访问互联网。 Tor网络通过多重加密和随机转发,将用户的流量从多个节点中进行…...

数据集笔记:2015上海地铁一卡通数据

数据地址:上海地铁数据_免费高速下载|百度网盘-分享无限制 (baidu.com) 数据介绍 上海2015年几天的地铁一卡通出入站信息 卡号、交易日期、交易时间、公交线路/地铁站点中文名称、行业名称(公交、地铁、出租、轮渡、PR停车场)、交易金额、交易性质(非优惠、优惠、…...

【小沐学C++】C++ 基于Premake构建工程项目(Windows)

文章目录 1、简介2、下载和安装2.1 下载2.3 快速入门 3、使用3.1 支持的工程文件Project Files3.2 构建设置Build Settings3.3 链接Linking3.4 配置Configurations3.5 平台Platforms3.6 过滤Filters3.7 预设值Tokens 4、测试4.1 测试1:入门例子4.2 测试2&#xff1a…...

Linux shell编程学习笔记2:我是谁 | who am i ?

〇、更新记录 20230926 补充例子2 一、前言 由于Linux系统的shell有许多种:sh、bash、cshell、tcsh、zsh……这些shell以sh为基础对象,在保持兼容性时又各有有创建,形成自己的功能特点,要想让我们编写的shell代码正确、可靠运行…...

移动端和PC端对比【组件库+调试vconsole +单位postcss-pxtorem+构建vite/webpack+可视化echarts/antv】

目录 组件库 移动端 vue vant PC端 react antd vue element 调试:vconsole vs dev tools中的控制台(Console) vconsole:在真机上调试 postcss-pxtorem:移动端不同的像素密度 构建工具 webpack 原理 Ba…...

maven多模块依赖包程序包xxx不存在

背景 rpc-common 被 rpc-server、rpc-client依赖 项目地址 https://github.com/pjmike/springboot-rpc-demo mvn clean install 打包时报错 报错信息 程序包xxxx不存在 找不到符号 原因分析 原因还不清楚&#xff0c;网友们帮解答一下 解决 主pom.xml 添加 <packaging…...

iOS17.0.2更新修复iPhone 15系列机型数据迁移问题,附新机快速数据迁移办法!

iPhone 15 系列机型已于今日正式发售&#xff0c;为解决iPhone15这些机型出现的数据迁移问题&#xff0c;苹果紧急发布了 iOS 17.0.2 更新&#xff0c;内部版本号为 21A350。 需要注意的是&#xff0c; iOS 17.0.2 更新仅适用于 iPhone 15、iPhone 15 Plus、iPhone 15 Pro 和 …...

面试题库(八):docker和linux

docker docker的原理?dockerfile里面用过什么命令?用过docker?dockerfile写过吗,常用命令,说下分层原理docker 部署有什么好处?docker 的底层原理是什么?namespace 和 cgroups,一个隔离环境,一个控制资源配额。那隔离环境主要隔离什么环境?docker镜像和容器有什么区别…...

深入理解传输层协议:TCP与UDP的比较与应用

目录 前言什么是TCP/UDPTCP/UDP应用TCP和UDP的对比总结 前言 传输层是TCP/IP协议栈中的第四层&#xff0c;它为应用程序提供服务&#xff0c;定义了主机应用程序之间端到端的连通性。在本文章&#xff0c;我们将深入探讨传输层协议&#xff0c;特别是TCP和UDP协议的原理和区别…...

Python-表白小程序练习

测试代码 在结果导向的今天&#xff0c;切勿眼高于顶&#xff0c;不论用任何方法能转换、拿出实际成果东西才是关键&#xff0c;即使一个制作很简易的程序&#xff0c;你想将其最终生成可运行的版本也是需要下一番功夫的。不要努力成为一个嘴炮成功者,要努力成为一个有价值的人…...

浅谈ChatGPT附免费体验地址

首先&#xff0c;让我来介绍一下ChatGPT是什么。ChatGPT是由OpenAI开发的大型语言模型&#xff0c;它代表着自然语言处理领域的最新进展。这个模型是通过大量的数据和先进的深度学习技术训练而成&#xff0c;具备了强大的语言理解和生成能力。 那么&#xff0c;ChatGPT能做些什…...

队列的使用以及模拟实现(C++版本)

&#x1f388;个人主页:&#x1f388; :✨✨✨初阶牛✨✨✨ &#x1f43b;强烈推荐优质专栏: &#x1f354;&#x1f35f;&#x1f32f;C的世界(持续更新中) &#x1f43b;推荐专栏1: &#x1f354;&#x1f35f;&#x1f32f;C语言初阶 &#x1f43b;推荐专栏2: &#x1f354;…...

RV1126笔记四十一:RV1126移植LIVE555

若该文为原创文章,转载请注明原文出处。 RV1126的SDK有提供了一个librtsp.a封装好的RTSP推流库,但不开源,还有个确定延时长,所以想自己写一个RTSP的推流,但不想太麻烦,所以使用Live555。 记录下移植过程和测试结果。 live555需要用到的包有 openssl 和live555 一、 编…...

stable diffusion模型评价框架

GhostReview:全球第一套AI绘画ckpt评测框架代码 - 知乎大家好&#xff0c;我是_GhostInShell_&#xff0c;是全球AI绘画模型网站Civitai的All Time Highest Rated (全球历史最高评价) 第二名的GhostMix的作者。在上一篇文章&#xff0c;我主要探讨自己关于ckpt的发展方向的观点…...

电脑开机慢问题的简单处理

电脑用久了&#xff0c;开机时间要10-20分钟特别慢&#xff0c;一下介绍两种简单有效处理方式&#xff0c;这两种方式经测试不会影响原系统软件的使用&#xff1a; 方式一&#xff1a;禁用非必要启动项【效果不是很明显】 利用360里面的优化加速禁用启动项【禁用启动项还有其…...

SpringMVC-Rest风格

一、简介 REST&#xff08;Representational State Transfer&#xff09;&#xff0c;表现形式状态转换,它是一种软件架构风格 当我们想表示一个网络资源的时候&#xff0c;可以使用两种方式: 传统风格资源描述形式 http://localhost/user/getById?id1 查询id为1的用户信息…...

WebGL实现透明物体(α混合)

目录 α混合 如何实现α混合 1. 开启混合功能&#xff1a; 2. 指定混合函数 混合函数 gl.blendFunc&#xff08;&#xff09;函数规范 可以指定给src_factor和dst_factor的常量 混合后颜色的计算公式 加法混合 半透明的三角形&#xff08;LookAtBlendedTriangl…...

RecycleView刷新功能

RecycleView刷新某一个Item&#xff0c;或这某一个Item中某一个View。 这样的需求&#xff0c;在实际的开发中是很普遍的。 在数据变化后需要刷新列表。 刷新列表有三种方式&#xff1a; 前两种大家应该很熟&#xff0c;第三中会有点陌生。 那么这三种方式&#xff0c;有什…...

目标检测如何演变:从区域提议和 Haar 级联到零样本技术

目录 一、说明 二、目标检测路线图 2.1 路线图&#xff08;一般&#xff09; 2.2 路线图&#xff08;更传统的方法&#xff09; 2.3 路线图&#xff08;深度学习方法&#xff09; 2.4 对象检测指标的改进 三、传统检测方法 3.1 维奥拉-琼斯探测器 (2001) 3.2 HOG探测器…...

聊一聊国内大模型公司,大模型面试心得、经验、感受

有着过硬的技术却无处可用是不是很苦恼呢&#xff0c;大家在面试时是不是也积累了一些经验呢&#xff0c;本文详细总结了大佬在大模型面试时的一些经验及感悟&#xff0c;希望对大家面试找工作有所帮助。 2023年&#xff0c;大模型突然国内火了起来&#xff0c;笔者就面了一些…...

【分布式微服务】feign 异步调用获取不到ServletRequestAttributes

公司调用接口的时候使用feign,但是服务之间还是使用了鉴权,需要通过RequestInterceptor 去传递uuid 概念 OpenFeign是一个声明式的Web服务客户端,它使得编写HTTP客户端变得更简单。在使用OpenFeign进行异步调用时,你可以通过配置来实现。但是,如果你在配置或调用过程中遇…...

c#编程里面最复杂的技术问题有哪些

C#编程中最复杂的技术问题通常涉及高级主题和复杂的应用场景。以下是一些可能被认为是C#编程中最复杂的技术问题&#xff1a; 1. **多线程和并发编程&#xff1a;** 处理多线程和并发问题涉及到锁定、线程同步、死锁避免、线程安全性和性能优化等方面的知识。编写高效且线程安…...

github代码提交过程详细介绍

1、下载github上面的代码 &#xff08;1&#xff09;在github网站上&#xff0c;找到想要下载的代码仓库界面&#xff0c;点击Code选项就可以看到仓库的git下载地址&#xff1b; &#xff08;2&#xff09;使用命令下载&#xff1a;git clone 地址&#xff1b; 2、配置本地git…...

Linux -- 使用多张gpu卡进行深度学习任务(以tensorflow为例)

在linux系统上进行多gpu卡的深度学习任务 确保已安装最新的 TensorFlow GPU 版本。 import tensorflow as tf print("Num GPUs Available: ", len(tf.config.list_physical_devices(GPU)))1、确保你已经正确安装了tensorflow和相关的GPU驱动&#xff0c;这里可以通…...

Mendix中的依赖管理:npm和Maven的应用

序言 在传统java开发项目中&#xff0c;我们可以利用maven来管理jar包依赖&#xff0c;但在mendix项目开发Custom Java Action时&#xff0c;由于目录结构有一些差异&#xff0c;我们需要自行配置。同样的&#xff0c;在mendix项目开发Custom JavaScript Action时&#xff0c;…...

自定义hooks之useLastState、useSafeState

自定义hooks之useLastState、useSafeState useLastState 在某些情况下&#xff0c;可能需要知道状态的历史值&#xff0c;例如&#xff0c;希望在状态变化时执行某些操作&#xff0c;但又需要访问上一个状态的值&#xff0c;以便进行比较或其他操作。自定义 React Hook 可以帮…...

php创建网站/企业整站优化

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录前言一、Dart中函数定义内置函数自定义函数二、函数传参可选参数默认参数命名参数函数作为参数进行传递三、特别函数箭头函数自执行函数函数闭包总结前言 本篇是笔者…...

云南网站排名/百度知道官网手机版

介绍&#xff1a; 在Spark 1.2以前&#xff0c;默认的shuffle计算引擎是HashShuffleManager。HashShuffleManager采用的hashShuffle机制很大的问题就是产生大量的中间磁盘文件&#xff0c;产生的大量磁盘IO操作会有性能问题。 在Spark 1.2以后的版本中&#xff0c;默认的Shuf…...

诸城做网站收费/友情链接的网站有哪些

经过这几天的工作&#xff0c;让我进一步的了解到CSS3的强大&#xff0c;原本许多需要js才能实现的动画效果&#xff0c;现在通过CSS3就能轻易实现了&#xff0c;但是CSS3也有自身的不足&#xff0c;例如说在动画出发触发上就没有js灵活&#xff0c;因此我就开始考虑将CSS3与Js…...

目字形布局结构的网站/个人购买链接

拿到了自己阿里云服务器的日志&#xff0c;对其需要进行处理。class Read_Rizhi:def __init__(self,filename):self.filenamefilenamedef open_file(self):try:f open(self.filename, r, encodingutf-8)resuly {code: 1, result: f}except Exception as e:resuly {code: 0, …...

冠县网站建设电话/高端大气网站建设

利用jenkins的远程构建功能&#xff0c;我们可以使用任何脚本&#xff0c;甚至定制一个Web页来控制Job的执行&#xff0c;但是远程构建你如果直接使用的话&#xff0c;老是需要登录才能执行&#xff0c;如何避免登录&#xff1f;稍微折腾了一下&#xff0c;调通了。 1、点击右上…...

临沂企业自助建站/外贸建站

图解TCP数据报结构以及三次握手&#xff08;非常详细&#xff09; TCP&#xff08;Transmission Control Protocol&#xff0c;传输控制协议&#xff09;是一种面向连接的、可靠的、基于字节流的通信协议&#xff0c;数据在传输前要建立连接&#xff0c;传输完毕后还要断开连接…...