深度学习模型
本章介绍了HALCON中的深度学习模型的一般概念以及数据处理。
从概念上讲,HALCON中的深度学习模型是深度神经网络。每个深度神经网络都有一个定义其功能(即可以用于其任务)的架构。一种功能可能有几种可能的网络体系结构。当前,用于以下功能(也称为方法或类型)的网络已在HALCON中作为模型实现:
对于已实现的方法,您可以在相应的章节中找到有关特定工作流程,数据要求和验证措施的更多信息。有关深度学习(DL)的信息通常在“深度学习”一章中 。
在本章中,您将找到信息,DL模型需要并返回哪些数据以及如何传输这些数据。
数据
独立于所使用的深度学习方法,必须按照某些约定将数据提供给模型。作为基本概念,模型通过字典处理数据。更准确地说,该模型为每个输入图像接收一个字典 。这样的词典包含图像,并且在训练和评估的情况下包含诸如地面真相注释之类的信息。作为输出,模型返回包含结果的字典。下图给出了一个图示。 DLSample
DLResult
(1) | (2) |
DLSample
BatchSize
DLSample
在训练和评估过程中,额外的词典 用作数据库,并收集所有单独的图像信息词典(存储在key中)。在该数据库中,将创建模型输入字典,请参见下图和“培训和评估输入数据”部分。 DLDataset
samples
DLSample
BatchSize
DLSampleBatch
DLSample
尽管对于模型本身不是必需的,但是字典 是根据训练和评估程序使用的。因此,我们强烈建议 您根据数据创建字典。其必要的条目如下所述。在对象检测和 语义分割的情况下,可以通过该过程为您方便地创建此字典 。请使用相应的过程文档,以获取有关数据要求的信息,以使用这些过程。如果以其他方式创建,则它必须至少包含以下说明中未用数字标记的条目。在数据集的预处理期间,各个过程包括字典的其他条目。 DLDataset
DLDataset
read_dl_dataset_from_coco
read_dl_dataset_segmentation
DLDataset
DLDataset
下面,我们解释不同的数据和所涉及的字典。因此,我们使用以下缩写来使用条目标记方法(m):“ A”:任何方法,“ D”:对象检测,“ S”:语义分割。在相应的章节参考中对仅适用于某些方法的条目进行了更详尽的描述。
培训和评估输入数据
数据集包括图像和相应的信息。必须以模型可以处理它们的方式提供它们。关于图像要求,请在下面的“图像”部分中找到更多信息。
有关图像和数据集的信息以字典的形式表示,该字典用作数据库。更准确地说,它存储有关数据集的一般信息以及在之下收集的单个样本的字典 。当需要实际的图像数据时, 将为所需的每个图像创建一个字典(如果已有的话,则将其读取)。这些词典的关系如上图所示。在下文中,我们将更详细地解释这些字典及其键/值对。
DLDataset
samples
DLSample
DLDataset
该词典 存储有关数据集的一般信息,并收集各个样本的词典。因此,标志性数据不包括在内,而是各个图像的路径。根据模型类型,此词典可以包含以下条目:
DLDataset
DLDataset
键 描述 格式 米 image_dir
所有图像的通用基本路径 串 一种
[1]dlsample_dir
所有样本文件的公共基本路径(如果存在) 串 一种 class_names
要区分的所有类别的名称 字符串元组 一种 class_ids
要区分的所有类的ID(范围:0-65534) 整数元组 一种
[1]preprocess_param
预处理期间使用的所有参数值 字典 一种 samples
样本说明集合 字典元组 一种
[1]class_weights
不同类别的权重 实数元组 小号 segmentation_dir
所有分割图像的公共基本路径 串 小号 read_dl_dataset_from_coco
在对象检测和read_dl_dataset_segmentation
语义分割的情况下, 可以通过该过程为您方便地创建此字典 。请使用相应的过程文档,以获取有关数据要求的信息,以使用这些过程。标记为[1]的条目包含在预处理过程中。samples
该键将字典的元组作为值,数据集中的每个样本对应一个。这些词典包含有关数据集的单个样本的信息。根据模型类型,此词典可以包含以下条目:
DLDataset
samples
键 描述 格式 米 image_file_name
图像的文件名及其相对的路径 image_dir
串 一种 image_id
唯一的图像ID(编码格式:UINT8) 整数 一种
[2]split
指定所分配的子集分割(,,) 'train'
'validation'
'test'
串 一种
[3]dlsample_file_name
相应字典的文件名及其相对于的路径 DLSample
dlsample_dir
串 一种 segmentation_file_name
地面真相分割图像的文件名及其相对的路径 segmentation_dir
串 小号 bbox_label_id
边界框的地面真相标签(格式为) class_ids
整数元组 d
[4]bbox_row1
地面实况边界框坐标:第1行 实数元组 d
[4]bbox_col1
地面实况边界框坐标:第1列 实数元组 d
[4]bbox_row2
地面真相边界框坐标:第2行 实数元组 d
[4]bbox_col2
地面实况边界框坐标:第2列 实数元组 d coco_raw_annotations
可选的。它为该图像中的每个图像包含一个字典,其中包含所有原始COCO注释信息 bbox_label_id
字典元组 d 这些词典是其中的一部分,因此 在对象检测和 语义分割的情况下,这些词典是由该过程同时创建的。表中带有标记的条目是一个例外,[2]:过程添加,[3]:过程添加 。[4]:对于边界框,使用像素居中,亚像素准确的坐标。
DLDataset
read_dl_dataset_from_coco
read_dl_dataset_segmentation
split_dl_dataset
split
preprocess_dl_samples
dlsample_file_name
DLSample
字典用作模型的输入。对于一批,它们作为元组的条目移交给 。
DLSample
DLSampleBatch
通过该过程为每个图像样本 创建 一个字典。它包含图像的所有地面真相注释。如果使用标准过程进行了预处理 ,则会在其中自动创建它们。注意,预处理步骤可能导致相应字典的更新 。
DLSample
DLDataset
gen_dl_samples
preprocess_dl_samples
DLSample
根据模型类型,可以具有以下条目:
DLSample
键 描述 格式 米 image
输入图像 图片 一种 image_id
唯一的图片ID(如) DLDataset
整数 一种 segmentation_image
带有地面真相分割的图像,请阅读 segmentation_file_name
图片 小号
[5]weight_image
具有像素权重的图像 图片 小号 bbox_label_id
边界框中图像部分的地面真相标签(格式为) class_ids
整数元组 d
[4]bbox_row1
地面实况边界框坐标:第1行 实数元组 d
[4]bbox_col1
地面实况边界框坐标:第1列 实数元组 d
[4]bbox_row2
地面真相边界框坐标:第2行 实数元组 d
[4]bbox_col2
地面实况边界框坐标:第2列 实数元组 d 这些字典是由过程创建的
gen_dl_samples
。上表中标记为[5]的条目是一个例外:由过程创建gen_dl_segmentation_weights
。[4]:对于边界框,使用像素居中,亚像素准确的坐标。请注意,如果应存储这些DLSample信息,请使用write_dl_samples过程。您可以通过read_dl_samples阅读它们。
推断输入数据
推理输入数据由裸露的图像组成。必须以模型可以处理它们的方式提供它们。关于图像要求,请在下面的“图像”小节中找到更多信息。
该模型设置为通过字典
移交所有数据 。为了进行推断,可以使用过程gen_dl_samples_from_images创建仅包含图像的字典。这些字典可以一次或在一个元组DLSampleBatch中传递 。DLDataset
训练输出数据
作为运算符的输出train_dl_model_batch,模型将返回DLTrainResult字典。在此字典中,您将找到总损失的当前值以及密钥的值以及模型中包括的所有其他损失的值total_loss。
推断和评估输出数据
作为运算符的输出,模型将为每个样本返回一个字典。根据模型类型,此词典可以包含以下条目:
apply_dl_model
DLResult
键 描述 格式 米 segmentation_image
具有分割结果的图像 图片 小号 segmentation_confidence
具有分割结果置信度的图像 图片 小号 bbox_class_id
边界框的预测类(形式为) class_ids
整数元组 d bbox_confidence
边界框预测的置信度值 实数元组 d bbox_row1
预测边界框坐标:第1行 实数元组 d bbox_col1
预测边界框坐标:第1列 实数元组 d bbox_row2
预测边界框坐标:第2行 实数元组 d bbox_col2
预测边界框坐标:第2列 实数元组 d 有关输出值的进一步说明,请分别参考“深度学习/语义分割”和“ 深度学习/对象检测”一章 。
图片
无论何种应用,网络都会对图像提出要求。具体值取决于网络本身,可以使用来查询。为了满足这些要求,您可能需要预处理图像。整个数据集以及图像的标准预处理在中实现。在定制预处理的情况下,此过程提供了实施指导。
get_dl_model_param
preprocess_dl_samples
操作算子的名单:
在一组图像上应用基于深度学习的网络以进行推理。
清除深度学习模型。
反序列化深度学习模型。
返回深度学习模型的参数。
从文件中读取深度学习模型。
序列化深度学习模型。
设置深度学习模型的参数。
训练深度学习模型。
在文件中编写深度学习模型。

