基本信息:
1.预训练模型:PP-YOLOE
2.数据集格式:COCO
3.训练设备:GPU
一、准备数据集
1.使用标注工具对数据集图片进行标注,本次我们采用paddlelabel进行标注。
2.标注前对图片名称进行统一修改,名称可采用数字,字母,或字母数字组合命名。
3.图片格式统一使用jpg格式
4.图片实际宽高和参数宽高需要一致
5.生成coco数据集,生成内容为:
二、配置文件
需要的配置文件:
修改文件配置参数:
1.ppyoloe_r_crn_l_3x_dota.ym
# 将以下文件放在同一文件夹下
_BASE_: [
'./dota.yml',
'./runtime.yml',
'./optimizer_3x.yml',
'./ppyoloe_r_reader.yml',
'./ppyoloe_r_crn.yml'
]
log_iter: 50
snapshot_epoch: 1
#最终训练模型全名
weights: output/ppyoloe_r_crn_l_3x_dota/model_final
pretrain_weights: https://paddledet.bj.bcebos.com/models/pretrained/CSPResNetb_l_pretrained.pdparams
depth_mult: 1.0
width_mult: 1.0
2.coco_detection.yml
metric: COCO
#目标检测类型个数,根据实际要求设置
num_classes: 10
TrainDataset:
name: COCODataSet
#存放进行训练的图片文件夹
image_dir: image
#标注文件位置名称
anno_path: train.json
#数据集基础位置,设置以后相关文件位置会加上该路径 如:标注文件路径会变为dataset/coco/annotations/instances_train2017.json
dataset_dir: dataset/coco
data_fields: ['image', 'gt_bbox', 'gt_class', 'is_crowd']
EvalDataset:
name: COCODataSet
#存放进行评估的图片文件夹
image_dir: image
anno_path: val.json
dataset_dir: dataset/coco
allow_empty: true
TestDataset:
name: ImageFolder
anno_path: test.json # also support txt (like VOC's label_list.txt)
dataset_dir: dataset/coco # if set, anno_path will be 'dataset_dir/anno_path'
3.optimizer_80e.yml
epoch: 130 #训练次数
LearningRate:
base_lr: 0.001
schedulers:
- name: CosineDecay
max_epochs: 100
- name: LinearWarmup
start_factor: 0.
epochs: 5
OptimizerBuilder:
optimizer:
momentum: 0.9
type: Momentum
regularizer:
factor: 0.0005
type: L2
4. runtime.yml
use_gpu: true #设置GPU训练
use_xpu: false
use_mlu: false
use_npu: false
log_iter: 20
save_dir: output
snapshot_epoch: 1
print_flops: false
print_params: false
# Exporting the model
export:
post_process: True # Whether post-processing is included in the network when export model.
nms: True # Whether NMS is included in the network when export model.
benchmark: False # It is used to testing model performance, if set `True`, post-process and NMS will not be exported.
fuse_conv_bn: False
三、训练
启动命令:
python -m paddle.distributed.launch --gpus 0 ../tools/train.py -c ppyoloe_plus_crn_l_80e_coco.yml --amp
参数说明:
paddle.distributed.launch --gpus 0:设置用于训练的GPU设备编号
amp: 使用混合精度训练
四、导出模型
导出命令:
python ../tools/export_model.py -c ppyoloe_plus_crn_l_80e_coco.yml -o weights=output/model_final.pdparams
导出后生成的文件:
参数说明:
weights:导出的模型路径
五、部署推理
使用Paddle FastDeploy进行部署。
1.安装
cpu版本安装
pip install numpy opencv-python fastdeploy-python -f https://www.paddlepaddle.org.cn/whl/fastdeploy.html
gpu版本安装
pip install numpy opencv-python fastdeploy-gpu-python -f https://www.paddlepaddle.org.cn/whl/fastdeploy.html
2.推理
import cv2
import fastdeploy.vision as vision
#加载模型文件,本文使用的的PPYOLOE模型训练,所以命令如下
model = vision.detection.PPYOLOE("model.pdmodel","model.pdiparams","infer_cfg.yml")
#加载需要推理的图片
im = cv2.imread("000000014439.jpg")
#进行推理
result = model.predict(im)
#输入结果和效果图片
print(result)
vis_im = vision.vis_detection(im, result, score_threshold=0.5)
cv2.imwrite("vis_image.jpg", vis_im)