深度学习模型(yolov5)压缩

文章目录

  • 前言
  • 一、环境搭建
  • 二、代码拉取
  • 三、数据集准备
  • 四、模型准备
  • 五、开始压缩
  • 六、结果对比
    • 1、体积对比:
    • 2、推理速度(3080Ti下未开trt)
  • 七、错误解决
  • 总结


前言

当我们利用深度学习训练出我们的模型之后,下一步会做什么呢?无疑是去测试我们的模型,精度达到标准既可发布上线,那发布之后我们会发现的问题是->推理时间慢,那我们该怎么做呢?以下几个思路可供借鉴,这里以yolov5为例:

  • 更改网络为轻量级,如YOLOv5s、YOLOv5n
  • 通过技术手段进行模型加速,如tensorrt,openvino等
  • 资金雄厚的情况下,可以考虑使用更高算力的卡
  • 模型压缩
    接下来,就给大家介绍下发现的一个用于模型压缩的工具–>PaddleSlim

一、环境搭建

该说不说,paddle的环境还是比较难搞的,感觉兼容性做的不是很好,为了让大家避开我踩过的坑,这里我建议直接去官网下最新的版本,但是一定要看你你安装的是GPU还是CPU,命令如下:

pip install paddlepaddle-gpu -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install paddleslim -i https://pypi.tuna.tsinghua.edu.cn/simple

版本对照表如下,仅供参考:
深度学习模型(yolov5)压缩_第1张图片
最省事的还是docker安装paddle,会直接避开很多坑
安装完成后,验证是否安装成功:

  • 验证paddl
import paddle
paddle.utils.run_check()

若出现在这里插入图片描述
则证明安装成功

  • 验证paddleslim
import paddleslim

一般情况下,导入没问题的话,基本就没有问题

二、代码拉取

拉取paddleslim的源码,链接如下:PaddleSlim

三、数据集准备

  • 数据格式的话大体采用COCO格式,如下:
    深度学习模型(yolov5)压缩_第2张图片
    当然,如果我们也可以使用自己的数据集,但前提是数据摆放要和上边一致,然后修改paddleslim/example/auto_compression/pytorch_yolo_series/configs/yolov5s_qat_dis.yaml里的数据集路径即可,如:

深度学习模型(yolov5)压缩_第3张图片
-无标注图片,直接传入脱氨文件夹,不支持评估模型MAP(官方文档中所说)
如果我们懒的去改数据格式或者去标注新数据,那就直接在yolov5s_qat_dis.yaml里修改image_path参数,如:
在这里插入图片描述
这里设置了之后就不用去管下边那个coco路径的设置了

四、模型准备

这里我们需要提前准备好要转换的pt模型,并提前转换为onnx或paddle的格式。需要注意的是:如果你项目的推理框架打算用paddle的话,那两种方案都可以,如果不打算用paddle的话,建议用onnx,压缩时会自动进行模型转换。我的推理框架用的是paddle,所以我就直接使用了提前住哪换好的paddle格式的模型。

  • 转换onnx的话,可以在YOLOv5中利用exoport.py脚本进行住哪换,如:
python export.py --weights yolov5s.pt --include onnx
  • 转换为paddle格式的话,可以参考我的另一篇博客:onnx2paddle,然后子啊yolov5s_qat_dis.yaml中指定模型路径,如下:
    在这里插入图片描述
    其次,由于我们不在需要onnx2paddle或者paddle2onnx这个过程,所以需要将onnx_format改为False,如下:
    在这里插入图片描述

五、开始压缩

命令如下,这里只展示单卡训练的:

cd example/auto_compression/pytorch_yolo_series
CUDA_VISIBLE_DEVICES=0 python run.py --config_path=./configs/yolov5s_qat_dis.yaml --save_dir="./output"

详细训练参考链接如下:训练

六、结果对比

1、体积对比:

压缩前:
在这里插入图片描述
压缩后:
在这里插入图片描述
这里模型参数没减少的原因可以参考这个链接这里

2、推理速度(3080Ti下未开trt)

压缩前:
深度学习模型(yolov5)压缩_第4张图片

压缩后:
深度学习模型(yolov5)压缩_第5张图片

七、错误解决

在整个过程中,可能会遇到如下错误:
深度学习模型(yolov5)压缩_第6张图片
原因可能就是版本问题,这个问题折磨我好久,所以一定要注意版本。参考的解决连接如下:bug解决
验证这个问题是否解决最快的方式就是直接import paddleslim,如果没出这个错就说明解决了


总结

以上就是本篇的全部内容,欢迎大家指正问题。

你可能感兴趣的:(深度学习,神经网络,目标检测,paddlepaddle,视觉检测)