识别

算子列表 ↓

本章包含基于样本的识别算子。

基于样本的识别概念

基于样本的识别技术能够根据纹理或颜色等特征属性识别经过训练的对象。这使您能够识别不携带条形码或数据码的物品。相较于 分类 章所述的分类方法,基于样本的识别在准备和训练方面极为便捷,因其无需复杂的参数调优。基于样本的识别能够区分大量对象。该识别方法对旋转、缩放和光照变化具有稳健性,同时也能应对遮挡、杂乱环境及中等程度的透视失真。此外,该识别方法对对象的中等变形具有稳健性,在一定范围内甚至能识别散装存储的产品。另一方面,这意味着当对象除某一特征外完全相同(而该特征恰好是识别方法具有稳健性的)时,则无法进行区分。需注意基于样本的识别方法仅适用于具有纹理特征的对象。

基于样本的识别每次只能识别一个对象。这意味着每个查询图像——更准确地说,每个查询图像的域——都不能包含多个对象。

( 1) ( 2)
( 3) ( 4)
基于样本的对象识别,包括“potato马铃薯”、“blueberry蓝莓”、“arugula芝麻菜”和“champignon蘑菇”。这些图像来自示例程序 identify_vegetables.hdev

以下简要描述了使用基于样本的识别所需的步骤。

创建并准备样本标识符:

首先,必须通过创建并准备新的样本标识符来提供样本标识符,通过算子

准备工作对于将样本标识符的内部数据结构适配至待识别的对象类型至关重要。或者,可通过 read_sample_identifierread_sample_identifierReadSampleIdentifierReadSampleIdentifierReadSampleIdentifierread_sample_identifier 从文件中读取已准备好的样本标识符——该标识符此前已通过 write_sample_identifierwrite_sample_identifierWriteSampleIdentifierWriteSampleIdentifierWriteSampleIdentifierwrite_sample_identifier 写入文件。

预制样本标识符可视为一个仓库,其设计旨在优化特定对象组的处理流程。

训练样本标识符:

随后,需使用待识别的个体对象样本对准备好的样本标识符进行训练。为此,将使用

算子。请注意,样本标识符可随时重新训练。为此,可通过 remove_sample_identifier_training_dataremove_sample_identifier_training_dataRemoveSampleIdentifierTrainingDataRemoveSampleIdentifierTrainingDataRemoveSampleIdentifierTrainingDataremove_sample_identifier_training_data 算子从标识符中移除样本,并通过 add_sample_identifier_training_dataadd_sample_identifier_training_dataAddSampleIdentifierTrainingDataAddSampleIdentifierTrainingDataAddSampleIdentifierTrainingDataadd_sample_identifier_training_data 算子向标识符添加新样本。若待识别的对象类型变化不大,则无需重复准备标识符。以上述图片为例,训练过程相当于仓库的填充过程。

应用样本标识符来识别对象:

最后,训练好的样本识别器可用于识别对象,通过算子 with

用于管理和控制样本标识符的其他算子

除上述算子外,还可使用以下算子管理样本标识符。通过 remove_sample_identifier_preparation_dataremove_sample_identifier_preparation_dataRemoveSampleIdentifierPreparationDataRemoveSampleIdentifierPreparationDataRemoveSampleIdentifierPreparationDataremove_sample_identifier_preparation_data 算子,可移除添加至样本标识符的数据,从而排除其在预处理中的使用。算子 set_sample_identifier_object_infoset_sample_identifier_object_infoSetSampleIdentifierObjectInfoSetSampleIdentifierObjectInfoSetSampleIdentifierObjectInfoset_sample_identifier_object_infoget_sample_identifier_object_infoget_sample_identifier_object_infoGetSampleIdentifierObjectInfoGetSampleIdentifierObjectInfoGetSampleIdentifierObjectInfoget_sample_identifier_object_info 可用于为单个对象分配和查询标签(即名称)。后者还能用于获取有关准备和训练可用对象数量的附加信息。最后,算子 set_sample_identifier_paramset_sample_identifier_paramSetSampleIdentifierParamSetSampleIdentifierParamSetSampleIdentifierParamset_sample_identifier_paramget_sample_identifier_paramget_sample_identifier_paramGetSampleIdentifierParamGetSampleIdentifierParamGetSampleIdentifierParamget_sample_identifier_param 可用于设置和检索样本标识符的控制参数。

术语表

以下将描述基于样本的识别过程中使用的重要术语:

对象

通过基于样本的鉴定来识别对象。

对象索引

对象的索引。该索引可视为对象的标签,在向 SampleIdentifierSampleIdentifierSampleIdentifierSampleIdentifiersampleIdentifiersample_identifier 向样本标识符添加预处理数据或训练数据时设置。对象索引是 apply_sample_identifierapply_sample_identifierApplySampleIdentifierApplySampleIdentifierApplySampleIdentifierapply_sample_identifier 算子最重要的输出结果。通过 set_sample_identifier_object_infoset_sample_identifier_object_infoSetSampleIdentifierObjectInfoSetSampleIdentifierObjectInfoSetSampleIdentifierObjectInfoset_sample_identifier_object_info 算子,可为每个对象设置描述性名称,从而便于解读标识结果。

对象样本

对象的一个样本或视图。有时也使用术语“样本图像”来指代对象样本。

样本图像

该术语可作为“对象样本”的同义词使用,若重点在于图像时。

对象样本索引

对象样本的索引。请注意,每个对象的索引均从 0 开始单独设置。因此,对象样本索引仅与对应对象索引结合使用时才具有唯一性。

预处理

将样本标识符的内部数据结构调整为适应识别过程中可能出现的典型对象样本集的特征的过程。

预处理对象

通过 add_sample_identifier_preparation_dataadd_sample_identifier_preparation_dataAddSampleIdentifierPreparationDataAddSampleIdentifierPreparationDataAddSampleIdentifierPreparationDataadd_sample_identifier_preparation_data 添加到样本标识符中的对象。

预处理样本

预处理对象的对象样本。通常每个对象基于多个预处理样本完成预处理。

预处理数据

所有预处理样本的集合。

训练

样本标识符的训练。在此步骤中,样本标识符学习区分所有给定对象。

训练对象

通过 add_sample_identifier_training_dataadd_sample_identifier_training_dataAddSampleIdentifierTrainingDataAddSampleIdentifierTrainingDataAddSampleIdentifierTrainingDataadd_sample_identifier_training_data 添加到样本标识符中的对象,或是通过复用预处理数据作为训练数据获得的对象。与预处理对象不同,所有训练对象均标有唯一的对象索引。

训练样本

训练对象的对象样本。训练通常基于每个对象的多个训练样本进行。

训练数据

所有训练样本的集合。

查询图像

一张图像,其中可见一个对象,该对象应通过基于样本的识别进行识别。


算子列表

add_sample_identifier_preparation_dataAddSampleIdentifierPreparationDataadd_sample_identifier_preparation_dataAddSampleIdentifierPreparationDataadd_sample_identifier_preparation_data添加样本标识符预处理数据
将训练数据添加到现有的样本标识符中。
add_sample_identifier_training_dataAddSampleIdentifierTrainingDataadd_sample_identifier_training_dataAddSampleIdentifierTrainingDataadd_sample_identifier_training_data添加样本标识符训练数据
将训练数据添加到现有的样本标识符中。
apply_sample_identifierApplySampleIdentifierapply_sample_identifierApplySampleIdentifierapply_sample_identifier应用样本标识符
使用样本标识符识别对象。
clear_sample_identifierClearSampleIdentifierclear_sample_identifierClearSampleIdentifierclear_sample_identifier清除样本标签符
释放样本标识符的内存。
create_sample_identifierCreateSampleIdentifiercreate_sample_identifierCreateSampleIdentifiercreate_sample_identifier创建样本标识符
创建新的样本标识符。
deserialize_sample_identifierDeserializeSampleIdentifierdeserialize_sample_identifierDeserializeSampleIdentifierdeserialize_sample_identifier反序列化样本标识符
反序列化一个序列化的样本标识符。
get_sample_identifier_object_infoGetSampleIdentifierObjectInfoget_sample_identifier_object_infoGetSampleIdentifierObjectInfoget_sample_identifier_object_info获取样本标识符对象信息
检索有关样本标识符对象的信息。
get_sample_identifier_paramGetSampleIdentifierParamget_sample_identifier_paramGetSampleIdentifierParamget_sample_identifier_param获取样本标识符参数
获取样本标识符的选定参数。
prepare_sample_identifierPrepareSampleIdentifierprepare_sample_identifierPrepareSampleIdentifierprepare_sample_identifier准备样本标识符
使样本标识符的内部数据结构适应要识别的对象。
read_sample_identifierReadSampleIdentifierread_sample_identifierReadSampleIdentifierread_sample_identifier读取样本标识符
从文件中读取样本标识符。
remove_sample_identifier_preparation_dataRemoveSampleIdentifierPreparationDataremove_sample_identifier_preparation_dataRemoveSampleIdentifierPreparationDataremove_sample_identifier_preparation_data移除样本标识符预处理数据
从样本标识符中移除预处理数据。
remove_sample_identifier_training_dataRemoveSampleIdentifierTrainingDataremove_sample_identifier_training_dataRemoveSampleIdentifierTrainingDataremove_sample_identifier_training_data移除样本标识符训练数据
从样本标识符中移除训练数据。
serialize_sample_identifierSerializeSampleIdentifierserialize_sample_identifierSerializeSampleIdentifierserialize_sample_identifier序列化样本标识符
序列化样本标识符。
set_sample_identifier_object_infoSetSampleIdentifierObjectInfoset_sample_identifier_object_infoSetSampleIdentifierObjectInfoset_sample_identifier_object_info设置样本标识符对象信息
为样本标识符的对象定义名称或描述。
set_sample_identifier_paramSetSampleIdentifierParamset_sample_identifier_paramSetSampleIdentifierParamset_sample_identifier_param设置样本标识符参数
设置样本标识符的选定参数。
train_sample_identifierTrainSampleIdentifiertrain_sample_identifierTrainSampleIdentifiertrain_sample_identifier训练样本标识符
训练样本标识符。
write_sample_identifierWriteSampleIdentifierwrite_sample_identifierWriteSampleIdentifierwrite_sample_identifier写入样本标识符
将样本标识符写入文件。