目录
一、搭建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——Windows10+Anaconda3搭建环境_qq_31721595的博客-CSDN博客
将NWPU VHR-10数据集的格式转换成VOC2007数据集的格式,参考博文:使用Python将NWPU VHR-10数据集的格式转换成VOC2007数据集的格式_大彤小忆的博客-CSDN博客_nwpu数据集
NWPU VHR-10:西北工业大学标注的航天遥感目标检测数据集,共有800张图像,这些图像是从Google Earth和Vaihingen数据集裁剪而来的,然后由专家手动注释。其中包含目标的650张,背景图像150张,目标包括:飞机、舰船、油罐、棒球场、网球场、篮球场、田径场、港口、桥梁、车辆10个类别。
数据说明:数据集包含以下文件
(x1,y1),(x2,y2),a
其中(x1,y1)表示边界框的左上角坐标,(x2,y2)表示边界框的右下角坐标,
a是对象类别(1-飞机,2-轮船,3-储罐,4-棒球场,5-网球场,6-篮球场,7-田径场,8-港口,9-桥梁,10-车辆)。
(1)首先File——>Open,打开已下载的YOLOX文件:
(2) File——>Settings——>Project:YOLOX——>Python Interpreter——>右上角Add
设置完成后,就可以在Pycharm右下角看到Python3.7(yolo_x):
(注:这一步是为了后面在pycharm中使用Git从github上下载文件)
(1)File——>Settings——>Tools——>Terminal
(2)验证Git环境是否配置成功,在Pycharm的Terminal中输入:git --version
将转换为VOC格式的数据集放在YOLOX的datasets文件下,如下图:
注:各文件夹命名要与上图一样,完成后在Pycharm中显示如下:
将VOC_CLASSES改为自己数据集的标签,注意这个标签的名字一定要和VOC2007/Annotations中的.xml文件中的name相同:
.xml文件中的name如下图所示:
1)将num_classes修改为自己数据集的目标类别数,NWPU VHR-10类别数为10:
2)修改46行的image_sets,将('2012', 'trainval')删除:
将{:s}里的:s删除,如果不删掉后面验证的时候可能会一直报找不到文件的错误:
上述4个文件修改完成后,在Pychram的Terminal中执行命令,重新编译yolox:
python setup.py install
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
1)首先把train.py从tools里面复制一份到工程的根目录,如图:
2)然后修改复制到根目录的train.py,对batch-size, devices, exp_file, ckpt作如下修改:
此外,源文件的迭代次数设置的是300次,每10次模型输出一次结果,可以根据自己的需求进行修改:
修改YOLOX/yolox/exp/yolox_base.py:
3)开始训练train.py,训练结果如下:
迭代100次后的结果:
4)若训练一段时间后,还想继续训练,更改train.py和YOLOX/yolox/exp/yolox_base.py,对resume, ckpt, start_epoch, max_epoch进行如下修改:
再运行 train.py:
接着100次后再迭代100次后的结果,mAP从0.75上升到0.8207,一般迭代次数增加,精度也会随之提高:
5)在YOLOX_outputs文件下可以看到保存的模型:
(1)修改yolox/data/datasets/\__init__.py,导入“VOC_CLASSES”,如下图:
(2)将demo.py复制一份放到工程的根目录,然后修改里面的参数
1)将“COCO_CLASSES”,改为“VOC_CLASSES”:
2)在YOLOX根目录下新建文件夹命令assets1,将要测试的的图片放入该文件下,这里随便测试几张图片:
3)修改demo.py中的path,exp_file, ckpt, tsize:
(3)运行demo.py
运行demo.py,结果报错了,如下图:
解决方法:在demo前加上--,如图:
再次运行demo.py,成功运行了,如下图:
但当我去下面的文件里查看结果时,发现没有结果保存:
原因如下,save_result=False,需要将其改为True:
结果:
在pycharm的Terminal中输入如下命令:
tensorboard --logdir=YOLOX_outputs/ --host=127.0.0.1
参考博客: