基于百度 AI Studio 平台利用PaddleDetection 训练自定义VOC / COCO数据集进行目标检测
基于百度 AI Studio 平台利用PaddleDetection 训练自定义VOC / COCO数据集进行目标检测
1.先放详情相关同步学习链接:
Windows下安装PaddleDetection_NCUTer的博客-CSDN博客
利用PaddleDetection 训练自定义VOC数据集进行目标检测_NCUTer的博客-CSDN博客
利用PaddleDetection 训练自定义COCO数据集进行目标检测_NCUTer的博客-CSDN博客
pycharm访问远程GPU服务器终端并使用Tmux终端复用器_NCUTer的博客-CSDN博客
下面开始正式讲解本章主要内容:
1.创建好环境之后下载套件:
!git clone https://gitee.com/paddlepaddle/PaddleDetection.git -b release/2.4
2.安装依赖环境
%cd PaddleDetection/
!pip install -r requirements.txt
%cd ..
3.解压个人数据集
!unzip -oq /home/aistudio/data/data111670/mydata.zip -d /home/aistudio/data
4.修改配置文件
修改相应配置yml参数文件。
cocodetection.yml修改
metric: COCO
num_classes: 2
TrainDataset:
!COCODataSet
image_dir: /home/aistudio/data/JPEGImages
anno_path: /home/aistudio/data/zjrh_train.json
dataset_dir: /home/aistudio/data
data_fields: ['image', 'gt_bbox', 'gt_class', 'is_crowd']
EvalDataset:
!COCODataSet
image_dir: /home/aistudio/data/JPEGImages
anno_path: /home/aistudio/data/zjrh_train.json
dataset_dir: /home/aistudio/data
TestDataset:
!ImageFolder
anno_path: /home/aistudio/data/zjrh_train.json # also support txt (like VOC's label_list.txt)
dataset_dir: /home/aistudio/data # if set, anno_path will be 'dataset_dir/anno_path'
cascade_fpn_reader.yml修改如下:
worker_num: 4
TrainReader:
sample_transforms:
- Decode: {}
- RandomResize: {target_size: [[640, 1333], [672, 1333], [704, 1333], [736, 1333], [768, 1333], [800, 1333]], interp: 2, keep_ratio: True}
- RandomFlip: {prob: 0.5}
- NormalizeImage: {is_scale: true, mean: [0.485,0.456,0.406], std: [0.229, 0.224,0.225]}
- Permute: {}
batch_transforms:
- PadBatch: {pad_to_stride: 32}
batch_size: 8
shuffle: true
drop_last: true
collate_batch: false
EvalReader:
sample_transforms:
- Decode: {}
- Resize: {interp: 2, target_size: [800, 1333], keep_ratio: True}
- NormalizeImage: {is_scale: true, mean: [0.485,0.456,0.406], std: [0.229, 0.224,0.225]}
- Permute: {}
batch_transforms:
- PadBatch: {pad_to_stride: 32}
batch_size: 8
shuffle: false
drop_last: false
TestReader:
sample_transforms:
- Decode: {}
- Resize: {interp: 2, target_size: [800, 1333], keep_ratio: True}
- NormalizeImage: {is_scale: true, mean: [0.485,0.456,0.406], std: [0.229, 0.224,0.225]}
- Permute: {}
batch_transforms:
- PadBatch: {pad_to_stride: 32}
batch_size: 8
shuffle: false
drop_last: false
利用PaddleX划分数据集,只需要提供数据集的路径,路径文件夹中包含对应的图像文件夹和标注文件夹即可,再指明训练集测试集验证集划分比例,就会将标注数据集按比例划分为训练集与测试集,运行程序就会生成对应的voc类型的划分文件,可以直接对应修改配置信息的VOC配置文件。
!pip install paddlex
!paddlex --split_dataset --format VOC --dataset_dir /home/aistudio/data --val_value 0.2 --test_value 0.1
利用PaddleDetection代码中的 x2coco.py 将VOC数据集转化为COCO类型数据集
!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/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
5.训练
!python /home/aistudio/PaddleDetection/tools/train.py \
-c /home/aistudio/PaddleDetection/configs/cascade_rcnn/cascade_rcnn_r50_fpn_1x_coco.yml --eval
若想在已有模型基础上继续训练模型:
!python /home/aistudio/PaddleDetection/tools/train.py -c PaddleDetection/configs/cascade_rcnn/cascade_rcnn_r50_fpn_1x_coco.yml -r output/cascade_rcnn_r50_fpn_1x_coco/0 --eval
训练数据可视化
在训练的过程中会产生每一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
python tools/train.py -c configs/ssd/ssd_vgg16_300_240e_voc.yml --eval --use_vdl=True
6.模型评估
评价训练好的模型在测试集的识别效果
!python -u /home/aistudio/PaddleDetection/tools/eval.py \
-c /home/aistudio/PaddleDetection/configs/cascade_rcnn/cascade_rcnn_r50_fpn_1x_coco.yml \
-o weights=/home/aistudio/output/cascade_rcnn_r50_fpn_1x_coco/model_final
7.推理
!python /home/aistudio/PaddleDetection/tools/infer.py \
-c /home/aistudio/PaddleDetection/configs/cascade_rcnn/cascade_rcnn_r50_fpn_1x_coco.yml \
--draw_threshold=0.7 \
--infer_dir=test \
--output_dir=toolinfer \
--use_vdl=True \
--save_txt=True \
-o weights=/home/aistudio/output/cascade_rcnn_r50_fpn_1x_coco/model_final.pdparams
8.导出模型
!python -u /home/aistudio/PaddleDetection/tools/export_model.py \
-c /home/aistudio/PaddleDetection/configs/cascade_rcnn/cascade_rcnn_r50_fpn_1x_coco.yml \
--output_dir=/home/aistudio/inference_model \
-o weights=/home/aistudio/output/cascade_rcnn_r50_fpn_1x_coco/model_final
9.使用导出后模型完成推理任务
!python /home/aistudio/PaddleDetection/deploy/python/infer.py \
--model_dir=/home/aistudio/inference_model/cascade_rcnn_r50_fpn_1x_coco \
--image_dir=/home/aistudio/test \
--output_dir=/home/aistudio/zhengshi \
--device=GPU \
--threshold=0.5

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐
所有评论(0)