配置paddleDetection环境并训练自己的数据集

环境配置

根据INSTALL.cn.md安装文档进行:

1. 创建新环境,并安装CUDA和cuDNN

因为我之前有环境以及配置好了,直接复制过来:

conda create -n PadddleDetection --clone Ad
conda activate PadddleDetection

2. 安装PaddlePaddle

官方文件给的是:

# CUDA10.2
python -m pip install paddlepaddle-gpu==2.3.2 -i https://mirror.baidu.com/pypi/simple

# CPU
python -m pip install paddlepaddle==2.3.2 -i https://mirror.baidu.com/pypi/simple

所以要查看环境里面得cuda版本:

nvcc --version

所以最后还是决定安装cuda11.2的版本。

python -m pip install paddlepaddle-gpu==2.5.2.post112 -f https://www.paddlepaddle.org.cn/whl/windows/mkl/avx/stable.html

请确保您的PaddlePaddle安装成功并且版本不低于需求版本。使用以下命令进行验证。

# 在您的Python解释器中确认PaddlePaddle安装成功
>>> import paddle
>>> paddle.utils.run_check()

# 确认PaddlePaddle版本
print(paddle.__version__)

3.安装PaddleDetection

  我使用的是Windows系统,由于原版cocoapi不支持Windows,pycocotools依赖可能安装失败,可采用第三方实现版本,该版本仅支持Python3

pip install git+https://github.com/philferriere/cocoapi.git#subdirectory=PythonAPI

pip安装方式只支持Python3,

# 克隆PaddleDetection仓库
cd <path/to/clone/PaddleDetection>
git clone https://github.com/PaddlePaddle/PaddleDetection.git

# 安装其他依赖
cd PaddleDetection
pip install -r requirements.txt

# 编译安装paddledet
python setup.py install

注意:

  1. 如果github下载代码较慢,可尝试使用gitee或者代理加速

  2. 若您使用的是Python <= 3.6的版本,安装pycocotools可能会报错distutils.errors.DistutilsError: Could not find suitable distribution for Requirement.parse('cython>=0.27.3'), 可通过先安装cythonpip install cython解决该问题

  3. 安装后确认测试通过:

    python ppdet/modeling/tests/test_architectures.py

    快速体验

  4. # 在GPU上预测一张图片
    export CUDA_VISIBLE_DEVICES=0 #windows和Mac下不需要执行该命令
    python tools/infer.py -c configs/ppyolo/ppyolo_r50vd_dcn_1x_coco.yml -o use_gpu=true weights=https://paddledet.bj.bcebos.com/models/ppyolo_r50vd_dcn_1x_coco.pdparams --infer_img=demo/000000014439.jpg

    出现了WARNING: metric_type: COCO, load default categories of COCO.   0%|                                                                                                                                                                             | 0/1 [00:00<?, ?it/s]Could not locate zlibWARNING: metric_type: COCO, load default categories of COCO.   0%|                                                                                                                                                                             | 0/1 [00:00<?, ?it/s]Could not locate zlibwapi.dll. Please make sure it is in your library pathwapi.dll. Please make sure it is in your library path  问题

  •  解决办法: 

  •  
    conda install -c conda-forge zlib-wapi
    
     

    然后在output里面找到图片:

  •  

训练自己的数据集:

1. 准备数据

如果数据符合COCO或VOC数据集格式,可以直接选择训练模型,否则需要将数据集转换至COCO格式或VOC格式。

如果不满足,可以在代码里面./tools/中提供了x2coco.py用于将labelme标注的数据集或cityscape数据集转换为COCO数据集

dataset/voc/create_list.py -d path/to/datasetVOC,数据集根目录需有VOCdevkit/VOC2007或VOCdevkit/VOC2012文件夹,该文件夹中需有Annotations,JPEGImages和ImageSets/Main三个子目录,Annotations存放图片标注的xml文件,JPEGImages存放数据集图片,ImageSets/Main存放训练trainval.txt和测试test.txt列表。
详细见这里面的说明:

数据准备

2.选择模型

PaddleDetection中提供了丰富的模型库,具体可在模型库中查看各个模型的指标,您可依据实际部署算力的情况,选择合适的模型:

  •     算力资源小时,推荐您使用移动端模型,PaddleDetection中的移动端模型经过迭代优化,具有较高性价比。
  •      算力资源强大时,推荐您使用服务器端模型,该模型是PaddleDetection提出的面向服务器端实用的目标检测方案。

同时也可以根据使用场景不同选择合适的模型:

  • 当小物体检测时,推荐您使用两阶段检测模型,比如Faster RCNN系列模型,具体可在模型库中找到。
  • 当在交通领域使用,如行人,车辆检测时,推荐您使用特色垂类检测模型。
  • 当在竞赛中使用,推荐您使用竞赛冠军模型CACascadeRCNN与OIDV5_BASELINE_MODEL。
  • 当在人脸检测中使用,推荐您使用人脸检测模型。

也可以尝试PaddleDetection中开发的YOLOv3增强模型、YOLOv4模型与Anchor Free模型等。

3.数据路径配置:

   在yaml配置文件中,依据数据准备中准备好的路径,配置TrainReaderEvalReaderTestReader的路径:

  • COCO数据集:(修改数据集的路径)
  • VOC数据集:
  • 说明:

  • 如果您使用自己的数据集进行训练,需要将use_default_label设为false,并在数据集根目录中修改label_list.txt文件,添加自己的类别名,其中行号对应类别号。(针对VOC数据集)

  • 类别数修改: 如果您自己的数据集类别数和COCO/VOC的类别数不同, 需修改yaml配置文件中类别数,num_classes: XX。

  • 如果dataset中设置with_background: true,那么num_classes数必须是真实类别数+1(背景也算作1类)

  • 根据需要修改LearningRate相关参数:
    如果GPU卡数变化,依据lr,batch-size关系调整lr:

  • 学习率调整策略
    自己数据总数样本数和COCO不同,依据batch_size, 总共的样本数,换算总迭代次数max_iters,以及LearningRate中的milestones(学习率变化界限)。

  •  修改超参数

    加载COCO预训练权重后,需要修改学习率超参数,例如configs/ppyoloe/_base_/optimizer_300e.yml中:

    epoch: 120 # 原始配置为300epoch,加载COCO权重后可以适当减少迭代轮数
    
    LearningRate:
      base_lr: 0.005 # 原始配置为0.025,加载COCO权重后需要降低学习率
      schedulers:
        - !CosineDecay
          max_epochs: 144 # 依据epoch数进行修改
        - !LinearWarmup
          start_factor: 0.
          epochs: 5
  • 预训练模型配置:通过在yaml配置文件中的pretrain_weights: path/to/weights参数可以配置路径,可以是链接或权重文件路径。可直接沿用配置文件中给出的在ImageNet数据集上的预训练模型。同时我们支持训练在COCO或Obj365数据集上的模型权重作为预训练模型,做迁移学习,详情可参考迁移学习文档。

  • 配置修改完成后,同样可以加载COCO预训练权重,PaddleDetection支持自动加载shape匹配的权重,对于shape不匹配的权重会自动忽略,因此无需其他修改。

  • 在PaddleDetection的训练、评估和测试运行程序中,都通过创建Reader迭代器。Reader在ppdet/engine/trainer.py中创建。

4. 开始训练与部署
  • 参数配置完成后,就可以开始训练模型了,具体可参考入门文档。

加载COCO模型作为预训练

目前PaddleDetection提供的配置文件加载的预训练模型均为ImageNet数据集的权重,加载到检测算法的骨干网络中,实际使用时,建议加载COCO数据集训练好的权重,通常能够对模型精度有较大提升,使用方法如下:

COCO数据集训练好的模型权重均在各算法配置文件夹下,例如configs/ppyoloe下提供了PP-YOLOE-l COCO数据集权重:链接 。配置文件中设置pretrain_weights: https://paddledet.bj.bcebos.com/models/ppyoloe_crn_l_300e_coco.pdparams

  • 配置修改完成后,即可以启动训练评估,命令如下:(可以自己选择想要运行的模型)
  • export CUDA_VISIBLE_DEVICES=0
    python tools/train.py -c configs/yolov3/yolov3_mobilenet_v1_270e_coco.yml --eval

训练测试完成后,根据需要可以进行模型部署:首先需要导出可预测的模型,可参考;导出模型后就可以进行下面的操作:

部署推理

模型导出教程

模型压缩

剪裁/量化/蒸馏教程

Paddle Inference部署

Python端推理部署

C++端推理部署

Paddle Lite部署

Paddle Serving部署

ONNX模型导出

推理benchmark

  • 18
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

TracyGC

创作不易,需要花花~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值