【halcon深度学习】create_dl_model_detection

基本介绍

create_dl_model_detection 不是一个封装的库函数,是一个算子。用于创建用于目标检测或实例分割任务的深度学习模型。

输入参数:

  1. Backbone (input_control): 指定用作背骨网络的深度学习分类器,充当模型的基础。用户可以选择不同的预训练分类器,如 AlexNet、Compact 等。

  2. NumClasses (input_control): 指定模型要区分的类别数目。

  3. DLModelDetectionParam (input_control): 一个字典,包含用于配置对象检测模型的各种参数。这些参数将影响模型的结构、训练方式等。

输出参数:

  1. DLModelHandle (output_control): 返回创建的深度学习模型的句柄。

描述:

  • 该操作符的主要目的是创建一个深度学习模型,该模型可用于目标检测或实例分割任务。

  • 用户需要通过参数 Backbone 指定用作背骨网络的深度学习分类器,以及通过 NumClasses 指定模型要区分的类别数。

  • 参数 DLModelDetectionParam 是一个字典,用户可以在其中设置各种用于配置对象检测模型的参数。这些参数包括锚点角度、锚点纵横比、Backbone 网络层级、图像维度、最大检测数等。

  • 用户还可以设置参数 instance_segmentation,以指定模型是否用于实例分割任务。

  • 对于参数 Backbone,用户可以选择不同的预训练分类器,每个分类器具有不同的特点和适用场景。例如,AlexNet 适用于简单分类任务,MobileNet V2 适用于移动和嵌入式应用。

示例用法:

* 创建一个用于目标检测的深度学习模型
create_dl_model_detection('pretrained_dl_classifier_compact.hdl', 3, DLModelDetectionParam, DLModelHandle)

上述代码创建一个目标检测模型,使用 ‘pretrained_dl_classifier_compact.hdl’ 作为背骨网络,模型要区分的类别数为 3,其他参数通过字典 DLModelDetectionParam 进行配置,并将模型的句柄存储在 DLModelHandle 中。

详细分析

Backbone

第一个参数 Backbone ,Backbone 主要就是用来提取特征的,Backbone 有很多成熟的模型。halcon用的也不是自己原创的,而是早就有的成熟模型。(根据我的粗浅认知,Backbone 就是一个神经卷积网络,什么是神经卷积网络?可以参考我之前写的一篇文章《卷积神经网络CNN中的卷积操作详解》)

create_dl_model_detection这个函数的Backbone ,有哪些参数可选呢?一共有6个!
(pretrained 表示预训练,表示这些都是预训练的好的网络。)

  1. 'pretrained_dl_classifier_alexnet.hdl':

    • 适用于简单的分类任务。
    • 部分卷积层中的卷积核较大,与其他性能相当的网络(例如 'pretrained_dl_classifier_compact.hdl')相比,这可能有助于特征提取。
    • 默认特征金字塔建立在此背骨网络上,最高级别为 4。
  2. 'pretrained_dl_classifier_compact.hdl':

    • 旨在在内存和运行时上具有高效性。
    • 默认特征金字塔建立在此背骨网络上,最高级别为 4。
  3. 'pretrained_dl_classifier_enhanced.hdl':

    • 拥有比 'pretrained_dl_classifier_compact.hdl' 更多的隐藏层,因此被认为更适用于更复杂的任务,但以时间和内存为代价。
    • 默认特征金字塔建立在此背骨网络上,最高级别为 5。
  4. 'pretrained_dl_classifier_mobilenet_v2.hdl':

    • 是一个小型且低功耗的模型,更适合移动和嵌入式视觉应用。
    • 默认特征金字塔建立在此背骨网络上,最高级别为 4。
  5. 'pretrained_dl_classifier_resnet18.hdl':

    • 适用于更复杂的任务,与 'pretrained_dl_classifier_enhanced.hdl' 类似,但结构不同,使训练更加稳定且内部更健壮。
    • 默认特征金字塔建立在此背骨网络上,最高级别为 5。
  6. 'pretrained_dl_classifier_resnet50.hdl':

    • 适用于更复杂的任务,与 'pretrained_dl_classifier_enhanced.hdl' 类似,但结构不同,使训练更加稳定且内部更健壮。
    • 默认特征金字塔建立在此背骨网络上,最高级别为 5。

在使用 create_dl_model_detection 操作符时,你可以选择其中一个作为 Backbone 参数,具体选择取决于任务的需求和资源约束。
在这里插入图片描述

DLModelDetectionParam

DLModelDetectionParam 参数是一个字典,用于指定创建目标检测或实例分割模型时的各种参数。以下是一些可能在 DLModelDetectionParam 中设置的参数,你可以根据任务需求进行调整:

  1. 'anchor_angles': 锚定框的角度。

  2. 'anchor_aspect_ratios' (旧版本 'aspect_ratios'): 锚定框的宽高比。

  3. 'anchor_num_subscales' (旧版本 'num_subscales'): 锚定框的子刻度数量。

  4. 'backbone_docking_layers': Backbone 的对接层。

  5. 'bbox_heads_weight', 'class_heads_weight': 目标框和类别框的权重。

  6. 'capacity': 模型的容量。

  7. 'class_ids': 类别的标识。

  8. 'class_ids_no_orientation': 无方向的类别标识。

  9. 'class_names': 类别名称。

  10. 'class_weights': 类别权重。

  11. 'freeze_backbone_level': Backbone 网络的级别。

  12. 'ignore_direction': 是否忽略方向。

  13. 'image_dimensions': 图像的维度。

  14. 'image_height', 'image_width': 图像的高度和宽度。

  15. 'image_num_channels': 图像的通道数。

  16. 'instance_segmentation': 是否进行实例分割。

  17. 'instance_type': 实例的类型。

  18. 'mask_head_weight': 掩膜框的权重(仅适用于实例分割)。

  19. 'max_level', 'min_level': 特征金字塔的最大和最小级别。

  20. 'max_num_detections': 最大检测数量。

  21. 'max_overlap': 最大重叠。

  22. 'max_overlap_class_agnostic': 类别无关的最大重叠。

  23. 'min_confidence': 最小置信度。

  24. 'optimize_for_inference': 是否优化用于推断。

这些参数提供了对创建模型的各个方面进行精细控制的能力,以满足不同场景和任务的需求。你可以根据实际情况选择性地设置这些参数。

一些参数的说明

'max_overlap': 最大重叠。 和 'max_overlap_class_agnostic': 类别无关的最大重叠。
指的的选择框(锚定框)的重叠,这个和非极大抑制有关(交并比)。
可以去看看这篇:《非极大抑制》
instance_segmentation,以指定模型是否用于实例分割任务。

当然这里面很多参数,其实可以来自之前讲到的一个函数:
determine_dl_model_detection_param

直译为 “确定深度学习模型检测参数”。 这个过程会自动针对给定数据集估算模型的某些高级参数,强烈建议使用这一过程来优化训练和推断性能。

没错关联起来了。

代码上下文

* 
determine_dl_model_detection_param (DLDataset, ImageWidth, ImageHeight, GenParam, DLDetectionModelParam)
* 
* Get the generated model parameters.
MinLevel := DLDetectionModelParam.min_level
MaxLevel := DLDetectionModelParam.max_level
AnchorNumSubscales := DLDetectionModelParam.anchor_num_subscales
AnchorAspectRatios := DLDetectionModelParam.anchor_aspect_ratios
* 
* *******************************************
* **   Create the object detection model  ***
* *******************************************
* 
* Create dictionary for generic parameters and create the object detection model.
DLModelDetectionParam := dict{}
DLModelDetectionParam.image_width := ImageWidth
DLModelDetectionParam.image_height := ImageHeight
DLModelDetectionParam.image_num_channels := ImageNumChannels
DLModelDetectionParam.min_level := MinLevel
DLModelDetectionParam.max_level := MaxLevel
DLModelDetectionParam.anchor_num_subscales := AnchorNumSubscales
DLModelDetectionParam.anchor_aspect_ratios := AnchorAspectRatios
DLModelDetectionParam.capacity := Capacity
* 
* Get class IDs from dataset for the model.
ClassIDs := DLDataset.class_ids
DLModelDetectionParam.class_ids := ClassIDs
* Get class names from dataset for the model.
ClassNames := DLDataset.class_names
DLModelDetectionParam.class_names := ClassNames
* 
* Create the model.
create_dl_model_detection (Backbone, NumClasses, DLModelDetectionParam, DLModelHandle)
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: Halcon create_shape_model是一个Halcon图像处理软件中的函数,用于创建形状模型。形状模型是一种用于在图像中查找特定物体的模型,它可以识别物体的形状、大小、旋转角度等特征。通过Halcon create_shape_model函数,用户可以根据需要创建自己的形状模型,以便在后续的图像处理中使用。 ### 回答2: Halcon是一种非常强大的机器视觉软件,它提供了各种各样的工具和函数来帮助用户进行图像处理和分析。在Halcon中,create_shape_model是其中一个非常重要的函数,它允许用户创建自己的形状模板,并用于在图像中查找相同的形状。 首先,我们需要明确什么是形状模板。形状模板是一个由边缘组成的结构,可以用于表示某种形状的特征。例如,如果我们要在图像中查找一个特定的圆形,我们可以使用create_shape_model函数创建一个圆形模板,然后在图像中使用find_shape_model函数来查找这个圆形。 使用create_shape_model函数创建模板时,我们需要提供一个输入图像,然后选择我们想要创建模板的区域。create_shape_model函数会自动提取区域中的边缘,并将它们组合成一个形状模板。我们也可以选择对模板进行一些额外的处理,例如平移、旋转和缩放,以适应不同尺度和角度的形状。 一旦我们创建好了形状模板,我们就可以将其用于在图像中查找相同的形状。使用find_shape_model函数,我们可以指定我们想要查找的模板,然后在图像中搜索该模板。find_shape_model函数会返回一个包含所有符合条件的形状的列表,并将它们标记出来,以便用户可以进一步处理或分析这些形状。 总的来说,create_shape_model是一个非常有用的函数,它为用户提供了一种快速而精确的方法来创建自己的形状模板,并在图像中查找相同的形状。无论您是处理图像还是分析数据,都可以使用create_shape_model函数来加快您的工作流程,并提高您的工作效率。 ### 回答3: Halcon是一个工业级的计算机视觉库,提供了丰富的图像处理和分析功能。其中,create_shape_modelHalcon中一个非常重要的函数,用于创建基于形状的图像模型。 首先,我们需要明确一个概念,即“形状模型(shape model)”。形状模型是指将目标物体的形状信息抽象出来的一个数学模型,通常是基于轮廓线、边界等信息,用于描述目标物体的形状。形状模型Halcon中一种常用的目标识别方法,其特点是对目标物体的形状不敏感,能够实现较高的识别精度。 create_shape_model函数用于根据一组训练图像,生成一个形状模型。具体步骤如下: 1. 预处理:首先,需要对训练图像进行预处理,包括图像去噪、二值化、边缘检测等操作。目的是提取出目标物体的边缘、轮廓等形状信息。 2. 提取特征:对预处理后的图像进行特征提取,从而得到用于描述目标物体形状的特征向量。Halcon中提供了多种特征提取算法,如灰度分布、霍夫变换等。 3. 建立模型:将提取到的特征向量按照一定的规则组合成形状模型,并存储到硬盘上,以备后续使用。 使用create_shape_model函数可以自动化地完成上述步骤,从而快速地生成一个形状模型。用户只需要输入训练图像(通常为包含目标物体的正面图像)和相关参数,即可得到一个形状模型create_shape_model函数的输出是一个包含形状模型信息的文件,用户可以通过该文件进行目标识别、定位等工作。值得一提的是,使用形状模型进行目标识别时,需要对输入图像进行预处理,并使用find_shape_model函数搜索目标物体在图像中的位置。 总之,create_shape_modelHalcon中一个非常重要的函数,用于生成基于形状的目标模型。它可以大大简化模型建立的流程,提高识别精度和效率。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

code bean

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值