YOLOv3-tiny怎么在VS2015上使用Openvino部署

发布时间:2021-11-10 11:01:27 作者:柒染
来源:亿速云 阅读:151

YOLOv3-tiny怎么在VS2015上使用Openvino部署

引言

YOLOv3-tiny是YOLO(You Only Look Once)系列中的一个轻量级目标检测模型,适用于实时目标检测任务。OpenVINO(Open Visual Inference and Neural Network Optimization)是英特尔推出的一款用于加速深度学习推理的工具套件。本文将详细介绍如何在Visual Studio 2015(VS2015)上使用OpenVINO部署YOLOv3-tiny模型。

环境准备

在开始之前,确保你已经准备好以下环境:

  1. Visual Studio 2015:确保已经安装并配置好VS2015。
  2. OpenVINO Toolkit:下载并安装OpenVINO Toolkit,建议使用最新版本。
  3. YOLOv3-tiny模型:下载YOLOv3-tiny的权重文件(.weights)和配置文件(.cfg)。
  4. Python环境:用于模型转换和优化。

步骤一:安装OpenVINO Toolkit

  1. 下载OpenVINO Toolkit:从英特尔官方网站下载适合你操作系统的OpenVINO Toolkit。
  2. 安装OpenVINO Toolkit:按照安装向导完成安装过程。
  3. 配置环境变量:安装完成后,运行setupvars.bat脚本以配置环境变量。该脚本通常位于<OpenVINO_install_dir>\bin\目录下。

步骤二:转换YOLOv3-tiny模型为OpenVINO格式

OpenVINO使用IR(Intermediate Representation)格式的模型进行推理。因此,我们需要将YOLOv3-tiny模型转换为IR格式。

  1. 安装依赖:确保你已经安装了Python和OpenVINO的Python API。

  2. 下载YOLOv3-tiny模型:从Darknet官网下载YOLOv3-tiny的权重文件(yolov3-tiny.weights)和配置文件(yolov3-tiny.cfg)。

  3. 使用Model Optimizer转换模型:OpenVINO提供了Model Optimizer工具,用于将模型转换为IR格式。

    python mo.py --input_model yolov3-tiny.weights --input_shape [1,416,416,3] --scale 255 --reverse_input_channels --output_dir <output_dir>
    

    其中,<output_dir>是你希望保存转换后模型的目录。

  4. 生成IR文件:转换完成后,你将在输出目录中看到两个文件:yolov3-tiny.xmlyolov3-tiny.bin。这两个文件是OpenVINO推理所需的IR文件。

步骤三:配置Visual Studio 2015项目

  1. 创建新项目:在VS2015中创建一个新的C++项目。
  2. 配置项目属性
    • 包含目录:添加OpenVINO的头文件目录,通常位于<OpenVINO_install_dir>\deployment_tools\inference_engine\include
    • 库目录:添加OpenVINO的库文件目录,通常位于<OpenVINO_install_dir>\deployment_tools\inference_engine\lib\<arch>,其中<arch>是你的系统架构(如intel64)。
    • 附加依赖项:添加以下库文件:
      • inference_engine.lib
      • inference_engine_legacy.lib
      • inference_engine_transformations.lib
      • ngraph.lib
  3. 配置调试环境:确保调试环境中的PATH变量包含OpenVINO的DLL文件路径,通常位于<OpenVINO_install_dir>\deployment_tools\inference_engine\bin\<arch>

步骤四:编写推理代码

在VS2015项目中,编写C++代码以加载YOLOv3-tiny模型并进行推理。

  1. 包含头文件

    #include <inference_engine.hpp>
    #include <opencv2/opencv.hpp>
    
  2. 加载模型

    InferenceEngine::Core core;
    InferenceEngine::CNNNetwork network = core.ReadNetwork("yolov3-tiny.xml", "yolov3-tiny.bin");
    
  3. 配置输入输出

    InferenceEngine::InputsDataMap input_info = network.getInputsInfo();
    InferenceEngine::OutputsDataMap output_info = network.getOutputsInfo();
    
    
    for (auto &item : input_info) {
        item.second->setPrecision(InferenceEngine::Precision::U8);
    }
    
    
    for (auto &item : output_info) {
        item.second->setPrecision(InferenceEngine::Precision::FP32);
    }
    
  4. 加载模型到设备

    std::string device = "CPU";
    InferenceEngine::ExecutableNetwork executable_network = core.LoadNetwork(network, device);
    
  5. 创建推理请求

    InferenceEngine::InferRequest infer_request = executable_network.CreateInferRequest();
    
  6. 准备输入数据

    cv::Mat image = cv::imread("input_image.jpg");
    cv::resize(image, image, cv::Size(416, 416));
    
    
    InferenceEngine::Blob::Ptr input_blob = infer_request.GetBlob(input_info.begin()->first);
    InferenceEngine::MemoryBlob::Ptr minput = InferenceEngine::as<InferenceEngine::MemoryBlob>(input_blob);
    auto minputHolder = minput->wmap();
    
    
    unsigned char* data = minputHolder.as<unsigned char*>();
    std::memcpy(data, image.data, image.total() * image.elemSize());
    
  7. 执行推理

    infer_request.Infer();
    
  8. 处理输出结果

    InferenceEngine::Blob::Ptr output_blob = infer_request.GetBlob(output_info.begin()->first);
    InferenceEngine::MemoryBlob::Ptr moutput = InferenceEngine::as<InferenceEngine::MemoryBlob>(output_blob);
    auto moutputHolder = moutput->rmap();
    
    
    const float* detection = moutputHolder.as<const float*>();
    
  9. 解析检测结果:根据YOLOv3-tiny的输出格式解析检测结果,并在图像上绘制检测框。

步骤五:编译和运行

  1. 编译项目:在VS2015中编译项目,确保没有错误。
  2. 运行项目:运行生成的可执行文件,查看推理结果。

常见问题及解决方案

  1. 模型转换失败:确保使用的Model Optimizer版本与OpenVINO版本匹配,并且输入的模型文件路径正确。
  2. 推理速度慢:尝试使用GPU或其他硬件加速设备进行推理。
  3. 内存泄漏:确保在代码中正确释放资源,避免内存泄漏。

结论

通过以上步骤,你可以在Visual Studio 2015上使用OpenVINO成功部署YOLOv3-tiny模型。OpenVINO提供了强大的工具和API,使得深度学习模型的部署和优化变得更加简单和高效。希望本文能帮助你顺利完成YOLOv3-tiny的部署任务。


参考文献: - OpenVINO官方文档 - YOLO官方GitHub仓库

推荐阅读:
  1. 在Centos上Rpm模式部署Mysql
  2. vs2015的部署以及一些其他问题

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

vs2015 openvino yolov3-tiny

上一篇:怎么理解CSS中display:none与visibility:hidden

下一篇:Django中的unittest应用是什么

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》