YOLOX项目源码结构拆解

简介: YOLOX项目源码结构拆解本篇博文主要对YOLOX官方源码的项目结构进行拆解项目地址:https://github.com/Megvii-BaseDetection/YOLOX论文地址:https://arxiv.org/abs/2107.08430

YOLOX简介


‎YOLOX是一个anchor-free 版本的‎‎YOLO,设计更简单,但性能更好

62d9978832794f74bff23ed1e692170a.png

左侧图代表模型的速度-精度权衡

右侧图代表在移动设备上的精简版模型的尺寸-精度曲线

项目环境


#直接pip就好了
pip install -r requirements

项目结构


项目的整体代码结构就是这样子的

YOLOX-MAIN
├─assets
├─datasets
├─demo
│  ├─MegEngine
│  │  ├─cpp
│  │  └─python
│  │      └─models
│  ├─ncnn
│  │  ├─android
│  │  │  ├─app
│  │  │  │  └─src
│  │  │  │      └─main
│  │  │  │          ├─assets
│  │  │  │          ├─java
│  │  │  │          │  └─com
│  │  │  │          │      └─megvii
│  │  │  │          │          └─yoloXncnn
│  │  │  │          ├─jni
│  │  │  │          └─res
│  │  │  │              ├─layout
│  │  │  │              └─values
│  │  │  └─gradle
│  │  │      └─wrapper
│  │  └─cpp
│  ├─ONNXRuntime
│  ├─OpenVINO
│  │  ├─cpp
│  │  └─python
│  └─TensorRT
│      ├─cpp
│      └─python
├─docs
│  ├─demo
│  └─_static
│      └─css
├─exps
│  ├─default
│  └─example
│      ├─custom
│      └─yolox_voc
├─tests
│  └─utils
├─tools
└─yolox
    ├─core
    ├─data
    │  └─datasets
    ├─evaluators
    ├─exp
    │  └─default
    ├─layers
    │  └─cocoeval
    ├─models
    ├─tools
    └─utils

image.png

1. assets


image.png

这个文件夹就是存放一些项目里用到的图片的

2. datasets


image.png

这个文件夹就是存放你数据集的文件夹

我这里顺便放上COCO数据集的下载地址https://cocodataset.org

3. demo


image.png

这个文件夹是用来存放一些部署用到的文件的,里面提供了C、Python、android版本

4. doc


image.png

这个文件夹里面放了各种的md文件,md文件内容包括安装、训练、验证、模型的参数、训练尺度的选择、更新日志等

5. exps


image.png

这个文件夹里放置不同尺寸模型的配置文件,yolos\m\l\x最主要的区别就是模型深度和宽度差别

image.png

example文件夹里面也给出了一些例子,除了深度宽度以外还有数据集类别,预热参数和数据增强等信息

image.png

6. tests


image.png

这个就是用来测试模型的文件,运行后就可以显示测试结果

ead018c129444979b3d66eefb4f87ae9.png

7. tools


image.png

这文件夹里面就是一些常用的工具,包括训练、验证、模型转换等

8. yolox


image.png

8.1 core


image.png

就是一些加载用到的文件

8.2 data


image.png

里面主要是处理数据和对数据进行增强的文件

8.3 evaluators


image.png

主要是模型评估验证时用到的一些文件

8.4 exp


image.png

8.5 layers


image.png

这放了一些对COCO数据集快速验证的api文件

8.6 models


image.png

模型的主要结构代码,主要包括backbone、loss、fpn等

8.7 tools


image.png

用于安装包的一个工具文件

8.8 utils


image.png

这里面就是放一些工具文件

测试一下

介绍完结构以后我们可以通过如下指令来测试一下项目

python tools/demo.py image -f exps/default/yolox_s.py -c yolox_s.pth --path assets/dog.jpg --conf 0.25 --nms 0.45 --tsize 640 --save_result --device gpu

视频测试指令:(注意更改路径)

python tools/demo.py video -n yolox-s -c /path/to/your/yolox_s.pth --path /path/to/your/video --conf 0.25 --nms 0.45 --tsize 640 --save_result --device [cpu/gpu]

如果没问题就会在根目录下生成如下的文件夹6e914dfbd5b443e1b4abef8d36ca74c7.png

image.png

image.png

Q1:No module named yolox

A:在demo.py的from yolox.data.data_augment import ValTransform上加入如下代码,路径要改成自己的路径

import sys
sys.path.append(r'D:\Pycharm_Projects\YOLOX-main')
相关文章
|
4月前
|
机器学习/深度学习 计算机视觉
【YOLOv8改进】CoordAttention: 用于移动端的高效坐标注意力机制 (论文笔记+引入代码)
该专栏聚焦YOLO目标检测的创新改进与实战,介绍了一种新的移动网络注意力机制——坐标注意力。它将位置信息融入通道注意力,通过1D特征编码处理,捕获长距离依赖并保持位置精度。生成的注意力图能增强目标表示,适用于MobileNetV2、MobileNeXt和EfficientNet等网络,提高性能,且几乎不增加计算成本。在ImageNet分类和下游任务(目标检测、语义分割)中表现出色。YOLOv8中引入了CoordAtt模块,实现位置敏感的注意力。更多详情及配置见相关链接。
|
4月前
|
API 开发工具 数据库
OneCode2.0源码结构分析
OneCode12月10日正式更新了其V2.0版本。从OneCode的季度版本生命中,可以看到2.0版本还是一个重量级的版本,笔者在收到2.0更新后第一时间下拉了最新的代码。在参考了OneCode 的技术说明后,根据包结构来分析一下OneCode2.0的结构。
|
4月前
|
机器学习/深度学习 编解码 计算机视觉
YOLOv8改进 | 主干篇 | SwinTransformer替换Backbone(附代码 + 详细修改步骤 +原理介绍)
YOLOv8改进 | 主干篇 | SwinTransformer替换Backbone(附代码 + 详细修改步骤 +原理介绍)
755 0
|
机器学习/深度学习 编解码 算法
超详细!手把手带你轻松掌握 MMDetection 整体构建流程(一)
作为系列文章的第一篇解读,本文主要是从整体框架构建角度来解析,不会涉及到具体算法和代码,希望通过本文讲解: - MMDetection 整体构建流程和思想 - 目标检测算法核心组件划分 - 目标检测核心组件功能
887 0
超详细!手把手带你轻松掌握 MMDetection 整体构建流程(一)
|
2月前
|
存储 人工智能 NoSQL
拆解LangChain的大模型记忆方案
之前我们聊过如何使用LangChain给LLM(大模型)装上记忆,里面提到对话链ConversationChain和MessagesPlaceholder,可以简化安装记忆的流程。下文来拆解基于LangChain的大模型记忆方案。
拆解LangChain的大模型记忆方案
|
1月前
|
SQL 自然语言处理 知识图谱
预训练模型STAR问题之在任务拆解阶段,TKK框架工作的问题如何解决
预训练模型STAR问题之在任务拆解阶段,TKK框架工作的问题如何解决
|
4月前
|
计算机视觉 网络架构
【YOLOv8改进】MSBlock : 分层特征融合策略 (论文笔记+引入代码)
YOLO-MS是一个创新的实时目标检测器,通过多尺度构建块(MS-Block)和异构Kernel选择(HKS)协议提升多尺度特征表示能力。它在不依赖预训练权重和大型数据集的情况下,在MS COCO上超越了YOLO-v7和RTMDet,例如YOLO-MS XS版本(4.5M参数,8.7G FLOPs)达到了43%+的AP,比RTMDet高2%+。MS-Block利用分层特征融合和不同大小的卷积,而HKS协议根据网络深度调整Kernel大小,优化多尺度语义信息捕获。此外,YOLO-MS的模块化设计允许其作为即插即用的组件集成到其他YOLO模型中,提升它们的检测性能。
|
4月前
|
机器学习/深度学习 计算机视觉 网络架构
YOLOv8改进 | 2023主干篇 | 替换LSKNet遥感目标检测主干 (附代码+修改教程+结构讲解)
YOLOv8改进 | 2023主干篇 | 替换LSKNet遥感目标检测主干 (附代码+修改教程+结构讲解)
173 1
YOLOv8改进 | 2023主干篇 | 替换LSKNet遥感目标检测主干 (附代码+修改教程+结构讲解)
|
4月前
|
计算机视觉 网络架构
YOLOv5改进 | 2023主干篇 | 替换LSKNet遥感目标检测主干 (附代码+修改教程+结构讲解)
YOLOv5改进 | 2023主干篇 | 替换LSKNet遥感目标检测主干 (附代码+修改教程+结构讲解)
141 0
|
4月前
|
编解码 计算机视觉
YOLOv5改进 | 主干篇 | SwinTransformer替换Backbone(附代码 + 详细修改步骤 +原理介绍)
YOLOv5改进 | 主干篇 | SwinTransformer替换Backbone(附代码 + 详细修改步骤 +原理介绍)
616 0