paddleDetection-目标检测全流程教程

参考链接:
https://github.com/PaddlePaddle/PaddleDetection/blob/release/2.0-rc/docs/tutorials/DetectionPipeline.md

文教程以路标数据集为例,使用yoloV3算法详细说明paddleDetection全流程使用教程,包含:准备数据,选择模型,训练模型,评估,预测,模型压缩和模型部署。

数据准备

关于数据准备的请参考:

注意:
(1)数据集中路径名、文件名不要包含空格,尽量不要使用中文
(2)用户数据,建议在训练前仔细检查 数据,避免因数据标注格式错误或图像数据不完整造成训练过程中的中断
(2)如果图像尺寸太大的话,在不限制读入数据尺寸情况下,占用内存较多,会造成内存/显存溢出,请合理设置batch_size,可从小到大尝试

模型选择

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

本教程选用YOLOv3作为训练模型。

训练和模型评估

请参考此链接:

模型训练和预测

推理部署

在模型部署之前,如果您需要对模型进行压缩,PaddleDetection提供了基于PaddleSlim 进行模型压缩的完整教程和实验结果,详细请参考:量化、剪枝、蒸馏、搜索 。
详细部署文档请参考PaddleDetection预测部署文档。这里以PaddleServing部署方式为例说明。

安装paddle-serving-client和paddle-serving-server

# 安装 paddle-serving-client
pip install paddle-serving-client -i https://mirror.baidu.com/pypi/simple

# 安装 paddle-serving-server
pip install paddle-serving-server -i https://mirror.baidu.com/pypi/simple

# 安装 paddle-serving-server-gpu
pip install paddle-serving-server-gpu -i https://mirror.baidu.com/pypi/simple

导出模型

python tools/export_serving_model.py -c configs/yolov3_mobilenet_v1_roadsign.yml -o use_gpu=true weights=output/yolov3_mobilenet_v1_roadsign/best_model --output_dir=./inference_model

结果显示
以上命令会在./inference_model文件夹下生成一个yolov3_mobilenet_v1_roadsign文件夹:

扫描二维码关注公众号,回复: 13099933 查看本文章
inference_model
│   ├── yolov3_mobilenet_v1_roadsign
│   │   ├── infer_cfg.yml
│   │   ├── serving_client
│   │   │   ├── serving_client_conf.prototxt
│   │   │   ├── serving_client_conf.stream.prototxt
│   │   ├── serving_server
│   │   │   ├── conv1_bn_mean
│   │   │   ├── conv1_bn_offset
│   │   │   ├── conv1_bn_scale
│   │   │   ├── ...

启动PaddleServing服务

cd inference_model/yolov3_mobilenet_v1_roadsign/

# GPU
python -m paddle_serving_server_gpu.serve --model serving_server --port 9393 --gpu_ids 0

# CPU
python -m paddle_serving_server.serve --model serving_server --port 9393
注意:
遇到的一些问题:
1:/root/anaconda3/lib/python3.7/site-packages/paddle_serving_server/serving-cpu-avx-openblas-0.5.0/serving: /lib64/libstdcn `CXXABI_1.3.8' not found (required by /root/anaconda3/lib/python3.7/site-packages/paddle_serving_server/serving-cpu-av0/serving)

https://github.com/cdr/code-server/issues/347#issuecomment-482670081

2:

在这里插入图片描述

测试部署的服务

准备label_list.txt文件

# 进入到导出模型文件夹
cd inference_model/yolov3_mobilenet_v1_roadsign/

# 将数据集对应的label_list.txt文件拷贝到当前文件夹下
cp ../../dataset/roadsign_voc/label_list.txt .

设置测试文件test_client.py中的prototxt文件路径为serving_client/serving_client_conf.prototxt 。
设置fetch为fetch=[“multiclass_nms_0.tmp_0”])

测试

# 进入目录
cd inference_model/yolov3_mobilenet_v1_roadsign/

# 测试代码 test_client.py 会自动创建output文件夹,并在output下生成`bbox.json`和`road554.png`两个文件
python ../../deploy/serving/test_client.py ../../demo/road554.png

请关注我的个人微信公众号

在这里插入图片描述

参考链接

  • https://github.com/PaddlePaddle/PaddleDetection/blob/release/2.0-rc/docs/tutorials/DetectionPipeline.md

猜你喜欢

转载自blog.csdn.net/zhonglongshen/article/details/114661956
今日推荐