分类图像
使用该工具可根据预先训练好的分类器对图像进行分类。
分类器是一种深度学习模型,它经过训练可以将图像分类到一组给定类中的一个。对于每个类,都会确定一个置信度值,以表示图像有多大的可能性属于相应类。将为图像分配置信度值最高的类。
如果有深度学习模型文件,您可以直接在此 MERLIC 工具中使用它。否则,您首先要训练一个模型。
训练深度学习模型
您可以使用 MVTec 的Deep Learning Tool来训练用于该工具的深度学习模型。工作流程如下:
- 定义类。
- 相应地标记图像。
- 训练模型。
训练将生成一个分类器文件,可在此 MERLIC 工具中使用该文件对新图像进行分类。图像随后将被分类到先前定义的类中。
虽然也可以使用 MVTec HALCON 来训练深度学习模型,但建议使用 MVTec Deep Learning Tool。有关如何创建深度学习模型的更多信息,请参阅 MVTec Deep Learning Tool的文档,或观看使用 MVTec Deep Learning Tool进行深度学习分类的视频教程。
使用带“Out-of-Distribution 检测”的分类器
如果将此 MERLIC 工具与已针对“Out-of-Distribution 检测”扩展的分类器配合使用,该分类器将能识别与训练数据差异较大的对象或样本的错误分类,例如,当系统只针对玻璃瓶进行过训练时,将能识别金属瓶。此外还会返回工具结果 Out-of-Distribution 分数值,显示与训练类别的差异程度。该工具还提供一个额外的工具参数 Out-of-Distribution 阈值,允许您调整识别 Out-of-Distribution 样本的阈值。
在以下示例图形中,分类器经过训练可以区分三个类别。在第一幅图像中,置信度值最高的类是“apple”。因此,图像被识别为“apple”。
在第二幅图像中,对象与训练数据有很大不同。除了三个类别的置信度值外,网络还显示图像不属于三个训练类别中的任何一个。
要针对“Out-of-Distribution 检测”(OOD) 扩展经过训练的分类器,必须使用 MVTec HALCON,其从 HALCON 版本 24.11 Progress-Steady 开始支持扩展。有关“Out-of-Distribution 检测”的更多信息,请参阅 MVTec HALCON 的文档。
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² 接口 主题。
参数
基本参数
图像
此参数表示应分类的图像。
分类器文件:
此参数定义所谓的分类器,即对图像进行分类时应使用的深度学习模型(.hdl 文件格式)。
如果要使用由 MERLIC 的 AI² 接口支持的特定 AI 加速器硬件,则可以使用针对相应设备优化的深度学习模型。这样可以缩短 MVApp 的加载时间,并减少模型所需的内存量。
我们建议使用 MVTec Deep Learning Tool 来训练模型。导出模型时,可以选择为 AI² 接口优化模型。不过,如果仍想使用 MVTec HALCON 进行训练,则必须考虑以下对预处理参数的限制。
此工具仅支持使用以下预处理参数的默认值训练的深度学习模型:
- NormalizationType = "none"
- DomainHandling = "full_domain"
显示热图:
此参数定义是否显示热图。热图表示对分类器的决策起重要作用的图像部分。默认设置为 1。这意味着默认情况下显示热图。如果该参数设置为 0,则不显示热图。此参数值还决定了热图是否属于“显示的图像”结果中所返回图像的一部分。
如果 AI 加速器硬件用作处理单元,即使参数“显示热图”设置为 1,热图也不可用。在参数“处理单元”处选择与 OpenVINO™ toolkit 兼容的 CPU、GPU 或 VPU 后,热图将被禁用。选择 NVIDIA® GPU 时也同样如此。
其他参数
Out-of-Distribution 阈值:
该参数定义了用于识别不同于分类器所用训练数据的对象或样本的阈值。如果“Out-of-Distribution 分数值”超过规定的阈值,样本就会被分类为“Out-of-Distribution”。当选择支持“Out-of-Distribution 检测”(OOD) 的分类器时,该阈值将被初始化为针对 OOD 扩展时为该分类器确定的值。如有需要,您可以通过此参数手动调整阈值,使其介于 0.0 至 1.0 之间。
仅当使用已针对“Out-of-Distribution 检测”(OOD) 扩展的分类器时,才能设置该参数。如果使用了不带 OOD 的分类器,该参数将显示为灰色且无法设置。
处理单元:
此参数定义用于处理图像的方法。默认情况下,此参数设置为“自动”。在此模式下,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”的精度。 |
大部分处理单元支持两种精度类型。然而,可能有一些处理单元只支持其中一种精度。在这种情况下,在参数“处理单元”中选择相应的设备后,参数中只有受支持的精度可用。如果自动选择处理单元,即如果“处理单元”设置为“自动”,则只有精度“高”可用。
检测到的类数量:
此参数定义“检测到的类”结果将返回的最大类数量。默认情况下,此参数设置为 1。这意味着“检测到的类”中将只返回一个类,即具有最高置信度的类。您可以选择最多查询 5 个类。“检测到的类”中的类结果将按其置信度值排序。
此参数还定义“置信度”和“检测到的类 ID”结果中返回的最大值数量,因为它们的值引用“检测到的类”中的类。有关这些结果的更多信息,请参阅以下相应部分。
所选参数值不会影响性能或运行时间,因为它仅控制结果的输出。
结果
基本结果
检测到的类:
此结果返回要区分的类的名称。返回的类数量取决于参数“检测到的类数量”。类名称以字符串形式返回。如果返回多个类,它们会在一个元组中返回,并按各自的置信度值排序,具有最高置信度的类在前。“置信度”和“检测到的类 ID”结果中返回类的相应置信度和 ID。
- “检测到的类”:[ginseng-crack, mint-crack, magnesium-crack]
- “置信度”:[1, 3.465148878945001e-08, 4.076762483151697e-09]
- “检测到的类 ID”:[1, 7, 4]
示例结果表明,类 ID 为 1、置信度值为 1 的类“ginseng-crack”最有可能是当前图像(即图像中的对象)所属的类。下一个最有可能的类是类 ID 为 7、置信度值为 3.465148878945001e-08 的“mint-crack”。可能性最小的类是类 ID 为 4、置信度值为 4.076762483151697e-09 的“magnesium-crack”。
置信度:
此结果指示图像属于每个可区分类的可能性。置信度最大值为 1。最高置信度获胜,即可以确定类。例如,如果您有三个可能的类 [苹果、香蕉、橙子],生成的置信度值为 [0.7、0.2、0.1],则当前处理的图像被归类为“苹果”。
工具状态:
“工具状态”返回有关工具状态的信息,因此可用于处理错误。请参阅主题工具状态结果,了解关于不同工具状态结果的更多信息。
其他结果
热图:
此结果表示图像形式的热图,指示对分类至关重要的区别特征。
显示的图像:
此结果表示处理图像和异常热图的叠加。当处理图像通过热图显示时,您可以更清楚地看到图像中的异常和发生位置。但是,只有在“显示热图”参数设置为“1”时才会显示热图。如果“显示热图”设置为 0,生成的图像仅返回不含热图的处理图像。
检测到的类 ID:
此结果返回要区分的所有类的 ID。整数元组中的元素数量取决于“检测到的类数量”参数。
所有类:
此结果返回在所选分类器中定义的所有可用类的名称。
所有类 ID:
此结果返回在所选分类器中定义的所有可用类的 ID。
训练图像宽度:
此结果返回训练分类器所使用的图像宽度。
训练图像高度:
此结果返回训练分类器所使用的图像高度。
使用的处理单元:
此结果返回上次迭代中使用的处理单元。如果参数“处理单元”设置为“自动”,可以使用此结果检查实际使用的处理单元,或者检查使用的处理单元是否正确。
精度数据类型:
此结果返回内部用于优化推理深度学习模型的数据类型。您可以使用此结果检查是否使用了正确的精度,以防出现任何问题。
如果参数“精度”设置为“高”,深度学习模型应转换为“float32”的精度。因此,预期此结果返回数据类型“float32”。如果参数“精度”设置为“中等”,深度学习模型应转换为“float16”的精度。在这种情况下,此结果的预期值为数据类型“float16”。如果在 MVApp 迭代过程中出现任何问题,可以检查此结果是否返回与预期不同的数据类型,还可以查看日志文件以了解更多信息。请参阅日志记录主题以了解关于日志文件的更多信息。
Out-of-Distribution 分数值:
该结果返回一个值,表示样本与训练类的差异程度。分数值越高,样本越有可能“Out-of-Distribution”。如果分数值超过“Out-of-Distribution 阈值”中定义的阈值,则样本会被分类为“Out-of-Distribution”,并在工具中显示警告。
仅当使用已针对“Out-of-Distribution 检测”(OOD) 扩展的分类器时,才会提供此结果。如果使用不带 OOD 的分类器,则结果为空。
处理时间:
此结果返回最近一次执行工具的持续时间(以毫秒为单位)。该结果作为附加结果提供。因此,默认情况下它是隐藏的,但是可以通过工具结果旁边的 按钮显示。有关更多信息,处理时间请参工具参考中所阅部分。
应用程序示例
此工具用于以下 MERLIC Vision App 示例:
- classify_pills.mvapp
- classify_and_inspect_wood.mvapp