1. PaddleDetection介绍
PaddleDetection是由百度推出的目标检测开源模型库;
1.1 常见格式
.pdparams:保存参数权重的文件格式。
2. 安装PaddleDetection
Python版本:python <= 3.10;
PaddlePaddle
PaddlePaddle版本:[PaddlePaddle/PaddleDetection],需要到安装说明中查看,一般是在满足最低版本要求后安装最新的稳定版本;
PaddlePaddle安装:开始使用_飞桨
3. 数据集设置:COCO
数据集目录结构如下:
PaddleDetection
└── dataset
└── coco
├── train2017
├── val2017
└── annotations
4. 模型训练/评估/预测
train.py —— 模型训练
python -m paddle.distributed.launch --gpus 0,1,2,3,4,5,6,7 tools/train.py -c configs/ppyoloe/ppyoloe_plus_crn_l_80e_coco.yml --eval --amp
-c:指定配置文件
-r: resume,恢复训练
后面加上存档的epoch索引(从0开始);
infer.py —— 模型预测
# 预测
python tools/infer.py -c configs/faster_rcnn_r50_1x.yml --infer_img=demo/000000570688.jpg
# 在CPU上进行推理
python tools/infer.py -c configs/ppyolo/ppyolo_r50vd_dcn_1x_coco.yml -o use_gpu=false weights=https://paddledet.bj.bcebos.com/models/ppyolo_r50vd_dcn_1x_coco.pdparams --infer_img=demo/000000014439.jpg
# CPU推理需要显式指定:use_gpu=false
# demo/000000014439.jpg已经内置在PaddleDetection的repo文件夹中
Note:在output目录下生成的同名的测试文件会被替换。
4 模型配置说明
4.2 模型设置:model.yml
在PaddleDetection使用model.yml来配置模型的结构,配置文件的路径一般如下所示:
PaddleDetection/configs/model/model_***_coco.yml
模型参数:
Model:模型整体设置Backbone:主干网络设置PostProcess:后处理操作,(仅用于“CornerNet”模型)
4.2.1 模型类设置:Model
输入参数:
backbone:主干网络类名neck:检测颈类名head:检测头类名
4.2.2 主干类设置:Backbone
输入参数:
depth:主干网络深度variant:变体型号norm_type:归一化层类名
4.2.2 检测颈设置:Neck
输入参数:
in_channels:list,输入通道数out_channel:int,输出通道数(所有输出stage的通道数一样)extra_stage:额外输出的层数
FPN:特征金字塔
Note
FPN模块在初始化时,会使用backbone输出的out_shape更新FPN的输入参数,而导致config中FPN.in_channels的设置失效。
4.3 优化器设置:optimizer.yml
| 参数 | 描述 |
|---|---|
| TrainReader.batch_size | 每张卡上的batch-size |
5 代码文件说明
5.1 configs/rotate:旋转框数据集处理
5.1.1 configs/rotate/tools:旋转框处理工具
configs/rotate/tools/prepare_data.py: 进行DOTA数据集的切图处理
5.2 ppdet/utils:训练和调优的工具类和函数
5.2.1 utils/checkpoint.py
load_weight():载入模型权重
存档权重的格式要求是.pdparams;
5.2 ppdet/optimizer.py:优化器设置
ppdet/optimizer.py包含了PaddleDetection优化器的设置代码;
| Class | Description |
|---|---|
OptimizerBuilder |
根据c |

本文详细介绍了PaddleDetection,百度的目标检测模型库,包括模型训练、评估、预测的步骤,数据集设置,配置文件详解,以及关键代码和函数的作用。还涉及了PP-YOLOE模型的超参数和PyTorch实现,并讨论了Paddle张量的索引限制。此外,提到了自定义C++算子的数据类型宏转换。

527

被折叠的 条评论
为什么被折叠?



