快速入门

您正在查看最新版本(V3.0.0)的文档。如果您想查阅其他版本的文档,可以点击页面右上角“切换版本”按钮进行切换。

■ 如果您不确定当前使用的产品是哪个版本,请随时联系梅卡曼德技术支持

本章介绍如何应用Mech-DLK SDK实现Mech-DLK训练的缺陷分割模型的推理。

准备工作

  • 安装 Mech-DLK SDK

  • 下载并安装Sentinel LDK加密驱动,并确保在工控机的设置  应用  应用和功能中存在已安装的加密驱动。

    如已安装Mech-DLK,则不需要重复安装加密驱动,只需确认加密驱动已存在即可。
  • 获得并管理软件许可

推理流程

inference flow

函数说明

下面以Mech-DLK导出的缺陷分割模型为例,介绍应用Mech-DLK SDK实现模型推理时使用的函数。

自 Mech-DLK SDK 3.0.0 起,不再支持 C 语言接口。以下示例仅包含 C#、C++ 与 Python。

创建输入图像

调用以下函数创建输入图像。

  • C#

  • C++

  • Python

MMindImage image = new MMindImage();
StatusCode status = image.CreateFromPath("path/to/image.png");
List<MMindImage> images = new List<MMindImage> { image };
mmind::dl::MMindImage image;
image.createFromPath("path/to/image.png");
std::vector<mmind::dl::MMindImage> images = {image};
import mmind_dl_sdk as mmind

image = mmind.MMindImage()
status = image.create_from_path("path/to/image.png")
images = [image]

创建推理引擎

调用以下函数创建推理引擎。

  • C#

  • C++

  • Python

MMindInferEngine engine = new MMindInferEngine();
engine.Create("path/to/xxx.dlkpack");
StatusCode status = engine.Load();

Mech-DLK SDK C# 接口中,Create仅需要模型路径参数;调用 Load 后即可进行推理。

mmind::dl::MMindInferEngine engine;
engine.create(L"path/to/xxx.dlkpack");
// engine.setInferDeviceType(mmind::dl::InferDeviceType::GPUDefault);
// engine.setDeviceId(0);
// engine.setBatchSize("DefectSegmentation_0", 1);
// engine.setFloatPrecision("DefectSegmentation_0", mmind::dl::PrecisionType::FP32);
engine.load();

C++接口中模型参数可自行设置:

  • 如果不调用 setxxx 函数,默认情况下 BatchSize1PrecisionTypeFP32DeviceId0

  • 如需修改推理引擎参数,setxxx 函数必须放在 load() 函数之前。

  • setBatchSizesetFloatPrecision 需要指定模块名(例如 DefectSegmentation_0)。

  • 首次将 InferDeviceType 设置为 GPUOptimization 进行推理时,需要先进行模型优化,耗时约 1~10 分钟。

engine = mmind.MMindInferEngine()
engine.create("path/to/xxx.dlkpack")
status = engine.load()

Python 接口中,Create 仅需要模型路径参数;调用 load() 后即可进行推理。

深度学习引擎推理

调用以下函数进行深度学习引擎推理。

  • C#

  • C++

  • Python

engine.Infer(images);
engine.infer(images);
status = engine.infer(images)

获取缺陷分割结果

调用以下函数得到缺陷分割模型的结果。

  • C#

  • C++

  • Python

List<MMindResult> results;
engine.GetModuleResult("DefectSegmentation_0", out results);
std::vector<mmind::dl::MMindResult> results;
engine.getModuleResult("DefectSegmentation_0", results);
status, results = engine.get_module_result("DefectSegmentation_0")

GetModuleResult 需要传入模块名。请通过接口返回的模块列表确认模块名后再获取结果。

结果可视化

调用以下函数可视化模型推理结果。

  • C#

  • C++

  • Python

engine.ResultVisualization(images);
images[0].Show("result");
engine.resultVisualization(images);
images[0].show("result");
status, vis_images = engine.result_visualization(images)
vis_images[0].show("result")

释放内存

释放内存,减少内存占用。

  • C#

  • C++

  • Python

engine.Release();
engine.release();
engine.release()

该页面是否有帮助?

可以通过以下方式反馈意见:

我们重视您的隐私

我们使用 cookie 为您在我们的网站上提供最佳体验。继续使用该网站即表示您同意使用 cookie。如果您拒绝,将使用一个单独的 cookie 来确保您在访问本网站时不会被跟踪或记住。