IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 使用halcon实现基于深度学习的目标检测 -> 正文阅读

[人工智能]使用halcon实现基于深度学习的目标检测

0、所需了解的知识

数据集

  • 数据集的类别已有不需要另外指定,这是因为在读取之前已有数据集的时候,数据集中就会包含了许多数据,其中结构如下:
  • 包括类别序号以及类别名字
    在这里插入图片描述
    预训练模型或者模型
    预训练模型也有了基本的参数,如下所示:
    在这里插入图片描述

训练集、验证集以及测试集的区别
一般会认为训练集、验证集以及测试集没有很大区别,但是在halcon由于比较固定和标准,所以三者的作用是区分开来的,比如:

  1. 训练集:用来对模型的数据进行训练以及模型调优;
  2. 验证集:对模型的超参数进行调优;
  3. 测试集:检查模型的泛化能力;

数据集的新建生成,在自动标注的时候
halcon数据集中文件路径可以链接不同的文件夹和文件信息,这些路径形成了一个数组,并且还有一个属性是包含了每一个图片的标注信息以及路径,所以建立新的数据集最好是重新指定一个文件夹,不然在软件中不好查看,需要一一指定

  • 如下所示的路径
    在这里插入图片描述

一、整体流程

创建模型或者加载模型——>加载数据集并进行预处理——>训练参数等的设置——>评估训练好的模型——>测试模型数据

1.创建模型或者加载模型

可以完全重新创建模型也可以通过加载预训练模型
create_dl_model_detection或者read_dl_model

1.创建模型

dev_update_off ()
 
*** 创建检测模型 ***
**设置参数
*必须的参数
Backbone := 'pretrained_dl_classifier_compact.hdl'
*class_ids的数量,标签的总类别数量
NumClasses := 6
*模型所需图片的规格参数
ImageWidth := 512
ImageHeight := 320
ImageNumChannels := 3
*
MinLevel := 2
MaxLevel := 4
NumSubscales := 3
AspectRatios := [1.0,0.5,2.0]
*容量参数
Capacity := 'medium'
 
*创建模型参数字典
create_dict (DLModelDetectionParam)
set_dict_tuple (DLModelDetectionParam, 'image_width', ImageWidth)
set_dict_tuple (DLModelDetectionParam, 'image_height', ImageHeight)
set_dict_tuple (DLModelDetectionParam, 'image_num_channels', ImageNumChannels)
set_dict_tuple (DLModelDetectionParam, 'min_level', MinLevel)
set_dict_tuple (DLModelDetectionParam, 'max_level', MaxLevel)
set_dict_tuple (DLModelDetectionParam, 'num_subscales', NumSubscales)
set_dict_tuple (DLModelDetectionParam, 'aspect_ratios', AspectRatios)
set_dict_tuple (DLModelDetectionParam, 'capacity', Capacity)
* 创建模型
create_dl_model_detection (Backbone, NumClasses, DLModelDetectionParam, DLModelHandle)

这里可能会怀着疑问为什么创建模型参数字典的那些属性,应该从哪里去看,其实官方都有相应的案例,在帮助文档中就可以找到,比如在目标检测案例中就有参数设置:
在这里插入图片描述

在操作手册中对应深度学习章节中会有文件名:
在这里插入图片描述
然后到安装路径中找到即可:C:\Users\Public\Documents\MVTec\HALCON-18.11-Steady\examples\hdevelop\Deep-Learning\Detection
核心代码就是create_dl_model_detection (Backbone, NumClasses, DLModelDetectionParam, DLModelHandle)
2.如何通过加载预训练模型加载模型

预加载模型可以直接从之前已有的模型获取相关参数,然后创建模型并设置参数即可
read_dl_model (ModelName, DLModelHandle)

从已有模型获取参数

#读取
ModelName := DataDir+'/Train/CFY/model/RF_best_dl_model_CFY_1.hdl'
read_dl_model (ModelName, DLModelHandle)
#根据自己的需要设置相关的参数,其实已经有预训练模型,大部分是不需要进行设置的
set_dl_model_param (DLModelHandle, 'runtime', 'gpu')
set_dl_model_param (DLModelHandle, 'gpu', 0)
set_dl_model_param (DLModelHandle, 'batch_size',24)
set_dl_model_param (DLModelHandle, 'max_overlap', 0.2)
set_dl_model_param (DLModelHandle, 'max_overlap_class_agnostic', 0.2)
set_dl_model_param (DLModelHandle, 'learning_rate', 0.001)
# 创建在模型中使用的训练参数字典 
#参数:模型、将训练模型的时期数(越大训练效果越好)、定义将多少时间传递给下一个模型评估
#是否显示训练进度、设置随机种子、输出参数的名称、输出参数的字典、输出句柄
create_dl_train_param (DLModelHandle, 20, 1, 'true', 42, [], [], TrainParam)

2.加载数据集并进行预处理

读取数据集、切分数据集比例以及预处理相关参数
read_dict、split_dl_dataset、预处理(get_dl_model_param、create_dl_preprocess_param_from_model、preprocess_dl_dataset、dev_display_dl_data)

设置比例分割并进行预处理

#读取数据集
read_dict (PillBagHdictFile, [], [], DLDataset)
#从模型中获取预处理参数
create_dict (GenParam)
set_dict_tuple (GenParam, 'overwrite_files', true)
create_dl_preprocess_param_from_model (DLModelHandle, 'false', 'full_domain', [], [], [], DLPreprocessParam)
#预处理
preprocess_dl_dataset (DLDataset, DataDirectory, DLPreprocessParam, GenParam, DLDatasetFilename)

3.进行训练

分为两步,1、设置参数:比如超参以及数据增强参数;2、进行训练train_dl_model

训练

#在数据集上训练一个基于深度学习的模型
train_dl_model (DLDataset, DLModelHandle, TrainParam, 0, TrainResults, TrainInfos, EvaluationInfos)

4.进行模型评估

evaluate_dl_model评估以及dev_display_detection_detailed_evaluation可视化结果

*** 评估 ***
create_dict (WindowDict)
create_dict (GenParamEval)
set_dict_tuple (GenParamEval, 'detailed_evaluation', true)
set_dict_tuple (GenParamEval, 'show_progress', true)
*对选定的DLDataset样本评估DLModelHandle给出的模型。
evaluate_dl_model (DLDataset, DLModelHandle, 'split', 'test', GenParamEval, EvaluationResult, EvalParams)
* 
create_dict (DisplayMode)
set_dict_tuple (DisplayMode, 'display_mode', ['pie_charts_precision','pie_charts_recall'])
*可视化类型检测模型的详细评估结果
dev_display_detection_detailed_evaluation (EvaluationResult, EvalParams, DisplayMode, WindowDict)
stop ()
*关闭字典中包含句柄的所有窗口。
dev_display_dl_data_close_windows (WindowDict)
  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2022-09-24 20:57:15  更:2022-09-24 20:58:57 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/28 18:38:39-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计