yolox代码梳理

Posted 东东就是我

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了yolox代码梳理相关的知识,希望对你有一定的参考价值。

1.注册类

刚开始就给我看蒙了,明明读取的配置文件是exp/default/yolox_s.py,但是这个文件不存在啊,相似的文件是exps/default/yolox_s.py。这个文件是存在的但是路径和配置不对啊,我一度以为是写错了,毕竟exp和exps差距不大。直到我看到init.py的内容

首先我们在train.py中配置了yolox_s

然后在看



这个函数是,首先替换- _ 然后组合一起就是module_name=yolox.exp.default.yolox_s
然后导入这个文件的exp()对象。但是我们去这个路径下没有发现这个文件

只有一个init.py 没有yolox_s 但是他会先去init.py 执行,那么init.py就是下边这个

#!/usr/bin/env python3
# -*- coding:utf-8 -*-
# Copyright (c) Megvii Inc. All rights reserved.

# This file is used for package installation and find default exp file

import importlib
import sys
from pathlib import Path

_EXP_PATH = Path(__file__).resolve().parent.parent.parent.parent / "exps" / "default"  # 正确的路径

if _EXP_PATH.is_dir():  # 如果这个路径存在
    # This is true only for in-place installation (pip install -e, setup.py develop),
    # where setup(package_dir=) does not work: https://github.com/pypa/setuptools/issues/230

    class _ExpFinder(importlib.abc.MetaPathFinder): 
        
        def find_spec(self, name, path, target=None):  #然后自动执行find_spec方法  name就是传进来的module_name=yolox.exp.default.yolox_s
            if not name.startswith("yolox.exp.default"):
                return 
            project_name = name.split(".")[-1] + ".py"   #最后一个就是yolox_s.py
            target_file = _EXP_PATH / project_name  #路径拼接就是 exps/default/yolox_s.py
            if not target_file.is_file():
                return
            return importlib.util.spec_from_file_location(name, target_file)   然后返回yolox_s.py模块

    sys.meta_path.append(_ExpFinder())  # 就会把这个_expfinder加入字典中

拿到了yolox_s.py模块,就只可以生成exp()对象

2.后面的代码实在没啥亮点,全是按部就班,没意思

以上是关于yolox代码梳理的主要内容,如果未能解决你的问题,请参考以下文章

目标检测从YOLOv1到YOLOX(理论梳理)

[课程][原创]yolox检测封装成类调用几句代码完成目标检测任务

YOLOX训练自己的数据集(超详细)

yolox训练流程解析

目标检测YOLOX训练王者荣耀数据集

yolox训练流程解析