【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)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/259156.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

python+pytest接口自动化之测试函数、测试类/测试方法的封装

前言 今天呢,笔者想和大家聊聊pythonpytest接口自动化中将代码进行封装,只有将测试代码进行封装,才能被测试框架识别执行。 例如单个接口的请求代码如下: import requestsheaders {"user-agent": "Mozilla/5.0…

国标28181平台只能连接视频监控吗?

在一些视频监控项目中,国标28181平台成为了必不可少的工具。这个平台的主要作用在于将分布在不同区域的视频监控录像机、摄像头等设备进行联网管理,同时还能将视频监控连接到上一级的国标监控平台。 可以说,国标监控平台是一个非常重要的承上…

【QT】解决QTableView修改合并单元格内容无法修改到合并范围内的单元格

问题:修改合并单元格的内容 修改合并单元格的内容时,希望直接修改到合并范围内的单元格,Qt没有实现这个功能,需要自己写出 Delegate来实现 方案:Delegate class EditDelegate : public QStyledItemDelegate {public:EditDelegate(QTableView *view): tableView(view){}pu…

【Spring Security】让你的项目更加安全的框架

🎉🎉欢迎来到我的CSDN主页!🎉🎉 🏅我是Java方文山,一个在CSDN分享笔记的博主。📚📚 🌟推荐给大家我的专栏《MyBatis-Plus》。🎯🎯 &am…

【halcon深度学习之那些封装好的库函数】determine_dl_model_detection_param

determine_dl_model_detection_param 目标检测的数据准备过程中的有一个库函数determine_dl_model_detection_param “determine_dl_model_detection_param” 直译为 “确定深度学习模型检测参数”。 这个过程会自动针对给定数据集估算模型的某些高级参数,强烈建议…

kafka offset sasl加密连接

kafka-tool(offset) 进行SCRAM连接,直接上图 填写jaas的认证(账密 引用包)

【Java】网络编程-UDP字典服务器客户端简单代码编写

上文讲了UDP回响服务器客户端简单代码编写 本文将讲述UDP字典服务器客户端简单代码编写。所谓回显,就是指客户端向服务器发送一个报文,从服务器那里得到一条一模一样的回响报文 而我们的字典功能呢,则是实现了输入中文,得到对应…

力扣 面试经典150算法题

1合并两个有序数组88. 合并两个有序数组-CSDN博客简单23

Backend - Django 项目创建 运行

目录 一、配置环境 二、创建 Django 项目 (一)新建文件夹 (二)打开文件夹 (三)打开运行终端 (四)创建基础项目 (五)创建app 1. 安装Django &#xf…

分析某款go扫描器之四

一、概述 上文提到实现IP的探测存活以及tcp扫描的实现,这部分来分析实现本机网卡信息获取,以及维护一张mac地址表以及ip扫描端口状态表,同时实现syn扫描功能。 项目来源:https://github.com/XinRoom/go-portScan/blob/main/util…

PY32F072片内闪存读写 HAL库

我这个hal库底层是一次写一页,擦除也是以页为单位的。这个芯片太偏了,有点小恶心。 flash.c uint8_t flash_read(uint32_t add) {uint8_t temp;temp *(__IO uint8_t *)(add);return temp; }void flash_read_buf(uint32_t add, uint8_t *data, uint8_t…

【ICCV 2023】MPI-Flow:什么,只需要单张图片就能训练光流估计模型了?

ICCV 2023 | MPI-Flow:从单视角构建的多平面图像中学习光流 引言:主要贡献:Motivation:算法细节:Optical Flow Data GenerationIndependent Object MotionsDepth-Aware Inpainting 实验结果: 来源&#xff…

Python实现多元线性回归模型信用卡客户价值预测项目源码+数据+项目设计报告

多元线性回归——信用卡客户价值预测 一、背景 这里以信用卡客户的客户价值为例来解释客户价值预测的具体含义: 客户价值预测就是指预测客户在未来一段时间内能带来多少利润,其利润可能来自信用卡的年费、取现手续费、分期手续费、境外交易手续费等。分…

《C++ Primer》第13章 拷贝控制(三)

参考资料: 《C Primer》第5版《C Primer 习题集》第5版 13.5 动态内存管理类(P464) 某些类需要在运行时分配可变大小的内存空间。这种类通常可以用使用标准库容器来保存它们的数据。有些时候,我们希望类自己进行内存分配&#…

TypeScript【泛型1、泛型2、声明合并、命名空间 、模块1、模块2、声明文件简介】(五)-全面详解(学习总结---从入门到深化)

文章目录 泛型1 泛型2 声明合并 命名空间 模块1 模块2 声明文件简介 泛型1 泛型(Generics)是指在定义函数、接口或类的时候,不预先指定具体的类型,而在使用的时候再指定类型的一种特性 首先,我们来实现一个函数…

小黑南京归来,参加部里的公务员培训,有点儿社死认识了好多小伙伴的leetcode之旅13. 罗马数字转整数

小黑代码 class Solution:def romanToInt(self, s: str) -> int:chars [M, CM, D, CD, C, XC, L, XL, X, IX, V, IV,I]nums [1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1]map_ dict((k, v) for k,v in zip(chars, nums))# 字符串长度n len(s)# 结果变量res …

安装Redis+Redis设置成windows下的服务+windows无法启动Redis服务,报错误1067:进程意外终止,解决方法

(一)安装Redis 官网地址:Redis 不过Redis 的官网不提供 Windows 版本的下载,可以从Github上下载,Windows版本的下载地址: https://github.com/microsoftarchive/redis/releases/ 无需安装,直…

2828. 判别首字母缩略词

2828. 判别首字母缩略词 难度: 简单 来源: 每日一题 2023.12.20 给你一个字符串数组 words 和一个字符串 s ,请你判断 s 是不是 words 的 首字母缩略词 。 如果可以按顺序串联 words 中每个字符串的第一个字符形成字符串 s ,则认为 s 是 words 的…

比例导引(PNG)-Matlab 程序

本文提供比例导引的matlab程序,想要看理论的可以看书《导弹飞行力学》或者我的博客 比例导引详解 代码 %% 三维比例导引末制导clc;clear; close all;%% 设置导弹初始参数和目标参数% 总步长 length 1000000; x_m zeros(length,1); y_m zeros(length,1); z_m z…

node.js mongoose

目录 官方文档 mongoose Schema Model Query document 关系 官方文档 Mongoose v8.0.3: Getting Started mongoose Mongoose 是一个 Node.js 环境下 MongoDB 的对象建模工具。它提供了一种在应用程序中与 MongoDB 数据库进行交互的方式,使得开发者能够使用…