PaddleDetection的学习笔记

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

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_channelslist,输入通道数
  • out_channelint,输出通道数(所有输出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
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值