查找对象
使用此工具定位图像中的对象,将它们分类到先前定义的类中,并将找到的实例分配到图像中的相应区域。对象是否部分重叠并不重要。
此工具需要对象检测模型或实例分割模型。对象检测模型是一种深度学习模型,它经过训练来定位对象类,并用一个称为边界框的环绕矩形来标识它们。
要训练对象检测模型,您可以使用 MVTec 的Deep Learning Tool。工作流程如下:先定义类,然后相应地为图像添加标签,最后训练对象检测模型。训练将生成一个可在此 MERLIC 工具中用于定位对象的对象检测模型文件。
使用 MVTec Deep Learning Tool 创建对象检测模型时,可以在两种深度学习方法之间进行选择:
|
深度学习方法 |
描述 |
使用 |
|---|---|---|
|
轴平行 对象检测
|
定位经过训练的对象类,并使用与坐标轴平行的边界框对其进行标记。 |
如果要查找和分类对象,但对所述对象的方向不感兴趣,请使用这种深度学习方法。 使用此方法,可以节省标记时间,因为与轴平行的边界框使用起来没那么复杂。 轴平等对象检测特别适用于形状可以很容易地被轴平行矩形包围的对象,如瓶盖。 |
|
定向 对象检测
|
定位经过训练的对象类,并使用朝向任何方向的边界框对其进行标记。 |
如果您不仅对检测到的对象的位置感兴趣,还对其方向感兴趣,请使用这种深度学习方法。 使用此方法,需要更多时间用于标记,因为定向的边界框使用起来更加复杂。 如果使用此方法,结果将更准确。 定向对象检测特别适用于形状无法被轴平行矩形最佳地包围的倾斜对象,如对角放置的铅笔。 |
|
实例分割 |
标记检测到对象的激活边缘的周围区域。 |
如果您想在图像中显示对象的像素精度区域,可使用此深度学习方法。 |
要训练实例分割模型,您可以使用 MVTec 的Deep Learning Tool。工作流程如下:基于多边形和遮罩创建实例。根据经验,如果对象的实例由较大的直线区域组成,则应使用多边形;如果对象较小或需要校正实例,则使用遮罩。最后,训练实例分割模型。
训练将生成一个可在此 MERLIC 工具中用于定位对象的实例分割模型文件。然后,对象将被分类到先前定义的类中,找到的实例将被分配到图像中的相应区域。
有关如何创建深度学习模型的更多信息,请参阅 MVTec Deep Learning Tool 的文档。虽然也可以使用 MVTec HALCON 来训练深度学习模型,但建议使用 MVTec Deep Learning Tool。
如果有深度学习模型文件,您可以直接在此 MERLIC 工具中使用它。
Artificial Intelligence Acceleration 接口 (AI²) 的支持
MERLIC 附带用于 NVIDIA® TensorRT™ SDK 和 Intel® Distribution of OpenVINO™ toolkit 的 Artificial Intelligence Acceleration 接口 (AI²)。因此,您可以将 AI 加速器硬件用作与 NVIDIA® TensorRT™ 或 OpenVINO™ toolkit 兼容的处理单元,以便在相应的硬件(如 NVIDIA® GPU)或支持 OpenVINO™ toolkit 的硬件(如 CPU、Intel® GPU 和 Movidius™ VPU)上执行优化的推理。通过这种方式,您可以显著加快深度学习推理时间。相应的硬件可在工具参数“处理单元”中选择。
前提条件
支持 OpenVINO™ toolkit 的 NVIDIA® GPU 和 CPU 在安装 MERLIC 后可立即使用。无需额外的安装或设置。
要将支持 OpenVINO™ toolkit 的 Intel® GPU 和 VPU 用作处理单元,需要满足以下前提条件:
- 首先必须安装 Intel® Distribution of OpenVINO™ toolkit。
- 必须在 OpenVINO™ toolkit 环境中启动 MERLIC。
有关安装和前提条件的更多详细信息,请参阅 用于具有深度学习功能的工具的 AI² 接口 主题。
参数
基本参数
图像:
此参数表示应检测对象的图像。
模型文件:
此参数定义用于检查对象的 HALCON 深度学习模型(.hdl 文件格式)。默认情况下未定义任何模型。但是,必须定义一个深度学习模型才能使用此工具。
虽然也可以使用 MVTec HALCON 来训练对象检测模型,但建议使用 MVTec Deep Learning Tool。
此工具仅支持使用以下预处理参数的默认值训练的深度学习模型:
- NormalizationType = "none"
- DomainHandling = "full_domain"
方向:
此参数允许您指定生成的边界框的方向。您的选择会影响“X 轴”、“Y 轴”和“角度”结果。这些结果将返回确定对象的空间方向所需的数据。
若使用 MVTec Deep Learning Tool训练对象检测模型,可以选择使用轴平行边界框还是定向边界框来训练模型。如果已使用定向边界框来训练对象检测模型,则此参数提供使边界框与轴平行的选项。但是,如果已使用轴平行边界框来训练对象检测模型,则无法对齐已定向的边界框。
默认情况下,该参数设置为“轴平行”。
|
值 |
描述 |
|---|---|
|
轴平行 |
边界框作为轴平行矩形提供。 |
|
定向 |
边界框作为定向矩形提供。 如果您的对象检测模型是使用轴平行边界框训练的,则此参数值无效。 |
其他参数
类选择器:
此参数会筛选结果。您可以在三个不同的筛选选项之间进行选择。默认情况下,该参数设置为“所有类”。
|
值 |
描述 |
|---|---|
|
所有类 |
工具会检测所有可用类。 |
|
唯一类 <类名称> |
工具只会检测选定的类。选定的类可从所有可用的类中选择。 |
|
全部但不含 <类名称> |
工具会检测除所选类之外的所有可用类。选定的类可从所有可用的类中选择。 |
最大对象数量:
此参数定义可被深度学习模型检测到的最大对象数量。您可使用此参数覆盖在训练深度学习模型过程中使用的相应值。
在加载模型文件时,此参数会自动设置为存储在模型文件中的最大值。要使用其他值,请在参数输入字段输入所需的最大对象数量,或使用滑块设置值。使用滑块只能设置不超过 20 的值。如果您希望找出 20 个以上对象,请在输入字段中手动输入。
将按其置信度值为对象排序。如果图像中的对象数量高于此参数定义的值,将排除置信度最低的对象,直到检测出的对象数与“最大对象数量”中定义的值相符。
在结果“对象数量”中,您可以看到图像中检测到多少对象。
最小置信度值:
此参数确定对象必须至少达到多少置信度才能被检测到。置信度值低于定义的“最小置信度值”的所有对象都不会被检测到。默认情况下,此参数设置为 0.5。
相同类的重叠:
此参数设置检测到的同类对象的最大允许重叠。这表示,如果两个同类的对象重叠,并且此重叠超过了“相同类的重叠”参数的值,则置信度较低的对象将不会被检测到。如果您的对象检测模型为同一个对象找到了几个可能的实例,或者如果两个相同的对象彼此非常接近,这将很有用。默认情况下,此参数设置为 0.5。
不同类的重叠:
此参数设置检测到的不同类对象的最大允许重叠。这表示,如果两个不同类的对象重叠,并且此重叠超过了“不同类的重叠”参数的值,则置信度较低的对象将不会被检测到。默认情况下,此参数设置为 1。
处理单元:
此参数定义用于处理图像的方法。默认情况下,此参数设置为“自动”。在此模式下,MERLIC 尝试选择合适的 GPU 作为处理单元,因为它通常比 CPU 性能更好。然而,这需要相应 GPU 拥有至少 4 GB 的可用内存。如果没有找到合适的 GPU,CPU 将用作后备。
您也可以手动选择处理单元。单击此参数,从所有可用处理单元列表中选择设备。如果选择 GPU 作为处理单元,我们建议您检查是否有足够的内存可用于所使用的深度学习模型。否则,可能会出现推理速度较慢等不良影响。
MERLIC 还支持使用与 NVIDIA® TensorRT™ SDK 或 OpenVINO™ toolkit 兼容的 AI 加速器硬件:
- NVIDIA® GPU
- 支持 OpenVINO™ toolkit 的 CPU、Intel® GPU、Intel® VPU(MYRIAD 和 HDDL)
相应设备用前缀“TensorRT(TM)”或“OpenVINO(TM)”标记。如果您选择支持 NVIDIA® TensorRT™ 或 OpenVINO™ toolkit 的设备,内存将通过 AI² 接口的相应插件在设备上初始化。
选择 AI 加速器硬件作为处理单元后,即开始深度学习模型的优化。优化后,表示模型参数的所有参数将在内部设置为只读。因此,只要选定的 AI 加速器用作处理单元,就无法再更改它们的值。要更改参数,首先必须将处理单元更改为没有任何 AI 加速的其他处理单元。设置参数后,可以将处理单元设置回相应的 AI 加速器硬件。
支持 OpenVINO™ toolkit 的 CPU 无需任何额外的安装步骤即可使用。它们将自动出现在可用处理单元列表中。如果有多个具有相同名称的处理单元可用,则会为其名称指定一个索引号。这同样适用于支持 NVIDIA® TensorRT™ 的 GPU。
要将支持 OpenVINO™ toolkit 的 GPU 和 VPU 用作处理单元,计算机上必须安装 Intel® Distribution of OpenVINO™ toolkit,并且必须在 OpenVINO™ toolkit 环境中启动 MERLIC。请参阅 用于具有深度学习功能的工具的 AI² 接口以了解有关前提条件的更多详细信息。
除了通过 AI 加速器硬件进行优化外,MERLIC 还支持通过 NVIDIA® CUDA® Deep Neural Network (cuDNN) 进行进一步的动态优化。此优化可通过 MERLIC Creator 中的 MERLIC 设定来启用。有关更多信息,请参阅MERLIC 设定主题。
精度:
此参数定义内部用于优化推理深度学习模型的数据类型,它定义了模型转换的精度。默认情况下设置为“高”。
下表显示此工具支持的模型精度。
|
值 |
描述 |
|---|---|
|
高 |
深度学习模型转换为“float32”的精度。 |
|
中等 |
深度学习模型转换为“float16”的精度。 |
大部分处理单元支持两种精度类型。然而,可能有一些处理单元只支持其中一种精度。在这种情况下,在参数“处理单元”中选择相应的设备后,参数中只有受支持的精度可用。如果自动选择处理单元,即如果“处理单元”设置为“自动”,则只有精度“高”可用。
结果
基本结果
边界框的区域:
此结果将检测到的对象的边界框作为区域返回。
对象数量:
此结果返回检测到的对象的数量,而无论其属于哪个类。
类:
此结果返回所有检测到的对象的类名称。它们以 tuple 的形式按其置信度顺序返回。它包含与“对象数量”结果的值相同数量的字符串,即类。
置信度:
此结果返回一个数值,指示检测到的对象属于分配给它们的类的可能性。如果该参数的值为 1,已发现对象与已训练类之间的匹配准确性为 100%。如果找到多个对象,相应的置信度会以 tuple 的形式按其置信度顺序返回。
工具状态:
“工具状态”返回有关工具状态的信息,因此可用于处理错误。请参阅主题工具状态结果,了解关于不同工具状态结果的更多信息。
其他结果
边界框的轮廓:
此结果将检测到的对象的边界框作为轮廓返回。
对象实例:
此结果返回检测到对象的激活边缘的周围区域。请注意,此结果只能在选择实例分割的模型文件时使用。
X 轴:
此结果包含所有检测到的对象的边界框中心点的 X 轴 坐标。它们以像素为单位,并以 tuple 的形式按其置信度顺序返回。它包含与“对象数量”结果的值相同数量的 X 轴 坐标。
Y 轴:
此结果包含所有检测到的对象的边界框中心点的 Y 轴 坐标。它们以像素为单位,并以 tuple 的形式按其置信度顺序返回。它包含与“对象数量”结果的值相同数量的 Y 轴 坐标。
角度:
此结果返回检测到的对象边界框的角度。它们确定边界框的旋转度和旋转方向。角度以实数(单位为度)和 tuple 的形式按置信度顺序返回。Tuple 包含与“对象数量”结果的值相同数量的角度。
|
值 |
描述 |
|---|---|
|
0 |
矩形未旋转。 |
|
1 至 180 |
矩形沿逆时针方向旋转。 |
|
-1 至 -180 |
矩形沿顺时针方向旋转。 |
仅当用于对象检测的深度学习模型已使用定向边界框进行训练并且“方向”参数设置为“定向”时,此结果才会返回角度。如果使用轴平行边界框,结果将返回值“0.0”。
使用的处理单元:
此结果返回上次迭代中使用的处理单元。如果参数“处理单元”设置为“自动”,可以使用此结果检查实际使用的处理单元,或者检查使用的处理单元是否正确。
精度数据类型:
此结果返回内部用于优化推理深度学习模型的数据类型。您可以使用此结果检查是否使用了正确的精度,以防出现任何问题。
如果参数“精度”设置为“高”,深度学习模型应转换为“float32”的精度。因此,预期此结果返回数据类型“float32”。如果参数“精度”设置为“中等”,深度学习模型应转换为“float16”的精度。在这种情况下,此结果的预期值为数据类型“float16”。如果在 MVApp 迭代过程中出现任何问题,可以检查此结果是否返回与预期不同的数据类型,还可以查看日志文件以了解更多信息。请参阅日志记录主题以了解关于日志文件的更多信息。
处理时间:
此结果返回最近一次执行工具的持续时间(以毫秒为单位)。该结果作为附加结果提供。因此,默认情况下它是隐藏的,但是可以通过工具结果旁边的 按钮显示。有关更多信息,处理时间请参工具参考中所阅部分。
应用程序示例
此工具用于以下 MERLIC Vision App 示例:
- find_and_count_screw_types.mvapp
- segment_pills_by_shape.mvapp