快速入门

您正在查看旧版本的文档。点击页面右上角可切换到最新版本的文档。

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

准备工作

  • 安装 Mech-DLK SDK

  • 将梅卡曼德的加密狗插入电脑。

  • 安装 CodeMeter,并确认 CodeMeter 正在运行,即 CodeMeter 的图标 installation codemeter icon 显示在系统托盘中。

如已安装 Mech-DLK,则不需要重复安装 CodeMeter,只需确认 CodeMeter 正在运行即可。

推理流程

inference flow

函数说明

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

创建输入图像

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

  • C#

  • C

MMindImage image = new MMindImage();
image.CreateFromPath("path/to/image.png");
List<MMindImage> images = new List<MMindImage> { image };
MMindImage input;
createImage("path/to/image.png", &input);

创建推理引擎

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

  • C#

  • C

InferEngine inferEngine = new InferEngine();
inferEngine.Create("path/to/xxx.dlkpack", BackendType.GpuDefault, 0);
  • 当部署电脑上配置有英伟达的独立显卡时,你可以将推理后端(即第二个参数)设置为 GpuDefault 或 GpuOptimization。

    • 当此参数设置为 GpuOptimization 时,需要等待 1~5 min 的模型优化时间。

  • 当部署电脑上未配置英伟达的独立显卡时,推理后端只能设置为 CPU。

  • 此函数中,第三个参数 0 为英伟达显卡 ID,如果只有一张显卡,填写 0 即可。当推理后端设置为 CPU 时,此参数无效。

Engine engine;
createPackInferEngine(&engine, "path/to/xxx.dlkpack", GpuDefault, 0);
  • 当部署电脑上配置有英伟达的独立显卡时,你可以将推理后端(即第三个参数)设置为 GpuDefault 或 GpuOptimization。

    • 当此参数设置为 GpuOptimization 时,需要等待 1~5 min 的模型优化时间。

  • 当部署电脑上未配置英伟达的独立显卡时,推理后端只能设置为 CPU。

  • 此函数中,第四个参数 0 为英伟达显卡 ID,如果只有一张显卡,填写 0 即可。当推理后端设置为 CPU 时,此参数无效。

深度学习引擎推理

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

  • C#

  • C

inferEngine.Infer(images);
infer(&engine, &input, 1);
此函数中,参数 1 表示推理的图片数量,必须与 input 中的图片数量相同。

获取缺陷分割结果

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

  • C#

  • C

List<Result> results;
inferEngine.GetResults(out results);
DefectAndEdgeResult* defectAndEdgeResult = NULL;
unsigned int resultNum = 0;
getDefectSegmentataionResult(&engine, 0, &defectAndEdgeResult, &resultNum);

此函数中,第二个参数 0 表示深度学习模型推理包中的模型索引。

  • 如果是单模型推理包,该参数只能设置为 0;

  • 如果为级联模型推理包,该参数需要根据模型推理包中算法的顺序进行设置。

结果可视化

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

  • C#

  • C

inferEngine.ResultVisualization(images);
image.Show("result");
resultVisualization(&engine, &input, 1);
showImage(&input, "result");
此函数中,参数 1 表示推理的图片数量,必须与 input 中的图片数量相同。

释放内存

释放内存,防止内存泄漏。

  • C#

  • C

inferEngine.Release();
releaseDefectSegmentationResult(&defectAndEdgeResult, resultNum);
releaseImage(&input);
releasePackInferEngine(&engine);

我们重视您的隐私

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