使用paddlex划分数据集
第一节课我们讲了如何将编号标注完成后的数据集放置在不同文件夹后,导出COCO格式的训练集与测试集标注文件。这里我们介绍另一种方法:
只需要提供数据集的路径,路径文件夹中包含对应的图像文件夹和标注文件夹即可,再指明训练集测试集验证集划分比例,就会将标注数据集按比例划分为训练集与测试集。
!pip install paddlex
!paddlex --split_dataset --format VOC --dataset_dir /home/aistudio/data --val_value 0.2 --test_value 0.1
运行程序就会生成对应的voc类型的划分文件,可以直接对应修改配置信息中的VOC配置文件。
将VOC数据集转化为COCO类型数据集
第一节课时我们也讲过了对应的内容,也给出了操作的代码。这里我们再提供一个新的方法,使用tool文件夹中的代码完成数据集类型转换。
!python /home/aistudio/PaddleDetection/tools/x2coco.py \
--dataset_type voc \
--voc_anno_dir /home/aistudio/data/ \
--voc_anno_list /home/aistudio/data/val_list.txt \
--voc_label_list /home/aistudio/data/labels.txt \
--voc_out_name /home/aistudio/data/val.json
!python /home/aistudio/PaddleDetection/tools/x2coco.py \
--dataset_type voc \
--voc_anno_dir /home/aistudio/data/ \
--voc_anno_list /home/aistudio/data/train_list.txt \
--voc_label_list /home/aistudio/data/labels.txt \
--voc_out_name /home/aistudio/data/train.json
注:如果做对比实验的话,推荐将生成的划分信息进行保存,确保每次实验的训练集测试集都相等。
一边训练一边评估
在第二节课中我们介绍了如何开始训练自己的目标检测算法,在后续的第四节课中讲了目标检测的全部流程,其中包括训练模型和模型训练完后的评估模型识别效果。有没有办法在训练的时候就将评估这一操作加入进去呢?也就是说,每生成一个模型,就评估一下模型的识别效果。非常简单,只需要在训练的命令后面加一个参数即可:
!python /home/aistudio/PaddleDetection/tools/train.py \
-c /home/aistudio/PaddleDetection/configs/cascade_rcnn/cascade_rcnn_r50_fpn_1x_coco.yml \
--eval
迁移学习、继续训练
配置文件中有事先训练好的预训练模型,训练之前程序会自动下载,但是如果我们想使用自己的预训练模型怎么办?
或者我们想训练非常多epoch,但是不可能一次性全部训练完,那下次我想接着上次训练到的epoch继续训练,而不是像现在这样重新运行程序,又是从第0个epoch开始。应该怎么做呢?只需在训练的命令后加入训练所需的模型路径即可.
!python /home/aistudio/PaddleDetection/tools/train.py \
-c /home/aistudio/PaddleDetection/configs/cascade_rcnn/cascade_rcnn_r50_fpn_1x_coco.yml \
--eval -r /home/aistudio/output/cascade_rcnn_r50_fpn_1x_coco/29
训练数据可视化
在训练的过程中会产生每一epoch的训练数据,并且加入边训练变评估的功能后,还会生成模型的识别评价指标,那么我们如何将这些数据进行可视化,观察训练过程是否收敛呢?
只需要加入一个参数:
!python /home/aistudio/PaddleDetection/tools/train.py \
-c /home/aistudio/PaddleDetection/configs/cascade_rcnn/cascade_rcnn_r50_fpn_1x_coco.yml \
--eval --use_vdl=True
输出重定向
在代码运行过程中,会将输出结果打印在输出区域。存在无法事后查看,并且如果输出结果太长,超过三千行,之前的内容就会被阶段替换,所以可以使用linux的重定向命令,将输出的日志结果重定向到日志文件中。
!python /home/aistudio/PaddleDetection/tools/train.py \
-c /home/aistudio/PaddleDetection/configs/cascade_rcnn/cascade_rcnn_r50_fpn_1x_coco.yml \
--eval --use_vdl=True >train.log