当前位置: 首页 > news >正文

OpenVINO+Yolov5+Windows10的CPU部署

主要是记录一些参考网址,顺便记录一些废话。。。

在windows上,有时部署还是挺痛苦的,相对部署的人比较少,参考资料也不多,很多模型要自己去摸索。OpenVINO的话主要看官方的模型。

为了在Windows上部署模型,通常我们可以这样做:
(1)可以选择一些比较容易或别人已经部署过的模型。
(2)在没有GPU的情况下,一般用NCNN比较容易成功。本人多次在windows上编译过这个短小精悍的NCNN。
(3)如果用GPU话,可能还是TensorRT更合适。另外libTorch也是个不错的选择。
(4)不用GPU的情况下,windows上OpenVINO和OnnxRuntime可能相对较好。其实我也不是专业部署人员,所以也不敢肯定,只能凭自己的经验说,Intel和Microsoft对windows的平台支持还是要稍微好一点,毕竟自家的平台(虽然Microsoft这些年有被别人牵着鼻子走的感觉),纯CPU的话,我貌似还没有找到比OpenVINO更快的部署工具。

关于OpenVINO的入门介绍可以参考我的前两篇文章:

玩转OpenVINO之一:cpp samples和demo的编译_tanmx219的博客-CSDN博客_openvino 编译demo
玩转OpenVINO之二:试运行mask_rcnn_demo_tanmx219的博客-CSDN博客

好了,言归正传,下面我们来试试在win10上用OpenVINO部署Yolov5,我这里模型很小,用CPU直接部署。

我这里OpenVINO_2021-4.2是自己用VS2017编译的,其主目录地址是:
D:\OpenCV455\openvino

同时我还安装了OpenVINO-toolKit_2021-4.2LTS,
https://registrationcenter-download.intel.com/akdlm/irc_nas/18320/w_openvino_toolkit_p_2021.4.752.exehttps://registrationcenter-download.intel.com/akdlm/irc_nas/18320/w_openvino_toolkit_p_2021.4.752.exe其主目录地址是
C:\Program1\Intel\openvino_2021.4.752
C:\Program1\Intel\openvino_2021.4.752\deployment_tools,

我这里用的是自己用VS2017编译的版本。

Yolov5经过不断更新,已经做得比较人性化了。现在可以直接从Yolov5中用export_openvino直接导出,其导出函数定义为

def export_openvino(model, im, file, prefix=colorstr('OpenVINO:')):
    # YOLOv5 OpenVINO export
    try:
        check_requirements(('openvino-dev',))  # requires openvino-dev: https://pypi.org/project/openvino-dev/
        import openvino.inference_engine as ie

        LOGGER.info(f'\n{prefix} starting export with openvino {ie.__version__}...')
        f = str(file).replace('.pt', '_openvino_model' + os.sep)

        cmd = f"mo --input_model {file.with_suffix('.onnx')} --output_dir {f}"
        subprocess.check_output(cmd, shell=True)

        LOGGER.info(f'{prefix} export success, saved as {f} ({file_size(f):.1f} MB)')
    except Exception as e:
        LOGGER.info(f'\n{prefix} export failure: {e}')

可见,其使用的代码就是

“mo --input_model {file.with_suffix('.onnx')} --output_dir {f}”

这个命令相当于我在D:\OpenCV455\openvino目录下使用的命令:

"python  ./mo_onnx.py --input_model .onnx文件路径  --output_dir  期望模型输出的路径"

注意要保持版本一致,任何一种方式都是可以的。如果不确定,比如我这里,那就老老实实使用“D:\OpenCV455\openvino”下面的转换,完成后再用自己编译的“D:\OpenCV455\openvino”下面的库部署。

部署的源码可参考后面给出的例子,跑的时候会有些问题,我因为自己修改了Yolov5模型,因此部署也适当做了些变更。经测试CPU模式下,每秒十帧以上无压力,OpenVINO对自家平台的支持还是相当不错的。

参考源码:

https://github.com/fanweiya/openvino_yolov5_cpphttps://github.com/fanweiya/openvino_yolov5_cpphttps://github.com/fb029ed/yolov5_cpp_openvinohttps://github.com/fb029ed/yolov5_cpp_openvino

相关文章:

  • PCD(点云数据)文件格式
  • Labelme在windows下的编译与vscode开发执行
  • Tools_vcpkg包管理工具在VS2019项目开发中的使用
  • Windows通过winscp登陆Ubuntu18.04
  • Ubuntu18.04安装RTL8125/RTL8168等网卡驱动程序
  • Ubuntu如何卸载cuda driver
  • Ubuntu20.04安装Cuda driver + toolkit + cudnn
  • ROS安装时:找不到有效的OpenPGP数据
  • ROS报错:-- Could NOT find PY_em (missing: PY_EM)
  • SLAM算法r3live试运行
  • VINS-MONO:integer_sequence_algorithm.h:64:21: error: ‘integer_sequence’ is not a member of ‘std’
  • Ubuntu如何查看eigen版本
  • Ubuntu命令查看CPU信息
  • ROS报错: Unable to communicate with master
  • ROS报错:Roslaunch got a ‘No such file or directory‘ error while attempting to run xterm -e gdb --args
  • 收藏网友的 源程序下载网
  • 2017-09-12 前端日报
  • Centos6.8 使用rpm安装mysql5.7
  • Create React App 使用
  • Git初体验
  • java8 Stream Pipelines 浅析
  • nginx 负载服务器优化
  • React-redux的原理以及使用
  • Vue.js-Day01
  • vue和cordova项目整合打包,并实现vue调用android的相机的demo
  • 半理解系列--Promise的进化史
  • 记录一下第一次使用npm
  • 浏览器缓存机制分析
  • 漂亮刷新控件-iOS
  • 为物联网而生:高性能时间序列数据库HiTSDB商业化首发!
  •  一套莫尔斯电报听写、翻译系统
  • 优化 Vue 项目编译文件大小
  • Hibernate主键生成策略及选择
  • puppet连载22:define用法
  • 关于Android全面屏虚拟导航栏的适配总结
  • 扩展资源服务器解决oauth2 性能瓶颈
  • ​如何使用ArcGIS Pro制作渐变河流效果
  • # centos7下FFmpeg环境部署记录
  • $().each和$.each的区别
  • (1)Nginx简介和安装教程
  • (ZT)薛涌:谈贫说富
  • (博弈 sg入门)kiki's game -- hdu -- 2147
  • (独孤九剑)--文件系统
  • (一)Spring Cloud 直击微服务作用、架构应用、hystrix降级
  • (原創) 如何讓IE7按第二次Ctrl + Tab時,回到原來的索引標籤? (Web) (IE) (OS) (Windows)...
  • (转) RFS+AutoItLibrary测试web对话框
  • .net core MVC 通过 Filters 过滤器拦截请求及响应内容
  • .NET Core、DNX、DNU、DNVM、MVC6学习资料
  • .NET 程序如何获取图片的宽高(框架自带多种方法的不同性能)
  • .NET 使用 JustAssembly 比较两个不同版本程序集的 API 变化
  • .NET 中让 Task 支持带超时的异步等待
  • .NET开源的一个小而快并且功能强大的 Windows 动态桌面软件 - DreamScene2
  • .NET设计模式(11):组合模式(Composite Pattern)
  • ??eclipse的安装配置问题!??
  • @AutoConfigurationPackage的使用