YOLOX-COCO训练教程+权重使用

YOLOX-COCO训练教程+权重使用

0. 配置好你的YOLOX环境

如果不知道如何在windows下配置,请查看我的上一篇文章

1. 准备好你的数据

  • 根据YOLOX官方引导,已经提供了miniCOCO下载链接,存储在GoogleDrive上的。下载成功后解压,得到树状目录如下:
─coco128
	 ├─annotations
	 ├─train2017
     └─val2017
  • 将此文件夹直接复制粘贴进你的yolox目录下的datasets。读取annotations下instances_train2017.json文件,查找到categories字段,根据id判断知道共有71类。读取json并格式化输出脚本如下:
import json

f=open(r"D:\Coding\AnacondaProject\YOLOX-main-1\datasets\coco128\annotations\instances_train2017.json")# 替换成你自己的路径
json_dict=json.load(f)
print(type(json_dict))

js = json.dumps(json_dict, sort_keys=True, indent=4, separators=(',', ':'))
print(js)

2. 开始训练

官方引导的训练脚本是基于VOC数据集的,我们这里使用的是COCO。

python tools/train.py -f exps/example/custom/yolox_s.py -d 1 -b 8 --fp16 -o -c premodel/yolox_s.pth
  • 注意,我们这里是直接使用的exps/example/custom/yolox_s.py这个脚本,请不要根据其他教程去改动:exps/default目录下的脚本,父类也不要改动。

    如果你需要定制自己的脚本,请在exps/example/custom/目录下新建你的脚本文件,并模仿其他脚本一样,继承MyExp父类,增添你的代码,或重载代码。

    custom/yolox_s.py脚本代码如下:

class Exp(MyExp):
    def __init__(self):
        super(Exp, self).__init__()
        self.depth = 0.33
        self.width = 0.50
        self.exp_name = os.path.split(os.path.realpath(__file__))[1].split(".")[0]

        # Define yourself dataset path
        self.data_dir = "datasets/coco128"
        self.train_ann = "instances_train2017.json"
        self.val_ann = "instances_val2017.json"

        # 改成coco128的类别
        self.num_classes = 71

        # 最大epoch数默认300
        self.max_epoch = 300
        self.data_num_workers = 4
        self.eval_interval = 1

​ 可以看到此脚本已经示范了一次如何简单定制自己的模型,你可以根据自己的需求去改写你的数据集路径,但是目录结构要保证不变,annotations目录名也要保证不变,具体目录结构应该怎么建,之前coco128解压之后的目录结构是最好的说明。

​ 在这个脚本中,你还需要重载父类属性self.num_classes = 71,因为父类里面self.num_classes = 80。而coco128只有71类。

  • premodel/yolox_s.pth是我自己在yolox目录下创建的,yolox_s.pth是在github上下载的预训练模型,由于这个预训练模型是80类,所以等会儿在训练的时候会出现warning。不用管这个警告,YOLOX会来处理head维数不同的问题。 在这里插入图片描述在这里插入图片描述

  • 运行脚本,等待训练
    在这里插入图片描述

  • 如果在训练时报错:‘numpy.float64’ object cannot be interpreted as an integer,去修改pycocotools里面的cocoeval.py。改源码不太合适,但是这是目前已知唯一解决办法。
    在这里插入图片描述

  • 训练完成后会将权重保存在./YOLOX_outputs/yolox_s/目录下,选择best_ckpt.pth。

3. 使用权重进行推理

  • 训练完成后,有点辣鸡??…
    在这里插入图片描述
  • 使用训练好权重的脚本进行推理
python tools/demo.py image -f exps/example/custom/yolox_s.py -c ./YOLOX_outputs/yolox_s/best_ckpt.pth --path datasets/coco128/train2017/000000000001.jpg --conf 0.3 --nms 0.65 --tsize 640 --save_result --device gpu

在这里插入图片描述
​ 结果图:什么也没训练出来的…
​ 意思是这个意思,完整的训练+权重使用应该就是这个流程
在这里插入图片描述
在这里插入图片描述

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值