HALCON 20.11:深度学习笔记(9)

HALCON 20.11.0.0中,实现了深度学习方法。

本章解释了如何使用基于深度学习的异常检测。

通过异常检测,我们想要检测图像是否包含异常。异常指的是偏离常规的、未知的东西。

异常检测的例子:输入图像的每个像素都被分配了一个值,该值表明该像素是异常的可能性有多大。

蠕虫不是模型在训练中看到的无虫苹果的一部分,因此它的像素得到了更高的分数。

一个异常检测模型学习没有异常的图像的共同特征。训练后的模型将推断出输入图像只包含学习过的特征的可能性有多大,还是该图像包含不同的东西。后一个被解释为异常。此推理结果作为灰度图像返回。其中的像素值表示输入图像像素中相应像素显示异常的可能性有多大。

一般工作流程

在本节中,我们描述了基于深度学习的异常检测任务的一般流程。

预处理数据

这一部分是关于如何预处理数据的。

  1. 需要转换数据集的信息内容。这是通过函数read_dl_dataset_anomaly来完成的。它创建了一个字典DLDataset,它充当一个数据库,存储关于您的数据的所有必要信息。要了解更多关于数据及其传输方式的信息,请参阅下面的“数据”一节和深度学习/模型一章。
  2. 拆分字典DLDataset表示的数据集。这可以使用函数split_dl_dataset来完成。
  3. 网络对图像有几个要求。可以使用函数get_dl_model_param检索这些需求(例如图像大小和灰度值范围)。为此,您需要首先通过函数read_dl_model读取模型。
  4. 现在可以对数据集进行预处理了。为此,您可以使用该函数preprocess_dl_dataset。对于自定义预处理,本函数提供了实现的指导。要使用这个函数,请指定预处理参数,例如,图像的大小。将所有参数及其值存储在DLPreprocessParam字典中,您可以使用该函数create_dl_preprocess_param。我们建议保存这个字典DLPreprocessParam,以便稍后在推理阶段访问预处理参数值。

模型训练

本节说明如何训练一个DL异常检测模型。

  1. 设置训练参数并将它们存储在字典TrainingParam中。这可以使用函数create_dl_train_param来完成。
  2. 训练模型。这可以使用函数train_dl_model来完成。这个过程预计:
    模型处理DLModelHandle;
    字典DLDataset包含数据信息;
    包含训练参数的字典TrainParam。

评估训练模型

本节说明如何评估异常检测模型。

  1. 设置可能影响评价的模型参数。
  2. 使用该函数evaluate_dl_model可方便地进行评价。该函数需要一个包含求值参数的字典GenParamEval。
  3. 字典评估结果包含期望的评估措施。

推理新图像

本节将介绍DL异常检测模型的应用。对于一个训练过的模型,执行以下步骤:

  1. 使用操作符get_dl_model_param或函数create_dl_preprocess_param_from_model请求模型对图像施加的要求;
  2. 使用操作符set_dl_model_param设置“模型参数”一节中描述的模型参数;
  3. 使用函数gen_dl_samples_from_images为每个图像生成一个数据字典DLSample;
  4. 每个图像都必须像训练一样使用函数preprocess_dl_samples进行预处理。当您在预处理步骤中保存DLPreprocessParam字典时,您可以直接使用它作为输入来指定所有参数值;
  5. 使用函数apply_dl_model应用模型;
  6. 从字典'DLResult'中检索结果。

数据

我们区分用于训练、评估和推断新图像的数据。

作为一个基本概念,模型通过字典处理数据,这意味着它从字典DLSample接收输入数据,并分别返回字典DLResult和DLTrainResult。关于数据处理的更多信息可以在深度学习/模型一章中找到。

在异常检测中有两类:

  1. 'ok'表示没有异常,类ID 0。
  2. 'nok',表示异常,类ID 1(关于像素值ID > 0,请参阅下面的小节“用于评估的数据”)。

这些类适用于整个图像以及单个像素。

训练数据

该数据集仅包含无异常的图像和相应的信息。必须以模型能够处理它们的方式提供它们。关于图像要求,请在下面的“图像”部分找到更多信息。训练数据用于训练特定任务的模型。有了这些数据的帮助,模型可以学习没有异常的图像有什么共同的特征。

评估数据

这个数据集应该包含没有异常的图像,但它也可以包含有异常的图像。这个集合中的每个图像都需要一个ground truth标签image_label来指定图像的类(请参阅上面的小节)。这表示图像是否显示异常('nok')或不显示异常('ok')。

如果DLSample字典中包含一个anomaly_file_name 图像,那么也可以在像素级别上可视化地评估模型在发现异常方面的性能。在这个图像中,每个像素都表示类ID,输入图像中的对应像素显示异常(像素值>0)或否(像素值=0)。

Scheme of anomaly_file_name. For visibility, gray values are used to represent numbers.

(1) Input image.

(2) The corresponding anomaly_file_name providing the class annotations, 0: 'ok' (white and light gray), 2: 'nok' (dark gray).

图像

模型对图像提出要求,比如尺寸、灰度值范围和类型。具体的值取决于模型本身。有关不同模型的具体值,请参阅read_dl_model文档。对于一个读取模型,它们可以用get_dl_model_param查询。为了满足这些要求,您可能必须对您的图像进行预处理。整个样本(包括图像)的标准预处理在preprocess_dl_samples中实现。在定制预处理的情况下,这些函数提供了实现的指导。

模型输出

作为训练输出,操作符train_dl_model_anomaly_dataset将返回一个字典DLTrainResult,其中包含在训练期间接收到的最佳错误以及出现此错误的时间。

作为推理和评估输出,模型将为每个样本返回一个字典DLResult。对于异常检测,本词典包括以下额外条目:

anomaly_score:表示整个图像包含异常的可能性的分数。这个分数是基于在anomaly_image中给出的像素分数。

anomaly_image:一幅图像,其中每个像素的值表示输入图像中对应像素显示异常的可能性有多大(参见下面的插图)。这些值∈[0, 1]。

Scheme of anomaly_image. For visualization purpose, gray values are used to represent numbers.

(1) The anomaly_file_name providing the class annotations, 0: 'ok’ (white and light gray), 2: 'nok’ (dark gray)

(2)The corresponding anomaly_image.

特殊参数

对于异常检测模型,使用set_dl_model_param设置模型参数和超参数。模型参数在get_dl_model_param中有更详细的解释。由于训练是利用完整的数据集一次完成的,而不是按批处理的,某些参数,如“batch_size_multiplier”没有影响。

该模型返回分数,但不会将像素和图像分类为是否显示异常。对于这种分类,需要设定阈值,将像素或图像视为异常的最低分值。您可以使用函数compute_dl_anomaly_threshold估计可能的阈值。可以通过函数threshold_dl_anomaly_results来应用这些阈值。作为结果,该函数将以下(取决于阈值)项添加到示例的DLResult字典中:

  1. anomaly_class:整个图像的预测类(对于给定阈值)。
  2. anomaly_class_id:整个图像的预测类的ID(对于给定阈值)。
  3. anomaly_region:由所有被认为显示异常的像素组成的区域(对于给定的阈值,请参阅下面的插图)。

Scheme of anomaly_region. For visualization purpose, gray values are used to represent numbers.

(1) The anomaly_image with the obtained pixel scores.

(2) The corresponding anomaly_region

(0)

相关推荐

  • 使用Python中的OpenCV降噪功能增强图像的3个步骤

    重磅干货,第一时间送达 在本文中,我们将展示如何通过三个简单的步骤来实现降噪.我们将使用机器学习训练的降噪模型.这是我们找到的最好的降噪模型之一. 程序可以判断图像是否有噪点吗?这对于另一个项目可能是 ...

  • 用生成模型来做图像恢复的介绍和回顾:上下文编码器

    作者:Chu-Tak Li 编译:ronghuaiyang 导读 本文给出了图像恢复的一般性框架,编解码器 + GAN,后面的图像复原基本都是这个框架. 本文会介绍图像修复的目的,它的应用,等等.然后 ...

  • 2020 图像超分最新综述及上采样技术一览

    作者丨科技猛兽 编辑丨极市平台 极市导读 本文对超分网络的数据集,常用的4种框架,上采样的方法,训练策略等进行了综述,同时详细解读了如何在多个金字塔级别上逐步重建高分辨率图像以及如何同时设计渐进式的超 ...

  • 用OpenCV实现超轻量的NanoDet目标检测模型!

    作者丨nihate 审稿丨邓富城 编辑丨极市平台 极市导读 本文作者用OpenCV部署了超轻量目标检测模型NanoDet,并实现了C++和Python两个版本,并对此进行了解析,附完整代码. > ...

  • 前沿研究丨基于神经网络的机器学习方法在增材制造中的应用

    本文选自中国工程院院刊<Engineering>2019年第4期 作者:亓欣波,陈国锋,李勇,程宣,李长鹏 来源:Applying Neural-Network-Based Machine ...

  • HALCON 20.11:深度学习笔记(10)

    HALCON 20.11.0.0中,实现了深度学习方法. 本章解释了如何在训练和推理阶段使用基于深度学习的分类. 基于深度学习的分类是一种对一幅图像分配一组置信值的方法.这些置信度值表明图像属于每个可 ...

  • HALCON 20.11:深度学习笔记(12)

    HALCON 20.11.0.0中,实现了深度学习方法. 本章解释了如何使用基于深度学习的语义分割,包括训练和推理阶段. 通过语义分割,我们使用深度学习(DL)网络将输入图像的每个像素分配到一个类. ...

  • HALCON 20.11:深度学习笔记(11)

    HALCON 20.11.0.0中,实现了深度学习方法. 本章讲解了如何使用基于深度学习的对象检测. 通过对象检测,我们希望在图像中找到不同的实例,并将它们分配给一个类.实例可以部分重叠,但仍然可以区 ...

  • HALCON 20.11:深度学习笔记(8)

    HALCON 20.11.0.0中,实现了深度学习方法. 本章解释HALCON中深度学习(DL)模型的一般概念和数据处理. 从概念上讲,HALCON中的深度学习模型是深度神经网络的内部表示. 每个深度 ...

  • HALCON 20.11:深度学习笔记(7)

    HALCON 20.11.0.0中,实现了深度学习方法.下面,我们将描述深度学习环境中使用的最重要的术语: anchor (锚) Anchors are fixed bounding boxes. T ...

  • HALCON 20.11:深度学习笔记(6)

    HALCON 20.11.0.0中,实现了深度学习方法.不同的DL方法有不同的结果.相应地,它们也使用不同的测量方法来确定网络的"好坏".在训练一个网络时,不同的模型会有不同的行为 ...

  • HALCON 20.11:深度学习笔记(5)

    HALCON 20.11.0.0中,实现了深度学习方法.关于超参数的有关设置内容如下: 不同的DL方法被设计用于不同的任务,它们的构建方式也会有所不同.它们都有一个共同点,即在模型的训练过程中都面临着 ...

  • HALCON 20.11:深度学习笔记(4)

    HALCON 20.11.0.0中,实现了深度学习方法.关于网络和训练过程如下: 在深度学习中,任务是通过网络发送输入图像来执行的.整个网络的输出由许多预测组成.例如,对于一个分类任务,预测得到的每个 ...

  • HALCON 20.11:深度学习笔记(3)

    HALCON 20.11:深度学习笔记(3)---Data(数据) HALCON 20.11.0.0中,实现了深度学习方法.其中,关于术语"数据"的介绍如下: 术语"数据 ...