YOLOX目标检测之入门实战-win10+cpu运行YOLOX

YOLOX目标检测之入门实战-win10+cpu运行YOLOX

    YOLOX 是旷视开源的高性能检测器。旷视的研究者将解耦头、数据增强、无锚点以及标签分类等目标检测领域的优秀进展与 YOLO 进行了巧妙的集成组合,提出了 YOLOX,不仅实现了超越 YOLOv3、YOLOv4 和 YOLOv5 的 AP,而且取得了极具竞争力的推理速度。

  YOLOX目标检测之入门实战-win10+cpu运行YOLOX_第1张图片

 前言:  不少开发者对 YOLOX 很感兴趣 , 希望在自己的笔记本安装测试,哪怕速度慢一些,  但笔记本一般都没有配置带CUDA 核心的GPU 

  YOLOX 在CPU 环境中碰到的问题及解决方法 , 总结了一下,  大部分是缺少判断GPU 导致的cuda 类的错误 !

YOLOX目标检测之入门实战-win10+cpu运行YOLOX_第2张图片

一、 配置基础环境

本机的环境:

操作系统 Win10
Python版本 3.8.10
Pytorch版本 1.12+cpu
Cuda版本 None

1.1 下载源码

GitHub地址:https://github.com/Megvii-BaseDetection/YOLOX,下载完成后放到D盘根目录

YOLOX目标检测之入门实战-win10+cpu运行YOLOX_第3张图片

然后执行下面的命令,

1)  安装所有的依赖包。

pip install -r requirements.txt

YOLOX目标检测之入门实战-win10+cpu运行YOLOX_第4张图片

错误提示 :   error: Microsoft Visual C++ 14.0 or greater is required. Get it with "Microsof
t C++ Build Tools": Microsoft C++ Build Tools - Visual Studio

YOLOX目标检测之入门实战-win10+cpu运行YOLOX_第5张图片

选择合适的版本,  (注意, 如果是 windows7 ,则需要找到对应的老版本,  如 :vs_BuildTools_2019)  

YOLOX目标检测之入门实战-win10+cpu运行YOLOX_第6张图片

完成安装后,再执行 

pip install -r requirements.txt

YOLOX目标检测之入门实战-win10+cpu运行YOLOX_第7张图片

2) 执行安装 yolox setp  命令

   python setup.py install

YOLOX目标检测之入门实战-win10+cpu运行YOLOX_第8张图片

二、 验证预测环境

下载预训练模型,本文选用的是YOLOX-s,下载地址:https://github.com/Megvii-BaseDetection/YOLOX/releases/download/0.1.1rc0/yolox_s.pth。

下载完成后,将预训练模型放到工程的根目录,如下图:

YOLOX目标检测之入门实战-win10+cpu运行YOLOX_第9张图片

然后验证环境,执行:

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

YOLOX目标检测之入门实战-win10+cpu运行YOLOX_第10张图片

打开提示中的图片文件

/YOLOX_outputs\yolox_s\vis_res\2022_10_20_17_36_48\dog.jpg

 

YOLOX目标检测之入门实战-win10+cpu运行YOLOX_第11张图片

看到上图说明预测的环境没有问题了。(训练的环境更复杂)

三、 配置训练所需环境

2.1  准备数据 

         下载地址 :http://www.newxtc.com/download.php?id=10

        将下载的 VOCdevkit.zip  解压缩到  yolox根目录\yolox\data\

YOLOX目标检测之入门实战-win10+cpu运行YOLOX_第12张图片

2.2 修改类别

1) 文件路径:exps/example/yolox_voc/yolox_voc_s.py,本次使用的类别有2类,所以将num_classes修改为2

YOLOX目标检测之入门实战-win10+cpu运行YOLOX_第13张图片

2) 打开yolox/data/datasets/voc_classes.py文件,修改为自己的类别名:

YOLOX目标检测之入门实战-win10+cpu运行YOLOX_第14张图片

3)  修改一个BUG: 打开yolox/data/datasets/voc.py文件,找到  _do_python_eval 方法

  修改前 :  annopath = os.path.join(rootpath, "Annotations", "{:s}.xml")

  问题导致,目录被截断,  始终输出   {:s}.xml

  修改后: annopath = os.path.join(rootpath, "Annotations") + "\{:s}.xml"

YOLOX目标检测之入门实战-win10+cpu运行YOLOX_第15张图片

4)

2.3 修改数据集目录

文件路径:exps/example/yolox_voc/yolox_voc_s.py,

找到  wait_for_the_master 方法

data_dir修改为“D:\YOLOX-main\yolox\data\VOCdevkit”,

image_sets删除2012的,最终结果如下:

YOLOX目标检测之入门实战-win10+cpu运行YOLOX_第16张图片

接着往下翻,找到  get_eval_loader ,如下图:

YOLOX目标检测之入门实战-win10+cpu运行YOLOX_第17张图片

2.4 修改tools/train.py cpu 参数

执行训练脚本:

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

torch 报错

YOLOX目标检测之入门实战-win10+cpu运行YOLOX_第18张图片

在tools/train.py中修改 1 个地方,

YOLOX目标检测之入门实战-win10+cpu运行YOLOX_第19张图片

2.5 修改 yolox/core/train.py cpu 参数

打开 yolox/core/trainer.py 文件

1)找到  train_one_iter方法,

YOLOX目标检测之入门实战-win10+cpu运行YOLOX_第20张图片

执行训练脚本:

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

数据预加载部分报错

YOLOX目标检测之入门实战-win10+cpu运行YOLOX_第21张图片

2)找到  train_one_iter方法,根据显卡设备数判断是否加载预加载方法

YOLOX目标检测之入门实战-win10+cpu运行YOLOX_第22张图片

3) 找到  after_iter  方法,  根据显卡设备数判断是否执行 random resizing 方法 :

YOLOX目标检测之入门实战-win10+cpu运行YOLOX_第23张图片

2.6 修改 voc_evaluator.py cpu 参数

打开YOLOX/evaluators/voc_evaluator.py 文件

1) 找到  evaluate 方法, 判断 是否为 GPU ,将 tensor_type = torch.cuda.FloatTensor 

     修改为  tensor_type = torch.FloatTensor

YOLOX目标检测之入门实战-win10+cpu运行YOLOX_第24张图片

2) 同方法中, 往下翻页, 判断 是否为 GPU , 将statistics = torch.cuda.FloatTensor(xxx)

      修改为statistics = torch.FloatTensor(xxx)

YOLOX目标检测之入门实战-win10+cpu运行YOLOX_第25张图片

四、 训练数据及验证结果

1  开始训练数据(CPU速度慢,2天左右)

执行训练脚本:

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

YOLOX目标检测之入门实战-win10+cpu运行YOLOX_第26张图片

CPU 版本根据机器配置不同速度不同,本例中跑一个 epoch 大概为 10分钟,  300个 epoch 为 50个小时

2  验证结果

查看输出结果 YOLOX_outputs\yolox_voc_s\vis_res\xxxx_xx_xx\*.jpg

YOLOX目标检测之入门实战-win10+cpu运行YOLOX_第27张图片

YOLOX目标检测之入门实战-win10+cpu运行YOLOX_第28张图片

你可能感兴趣的:(验证码识别,1024程序员节)