检测异常
此工具可用于检测图像中的异常。
此工具在训练模式下使用。这意味着,首先根据选定的有异常或无异常的训练图像样本以及指定的训练参数来进行训练。包含“差”样本的训练图像(即显示异常的图像)不是必需的,但它们可以帮助改进深度学习模型。
工具在工具面板左侧提供训练区域。它让您能够在用于异常检测的处理模式和用于训练深度学习模型的训练模式之间切换。图形窗口显示当前处于活动状态模式的图像,该图像以蓝色在训练区域中高亮显示。除左上方的搜索参数外,该工具还在工具右上方提供用于训练的更多参数。
请参阅使用训练模式,进一步了解如何使用需要训练的工具。
工具面板 分为 左侧的训练区域和右侧的图形窗口。
训练参数
训练区域
图形窗口
显示的图像
训练部分显示处理图像和训练图像。
- 处理图像:当前“图像”接收自前一工具。
- 训练图像:训练深度学习模型所用的图像。您可以使用具有两种不同样本类型的训练图像:“良”代表没有异常的图像,“差”代表有异常的图像。
训练
训练图像
训练模型使用大约 20 - 100 个图像已足够。训练图像可能只包含“良”样本,即没有任何异常的图像。但是,包含“差”样本的训练图像(即显示异常的图像)可以帮助改进深度学习模型。
要将图像添加为训练图像,请使用以下步骤:
- 通过“运行一次”按钮或快捷键 F6 逐步运行应用程序,直到显示您要用作训练图像的图像。
- 单击
按钮或使用快捷键 F3,将当前图像添加到训练图像集。
- 为每个训练图像设置所需的样本类型,例如“良”或“差”。
- 要添加其他训练图像,请再次重复前述步骤。
执行训练
要执行训练,请使用以下步骤:
- 定义每个训练图像的样本类型:
- “良”:代表没有异常的图像
- “差”:代表有异常的图像
- 如果需要,请根据您的训练数据调整工具右上方的训练参数。
- 单击“应用训练数据”按钮执行训练。
完成训练后,工具会自动切换为处理模式,您可以检查训练的模型是否适合处理图像或是否需要调整搜索参数。
检查已训练的数据
训练参数会自动根据定义的训练图像调整。左侧的搜索参数“异常区域阈值”和“异常匹配度阈值”也会在训练过程中自动设置。
用一系列图像运行应用程序,您可以立即在图形窗口中确定使用已训练的深度学习模型能否正确地进行异常检测。如有必要,您可以进一步调整训练参数或搜索参数。
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² 接口 主题。
参数
基本参数
图像:
此参数表示应检测异常的图像。
显示热图:
此参数定义是否显示热图。热图直观地指示图像中的异常。默认设置为 1。这意味着默认情况下显示热图。如果该参数设置为 0,则不显示热图。此参数值还决定了热图是否属于“显示的图像”结果中所返回图像的一部分。
其他参数
处理区域:
此参数定义需要处理的区域。ROI 和“处理区域”并集之外的图像部分将不进行处理。此外,如果其中一个为空,将处理两者交集的图像部分。如果两者均为空,将处理整个图像。
默认情况下,“处理区域” 定义为空区域。要指定 “处理区域”,您需要将该参数连接至前一工具的适当区域结果,以确保某个区域会传输到此工具。
ROI:
此参数定义需要处理的感兴趣区域 (ROI)。ROI 和“处理区域”并集之外的图像部分将不进行处理。 此外,如果其中一个为空,将处理两者交集的图像部分。如果两者均为空,将处理整个图像。
默认情况下,ROI 定义为空 ROI。如果想要使用非空的 ROI 进行处理,您必须将参数连接至前一工具的适当 ROI 结果,或者必须使用可用的 ROI 按钮在图像中绘制新的 ROI。
异常区域阈值:
此参数定义图像中的像素是否属于异常的阈值。默认情况下,此参数设置为 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”的精度。 |
大部分处理单元支持两种精度类型。然而,可能有一些处理单元只支持其中一种精度。在这种情况下,在参数“处理单元”中选择相应的设备后,参数中只有受支持的精度可用。如果自动选择处理单元,即如果“处理单元”设置为“自动”,则只有精度“高”可用。
训练参数
基本训练参数
训练图像宽度:
此参数定义训练所用的图像宽度。默认情况下,该参数设置为 480 px。若要加快训练速度,您可以按比例缩小图像宽度。
此参数必须设置为 32 的倍数。
训练图像高度:
此参数定义训练所用的图像高度。默认情况下,该参数设置为 480 px。若要加快训练速度,您可以按比例缩小图像高度。
此参数必须设置为 32 的倍数。
像素百分比:
此参数定义每个图像用于训练的分数。默认情况下,此参数设置为 0.25。这意味着训练图像中有 25% 的像素用于训练。增加该值可能会改善训练结果,但也会增加训练时间。
其他训练参数
模型大小:
此参数定义训练所用的预训练模型。默认情况下,会选择“中等”。您也可以将该参数设置为“大型”以使用大模型。但是,我们建议始终从默认模型开始训练,并且仅当您不确信“中等”模型的性能时才使用“大型”模型。这两种模型之间的主要区别在于所需的内存大小和运行时间。
图像复杂性:
此参数描述了模型处理复杂图像的能力。默认情况下,此参数设置为 15。增加该值可以提高性能,但会增加训练模型所需的时间。
最大时期数量:
此参数定义完整训练数据集的最大训练周期数。默认情况下,此参数设置为 15。如果在较早时期达到训练参数“培训误差阈值”指定的误差阈值,则训练将终止。
培训误差阈值:
此参数是训练的终止条件。默认情况下,此参数设置为 0.001。只要训练误差低于指定的误差阈值,训练就会成功终止。训练误差也会作为训练结果返回。
正则化噪声:
可以设置此参数来规范训练,以提高稳健性。默认情况下,此参数设置为 0.0。这意味着不会产生正则化噪声。如果训练失败,设置更高的值可能会有帮助。
结果
基本结果
异常区域:
此结果表示由所有被视为异常的像素组成的区域。
检测到异常:
此结果指示图像是否包含异常。如果图像包含异常,则结果值为 1。否则,结果值为 0。
异常匹配度:
此结果指示整个图像包含异常的可能性。
工具状态:
“工具状态”返回有关工具状态的信息,因此可用于处理错误。请参阅主题工具状态结果,了解关于不同工具状态结果的更多信息。
其他结果
使用的处理单元:
此结果返回上次迭代中使用的处理单元。如果参数“处理单元”设置为“自动”,可以使用此结果检查实际使用的处理单元,或者检查使用的处理单元是否正确。
精度数据类型:
此结果返回内部用于优化推理深度学习模型的数据类型。您可以使用此结果检查是否使用了正确的精度,以防出现任何问题。
如果参数“精度”设置为“高”,深度学习模型应转换为“float32”的精度。因此,预期此结果返回数据类型“float32”。如果参数“精度”设置为“中等”,深度学习模型应转换为“float16”的精度。在这种情况下,此结果的预期值为数据类型“float16”。如果在 MVApp 迭代过程中出现任何问题,可以检查此结果是否返回与预期不同的数据类型,还可以查看日志文件以了解更多信息。请参阅日志记录主题以了解关于日志文件的更多信息。
处理时间:
此结果返回最近一次执行工具的持续时间(以毫秒为单位)。该结果作为附加结果提供。因此,默认情况下它是隐藏的,但是可以通过工具结果旁边的 按钮显示。有关更多信息,处理时间请参工具参考中所阅部分。
热图:
此结果表示图像形式的热图,直观地指示异常。
显示的图像:
此结果表示处理图像和异常热图的叠加。当处理图像通过热图显示时,您可以更清楚地看到图像中的异常和发生位置。但是,只有在“显示热图”参数设置为“1”时才会显示热图。如果“显示热图”设置为 0,生成的图像仅返回不含热图的处理图像。
训练结果
基本训练结果
培训误差:
此结果返回训练期间收到的最佳误差。
其他训练结果
异常区域阈值输出:
此结果返回确定图像中异常区域所需的阈值。该结果值也是处理步骤的输入参数“异常区域阈值”。
异常匹配度阈值输出:
此结果返回用于确定图像是否计为异常图像的阈值。该结果值也是处理步骤的输入参数“异常匹配度阈值”。
应用程序示例
此工具用于以下 MERLIC Vision App 示例:
- detect_anomalies_of_bottles.mvapp
- classify_and_inspect_wood.mvapp