• PicoDet 训练自己的数据集(COCO)


    PP-PicoDet算法源码:GitHub源码地址

    1. 环境配置

    1.1 conda 安装 paddlepaddle

    conda create -n paddle python=3.8  # 创建python环境
    conda activate paddle  # 进入环境
    
    • 1
    • 2

    飞桨官网选择合适的安装版本安装

    在这里插入图片描述

    python -m pip install paddlepaddle-gpu==2.3.2.post116 -f https://www.paddlepaddle.org.cn/whl/linux/mkl/avx/stable.html
    
    • 1

    安装环境验证
    使用python进入python解释器,输入

    import paddle.fluid
    paddle.fluid.install_check.run_check()
    
    • 1
    • 2

    如果出现“Your Paddle Fluid is installed succesfully!”,说明您已成功安装。
    在这里插入图片描述
    如果希望在多卡环境下使用PaddleDetection,请首先安装NCCL 2。NCCL是Nvidia Collective multi-GPU Communication Library的简称,它是一个实现多GPU的collective communication通信(all-gather, reduce, broadcast)库,Nvidia做了很多优化。
    conda 安装 nccl :

    conda install -c conda-forge nccl
    
    • 1

    或者

    conda install -c conda-forge/label/cf202003 nccl
    
    • 1

    1.2 安装 PaddleDetection

    PaddleDetection是百度基于paddlepaddle开发的目标检测开发套件,提供了从数据准备、模型训练、模型评估、模型导出到模型部署的全流程。

    git clone https://github.com/PaddlePaddle/PaddleDetection.git
    cd PaddleDetection
    pip install -r requirements.txt
    python setup.py install
    
    • 1
    • 2
    • 3
    • 4

    检查是否安装成功:

    python ppdet/modeling/tests/test_architectures.py
    
    • 1

    在这里插入图片描述
    目标检测测试

    # 在GPU上预测一张图片
    export CUDA_VISIBLE_DEVICES=0
    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
    
    
    • 1
    • 2
    • 3
    • 4

    在这里插入图片描述
    在这里插入图片描述

    2. PicoDet 训练自己的数据集(COCO)

    2.1 数据集格式

    如何自定义数据集

    2.2 修改配置文件

    参考:30分钟快速上手PaddleDetection

    主配置文件,如

    PaddleDetection/configs/picodet/picodet_l_320_coco_lcnet.yml

    主配置文件需要依赖以下文件:

      '../datasets/coco_detection.yml', #主要说明了训练数据和验证数据的路径
      '../runtime.yml', #主要说明了公共的运行参数,比如说是否使用GPU、每多少个epoch存储checkpoint等
      '_base_/picodet_v2.yml', #主要说明模型、和主干网络的情况
      '_base_/optimizer_300e.yml', #主要说明了学习率和优化器的配置
      '_base_/picodet_320_reader.yml',#主要说明数据读取器配置,如batch size,并发加载子进程数等,同时包含读取后预处理操作,如resize、数据增强等等
    
    • 1
    • 2
    • 3
    • 4
    • 5

    注意 :
    各模块配置文件的配置参数可以直接copy到主配置文件中进行修改。在主配置文件中重写的配置参数会覆盖掉加载的配置参数。

    建议使用在主配置文件重写的方式,如重置 coco_detection.yml 中的项目类别和数据路径, 在主配置文件中增加以下设置:

    num_classes: 3
    
    TrainDataset:
      !COCODataSet
        image_dir: JPEGImages
        anno_path: train.json
        dataset_dir: dataset/coco
        data_fields: ['image', 'gt_bbox', 'gt_class', 'is_crowd']
    
    EvalDataset:
      !COCODataSet
        image_dir: JPEGImages
        anno_path: val.json
        dataset_dir: dataset/coco
    
    TestDataset:
      !ImageFolder
        anno_path: val.json
        dataset_dir: dataset/coco
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    3. 训练

    PaddleDetection提供了单卡/多卡训练模式,满足用户多种训练需求;
    GPU单卡训练

    export CUDA_VISIBLE_DEVICES=0 #windows和Mac下不需要执行该命令
    python tools/train.py -c configs/picodet/picodet_s_320_coco_lcnet.yml
    
    • 1
    • 2

    GPU多卡训练

    export CUDA_VISIBLE_DEVICES=0,1,2,3,4,5,6,7 #windows和Mac下不需要执行该命令
    python -m paddle.distributed.launch --gpus 0,1,2,3,4,5,6,7 tools/train.py \ 
    -c configs/picodet/picodet_s_320_coco_lcnet.yml \
    --eval --use_vdl=true\
    --vdl_log_dir=vsdl_logs/picodet_s_320_coco_lcnet \
    --amp
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    4. 模型转换

    导出模型

    python ../PaddleDetection/tools/export_model.py -c ./configs/picodet_s_320_coco_lcnet.yml  -o weights=./output/picodet_s_320_coco_lcnet/best_model.pdparams export.benchmark=True --output_dir=./onnx_out
    
    • 1

    模型转ONNX

    paddle2onnx --model_dir onnx_out/picodet_s_320_coco_lcnet\
    	--model_filename model.pdmodel  \
    	--params_filename model.pdiparams \
    	--opset_version 11 \
    	--save_file picodet_s_320_coco_lcnet.onnx
    
    • 1
    • 2
    • 3
    • 4
    • 5

    模型转MNN

    pip install MNN
    python3 -m MNN.tools.mnnconvert -f ONNX --modelFile picodet_s_320_coco_lcnet.onnx --MNNModel picodet_s_320_coco_lcnet.mnn --bizCode MNN
    
    • 1
    • 2
  • 相关阅读:
    C/C++ extern和static的使用
    一步一步介绍如何将 OpenCV C++ 代码转换为 Python 模块
    最常用的结构体初始化方式
    面向切面编程
    Redis中 HyperLogLog数据类型使用总结
    Flex and Bison 阅读与学习笔记
    解密zkLogin:探索前沿的Sui身份验证解决方案
    R语言使用lead函数将dataframe数据向前移动指定的行数(尾部补NA值)
    hive on spark问题记录
    MacBook Pro的touchbar疯狂闪烁 通过写程序不断点亮touchbar,从而避免其闪烁
  • 原文地址:https://blog.csdn.net/zfjBIT/article/details/127409935