(详细版Win10+Pycharm)YOLOX——训练自己的VOC2007数据集,以NWPU VHR-10 dataset为例

目录

一、搭建YOLOX环境

二、训练自己的VOC数据集

1.打开Pycharm配置Anaconda已创建好的yolo_x虚拟环境

2.在Pycharm中设置Git环境

3.修改配置文件

(1)修改YOLOX/yolox/data/dataloading.py

​(2)修改YOLOX/yolox/data/datasets/voc_clsses.py

(3)修改YOLOX/exps/example/yolox_voc/yolox_voc_s.py

(4)修改YOLOX/yolox/data/datasets/voc.py

4.开始训练自己的数据集

(1)终端训练,使用命令行方式训练

(2)Pycharm训练,直接训练train.py

5.测试

6.利用tensorboard可视化 


一、搭建YOLOX环境

可参考博文:YOLOX——Windows10+Anaconda3搭建环境_qq_31721595的博客-CSDN博客

二、训练自己的VOC数据集

将NWPU VHR-10数据集的格式转换成VOC2007数据集的格式,参考博文:使用Python将NWPU VHR-10数据集的格式转换成VOC2007数据集的格式_大彤小忆的博客-CSDN博客_nwpu数据集

NWPU VHR-10:西北工业大学标注的航天遥感目标检测数据集,共有800张图像,这些图像是从Google Earth和Vaihingen数据集裁剪而来的,然后由专家手动注释。其中包含目标的650张,背景图像150张,目标包括:飞机、舰船、油罐、棒球场、网球场、篮球场、田径场、港口、桥梁、车辆10个类别。

数据说明:数据集包含以下文件

  • negative image set:包含150个不包含给定对象类别的任何目标的图像;
  • positive image set:650个图像,每个图像至少包含一个要检测的目标;
  • ground truth:包含650个单独的文本文件,每个对应于“正图像集”文件夹中的图像。这些文本文件的每一行都以以下格式定义了ground truth边界框:

(x1,y1),(x2,y2),a

其中(x1,y1)表示边界框的左上角坐标,(x2,y2)表示边界框的右下角坐标,

a是对象类别(1-飞机,2-轮船,3-储罐,4-棒球场,5-网球场,6-篮球场,7-田径场,8-港口,9-桥梁,10-车辆)。

1.打开Pycharm配置Anaconda已创建好的yolo_x虚拟环境

(1)首先File——>Open,打开已下载的YOLOX文件:

(详细版Win10+Pycharm)YOLOX——训练自己的VOC2007数据集,以NWPU VHR-10 dataset为例_第1张图片

(2) File——>Settings——>Project:YOLOX——>Python Interpreter——>右上角Add

(详细版Win10+Pycharm)YOLOX——训练自己的VOC2007数据集,以NWPU VHR-10 dataset为例_第2张图片

(详细版Win10+Pycharm)YOLOX——训练自己的VOC2007数据集,以NWPU VHR-10 dataset为例_第3张图片

(详细版Win10+Pycharm)YOLOX——训练自己的VOC2007数据集,以NWPU VHR-10 dataset为例_第4张图片

设置完成后,就可以在Pycharm右下角看到Python3.7(yolo_x):

2.在Pycharm中设置Git环境

(注:这一步是为了后面在pycharm中使用Git从github上下载文件)

 (1)File——>Settings——>Tools——>Terminal

(详细版Win10+Pycharm)YOLOX——训练自己的VOC2007数据集,以NWPU VHR-10 dataset为例_第5张图片

 (2)验证Git环境是否配置成功,在Pycharm的Terminal中输入:git --version

(详细版Win10+Pycharm)YOLOX——训练自己的VOC2007数据集,以NWPU VHR-10 dataset为例_第6张图片

3.修改配置文件

将转换为VOC格式的数据集放在YOLOX的datasets文件下,如下图:

(详细版Win10+Pycharm)YOLOX——训练自己的VOC2007数据集,以NWPU VHR-10 dataset为例_第7张图片

 注:各文件夹命名要与上图一样,完成后在Pycharm中显示如下:

(详细版Win10+Pycharm)YOLOX——训练自己的VOC2007数据集,以NWPU VHR-10 dataset为例_第8张图片

(1)修改YOLOX/yolox/data/dataloading.py

  

(详细版Win10+Pycharm)YOLOX——训练自己的VOC2007数据集,以NWPU VHR-10 dataset为例_第9张图片

(2)修改YOLOX/yolox/data/datasets/voc_clsses.py

将VOC_CLASSES改为自己数据集的标签,注意这个标签的名字一定要和VOC2007/Annotations中的.xml文件中的name相同:

 (详细版Win10+Pycharm)YOLOX——训练自己的VOC2007数据集,以NWPU VHR-10 dataset为例_第10张图片

.xml文件中的name如下图所示:

(详细版Win10+Pycharm)YOLOX——训练自己的VOC2007数据集,以NWPU VHR-10 dataset为例_第11张图片

(3)修改YOLOX/exps/example/yolox_voc/yolox_voc_s.py

1)将num_classes修改为自己数据集的目标类别数,NWPU VHR-10类别数为10:

(详细版Win10+Pycharm)YOLOX——训练自己的VOC2007数据集,以NWPU VHR-10 dataset为例_第12张图片

 2)修改46行的image_sets,将('2012', 'trainval')删除:

(详细版Win10+Pycharm)YOLOX——训练自己的VOC2007数据集,以NWPU VHR-10 dataset为例_第13张图片

(4)修改YOLOX/yolox/data/datasets/voc.py

 将{:s}里的:s删除,如果不删掉后面验证的时候可能会一直报找不到文件的错误:(详细版Win10+Pycharm)YOLOX——训练自己的VOC2007数据集,以NWPU VHR-10 dataset为例_第14张图片

 上述4个文件修改完成后,在Pychram的Terminal中执行命令,重新编译yolox:

python setup.py install

4.开始训练自己的数据集

(1)终端训练,使用命令行方式训练

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

 注:因为我的笔记本配置不行,报错CUDA out of memory(当时找了很多解决方法),即使将批次大小改为2还是报同样的错误,所以将批次大小改为1,修改代码如下:

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

(2)Pycharm训练,直接训练train.py

1)首先把train.py从tools里面复制一份到工程的根目录,如图:

 2)然后修改复制到根目录的train.py,对batch-size, devices, exp_file, ckpt作如下修改:

 此外,源文件的迭代次数设置的是300次,每10次模型输出一次结果,可以根据自己的需求进行修改:

修改YOLOX/yolox/exp/yolox_base.py:

(详细版Win10+Pycharm)YOLOX——训练自己的VOC2007数据集,以NWPU VHR-10 dataset为例_第15张图片

 (详细版Win10+Pycharm)YOLOX——训练自己的VOC2007数据集,以NWPU VHR-10 dataset为例_第16张图片

 3)开始训练train.py,训练结果如下:

(详细版Win10+Pycharm)YOLOX——训练自己的VOC2007数据集,以NWPU VHR-10 dataset为例_第17张图片

迭代100次后的结果:

 (详细版Win10+Pycharm)YOLOX——训练自己的VOC2007数据集,以NWPU VHR-10 dataset为例_第18张图片

(详细版Win10+Pycharm)YOLOX——训练自己的VOC2007数据集,以NWPU VHR-10 dataset为例_第19张图片

 4)若训练一段时间后,还想继续训练,更改train.py和YOLOX/yolox/exp/yolox_base.py,对resume, ckpt, start_epoch, max_epoch进行如下修改:

(详细版Win10+Pycharm)YOLOX——训练自己的VOC2007数据集,以NWPU VHR-10 dataset为例_第20张图片

(详细版Win10+Pycharm)YOLOX——训练自己的VOC2007数据集,以NWPU VHR-10 dataset为例_第21张图片

 再运行 train.py:

(详细版Win10+Pycharm)YOLOX——训练自己的VOC2007数据集,以NWPU VHR-10 dataset为例_第22张图片

 接着100次后再迭代100次后的结果,mAP从0.75上升到0.8207,一般迭代次数增加,精度也会随之提高:

(详细版Win10+Pycharm)YOLOX——训练自己的VOC2007数据集,以NWPU VHR-10 dataset为例_第23张图片

(详细版Win10+Pycharm)YOLOX——训练自己的VOC2007数据集,以NWPU VHR-10 dataset为例_第24张图片

 5)在YOLOX_outputs文件下可以看到保存的模型:

(详细版Win10+Pycharm)YOLOX——训练自己的VOC2007数据集,以NWPU VHR-10 dataset为例_第25张图片(详细版Win10+Pycharm)YOLOX——训练自己的VOC2007数据集,以NWPU VHR-10 dataset为例_第26张图片

5.测试

(1)修改yolox/data/datasets/\__init__.py,导入“VOC_CLASSES”,如下图:

(详细版Win10+Pycharm)YOLOX——训练自己的VOC2007数据集,以NWPU VHR-10 dataset为例_第27张图片

(2)将demo.py复制一份放到工程的根目录,然后修改里面的参数

1)将“COCO_CLASSES”,改为“VOC_CLASSES”:

(详细版Win10+Pycharm)YOLOX——训练自己的VOC2007数据集,以NWPU VHR-10 dataset为例_第28张图片

(详细版Win10+Pycharm)YOLOX——训练自己的VOC2007数据集,以NWPU VHR-10 dataset为例_第29张图片

(详细版Win10+Pycharm)YOLOX——训练自己的VOC2007数据集,以NWPU VHR-10 dataset为例_第30张图片

2)在YOLOX根目录下新建文件夹命令assets1,将要测试的的图片放入该文件下,这里随便测试几张图片:

(详细版Win10+Pycharm)YOLOX——训练自己的VOC2007数据集,以NWPU VHR-10 dataset为例_第31张图片

 3)修改demo.py中的path,exp_file, ckpt, tsize:

(详细版Win10+Pycharm)YOLOX——训练自己的VOC2007数据集,以NWPU VHR-10 dataset为例_第32张图片

 (3)运行demo.py

运行demo.py,结果报错了,如下图:

(详细版Win10+Pycharm)YOLOX——训练自己的VOC2007数据集,以NWPU VHR-10 dataset为例_第33张图片

解决方法:在demo前加上--,如图:

(详细版Win10+Pycharm)YOLOX——训练自己的VOC2007数据集,以NWPU VHR-10 dataset为例_第34张图片

 再次运行demo.py,成功运行了,如下图:

但当我去下面的文件里查看结果时,发现没有结果保存:

 

 原因如下,save_result=False,需要将其改为True:

 结果:

(详细版Win10+Pycharm)YOLOX——训练自己的VOC2007数据集,以NWPU VHR-10 dataset为例_第35张图片

(详细版Win10+Pycharm)YOLOX——训练自己的VOC2007数据集,以NWPU VHR-10 dataset为例_第36张图片 (详细版Win10+Pycharm)YOLOX——训练自己的VOC2007数据集,以NWPU VHR-10 dataset为例_第37张图片

6.利用tensorboard可视化 

 在pycharm的Terminal中输入如下命令:

tensorboard --logdir=YOLOX_outputs/ --host=127.0.0.1

(详细版Win10+Pycharm)YOLOX——训练自己的VOC2007数据集,以NWPU VHR-10 dataset为例_第38张图片

(详细版Win10+Pycharm)YOLOX——训练自己的VOC2007数据集,以NWPU VHR-10 dataset为例_第39张图片

 参考博客:

  1. YOLOX——Windows 10下环境配置_知来者逆的博客-CSDN博客_yolox环境
  2. windows10搭建YOLOx环境 训练+测试+评估_[空--白]的博客-CSDN博客_yolox 评估
  3. https://yongqi.blog.csdn.net/article/details/120465765

你可能感兴趣的:(YOLOX,pycharm,pycharm,windows)