Yolox的论文及代码
Yolox论文名:《YOLOX: Exceeding YOLO Series in 2021》
Yolox论文地址:https://arxiv.org/abs/2107.08430
Yolox代码地址:https://github.com/Megvii-BaseDetection/YOLOX
源码的文件结构和注释(加粗部分是重点文件,应详细分析):
YOLOX-main:. │ .gitignore │ .readthedocs.yaml │ hubconf.py │ LICENSE │ README.md │ requirements.txt │ setup.cfg │ setup.py │ yolox_s.pth │ │ ├─assets :里面图片是doc或者demo要用的,这个文件不用管它, │ ├─build :应该是用来部署或者封装的吧?一般不用动这个文件夹,里面的文件我就不展开了。 │ ├─datasets :自己的训练集放在这个文件夹下面 │ ├─demo :demo文件,一般不要动他。里面的文件我就不展开了。 │ ├─dist │ yolox-0.2.0-py3.7-win-amd64.egg │ yolox-0.2.0-py3.8-win-amd64.egg │ ├─docs │ │ .gitignore │ │ conf.py │ │ freeze_module.md :指导用户在YOLOX中冻结模块。 │ │ index.rst │ │ Makefile │ │ manipulate_training_image_size.md :介绍了如何在对自己的数据进行训练时控制图像大小。 │ │ model_zoo.md :介绍了各种标准模型。 │ │ quick_run.md :介绍了代码的使用操作 │ │ requirements-doc .txt │ │ train_custom_data.md :介绍如何使用YOLOX训练您自己的自定义数据。我们以VOC数据集上微调YOLOX-S模型为例,给出了更清晰的指导。 │ │ updates_note.md :讲了对代码的更新。比如:支持图像缓存以加快培训速度,这需要较大的系统RAM。消除对apex的依赖,支持torch放大器培训。优化预处理以加快训练速度用新的HSV aug替换旧的扭曲增强,以实现更快的训练和更好的性能。 │ │ │ ├─demo │ │ megengine_cpp_readme.md │ │ megengine_py_readme.md │ │ ncnn_android_readme.md │ │ ncnn_cpp_readme.md │ │ onnx_readme.md │ │ openvino_cpp_readme.md │ │ openvino_py_readme.md │ │ trt_cpp_readme.md │ │ trt_py_readme.md │ │ │ └─_static │ └─css │ custom.css │ ├─exps │ │ │ ├─default :各种model的配置文件 │ │ │ yolov3.py │ │ │ yolox_l.py │ │ │ yolox_m.py │ │ │ yolox_nano.py │ │ │ yolox_s.py │ │ │ yolox_tiny.py │ │ │ yolox_x.py │ │ │ __init__.py │ │ │ │ │ └─__pycache__ │ │ yolox_s.cpython-38.pyc │ │ │ └─example │ ├─custom │ │ nano.py │ │ yolox_s.py │ │ │ └─yolox_voc │ yolox_voc_s.py │ ├─tests │ │ __init__.py │ │ │ └─utils │ test_model_utils.py │ ├─tools │ demo.py │ eval.py │ export_onnx.py │ export_torchscript.py │ train.py │ trt.py │ __init__.py │ ├─yolox │ │ __init__.py │ │ │ ├─core :一些加载文件 │ │ launch.py │ │ trainer.py │ │ __init__.py │ │ │ ├─data │ │ │ dataloading.py :该模块进行数据加载,获取数据集的文件 │ │ │ data_augment.py :模块进行相关数据处理,包含hsv等一些数据增强方法 │ │ │ data_prefetcher.py :加快pytorch的数据加载 │ │ │ samplers.py :该模块进行抽样,批取样器,将从另一个取样器生成(马赛克,索引)元组的小批 │ │ │ __init__.py │ │ │ │ │ └─datasets :数据处理 │ │ coco.py :coco数据集的初始化、进行数据读取 │ │ coco_classes.py :coco数据集的类别 │ │ datasets_wrapper.py :将处理后的数据集,进行整理和封装 │ │ mosaicdetection.py :进行马赛克操作,实现数据增强 │ │ voc.py :voc数据集的初始化、进行数据读取 │ │ voc_classes.py :voc数据集的类别 │ │ __init__.py │ │ │ ├─evaluators :测评 │ │ coco_evaluator.py │ │ voc_eval.py │ │ voc_evaluator.py │ │ __init__.py │ │ │ ├─exp :./exps/default中的模型配置使用这些组件组成不同的model │ │ │ base_exp.py :任何experiment的基类 │ │ │ build.py :通过名字或地址构建experiment │ │ │ yolox_base.py:Exp类,./exps/default中的模型配置基于这个类来构建完整的model │ │ │ __init__.py │ │ │ │ │ └─default │ │ __init__.py │ │ │ ├─layers │ │ │ fast_coco_eval_api.py :改进的COCO PythonAPI │ │ │ __init__.py │ │ │ │ │ └─csrc │ │ │ vision.cpp │ │ │ │ │ └─cocoeval │ │ cocoeval.cpp │ │ cocoeval.h │ │ │ ├─models :用来定义yolox的baseline、neck和head。 │ │ build.py :通过名字或地址构建yolox模型 │ │ darknet.py :构建darknet的dark2到dark5 │ │ losses.py :iou的loss函数 │ │ network_blocks.py :封装SiLU损失函数和各种最基础的layers │ │ yolox.py :由create_yolov3_modules函数定义的yolox模块,返回三个YOLO层的损失值,并在测试期间返回检测结果 │ │ yolo_fpn.py :封装的FPN,默认用darknet53作为baseline │ │ yolo_head.py :预测层,本模块有三个操作:decoupled head,Multi positives,SimOTA │ │ yolo_pafpn.py :封装的PAFPN,这是另一个主干网络,backbone-YOLOPAFPN。PA指的是PANet的结构,FPN指的是特征金字塔结构。 │ │ __init__.py │ │ │ ├─tools │ │ __init__.py │ │ │ └─utils :工具代码 │ allreduce_norm.py │ boxes.py │ checkpoint.py │ compat.py │ demo_utils.py │ dist.py │ ema.py │ logger.py │ lr_scheduler.py │ metric.py │ model_utils.py │ setup_env.py │ visualize.py │ __init__.py │ ├─yolox.egg-info │ dependency_links.txt │ PKG-INFO │ requires.txt │ SOURCES.txt │ top_level.txt │ └─YOLOX_outputs :模型的results保存在这里
|