跳转至

Metadata.h

Go to the source code of this file.

SAIGE VISION Enterprise的操作功能Metadata数据收集功能的示例。

SAIGE VISION Enterprise提供了用于AI模型操作的数据收集功能。数据收集功能是将在系统中执行实时检查的新数据存储在系统中的功能。对于数据收集,不需要单独更改传输程序,而是根据系统设置中指定的条件自动收集数据。

但是,在数据集功能中,您可以使用Metadata作为每个图像具有的附加信息。在Runtime SDK中,您可以在实时检查环境中收集数据时提前设置Metadata值,以便自动存储收集数据的附加信息。

ExampleClsRuntimeWithMetadata.cpp示例是通过指定Metadata收集数据的示例。

Metadata的类型和设置方法

Metadata有以下类型。

Handle Metadata

事先在检查句柄中指定的Metadata。一旦指定,它将统一应用于使用该句柄进行检查的图像。在下面的示例中,“Manufacturing Line”项目的值设置为“test”,并持续应用于随后的检查。

See also: SaigeSetHandleMetadata

198
199
200
201
202
203
// ExampleClsRuntimeWithMetadata.cpp:200

retval = SaigeSetHandleMetadata(handle, "Manufacturing Line", "test");
if (retval < 0) {
    std::cerr << "SaigeSetHandleMetadata() failed - " << SaigeStrError(retval) << std::endl;
}

Inference Metadata

在每次检查之前立即设置的Metadata。由于每次检查时都会初始化它,因此如果每次都不指定,则值将为空。在这里,如果图像路径中有数字1,则将“Test”项目设置为“test1”。

See also: SaigeSetInferenceMetadata

230
231
232
233
234
// ExampleClsRuntimeWithMetadata.cpp:232

if (img.find("1") > 0) {
   retval = SaigeSetInferenceMetadata(result, "Test", "test1");
} 

Result Metadata

在解释每次检查结果之后可以设置的Metadata。在重新使用或销毁结果句柄之前解释检查结果后可以设置。在这里,名为“Result Class” 的Metadata项目的值设置为分类结果类值。

See also: SaigeSetResultMetadata

285
286
287
288
289
290
291
292
293
294
// ExampleClsRuntimeWithMetadata.cpp:287

retval = SaigeSetResultMetadata(result, "Result Class", modelInfo->classNames[classId]);
if (retval < 0) {
    std::cerr << "SaigeSetResultMetadata() failed - " << SaigeStrError(retval)
              << std::endl;
    SaigeDestroyInferenceHandle(handle);
    SaigeDestroyInferenceResult(result);
    return retval;
}

预定义的Metadata

在数据集中使用的Metadata中有系统预定义的项目。

  • Product ID:产品标识符。它指定为_product_id。
  • 文件路径:图像文件路径。在不传输文件的情况下收集时使用,指定为_file_path。
236
237
238
239
240
241
242
243
244
245
// ExampleClsRuntimeWithMetadata.cpp:238

std::string file_name = img.substr(img.find_last_of("/")+1);
std::string pid = file_name.substr(0, file_name.find_last_of("."));
SaigeSetInferenceMetadata(result, "_product_id",
                          file_name.substr(0, file_name.find(".")).c_str());
std::string file_path = "V:\\image\\runtime_example\\images\\test\\" + file_name;
if (file_name.find("01.png") != std::string::npos) {
   SaigeSetInferenceMetadata(result, "_file_path", file_path.c_str());
}