电商支付网站建设费进什么科目建设教育信息网站工作总结
电商支付网站建设费进什么科目,建设教育信息网站工作总结,wordpress 字库,网站代码在哪里修改yolov5v6.2 实例分割 Labview工业应用#xff0c;封装dll后labview调用#xff0c;支持openvino dnn onnxruntime和tensorrt四种方式推理#xff0c;500万像素图像:cpu下openvino推理只要85ms、GPU下tensorrt推理只要25ms#xff0c;最强实例分割模型。
在工业视觉领域封装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::vectorDetectedObject 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::vectorOrt::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::vectorDetectedObject 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_blobInferenceEngine::PrecisionTraitInferenceEngine::Precision::FP32::value_type(input_dims); input-allocate(); InferenceEngine::MemoryBlob::CPtr minput InferenceEngine::asInferenceEngine::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::vectorDetectedObject results) { // 创建TensorRT相关对象如Logger、Builder等 Logger gLogger; auto builder nvinfer1::createInferBuilder(gLogger); auto network builder-createNetworkV2(1U static_castuint32_t(NetworkDefinitionCreationFlag::kEXPLICIT_BATCH)); auto parser nvonnxparser::createParser(*network, gLogger); // 解析ONNX模型 parser-parseFromFile(yolov5.onnx, static_castint(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工业应用中展现出了超强的实力无论是对实时性要求极高的生产流水线还是对精度有严格要求的质量检测环节都能提供可靠的解决方案堪称最强实例分割模型在工业领域的完美应用。