news 2026/2/3 2:22:19

Yolov5 v6.2实例分割在Labview工业应用中的惊艳表现

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Yolov5 v6.2实例分割在Labview工业应用中的惊艳表现

yolov5v6.2 实例分割 Labview工业应用,封装dll后labview调用,支持openvino dnn onnxruntime和tensorrt四种方式推理,500万像素图像:cpu下openvino推理只要85ms、GPU下tensorrt推理只要25ms,最强实例分割模型。

在工业视觉领域,精准且高效的目标检测与分割一直是追求的目标。今天咱们就来聊聊Yolov5 v6.2实例分割在Labview工业应用中的精彩实践,而且还支持OpenVINO、DNN、ONNXRuntime和TensorRT四种推理方式,简直不要太强大。

Yolov5 v6.2的实力

Yolov5本身就是目标检测领域的明星模型,v6.2版本在性能上更是有了进一步提升。它能够在各种复杂场景下准确识别和分割目标物体,对于工业应用中常见的500万像素图像,处理起来游刃有余。就比如在一些生产线上对零部件的检测,无论是形状、尺寸还是表面缺陷,Yolov5 v6.2实例分割都能清晰地分辨出来。

封装DLL与Labview调用

为了能在Labview环境中方便地使用Yolov5 v6.2,我们需要将其封装成DLL。这一步其实就像是给一个功能强大的工具做了一个标准化的接口,让Labview这个平台能够轻松调用。

下面简单说下大概的封装思路(这里以C++为例,实际操作会更复杂些):

// 假设这里有已经训练好的Yolov5模型相关代码 #include <iostream> // 引入相关的深度学习库头文件,例如OpenCV用于图像处理 #include <opencv2/opencv.hpp> // 定义导出函数,Labview将通过这个函数调用Yolov5的推理功能 extern "C" __declspec(dllexport) void yolov5_inference(cv::Mat& input_image, std::vector<DetectedObject>& results) { // 这里加载Yolov5模型,假设模型文件路径已知 // 实际中需要根据模型格式和使用的推理框架来正确加载 // 例如如果是ONNX模型结合ONNXRuntime加载方式类似这样 Ort::Env env(ORT_LOGGING_LEVEL_WARNING, "Yolov5_Env"); Ort::SessionOptions session_options; Ort::Session session(env, "yolov5.onnx", session_options); // 获取输入输出节点信息等操作 // 对输入图像进行预处理,这是很关键的一步,要符合模型输入要求 cv::Mat preprocessed_image = preprocess(input_image); // 进行推理 Ort::Value input_tensor = create_input_tensor(env, preprocessed_image); std::vector<Ort::Value> output_tensors; session.Run(Ort::RunOptions{ nullptr }, input_node_names.data(), &input_tensor, 1, output_node_names.data(), output_tensors.size(), output_tensors.data()); // 对推理结果进行后处理,得到检测到的物体信息,填充到results中 postprocess(output_tensors, results); }

这段代码简单展示了一个导出函数yolov5_inference,它接收一个输入图像并输出检测结果。这里面涉及到模型加载、图像预处理、推理以及结果后处理等关键步骤。当然,实际工程中还需要处理更多的细节,比如错误处理、内存管理等。

在Labview中调用这个封装好的DLL也不难,通过Labview的“调用库函数节点”,设置好相应的参数,就能顺利调用Yolov5的推理功能,实现对图像的实例分割。

四种推理方式的魅力

OpenVINO推理

OpenVINO是英特尔推出的一个强大的推理框架,在CPU上表现出色。对于500万像素图像,OpenVINO推理只要85ms。这得益于OpenVINO对英特尔CPU指令集的优化。它能够高效地利用CPU的多核性能,对模型计算进行加速。在代码层面,使用OpenVINO加载模型和推理的过程如下(简化示例):

// 引入OpenVINO相关头文件 #include <inference_engine.hpp> // 使用OpenVINO进行推理 void openvino_inference(cv::Mat& input_image, std::vector<DetectedObject>& results) { // 创建Core对象 InferenceEngine::Core ie; // 读取模型,这里假设模型文件路径已知 auto network = ie.ReadNetwork("yolov5.xml"); // 设置输入输出信息等操作 // 加载模型到设备(这里是CPU) auto executable_network = ie.LoadNetwork(network, "CPU"); // 创建推理请求 auto infer_request = executable_network.CreateInferRequest(); // 图像预处理,转换为OpenVINO要求的格式 InferenceEngine::Blob::Ptr input = InferenceEngine::make_shared_blob<InferenceEngine::PrecisionTrait<InferenceEngine::Precision::FP32>::value_type>(input_dims); input->allocate(); InferenceEngine::MemoryBlob::CPtr minput = InferenceEngine::as<InferenceEngine::MemoryBlob>(input); if (!minput) { throw std::logic_error("We expect input to be inherited from MemoryBlob"); } auto minputHolder = minput->wmap(); preprocess(input_image, minputHolder); // 设置输入数据 infer_request.SetBlob(input_name, input); // 进行推理 infer_request.Infer(); // 获取输出结果并后处理,填充到results中 InferenceEngine::Blob::Ptr output = infer_request.GetBlob(output_name); auto outputHolder = output->rmap(); postprocess(outputHolder, results); }

从代码中可以看到,OpenVINO通过Core对象来管理模型的加载和推理,整个流程比较清晰,而且对CPU的优化效果显著。

TensorRT推理

TensorRT则是NVIDIA推出的针对GPU的高性能推理优化引擎。在GPU环境下,TensorRT对500万像素图像的推理只要25ms,速度惊人。TensorRT会对模型进行优化,比如层融合、量化等操作,减少计算量和内存占用。下面是使用TensorRT推理的简单代码结构(实际更复杂,且需要NVIDIA相关环境支持):

// 引入TensorRT相关头文件 #include "NvInfer.h" #include "NvOnnxParser.h" // 使用TensorRT进行推理 void tensorrt_inference(cv::Mat& input_image, std::vector<DetectedObject>& results) { // 创建TensorRT相关对象,如Logger、Builder等 Logger gLogger; auto builder = nvinfer1::createInferBuilder(gLogger); auto network = builder->createNetworkV2(1U << static_cast<uint32_t>(NetworkDefinitionCreationFlag::kEXPLICIT_BATCH)); auto parser = nvonnxparser::createParser(*network, gLogger); // 解析ONNX模型 parser->parseFromFile("yolov5.onnx", static_cast<int>(ILogger::Severity::kWARNING)); // 设置Builder相关参数,如最大批处理大小、最大工作空间等 builder->setMaxBatchSize(1); builder->setMaxWorkspaceSize(1 << 30); // 创建推理引擎 auto engine = builder->buildEngineWithConfig(*network, config); auto context = engine->createExecutionContext(); // 图像预处理,转换为TensorRT要求的格式 float* inputBuffer = preprocess(input_image); // 设置输入输出缓冲区等操作 void* buffers[2]; buffers[0] = inputBuffer; buffers[1] = outputBuffer; // 进行推理 context->enqueueV2(buffers, stream, nullptr); // 对输出结果进行后处理,填充到results中 postprocess(outputBuffer, results); // 释放相关资源 parser->destroy(); network->destroy(); engine->destroy(); context->destroy(); }

TensorRT的代码流程围绕着模型解析、引擎创建、推理执行等核心步骤,充分发挥了GPU的并行计算能力,实现了超快速的推理。

至于DNN和ONNXRuntime,它们也各有优势。DNN是OpenCV中集成的深度学习模块,使用方便,能利用OpenCV的图像处理优势。ONNXRuntime则是一个跨平台的推理框架,支持多种硬件和模型格式,通用性很强。

Yolov5 v6.2实例分割结合这四种推理方式,在Labview工业应用中展现出了超强的实力,无论是对实时性要求极高的生产流水线,还是对精度有严格要求的质量检测环节,都能提供可靠的解决方案,堪称最强实例分割模型在工业领域的完美应用。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/2/1 17:04:00

【课程设计/毕业设计】基于SpringBoot的供应链管理系统的设计与实现供应链运营中采购、仓储、物流、销售环节【附源码、数据库、万字文档】

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华
网站建设 2026/1/31 12:53:20

YOLOv11检测结果分析:Precision-Recall曲线绘制

YOLOv11检测结果分析&#xff1a;Precision-Recall曲线绘制 在智能安防、自动驾驶和工业质检等实际场景中&#xff0c;目标检测模型不仅要“看得快”&#xff0c;更要“看得准”。随着 YOLO 系列不断演进&#xff0c;YOLOv11 凭借其更强的特征提取能力和更优的锚框机制&#xf…

作者头像 李华
网站建设 2026/1/30 14:20:57

PyTorch自动求导机制autograd详解(含代码演示)

PyTorch自动求导机制与CUDA容器化开发环境实战解析 在深度学习模型研发过程中&#xff0c;我们常常面临两个核心挑战&#xff1a;一是如何高效、准确地计算复杂网络的梯度&#xff1b;二是如何快速搭建稳定且高性能的训练环境。PyTorch 的 autograd 自动求导系统和预集成的 PyT…

作者头像 李华
网站建设 2026/1/29 10:00:50

PyTorch模型转ONNX格式用于跨平台部署

PyTorch模型转ONNX格式用于跨平台部署 在现代AI系统开发中&#xff0c;一个常见的困境是&#xff1a;研究团队用PyTorch训练出高性能模型后&#xff0c;工程团队却难以将其高效部署到生产环境。尤其是在面对边缘设备、移动端或异构硬件时&#xff0c;框架依赖和推理性能问题尤为…

作者头像 李华
网站建设 2026/1/29 16:23:25

Markdown表格美化:展示PyTorch模型性能对比数据

Markdown表格美化&#xff1a;展示PyTorch模型性能对比数据 在深度学习项目中&#xff0c;团队常常面临一个看似简单却影响深远的问题&#xff1a;如何高效、清晰地共享和比较不同模型的训练表现&#xff1f;尤其是在使用GPU资源进行大规模实验时&#xff0c;参数量、显存占用、…

作者头像 李华