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

Logo

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

更多推荐