最新公告
  • 欢迎光临数据科学与编程,我们是数据学科学兴趣交流小组立即加入我们
  • YOLOv5从入门到部署之:模型部署

    本文记录了YOLOv5的部署过程,包含以下代码,下载方式在文末。

    (1)onnxruntime部署代码;

    (2)flask部署代码;

    (3)ncnn部署代码;

    1 ONNX
    在模型部署之前,先介绍如何把训练好的YOLOv5模型从PyTorch导出到ONNX。为后续端上部署做准备。

    Setp1:安装环境,前面我们已经安装好了yolov5需要的环境pip install -r requirements.txt现在我们还需要再安装onnx和coremltools。

    Setp2:将预先训练的 YOLOv5s 模型导出为 ONNX、TorchScript 和 CoreML 格式

    转换过程会有如下日志输出:

    YOLOv5从入门到部署之:模型部署

    导出的3种模型与原始 PyTorch 模型一起保存

    YOLOv5从入门到部署之:模型部署

    需要注意的是,export.py 导出可以导出两种 YOLOv5的ONNX模型,一种是无解码的模型,一种是有解码的模型,可以通过Detect层进行配置,如下:

    Setp3:检测

    ONNX模型的推理有多种框架可以选择,这里我们参考了一些资料,使用onnxruntime进行推理。

    首先,先加载模型:

    然后,对图像做好预处理后,进行模型的推理:

    最后,对包含解码的ONNX模型,只需要进行MNS操作即可,对没有后处理的ONNX模型,还需要先进行解码再进行MNS。

    2 Flask部署

    首先确保安装了pytorch,因为需要使用flask这个web框架,所以当然需要安装flask,非常简单,使用下面的命令进行安装。

    每次启动模型,加载模型是一件非常费时间的事情,所以最好的办法就是load一次模型。我们直接使用YOLOv5里面的attempt_load函数进行加载。

    接着,就是 YOLOv5 中标准的预处理流程,首先将图片resize到固定的大小,然后转换成 tensor,接着做标准化。

    然后,定义请求方式为 POST,表示向服务器传输数据,接着定义一个 predict 函数来进行模型的前向传播。

    最后我们在 main 函数中调用

    测试时,需要先启动flask服务:

    然后,使用curl命令或者提供的python脚本去访问服务器:

    测试结果如下

    YOLOv5从入门到部署之:模型部署

    3 NCNN部署

    以无解码部分的模型为例,先要编译好ncnn,建议在Linux环境下编译。
    Setp1:先用onnxsim进行模型简化:

    Step2简化后的onnx模型转化为ncnn的模型

    Setp3推理

    加载放在example/yolov5目录下的模型:

    然后进行YOLOv5 中标准的预处理流

    最后进行解码和NMS操作:


    测试结果如下:

    YOLOv5从入门到部署之:模型部署

    总结

    Yolov5从它出现以来就饱受争议,大家认为它的创新不足更应该叫做yolov4的pytorch版本。但是不可否认的是yolov5是一个优秀的目标检测框架,yolov5大量整合了计算机视觉领域的State-of-the-art,它相对于yolov4更方便我们的使用,我们可以在yaml文件简单的修改网络结构,代码的可读性更高,能够更方便修改代码。

    本站上原创文章未经作者许可,不得用于商业用途,仅做学习交流使用,本站免责声明。转载请注明出处,否则保留追究法律责任的权利。《署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)》许可协议授权
    数据科学与编程 » YOLOv5从入门到部署之:模型部署

    发表评论

    • 52会员总数(位)
    • 310资源总数(个)
    • 30本周发布(个)
    • 1 今日发布(个)
    • 331稳定运行(天)

    提供最优质的博文资源集合

    立即阅览 了解详情