如何在 C++ 代码中运行 Yolov5 tensorflow model.pb?

Posted

技术标签:

【中文标题】如何在 C++ 代码中运行 Yolov5 tensorflow model.pb?【英文标题】:How to run Yolov5 tensorflow model.pb inside c++ code? 【发布时间】:2021-12-16 16:58:52 【问题描述】:

我已经使用 yolov5 训练了一个模型,我得到了我转换的 model.pt 现在我想要它使用导出文件到 TensorFlow 兼容的 model.pb 用 c++ 而不是 python 使用这个模型我做了很多研究 但我确实配置了如何做到这一点,所以我在哪里可以找到 在 c++ 代码中使用 model.pb 的示例?

我尝试使用 TochScript 运行 model.pt,它运行良好我尝试过 运行 model.onnx 它运行但速度很慢我现在正在尝试运行 模式.pb

【问题讨论】:

【参考方案1】:

我没有找到直接运行 model.pb 的方法,但经过长时间的研究,我已经能够运行 saved_model。有重要的代码行

// the input node is:
const string input_node = "serving_default_input_1:0";
// the output node is:
std::vector<string> output_nodes ="StatefulPartitionedCall:0"; 



tensorflow::SavedModelBundle bundle;
//std::string path = path to the saved model folder ./yolov5s_saved_model/
tensorflow::LoadSavedModel(session_options, run_options, path, "serve",
        &bundle);

std::vector<std::pair<string, Tensor>> inputs_data  = input_node, image_output; 
std::vector<tensorflow::Tensor> predictions;
bundle.GetSession()->Run( inputs_data , output_nodes, , &predictions);

【讨论】:

以上是关于如何在 C++ 代码中运行 Yolov5 tensorflow model.pb?的主要内容,如果未能解决你的问题,请参考以下文章

用C++部署yolov5+deepsort+tensorrt实现目标跟踪

《模型轻量化-剪枝蒸馏量化系列》YOLOv5无损剪枝(附源码)

《模型轻量化-剪枝蒸馏量化系列》YOLOv5无损剪枝(附源码)

YOLOV5 代码复现以及搭载服务器运行

GitHub YOLOv5 开源代码项目系列讲解------源码下载环境配置及运行

高通平台开发系列讲解(AI篇)如何让yolov5运行在SNPE