文章目录
-
前言
-
1、必要环境
-
2、安装
-
-
2.1 创建python3.7虚拟环境
-
2.2 下载pytorch (pytorch版本>=1.7)
-
2.3 配置YOLOx环境
-
2.4 测试效果
-
3、训练自己的VOC数据集
-
4、测试
-
5、模型评估:
-
6、根据README.md流程走可能会出现的报错
-
-
6.1 编码报错 UnicodeDecodeError:gbk xxxxx
-
6.2 根据readme文档安装apex时报错 Removed build tracker:xxxxxxx
-
6.3 doesn’t contains class named ‘Exp’
-
6.4 File ended prematurely 文件过早结束
-
6.5 测试时目标框显示的类别不对
-
6.6 测试COCO模型时IndexError: tuple index out of range
-
6.7 加载预训练模型的时候 RuntimeError: Error(s) in loading state_dict for YOLOX
-
6.8 训练了10次进行模型评估的时候报错[Errno 2] No such file or directory: ‘xxx.xml’
-
-
-
总结
前言
YOLOX踩坑记录,基于VOC数据集,本文将详细介绍训练+测试+模型评估的过程和个人遇到的所有报错
1、必要环境
Windows10+python3.7+CUDA10.1+CUDNN7.6.5
2、安装
2.1 创建python3.7虚拟环境
- conda create -n yolo_x python=3.7
-
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
测试是否安装成功
- python
- import torch
-
print(torch.cuda.is_available())
出现如上界面则证明安装成功
2.3 配置YOLOx环境
-
进入github官网下载源码:
yolox源码地址
-
安装依赖包:
pip install -r requirements.txt
-
安装yolox:
python setup.py install
-
到官网下载apex,解压到项目文件夹内 地址:
apex源码
-
cd到apex文件夹内
cd apex-maste
-
安装apex
python setup.py install
-
安装pycocotools
pip install pycocotools
-
下载预训练模型 地址:
模型地址
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’
解决方案:
-
拿yolox_s举例:
将 -n yolox-s 改为 -f exps/default/yolox_s.py -
如果是在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