利用PaddleDetection部署自己的轻量级移动检测嵌入式平台(多种高性能网络模型)--Pytorch实现

目录

文章核心:

1.效果图及视频展示

2.背景

3.安装PaddlePaddle

4.预训练模型的下载

比如yolov3在coco和voc数据集上的预训练模型和权重列表如下:

5.模型导出(python端)

6.模型预测

1.图片预测

2.视频预测,帧率在10左右

3.文件夹下图片预测

当然也可以自己进行训练,相应的指令为:

安装过程中遇到的其他问题:


全部源码均在PaddleDetection的官方Github上,地址如下:(本文用的版本是最新2.3的版本)

PaddlePaddle/PaddleDetection: Object Detection toolkit based on PaddlePaddle. It supports object detection, instance segmentation, multiple object tracking and real-time multi-person keypoint detection. (github.com)

文章核心:

        本片文章主要是通过利用PaddleDetection(飞桨)提供的框架,使用yolov3_darknet53、cascade_rcnn_dcn等经典网络达到对常规目标检测任务的轻量化实现,应用方面主要通过python端的部署(当然也可以通过c++的部署,官方地址里边有代码),并后续实现将模型部署到轻量化移动边缘设备中,从而实现轻量化嵌入式平台的深度学习任务,达到对深度物联网目标的追求!

1.效果图及视频展示

①图片展示

利用PaddleDetection部署自己的轻量级移动检测嵌入式平台(多种高性能网络模型)--Pytorch实现_第1张图片

利用PaddleDetection部署自己的轻量级移动检测嵌入式平台(多种高性能网络模型)--Pytorch实现_第2张图片

②视频展示

# 利用PaddleDetection部署自己的轻量级移动检测嵌入式平台(多种高性能网络模型)--Pytorch实现

2.背景

        PaddleDetection 是百度飞桨推出的物体检测统一框架。支持现有的RCNN、SSD、YOLO等系列模型、支持 ResNet、ResNet-VD、ResNeXt、ResNeXt-VD、SENet、MobileNet、DarkNet等主干网络。针对不同的业务场景(性能、目标大小、准确率等)可以选择框架中的不同模块组合得到最适合的模型,实现任务。相比于tensorflow的Object_Detection,优势之一就是将YOLOv3这一目标检测的快速算法融合到了框架下。

地址:飞桨PaddlePaddle-源于产业实践的开源深度学习平台

3.安装PaddlePaddle

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

或者通过Github地址:

PaddlePaddle/PaddleDetection: Object Detection toolkit based on PaddlePaddle. It supports object detection, instance segmentation, multiple object tracking and real-time multi-person keypoint detection. (github.com)

4.预训练模型的下载

PaddleDetection提供的非常丰富的预训练库,各种经典检测、分割、识别、追踪等任务的优秀框架模型供我们选择:

利用PaddleDetection部署自己的轻量级移动检测嵌入式平台(多种高性能网络模型)--Pytorch实现_第3张图片

比如yolov3在coco和voc数据集上的预训练模型和权重列表如下:

YOLOv3 on COCO:

骨架网络 输入尺寸 每张GPU图片个数 学习率策略 推理时间(fps) Box AP 下载 配置文件
DarkNet53(paper) 608 8 270e ---- 33.0 - -
DarkNet53(paper) 416 8 270e ---- 31.0 - -
DarkNet53(paper) 320 8 270e ---- 28.2 - -
DarkNet53 608 8 270e ---- 39.0 下载链接 配置文件
DarkNet53 416 8 270e ---- 37.5 下载链接 配置文件
DarkNet53 320 8 270e ---- 34.6 下载链接 配置文件
ResNet50_vd 608 8 270e ---- 39.1 下载链接 配置文件
ResNet50_vd 416 8 270e ---- 36.6 下载链接 配置文件
ResNet50_vd 320 8 270e ---- 33.6 下载链接 配置文件
ResNet34 608 8 270e ---- 36.2 下载链接 配置文件
ResNet34 416 8 270e ---- 34.3 下载链接 配置文件
ResNet34 320 8 270e ---- 31.2 下载链接 配置文件
MobileNet-V1 608 8 270e ---- 29.4 下载链接 配置文件
MobileNet-V1 416 8 270e ---- 29.3 下载链接 配置文件
MobileNet-V1 320 8 270e ---- 27.2 下载链接 配置文件
MobileNet-V3 608 8 270e ---- 31.4 下载链接 配置文件
MobileNet-V3 416 8 270e ---- 29.6 下载链接 配置文件
MobileNet-V3 320 8 270e ---- 27.1 下载链接 配置文件
MobileNet-V1-SSLD 608 8 270e ---- 31.0 下载链接 配置文件
MobileNet-V1-SSLD 416 8 270e ---- 30.6 下载链接 配置文件
MobileNet-V1-SSLD 320 8 270e ---- 28.4 下载链接 配置文件

YOLOv3 on Pasacl VOC:

骨架网络 输入尺寸 每张GPU图片个数 学习率策略 推理时间(fps) Box AP 下载 配置文件
MobileNet-V1 608 8 270e - 75.2 下载链接 配置文件
MobileNet-V1 416 8 270e - 76.2 下载链接 配置文件
MobileNet-V1 320 8 270e - 74.3 下载链接 配置文件
MobileNet-V3 608 8 270e - 79.6 下载链接 配置文件
MobileNet-V3 416 8 270e - 78.6 下载链接 配置文件
MobileNet-V3 320 8 270e - 76.4 下载链接 配置文件
MobileNet-V1-SSLD 608 8 270e - 78.3 下载链接 配置文件
MobileNet-V1-SSLD 416 8 270e - 79.6 下载链接 配置文件
MobileNet-V1-SSLD 320 8 270e - 77.3 下载链接 配置文件
MobileNet-V3-SSLD 608 8 270e - 80.4 下载链接 配置文件
MobileNet-V3-SSLD 416 8 270e - 79.2 下载链接 配置文件
MobileNet-V3-SSLD 320 8 270e - 77.3 下载链接 配置文件

注意: YOLOv3均使用8GPU训练,训练270个epoch。由于动态图框架整体升级,以下几个PaddleDetection发布的权重模型评估时需要添加--bias字段, 例如:

# 使用PaddleDetection发布的权重
CUDA_VISIBLE_DEVICES=0 python tools/eval.py -c configs/ppyolo/yolov3_darknet53_270e_coco.yml -o weights=https://paddledet.bj.bcebos.com/models/yolov3_darknet53_270e_coco.pdparams --bias

利用PaddleDetection部署自己的轻量级移动检测嵌入式平台(多种高性能网络模型)--Pytorch实现_第4张图片

5.模型导出(python端)

第三步骤中得到训练权重模型后,接下来进行python端的模型导出。

代码如下:

# 导出YOLOv3模型
python tools/export_model.py -c configs/yolov3/yolov3_darknet53_270e_coco.yml --output_dir=./inference_model \
 -o weights=weights/yolov3_darknet53_270e_coco.pdparams

利用PaddleDetection部署自己的轻量级移动检测嵌入式平台(多种高性能网络模型)--Pytorch实现_第5张图片

配置说明:

利用PaddleDetection部署自己的轻量级移动检测嵌入式平台(多种高性能网络模型)--Pytorch实现_第6张图片

导出成功后会出现如下几个文件:

利用PaddleDetection部署自己的轻量级移动检测嵌入式平台(多种高性能网络模型)--Pytorch实现_第7张图片

或者其他:

我自己用的:yolov3_darknet53_270e_coco

python tools/export_model.py -c configs/yolov3/yolov3_darknet53_270e_coco.yml --output_dir=./inference_model -o weights=weights/yolov3_darknet53_270e_coco.pdparams TestReader.inputs_def.image_shape=[3,640,640]

我自己用的:cascade_rcnn_dcn_x101_vd_64x4d_fpn_1x_coco

python tools/export_model.py -c configs/dcn/cascade_rcnn_dcn_x101_vd_64x4d_fpn_1x_coco.yml --output_dir=./inference_model -o weights=weights/cascade_rcnn_dcn_x101_vd_64x4d_fpn_1x_coco.pdparams

6.模型预测

支持很多种方法的预测,包括:单张图片、文件夹下图片、单个视频、文件夹下视频、实时调用摄像头等。

参数配置如下:

FLAG 支持脚本 用途 默认值 备注
-c ALL 指定配置文件 None 必选,例如-c configs/faster_rcnn/faster_rcnn_r50_fpn_1x_coco.yml
-o ALL 设置或更改配置文件里的参数内容 None 相较于-c设置的配置文件有更高优先级,例如:-o use_gpu=False
--eval train 是否边训练边测试 False 如需指定,直接--eval即可
-r/--resume_checkpoint train 恢复训练加载的权重路径 None 例如:-r output/faster_rcnn_r50_1x_coco/10000
--slim_config ALL 模型压缩策略配置文件 None 例如--slim_config configs/slim/prune/yolov3_prune_l1_norm.yml
--use_vdl train/infer 是否使用VisualDL记录数据,进而在VisualDL面板中显示 False VisualDL需Python>=3.5
--vdl_log_dir train/infer 指定 VisualDL 记录数据的存储路径 train:vdl_log_dir/scalar infer: vdl_log_dir/image VisualDL需Python>=3.5
--output_eval eval 评估阶段保存json路径 None 例如 --output_eval=eval_output, 默认为当前路径
--json_eval eval 是否通过已存在的bbox.json或者mask.json进行评估 False 如需指定,直接--json_eval即可, json文件路径在--output_eval中设置
--classwise eval 是否评估单类AP和绘制单类PR曲线 False 如需指定,直接--classwise即可
--output_dir infer/export_model 预测后结果或导出模型保存路径 ./output 例如--output_dir=output
--draw_threshold infer 可视化时分数阈值 0.5 例如--draw_threshold=0.7
--infer_dir infer 用于预测的图片文件夹路径 None --infer_img--infer_dir必须至少设置一个
--infer_img infer 用于预测的图片路径 None --infer_img--infer_dir必须至少设置一个,infer_img具有更高优先级
--save_txt infer 是否在文件夹下将图片的预测结果保存到文本文件中 False 可选

这里举例我使用的几个tricks:

.图片预测

python deploy/python/infer.py --model_dir=./inference_model/yolov3_darknet53_270e_coco --image_file=./demo/000000570688.jpg --device=GPU

2.视频预测,帧率在10左右

python deploy/python/infer.py --model_dir=./inference_model/yolov3_darknet53_270e_coco --camera_id=0 --device=GPU

按”q“退出~

3.文件夹下图片预测

python deploy/python/infer.py --model_dir=./inference_model/yolov3_darknet53_270e_coco --image_dir=./image --device=GPU

当然也可以自己进行训练,相应的指令为:

set PYTHONPATH=$PYTHONPATH:.
set CUDA_VISIBLE_DEVICES=0
python -u tools/train.py -c dataset/hongwai/yolov3_mobilenet_v1_hongwaiface.yml --eval

安装过程中遇到的其他问题:

注意:pycocotools的适配python版本目前最高为3.8

Links for pycocotools-windows (tsinghua.edu.cn)

【我有预感,点赞、评论和关注我的人,痘痘会慢慢消下去,皮肤会变白,变瘦变高,成绩上升,事业突出,会越来越好,喜欢你的人会向你表白,世人如满天星斗,而你皆如万人捧花,祝你也祝我!!!】

你可能感兴趣的:(深度学习算法,走向轻量化,pytorch,深度学习,目标检测,人工智能,PaddleDetection)