HALCON 21.11:深度学习笔记---模型(8)

HALCON 21.11:深度学习笔记---模型(8)

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

本章阐述了HALCON中深度学习(DL)模型的一般概念和数据处理。

从概念上讲,HALCON中的深度学习模型是深度神经网络的内部表示。

每个深度神经网络都有一个定义其功能的架构,即它可以用于的任务。

一个功能可以有多个可能的网络架构。

目前,以下功能的网络在HALCON中作为模型实现:

  1. 异常检测,参见深度学习/异常检测
  2. 分类,参见深度学习/分类
  3. 对象检测,参见深度学习/对象检测, 实例分割
  4. 语义分割,参见深度学习/语义分割, 边缘提取

每个功能都由其唯一的模型类型标识。

对于已实现的方法,您可以在相应章节中找到关于特定工作流、数据需求和验证措施的进一步信息。

深度学习的一般信息在深度学习一章中给出。

在本章中,您将了解DL模型需要和返回的数据以及这些数据是如何传输的。

Data (数据)

深度学习应用程序有不同类型的数据需要区分。粗略地说,这些是:带有可能注释的原始图像、以适合模型的方式进行预处理的数据以及输出数据。

在解释不同类型的数据和特定字典的条目之前,我们将了解一下数据是如何连接的。因此,符号和颜色指的是下面给出的示意图概述。

In brief, the data structure for training or evaluation starts with the raw images and their ground truth annotations (gray frames). With the read data the following dictionaries are created: A dictionary DLDataset (red), which serves as database and refers to a specific dictionary (yellow) for every input image. The dictionary DLSample (orange) contains the data for a sample in the way the network can process it. A batch of DLSample is handed to the model in DLSampleBatch. For evaluation, DLResultBatch is returned, a tuple of dictionaries DLResult (dark blue), one for every sample. They are needed to obtain the evaluation results EvaluationResults. For training, the training results (e.g., loss values) are returned in the dictionary DLTrainResult (light blue). 关于修改或创建字典的最重要步骤:

  1. 读取原始数据(符号:带箭头的纸)
  2. 数据预处理(符号:齿轮)
  3. 训练(符号:透明的弧形大脑)
  4. 模型求值(符号:图形)
  5. 样品鉴定(符号:放大镜)

 Schematic overview of the data structure during training and evaluation.

对于推理,不需要注释。因此,数据结构从原始图像(灰色帧)开始。字典DLSample(橙色)以网络处理的方式包含了样本的数据。样本的结果在DLResult字典中返回(深蓝色)。关于修改或创建字典最重要的步骤:

  1. 读取原始数据(符号:带箭头的纸)
  2. 数据预处理(符号:齿轮)
  3. 推理(符号:透明的弧形大脑)
  4. 样品的鉴定(符号:放大镜)

Schematic overview of the data connection during inference

为了让模型处理数据,数据需要遵循特定的约定,即需要什么以及如何将数据提供给模型。从上面图中可以看出,HALCON使用字典传输数据。

下面我们将解释涉及到的字典、如何创建它们以及它们的条目。因此,我们根据创建它们的深度学习应用程序的主要步骤以及它们是作为输入数据还是输出数据对它们进行分组。下列缩略语标明该条目适用方法:

Any”:任何方法

AD”:异常检测

CL”:分类

OD”:目标检测。如条目只适用于特定'instance_type',则添加规范'r1': 'rectangle1''r2': 'rectangle2'

SE”:语义分割。

仅适用于某些方法的条目在相应章节中有更广泛的描述。

训练和评估输入数据

该数据集由图像和相应的信息组成。它们必须以模型能够处理的方式提供。关于图像要求,可以在下面的“图像”部分找到更多信息。

关于图像和数据集的信息在字典DLDataset中表示,DLDataset充当一个数据库。更准确地说,它存储关于数据集和在关键样本下收集的单个样本的字典的一般信息。当需要实际的图像数据时,将为每个需要的图像创建一个字典DLSample(如果它已经存在,则读取它)。这些字典之间的关系如下图所示。

Schematic illustration of the different dataset dictionaries used for training and evaluation. For visibility purpose only few entries are registered and BatchSize is set to three. In this example we have n samples. Thereof three samples are chosen randomly: i, j, and k. The corresponding dictionaries DLSample are created and joined in the tuple DLSampleBatch.

DLDataset

字典DLDataset充当一个数据库。它存储关于数据集的一般信息,并收集单个样本的字典。

因此,图标数据不包含在DLDataset中,而是包含到各个图像的路径。

字典DLDataset用于训练和评价程序。

这对于模型来说不是必需的,但是我们强烈建议创建它。

它的必要条目如下所述。

本字典是在使用MVTec深度学习工具标记数据时直接创建的。

或者,它是在使用以下过程之一读取数据时创建的:

  1. read_dl_dataset_anomaly(异常检测)
  2. read_dl_dataset_classification(分类)
  3. read_dl_dataset_from_coco ('instance_type' = 'rectangle1'的对象检测)
  4. read_dl_dataset_segmentation(语义分割)

为了使用这些程序,请参阅相应的程序文件中对数据的要求。

如果您以另一种方式创建DLDataset,它必须至少包含下面描述中没有标记数字的条目。

在数据集的预处理过程中,各个过程包括字典DLDataset的进一步条目。

根据模型类型,字典可以包含以下条目:

image_dir: Any

所有图像的公共基础路径。格式:字符串。

dlsample_dir: Any [1]

所有示例文件的公共基路径(如果存在)。格式:字符串。

class_names: Any

要区分的所有类的名称。格式:字符串元组。

class_ids: Any

所有要区分的类的id(范围:0-65534)。格式:整数元组。

preprocess_param: Any [1]

预处理期间使用的所有参数值。格式:字典。

samples: Any

样本描述的集合。格式:字典元组。

class_weights: CL, SE [1]

不同类别的权重。格式:实数元组。

anomaly_dir: AD

所有异常区域(图像中表示异常的区域)的公共基础路径。格式:字符串。

segmentation_dir: SE

所有分割图像的公共基础路径。格式:字符串。

该字典是在使用MVTec深度学习工具对数据进行标记时直接创建的。

它也可由上面提到的用于读取数据的函数创建。标记为[1]的条目在预处理过程添加。

samples

The DLDataset key samples gets a tuple of dictionaries as value, one for each sample in the dataset.

这些字典包含有关数据集的单个样本的信息。

根据模型类型,该字典可以包含以下条目:

image_file_name: Any

图像的文件名及其相对于image_dir的路径。格式:字符串。

image_id: Any

唯一的图像ID(编码格式:UINT8)。格式:整数。

split: Any [2]

指定分配的分割子集('train''validation''test')。格式:字符串。

dlsample_file_name: Any [3]

对应字典DLSample的文件名及其相对于dlsample_dir的路径。格式:字符串。

anomaly_file_name: AD

可选的。带有ground truth注释的区域文件的路径(相对于anomaly_dir)。格式:字符串。

anomaly_label: AD

图像级别上的Ground Truth异常标签(class_names的形式)。格式:字符串。

image_label_id: CL

图像的Ground truth标签(class_ids的形式)。格式:整数元组。

bbox_label_id: OD

边界框的Ground Truth标签(class_ids的形式)。格式:整数元组。

bbox_row1: OD:r1 [4]

Ground Truth边界框:左上角,行坐标。格式:实数元组。

bbox_col1: OD:r1 [4]

Ground Truth边界框:左上角,列坐标。格式:实数元组。

bbox_row2: OD:r1 [4]

Ground Truth边界框:右下角,行坐标。格式:实数元组。

bbox_col2: OD:r1 [4]

Ground Truth边界框:右下角,列坐标。格式:实数元组。

coco_raw_annotations: OD:r1

可选的。对于这个图像中的每个bbox_label_id,它都包含一个包含所有原始COCO注释信息的字典。格式:字典元组。

bbox_row: OD:r2 [4]

Ground Truth边界框:中心点,行坐标。格式:实数元组。

bbox_col: OD:r2 [4]

Ground Truth边界框:中心点,列坐标。格式:实数元组。

bbox_phi: OD:r2 [4]

Ground Truth边界框:角度。格式:实数元组。

bbox_length1: OD:r2 [4]

Ground Truth边界框:边1的一半长度。格式:实数元组。

bbox_length2: OD:r2 [4]

Ground Truth边界框:边2的一半长度。格式:实数元组。

mask: OD:is

Ground Truth掩码标记实例区域。格式:区域元组。

segmentation_file_name: SE

Ground Truth分割图像的文件名及其相对于segmentation_dir的路径。格式:字符串。

这些字典是DLDataset的一部分,因此它们是并发创建的。

一个例外是表中有标记的项:

[2]: 函数split_dl_dataset添加split

[3]: 函数preprocess_dl_samples添加dlsample_file_name

[4]: 已使用坐标:像素为中心,亚像素精确坐标。

DLSample

字典DLSample作为模型的输入。

对于一个批处理,它们作为元组DLSampleBatch的条目传递。它们是由函数gen_dl_samples为每个图像样本在DLDataset之外创建的。

如果使用标准函数preprocess_dl_samples进行预处理,则在其中自动创建它们。

注意,预处理步骤可能导致相应的DLSample字典的更新。

DLSample包含预处理过的图像,以及在训练和评估时使用的所有Ground Truth注释。

根据模型类型,它可以有以下条目:

image: Any

输入图像。格式:字符串。

image_id: Any

唯一的图像ID(DLDataset)。格式:整数。

anomaly_ground_truth: AD

异常图像或区域,从anomaly_file_name读取。格式:图像或区域。

anomaly_label: AD

图像级别上的Ground Truth异常标签(class_names的形式)。格式:字符串。

anomaly_label_id: AD

Ground truth异常在图像级别上的标签ID (class_ids的形式)。格式:整数。

image_label_id: CL

图像的Ground truth标签(class_ids的形式)。格式:整数元组。

bbox_label_id: OD

边界框内的图像部分的Ground Truth (class_ids的形式)。格式:整数元组。

bbox_row1: OD:r1 [4]

Ground Truth边界框:左上角,行坐标。格式:实数元组。

bbox_col1: OD:r1 [4]

Ground Truth边界框:左上角,列坐标。格式:实数元组。

bbox_row2: OD:r1 [4]

Ground Truth边界框:右下角,行坐标。格式:实数元组。

bbox_col2: OD:r1 [4]

Ground Truth边界框:右下角,列坐标。格式:实数元组。

bbox_row: OD:r2 [4]

Ground Truth边界框:中心点,行坐标。格式:实数元组。

bbox_col: OD:r2 [4]

Ground Truth边界框:中心点,列坐标。格式:实数元组。

bbox_phi: OD:r2 [4]

Ground Truth边界框:角度。格式:实数元组。

bbox_length1: OD:r2 [4]

Ground Truth边界框:边1的一半长度。格式:实数元组。

bbox_length2: OD:r2 [4]

Ground Truth边界框:边2的一半长度。格式:实数元组。

mask: OD:is

Ground Truth掩码标记实例区域。

segmentation_image: SE

图像与Ground Truth分割,从segmentation_file_name读取。格式:图像。

weight_image: SE [5]

具有像素权重的图像。格式:图像。

这些字典是由函数gen_dl_samples创建。

一个例外是上面表中标记的条目[5]:由函数gen_dl_segmentation_weights创建;

[4]:已使用坐标:像素为中心,亚像素精确坐标。

注意,如果需要存储这些DLSample,请使用函数write_dl_samples。您可以使用函数read_dl_samples来读取它们。

推理输入数据

待推理输入数据由裸图像组成。

必须以模型能够处理的方式提供它们。

关于图像需求,请在下面的“图像”小节中找到更多信息。

该模型通过字典DLDataset移交所有数据。对于推理,可以使用函数gen_dl_samples_from_images创建一个只包含图像的字典。这些字典可以一次传递一个,也可以在元组DLSampleBatch中传递。

训练输出数据

训练输出数据在字典DLTrainResult中给出。它的条目取决于模型,因此也取决于所使用的函数(更多信息参见相应函数的文档)

CL, OD, SE

  1. 函数train_dl_model_batch返回。
  2. total_loss
  3. 包括在模型中的可能进一步的损失。

AD

  1. 函数train_dl_model_anomaly_dataset返回。
  2. final_error
  3. final_epoch

推断和评估输出数据

作为函数apply_dl_model的输出,模型将为每个样本返回一个字典DLResult

下图给出了一个说明。评估基于这些结果和注释。评估结果存储在EvaluationResults中。

Schematic illustration of the dictionaries serving as model input:

(1) Evaluation: DLSample includes the image as well as information about the image and its content. This data serves as basis for the evaluation. For visibility purpose BatchSize is set to three (containing the randomly chosen samples i,j,and k, see above) and only few entries are registered.

(2) Inference: DLSample contains only the image. These dictionaries can be passed one at a time or within a tuple.

根据模型类型的不同,字典DLResult可以有以下条目:

anomaly_image: AD

灰度值为分数的单通道图像,表示输入图像中对应像素属于异常的可能性有多大。格式:图像。

anomaly_score: AD

anomaly_image计算图像级别的异常得分。格式:实数。

classification_class_ids: CL

根据置信值排序的图像的推断类id。格式:整数元组。

classification_class_names: CL

根据置信值排序的图像的推断类名。格式:字符串元组。

classification_confidences: CL

每类图像推理的置信值。格式:实数元组。

bbox_class_id: OD

边界框的推断类(class_ids的形式)。格式:整数元组。

bbox_class_name: OD

边界框的推断类的名称。

bbox_confidence: OD

边界框推理的置信度值。格式:实数元组。

bbox_row1: OD:r1 [6]

推断边界框:左上角,行坐标。格式:实数元组。

bbox_col1: OD:r1 [6]

推断边界框:左上角,列坐标。格式:实数元组。

bbox_row2: OD:r1 [6]

推断边界框:右下角,行坐标。格式:实数元组。

bbox_col2: OD:r1 [6]

推断边界框:右下角,行坐标。格式:实数元组。

bbox_row: OD:r2 [6]

推断边界框:中心点,行坐标。格式:实数元组。

bbox_col: OD:r2 [6]

推断边界框:中心点,列坐标。格式:实数元组。

bbox_phi: OD:r2 [6]

推断边界框:角度。格式:实数元组。

bbox_length1: OD:r2 [6]

推断边界框:边1的一半长度。格式:实数元组。

bbox_length2: OD:r2 [6]

推断边界框:边2的一半长度。格式:实数元组。

mask: OD:is

推断掩码标记实例区域。

segmentation_image: SE

图像分割的结果。格式:图像。

segmentation_confidence: SE

图像与置信值的分割结果。格式:图像。

[6]:已使用坐标:像素为中心,亚像素精确坐标。

对于输出值的进一步解释,我们参考各自方法的章节,如深度学习/语义分割, 边缘提取。

Images

不管应用程序是什么,网络都会对图像提出要求。

具体的值取决于网络本身,可以使用函数get_dl_model_param进行查询。

为了满足这些要求,您可能必须对您的图像进行预处理。

整个数据集的标准预处理,同时图像也在函数preprocess_dl_samples中实现。

在自定义预处理的情况下,这个函数提供了实现的指导。

  • 3
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Halcon 21.11是一种图像处理软件。您可以从官方网站https://www.mvtec.com/cn下载安装程序\[1\]。安装过程中,您需要进行一些设置,包括选择要安装的软件包和拷贝许可证到安装目录的license文件夹\[3\]。在使用Halcon进行深度学习任务时,您可以使用训练数据来训练和评估网络。训练数据可以包含类标签、边界框和实例分割掩码等信息,您可以使用MVTec深度学习工具来格式化数据并创建字典DLDataset\[2\]。如果您已经使用标准的COCO格式标记了数据,您可以使用函数read_dl_dataset_from_coco来读取数据并创建字典DLDataset\[2\]。 #### 引用[.reference_title] - *1* *3* [halcon21.11安装教程详解](https://blog.csdn.net/qq_43069920/article/details/123077882)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [HALCON 21.11深度学习笔记---对象检测, 实例分割(11)](https://blog.csdn.net/liubing8609/article/details/121527420)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值