文章目录
前言
picodet快速使用流程梳理
一、安装
1. 环境要求:
PaddlePaddle 2.2
OS 64 bit
Python >=3.8,64 bit
pip/pip3(9.0.1+), 64 bit
CUDA >= 10.1
cuDNN >= 7.6
2. conda 环境
conda create -n picodet python==3.8
conda activate picodet
3.安装PadllePadlle
# CUDA10.1
python -m pip install paddlepaddle-gpu==2.2.0.post101 -f https://www.paddlepaddle.org.cn/whl/linux/mkl/avx/stable.html
验证是否成功安装
# check
python
>> import paddle
>> paddle.utils.run_check()
# confirm the paddle's version
python
>> import paddle
>> print(paddle.__version__)
使用多GPU训练( multi-GPU),需要先安装 NCCL
link
4. 安装PaddleDetection
# Clone PaddleDetection repository
cd <path/to/clone/PaddleDetection>
git clone https://github.com/PaddlePaddle/PaddleDetection.git
# Install other dependencies
cd PaddleDetection
pip install -r requirements.txt
# Compile and install paddledet
python setup.py install
测试安装是否成功
python ppdet/modeling/tests/test_architectures.py
安装成功输出
.......
----------------------------------------------------------------------
Ran 7 tests in 12.816s
OK
5.推理测试
# Predict an image by 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.单卡训练
# training on single-GPU
export CUDA_VISIBLE_DEVICES=0
python tools/train.py -c configs/picodet/picodet_s_320_coco_lcnet.yml --eval
2.多卡训练
# training on multi-GPU
export CUDA_VISIBLE_DEVICES=0,1,2,3
python -m paddle.distributed.launch --gpus 0,1,2,3 tools/train.py -c configs/picodet/picodet_s_320_coco_lcnet.yml --eval
3.评估
python tools/eval.py -c configs/picodet/picodet_s_320_coco_lcnet.yml \
-o weights=https://paddledet.bj.bcebos.com/models/picodet_s_320_coco_lcnet.pdparams
4.测试
python tools/infer.py -c configs/picodet/picodet_s_320_coco_lcnet.yml \
-o weights=https://paddledet.bj.bcebos.com/models/picodet_s_320_coco_lcnet.pdparams
三、模型导出及转换
1. 导出模型
cd PaddleDetection
python tools/export_model.py -c configs/picodet/picodet_s_320_coco_lcnet.yml \
-o weights=https://paddledet.bj.bcebos.com/models/picodet_s_320_coco_lcnet.pdparams \
--output_dir=output_inference
- 如无需导出后处理,请指定:-o export.benchmark=True(如果-o已出现过,此处删掉-o)或者手动修改runtime.yml 中相应字段。
- 如无需导出NMS,请指定:-o export.nms=False或者手动修改runtime.yml 中相应字段。 许多导出至ONNX场景只支持单输入及固定shape输出,所以如果导出至ONNX,推荐不导出NMS。
2. 转换为Paddle Lite格式
- 安装Paddlelite>=2.10:
pip install paddlelite
- 转换模型至Paddle Lite格式:
# FP32
paddle_lite_opt --model_dir=output_inference/picodet_s_320_coco_lcnet --valid_targets=arm --optimize_out=picodet_s_320_coco_fp32
# FP16
paddle_lite_opt --model_dir=output_inference/picodet_s_320_coco_lcnet --valid_targets=arm --optimize_out=picodet_s_320_coco_fp16 --enable_fp16=true
3. 转换为ONNX格式
- 安装Paddle2ONNX >= 0.7 并且 ONNX > 1.10.1
pip install onnx
pip install paddle2onnx==0.9.2
- 转换模型
paddle2onnx --model_dir output_inference/picodet_s_320_coco_lcnet/ \
--model_filename model.pdmodel \
--params_filename model.pdiparams \
--opset_version 11 \
--save_file picodet_s_320_coco.onnx
- 简化模型:使用onnx-simplifier库来简化ONNX模型。
- 安装 onnxsim >= 0.4.1:
pip install onnxsim
-
- 简化ONNX模型:
onnxsim picodet_s_320_coco.onnx picodet_s_processed.onnx
总结
简单梳理流程。