文章目录
    
- 
      
 前言
 
- 
      
 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
   
 
