windows10搭建YOLOx环境 训练+测试+评估


前言

YOLOX踩坑记录,基于VOC数据集,本文将详细介绍训练+测试+模型评估的过程和个人遇到的所有报错


1、必要环境

Windows10+python3.7+CUDA10.1+CUDNN7.6.5

2、安装

2.1 创建python3.7虚拟环境

  1. conda create -n yolo_x python=3.7
  2. activate yolo_x
    在这里插入图片描述

2.2 下载pytorch (pytorch版本>=1.7)

conda install pytorch==1.7.0 torchvision==0.8.0 torchaudio==0.7.0 cudatoolkit=10.1 -c pytorch

测试是否安装成功

  1. python
  2. import torch
  3. print(torch.cuda.is_available())
    在这里插入图片描述
    出现如上界面则证明安装成功

2.3 配置YOLOx环境

  1. 进入github官网下载源码:yolox源码地址
  2. 安装依赖包:pip install -r requirements.txt
  3. 安装yolox: python setup.py install
  4. 到官网下载apex,解压到项目文件夹内 地址:apex源码
  5. cd到apex文件夹内 cd apex-maste
  6. 安装apex python setup.py install
  7. 安装pycocotools pip install pycocotools
  8. 下载预训练模型 地址:模型地址
    在这里插入图片描述

2.4 测试效果

1 测试图片

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

效果:
在这里插入图片描述
2 测试视频

python tools/demo.py video -f exps/default/yolox_s.py -c ./yolox_s.pth.tar --path ./cut2.mkv --conf 0.3 --nms 0.65 --tsize 640 --save_result --device gpu

效果:
在这里插入图片描述

注意:图片和视频路径要放在当前文件夹下!!!!

3、训练自己的VOC数据集

voc数据集的制作参考我前面的博客 地址:windows10搭建PaddleDetection2.0

1 将VOCdevkit目录拷贝到datasets/VOC目录下:

ln -s D:/data/firesmoke/VOCdevkit/VOC2007/11  ./datasets/VOC

D:/data/firesmoke/VOCdevkit/VOC2007/11是VOCdevkit文件所在的路径
在这里插入图片描述
./datasets/VOC是要复制到的路径
在这里插入图片描述
2 修改 yolox/data/dataloading.py 如下:
在这里插入图片描述
在YOLO-main路径下执行python setup.py install 更新yolox

3 修改exps/example/yolox_voc/yolox_voc_s.py如下:
在这里插入图片描述
如下修改num_classes改为自己的类别数量
在这里插入图片描述

4 修改yolox/data/datasets/voc_classes.py为自己的类别
在这里插入图片描述
执行python setup.py install 更新yolox

5 修改yolox/evaluators/voc_eval.py 如下
在这里插入图片描述
在18行filename前加上Annotations文件夹的路径
执行python setup.py install 更新yolox

6 运行如下代码开始训练

python tools/train.py -f exps/example/yolox_voc/yolox_voc_s.py -d 1 -b 4 --fp16 -o -c yolox_s.pth.tar
-d 使用显卡个数
-b 批次大小
–fp16 是否开启半精度训练
-c 加载预训练模型

如果出现CUDA out of memory内存溢出,将–fp16 -o去掉,代码改为如下

python tools/train.py -f exps/example/yolox_voc/yolox_voc_s.py -d 1 -b 4 -c yolox_s.pth.tar

效果如下
在这里插入图片描述

7 继续上一批次恢复训练的话,改成如下形式
在这里插入图片描述
将—resume改为True,-c后面跟接要继续训练的权重文件
代码如下:

python tools/train.py -f exps/example/yolox_voc/yolox_voc_s.py -d 1 -b 4 -c YOLOX_outputs/yolox_voc_s/latest_ckpt.pth.tar

4、测试

1 测试前修改demo.py如下
在这里插入图片描述
2 修改demo.py 85行左右的cls_name为VOC_CLASSES,还有265行左右的第三个参数
在这里插入图片描述
在这里插入图片描述
3 测试

python tools/demo.py video -f exps/example/yolox_voc/yolox_voc_s.py -c YOLOX_outputs/yolox_voc_s/latest_ckpt.pth.tar --path ./bb2.mp4 --conf 0.3 --nms 0.65 --tsize 640 --save_result --device gpu

测试效果
在这里插入图片描述

5、模型评估:

1 输入如下代码进行模型评估

python tools/eval.py -f exps/example/yolox_voc/yolox_voc_s.py -c YOLOX_outputs/yolox_voc_s/latest_ckpt.pth.tar -d 1 -b 4 --conf 0.001 --fp16 --fuse
--fuse 融合Conv层与BN层(减少运算量,加速推理的一个东西)

效果:(只训练了一批次map怪低的)
在这里插入图片描述

6、根据README.md流程走可能会出现的报错

6.1 编码报错 UnicodeDecodeError:gbk xxxxx

解决方案:
在这里插入图片描述
修改50行 加上encoding=”utf-8”

6.2 根据readme文档安装apex时报错 Removed build tracker:xxxxxxx

在这里插入图片描述
解决方案:
在这里插入图片描述
将以上代码修改成如下,记得一定要cd到apex-master文件夹内执行

python setup.py install

6.3 doesn’t contains class named ‘Exp’

解决方案:

  1. 拿yolox_s举例:
    将 -n yolox-s 改为 -f exps/default/yolox_s.py

  2. 如果是在pycharm里面运行代码,将相对路径改为绝对路径,如下所示:
    在这里插入图片描述

6.4 File ended prematurely 文件过早结束

这该死的报错耗了我大半个小时
解决方案:


在这里插入图片描述
改为
在这里插入图片描述
将–path 视频绝对路径改为相对路径!!!!!!!!!!!

6.5 测试时目标框显示的类别不对

解决方案:
参考 4、测试 的1,2步 运行python setup.py install更新yolox
在这里插入图片描述

6.6 测试COCO模型时IndexError: tuple index out of range

解决方案:
在tools\demo.py中把VOC_CLASSES 换回 COCO_CLASSES,修改85,256行左右的代码~
在这里插入图片描述

6.7 加载预训练模型的时候 RuntimeError: Error(s) in loading state_dict for YOLOX

解决方案:
将train文件中44行左右—resume 改成False

6.8 训练了10次进行模型评估的时候报错[Errno 2] No such file or directory: ‘xxx.xml’

解决方案:
在这里插入图片描述

总结

代码跑通了,开心

如有问题,欢迎评论区交流!
在这里插入图片描述
学习交流群:995760755

版权声明:本文为CSDN博主「[空--白]」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/Dora_blank/article/details/119087239

[空--白]

我还没有学会写个人说明!

暂无评论

发表评论

相关推荐

yolov5训练数据集划分

yolov5训练数据集划分 按照默认8:1:1划分训练集,测试集,验证集。 txt文件出现在imageset文件夹。 import os import randomtrainval_pe

Pytorch—万字入门SSD物体检测

前言 由于初入物体检测领域,我在学习SSD模型的时候遇到了很多的困难。一部分困难在于相关概念不清楚,专业词汇不知其意,相关文章不知所云;另一部分困难在于网上大部分文章要么只是简要介绍了SS

目标检测-锚框概念和代码实现

前言 经历过图像分类后,进一步的就是更复杂的目标检测了,从这一章开始,将会不断记录图像目标检测中的学习经历,其中大多数思路以及代码来源,来自于李沐的动手学深度学习课程&#x