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月前
|
监控 算法 API
电商API接口对接实录:淘宝优惠券接口对接处理促销监控系统
在电商开发中,淘宝详情页的“券后价计算”是极易出错的环节。本文作者结合实战经验,分享了因忽略满减券门槛、有效期、适用范围等导致的踩坑经历,并提供了完整的解决方案,包括淘宝API签名生成、券后价计算逻辑、常见坑点及优化建议,助力开发者精准实现券后价功能,避免业务损失。
|
7月前
|
数据采集 人工智能 搜索推荐
从AI助手到个性化数字分身:WeClone & Second Me打造本地化、私有化的个性化AI代理系统
从AI助手到个性化数字分身:WeClone & Second Me打造本地化、私有化的个性化AI代理系统
546 23
|
9月前
|
机器学习/深度学习 编解码 人工智能
SANA-Sprint:基于连续时间一致性蒸馏的单步扩散模型,0.1秒即可生成图像
Nvidia 提出的 SANA-Sprint 是一种混合蒸馏框架,结合连续时间一致性模型(sCM)与潜在对抗扩散蒸馏(LADD),实现快速高质量文本到图像生成。它支持 1-4 步推理,单步生成 FID 7.59、GenEval 0.74,H100 GPU 上 0.1 秒生成 1024×1024 图像,比 FLUX-Schnell 快 10 倍。通过无训练一致性变换和稳定训练技术,SANA-Sprint 克服传统方法局限,推动实时生成应用。
248 4
SANA-Sprint:基于连续时间一致性蒸馏的单步扩散模型,0.1秒即可生成图像
|
10月前
|
机器学习/深度学习 人工智能 编解码
R1-Onevision:开源多模态推理之王!复杂视觉难题一键解析,超越GPT-4V
R1-Onevision 是一款开源的多模态视觉推理模型,基于 Qwen2.5-VL 微调,专注于复杂视觉推理任务。它通过整合视觉和文本数据,能够在数学、科学、深度图像理解和逻辑推理等领域表现出色,并在多项基准测试中超越了 Qwen2.5-VL-7B 和 GPT-4V 等模型。
375 0
R1-Onevision:开源多模态推理之王!复杂视觉难题一键解析,超越GPT-4V
|
存储 机器学习/深度学习 人工智能
【AI系统】完全分片数据并行 FSDP
本文深入探讨了AI框架中针对权重数据、优化器数据和梯度数据的分布式并行实现,特别是在PyTorch框架下的具体方案。文章首先回顾了通用数据并行和分布式数据并行的概念,重点讨论了同步与异步数据并行的差异。接着,文章详细介绍了如何在PyTorch中实现弹性数据并行,特别是完全分片数据并行(FSDP)的机制,包括其如何通过分片模型状态和剩余状态来减少内存消耗,提高训练效率。此外,文章还探讨了混合精度训练、损失缩放和内存消耗估算等关键技术,为理解和实施高效的分布式训练提供了全面的指导。
522 9
【AI系统】完全分片数据并行 FSDP
|
前端开发 Android开发 iOS开发
探索Android与iOS的跨平台开发策略
在移动应用开发的多元化时代,跨平台开发已成为开发者追求效率和广泛覆盖的重要手段。本文深入探讨了Android与iOS两大主流平台下的跨平台开发策略,分析了各自的优势与挑战,并通过实际案例展示了如何有效实施跨平台解决方案,以期为开发者提供有价值的参考和启示。
|
负载均衡 监控 算法
每个程序员都应该知道的 6 种负载均衡算法
每个程序员都应该知道的 6 种负载均衡算法
1491 2
|
机器学习/深度学习
一些关于Yolov5的改进点及实验结果(新增YOLOv5网络结构图)
一些关于Yolov5的改进点及实验结果(新增YOLOv5网络结构图)
一些关于Yolov5的改进点及实验结果(新增YOLOv5网络结构图)
|
Kubernetes Java API
软件版本号解读(语义化SemVer、日历化CalVer及标识符)
软件版本号解读(语义化SemVer、日历化CalVer及标识符)
411 3
软件版本号解读(语义化SemVer、日历化CalVer及标识符)
|
编解码 人工智能 自动驾驶
YOLOX详细解读(一)论文解读
YOLOX详细解读(一)论文解读
1058 0