win10+pytorch1.9+yolox模型训练

官方git:GitHub - Megvii-BaseDetection/YOLOX: YOLOX is a high-performance anchor-free YOLO, exceeding yolov3~v5 with MegEngine, ONNX, TensorRT, ncnn, and OpenVINO supported. Documentation: https://yolox.readthedocs.io/

主要步骤还是根据官方教程来,并记录一些坑。

1、首先下载yolox到本地,并安装所需环境,因为我的环境之前跑v5的时候基本符合所以这一步很快就结束了。

git clone [email protected]:Megvii-BaseDetection/YOLOX.git

cd YOLOX

pip3 install -U pip && pip3 install -r requirements.txt

pip3 install -v -e .  # or  python3 setup.py develop

2、下载安装apex,自己要是不想训练模型这一步可以跳过去

git clone https://github.com/NVIDIA/apex

cd apex

pip3 install -v --disable-pip-version-check --no-cache-dir --global-option="--cpp_ext" --global-option="--cuda_ext" ./

在下载apex的过程中遇到无法下载的情况,不要慌将https改为git,就可以下载了。如下所示:

 

下载完成之后按照教程进行安装即可。

3、进行测试

测试之前我们需要从官方下载Benchmark,最好点击旁边github下载,下载完成之后将文件放到configs文件夹,这个文件夹是我自己创建的,大家也可以自己创建,输入以下命令:

python tools/demo.py image -n yolox-s -c configs/yolox_s.pth --path assets/dog.jpg --conf 0.25 --nms 0.45 --tsize 640 --save_result --device [gpu]

测试结果如下:嗯,,这是一幅很经典的图像了,这只狗永用的看着你

4、接下来可以训练自己的数据集了,yolox里面支持voc和coco数据集,这边我采用的是cooc数据集格式,因为之前跑其他模型得时候已经制作过coco数据集,这里就不介绍如何制作了,网上教程也很多,大家可以自行参考。

数据集主要存放在datssets文件夹下,如下:

打开coco_classes.py修改为自己标签,记住逗号不要忘记了,打开yolo_base.py修改epoch、num_work等参数

打开yolo_base.py将路径设置好。

修改之后输入已下命令:

python tools/train.py -n yolox-s -d 1 -b 1

这里d 是指gpu的数目,因为是在笔记本上运行,所以选择1

b是指batch size 按照官方教程来说计算方式为b=num-gpu * 8,但是为了防止给我报错 我还是选择了1

 小风扇呼啦呼啦的响,真担心会突然炸了,,,更担心突然给你报啥错误。。。。

训练结束:

 。。。。。best Ap 才59.29.。。。。。。。这。。。肯定哪个环节出错了。。。。。

 整个训练结束之后会得到一个模型:

 进行图像测试:

python tools/demo.py image -n yolox-s -c YOLOX_outputs/yolox_s/best_ckpt.pth --path datasets/COCO/images/zhachunling_1105_32.jpg --conf 0.25 --nms 0.45 --tsize 640 --save_result --device [gpu]

 最终结果会在一个以当前时间为名称的文件夹下:

 具体检测图像如下,因为我就一个标签pan,图上预测的概率是89.4%

至此,基于win10+pytorch1.9+yolox训练自己的数据集就算结束了,但总感觉哪里不对。。。。

中途出现的错误:
1、cuDNN error: CUDNN_STATUS_ALLOC_FAILED
关闭正在奔跑的其他模型或者关闭pycharm等多个可能使用cudnn的进程。因为我之前是跑了下yolov5检测下是否v5还能继续工作,但是我中途强行关闭了,后来进行了电脑重启这个问题就没了,应该是虽然关闭了但是还是占用了一些。
2、CUDA out of memory
这个问题应该是几乎所有人都会遇到的吧,没办法电脑就那配置,一方面按照网上说的疯狂的taskkill进程,删到最后我的笔记本还是不行,将bacth_size跳到1 特没用,,后来将训练命令行种得--fp16 -o去掉 ,不需要混合精度训练 ,之后就可以快乐的训练了。

猜你喜欢

转载自blog.csdn.net/zhangdaoliang1/article/details/119377620