一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种用于工业检测的框架的制作方法

2022-10-13 07:58:45 来源:中国专利 TAG:


1.本技术涉及深度学习技术领域,具体而言,涉及一种用于工业检测的框架。


背景技术:

2.随着深度学习技术的持续发展,深度学习技术在工业检测领域也得到广泛的应用。工业检测领域中依赖深度学习检测软件对工业产品、工业零件等进行缺陷检测,以筛选出不合格工业产品或工业零件。
3.工业检测需求复杂且多变,为了快速响应不同的检测需求以及适配深度学习开源框架新技术,需对上层深度学习检测软件进行对应修改和升级,否则将不能满足工业检测需求或者落后于深度学习开源框架的新技术。
4.由于修改检测软件的过程费时费力,且修改后的检测软件还存在稳定性差的问题。


技术实现要素:

5.为了解决因检测需求改变而需反复修改和升级检测软件的问题,本技术提供了一种用于工业检测的框架。
6.本技术的实施例是这样实现的:
7.一种用于工业检测的框架,包括:
8.产品端,用于获取本地配置参数文件,其中,所述本地配置参数文件包括图像数据和基于所述图像数据确定的训练参数,所述本地配置参数文件用于被框架端加载;还用于发送运行指令至框架端时,将所述本地配置参数文件发送至所述框架端;
9.所述框架端,包括功能模块,其中,所述功能模块是对深度学习开源框架的功能接口进行组件化开发得到的,所述功能模块能够根据检测需求从深度学习开源框架中调用相对应的功能接口;
10.所述功能模块用于读取所述本地配置参数文件,并基于所述本地配置参数文件对预设模型进行训练和验证,得到目标模型;将所述训练和验证过程中生成的数据回传至产品端;
11.其中,所述产品端还用于接受并显示所述框架端回传的数据,并将所述框架端输出的目标模型一键部署到工业检测设备中。
12.在一些实施例中,所述产品端包括:
13.数据获取模块,用于获取所述图像数据;
14.训练参数设置模块,用于根据所述图像数据设置训练参数,所述训练参数包括模型类型;
15.配置参数模块,用于将所述训练参数保存到所述本地配置参数文件中;
16.运行模块,用于通过解释器控制所述框架端的运行和停止;
17.显示模块,用于接收并显示所述框架端在模型训练和验证过程中生成的数据,所
述数据包括经所述框架端训练和验证后得到的目标模型的精度和误差。
18.在一些实施例中,所述功能模块包括:
19.读取模块,用于加载所述本地配置参数文件;
20.数据处理模块,用于对所述本地配置参数文件中的图像数据进行曾广,获得训练图像数据;
21.训练参数创建模块,用于根据所述训练参数调用深度学习开源框架创建和设置所述训练参数;
22.预设模型构建模块,用于根据模型类型调用深度学习开源框架创建预设模型;
23.训练和验证模块,用于基于所述训练图像数据对预设模型进行训练和验证;
24.模型保存模块,用于按照深度学习开源框架中的预设评价指标对经过训练和验证后的模型进行评价,选取出所述目标模型,并保存所述目标模型。
25.在一些实施例中,所述产品端还包括:模型加密模块,用于对所述目标模型进行加密转换和保存;
26.所述框架端还包括日志保存模块,用于对所述目标模型的训练和验证过程中的日志进行保存,所述日志还被保存在所述产品端。
27.在一些实施例中,所述框架端包括:
28.工程服务层,所述工程服务层用于存放在main文件下的分类、分割、检测各个任务训练流程的编程文件。
29.在一些实施例中,所述工程服务层包括:
30.所述产品端的训练参数的配置文件目录、开源数据集的文件格式目录、所述框架端的中间文件的输出目录、库文件模块、测试文件目录、训练和测试的总训练流程文件目录、官方预训练模型的保存目录、加密后的预训练模型保存目录、以及工具模块;
31.其中,所述中间文件用于表征模型训练过程信息,所述库文件模块用于配置深度学习开源框架的工程库,所述工具模块用于设计插件功能或辅助功能。
32.在一些实施例中,所述框架端还包括:
33.深度学习框架底层库,用于调用目标深度学习开源框架的功能接口,所述深度学习框架底层库与所述深度学习开源框架耦合。
34.在一些实施例中,所述深度学习框架底层库包括:
35.主干模型模块,包含分类、分割、检测的深度学习检测任务的主干模型;
36.配置文件模块,用于从所述深度学习开源框架中调用所述框架端的默认参数配置文件;
37.评估模块,用于从所述深度学习开源框架中调用模型验证过程中的验证功能函数、以及模型训练过程中的模型评估功能函数;
38.数据曾广模块,用于从所述深度学习开源框架中调用数据曾广变化功能函数;
39.数据输入/输出模块,用于从所述深度学习开源框架中调用数据输入/输出功能函数;
40.误差模块,用于从所述深度学习开源框架中调用训练误差值功能函数;
41.组件模块,用于从所述深度学习开源框架中调用所述主干模型之后的分支功能函数;
42.封装模块,用于对所述深度学习开源框架中的非通用组件话模型进行封装;
43.保存模块,用于存放模型训练过程中生成的训练数据、训练日志。
44.在一些实施例中,所述产品端使用c 语言进行编写,所述产品端适配c 语言的产品软件和window系统;
45.所述产品端使用python语言进行编写,所述深度学习开源框架包括pytorch框架、tensorflow框架和paddlepaddle框架。
46.在一些实施例中,所述产品端使用c#语言、qt语言、或java语言编写,所述产品端适配linux操作系统、或嵌入式操作系统。
47.本技术的有益效果:通过构建产品端和框架端,交互的产品端和框架端作为深度学习检测软件和深度学习开源框架之间的桥梁,能够基于本地配置参数文件生成深度学习目标模型,并将深度学习目标模型一键部署至检测设备;进一步,由于框架端是生成深度学习目标模型的核心部件,因此在检测需求发生变化时,仅修改框架端而无需修改产品端,进而实现无需修改与产品端接口的深度学习检测软件的目的;进一步,由于框架端基于深度学习开源框架组件了多个功能模块,因此在深度学习开源框架更新时或检测需求更新时,仅需将深度学习开源框架新技术中的功能函数或适配于新的检测需求的功能模块直接配置到框架端,而无需重新设计框架,极大地降低了开发者的学习成本和深度学习开源框架的部署难度,提高了开发者的工作效率,降低了维护成本。
附图说明
48.为了更清楚地说明本技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
49.图1为根据本技术一个或多个实施例的用于工业检测的框架的结构示意图;
50.图2为根据本技术一个或多个实施例的的框架各模块间关系及结构示意图;
51.图3为根据本技术一个或多个实施例的框架端的结构示意图;
52.图4为根据本技术一个或多个实施例的工程服务层的结构示意图;
53.图5为根据本技术一个或多个实施例的深度学习框架底层库的结构示意图。
具体实施方式
54.为使本技术的目的、实施方式和优点更加清楚,下面将结合本技术示例性实施例中的附图,对本技术示例性实施方式进行清楚、完整地描述,显然,所描述的示例性实施例仅是本技术一部分实施例,而不是全部的实施例。
55.因此,以下对在附图中提供的本技术的实施例的详细描述并非旨在限制要求保护的本技术的范围,而是仅仅表示本技术的选定实施例。基于本技术中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
56.基于本技术描述的示例性实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本技术所附权利要求保护的范围。此外,虽然本技术
中公开内容按照示范性一个或几个实例来介绍,但应理解,可以就这些公开内容的各个方面也可以单独构成一个完整实施方式。
57.需要说明的是,本技术中对于术语的简要说明,仅是为了方便理解接下来描述的实施方式,而不是意图限定本技术的实施方式。除非另有说明,这些术语应当按照其普通和通常的含义理解。
58.下面结合本技术的技术方案具体说明本技术的实现方式。
59.图1为根据本技术一个或多个实施例的用于工业检测的框架的结构示意图。如图1所示,本技术实施例的一种用于工业检测的框架,包括产品端和框架端。
60.软件端与产品端交互、产品端与框架端交互、框架端以深度学习开源框架为基础。深度学习开源框架包含了深度学习算法中的基础算法、图像处理算法及神经网络算法。软件端为基于深度学习技术开发的工业检测软件,主要用于对图像进行分类。
61.在一些实施例中,产品端,用于获取本地配置参数文件,其中,本地配置参数文件包括图像数据和基于图像数据确定的训练参数,本地配置参数文件用于被框架端加载;还用于发送运行指令至框架端时,将本地配置参数文件发送至框架端。
62.框架端,包括功能模块,其中,功能模块是对深度学习开源框架的功能接口进行组件化开发得到的,功能模块能够根据检测需求从深度学习开源框架中调用相对应的功能接口。
63.将深度学习开源框架中的基础算法等组件化开发或二次封装为新的功能模块,方便框架端调用或者方便添加新的功能模块。组件化是把深度学习开源框架的基本功能模块化,通过提供多种功能模块,开发者可根据检测需要进行选择,同时也可以基于现有深度学习开源框架进行拓展并开发所需的组件。每一个组件内部封装有针对业务逻辑的功能模块,且组件具有独立性的同时,组件之间可以自由组合,满足不断升级的检测需求。
64.功能模块还用于读取本地配置参数文件,并基于本地配置参数文件对预设模型进行训练和验证,得到目标模型;将训练和验证过程中生成的数据回传至产品端。
65.其中,产品端还用于接受并显示框架端回传的数据,并将框架端输出的目标模型一键部署到工业检测设备中。
66.图2为根据本技术一个或多个实施例的的框架各模块间关系及结构示意图。如图2所示,产品端包括:数据获取模块、训练参数设置模块、配置参数模块、运行模块和显示模块。
67.需要说明的是,数据获取模块,用于获取图像数据。训练参数设置模块,用于根据图像数据设置训练参数,训练参数包括模型类型。配置参数模块,用于将训练参数保存到本地配置参数文件中。
68.训练参数包括学习率参数、曾广参数、模型类型、早停参数、预设模型路径等训练界面角度参数。在软件端设置有选择或者调节训练参数的控件,用户根据检测需求设定训练参数的类型以及参数数值。
69.学习率是深度学习中重要的超参,其决定着目标函数能否收敛到局部最小值以及何时收敛到最小值。合适的学习率能够使目标函数在合适的时间内收敛到局部最小值。当学习率设置的过小时,收敛过程将变得十分缓慢;而当学习率设置的过大时,梯度可能会在最小值附近来回震荡,甚至可能无法收敛。
70.曾广是在图像数据量不足的情况化采用的一种正则化方法,能够增加训练图像的数量,使数据多样化增强,满足模型训练要求。对数据进行数据增广的方式包括两种:第一种,离线增广;第二种,在线增广。其中的离线增广通过直接对数据集进行处理,使得数据的数量变成增广因子乘以原数据集的数量;在线增广则是获取批量数据之后,对批量数据进行旋转、平移、翻折等变换的增广。曾广参数关系到曾广后数据的有效性。
71.模型类型包括:集合学习算法、解释型算法、聚类算法、降维算法和相似性算法。
72.早停法是在训练中计算模型在验证集上的表现,当模型在验证集上的表现开始下降,直至达到早停参数时,停止训练,这样就能避免继续训练导致过拟合的问题。
73.运行模块,用于通过解释器控制框架端的运行和停止。例如,通过cpython工具调用python框架端的运行和停止。
74.显示模块,用于接收并显示框架端在模型训练和验证过程中生成的数据,数据包括经框架端训练和验证后得到的目标模型的精度和误差。
75.显示模块将框架端训练和测试模型的实时过程进行显示,精度和误差用于评价框架端输出的模型的性能。
76.在一些实施例中,功能模块包括:读取模块、数据处理模块、训练参数创建模块、预设模型构建模块、训练和验证模块和模型保存模块。
77.读取模块,用于加载本地配置参数文件,具体是获取数据路径、用户设置的训练参数等信息,然后读取训练参数。读取模块能够高效地组织数据读取的固定格式,适配分类、分割、检测3大任务数据的一键读取。
78.数据处理模块,用于对本地配置参数文件中的图像数据进行曾广,获得训练图像数据。利用深度学习模型对图片进行识别时,需要采集大量的图像数据。但在实际使用过程中,采集的图像数据往往很难覆盖全部的场景。曾广是在图像数据量不足的情况化采用的一种正则化方法,通过曾广能够使图像数据多样化增强,满足模型训练要求。
79.训练参数创建模块,用于根据训练参数调用深度学习开源框架创建和设置训练参数。用户根据检测需求在产品端设定了训练参数。
80.预设模型构建模块,用于根据模型类型调用深度学习开源框架创建预设模型;训练和验证模块,用于基于训练图像数据对预设模型进行训练和验证。
81.模型保存模块,用于按照深度学习开源框架中的预设评价指标对经过训练和验证后的模型进行评价,选取出目标模型,并保存目标模型。
82.在一些实施例中,产品端还包括:模型加密模块,用于对目标模型进行加密转换和保存。
83.模型加密模块让模型开发者可以对持有的模型进行加密,从而达到控制模型使用权的目的。模型开发者通过加密功能获取加密后的离线模型和秘钥,同时持有加密后模型和秘钥的用户才能正常使用模型。
84.框架端还包括日志保存模块,用于对目标模型的训练和验证过程中的日志进行保存,日志还被保存在产品端。
85.整个python框架端完成了端到端的功能开发,不需要再费时费力的重复开发各个功能模块,避免了因重复开发而带来的稳定性差的问题。
86.多框架包括产品端和框架端,属于上下两层的解耦设计,产品端在window系统下,
结合传统的检测算法以及其它视觉应用场景,完成更加复杂、高鲁棒性的检测需求;同时框架端结合多种深度学习开源框架,使用源生的python语言构建,能够更加方便高效的优化和升级底层模型技术。
87.图3为根据本技术一个或多个实施例的框架端的结构示意图。如图3所示,框架端包括上层的工程服务层和底层的深度学习框架底层库。
88.图4为根据本技术一个或多个实施例的工程服务层的结构示意图。如图4所示,工程服务层用于存放在main文件下的分类、分割、检测各个任务训练流程的编程文件,也即包括在main文件下的分类、分割、检测各个任务训练流程的py文件、以及其它子文件夹下的辅助文件,比如:核心网络组件、评价指标组件、loss组件、其它模型结构组件、数据加载dataset、数据曾广、求解器、训练策略和log文件生成全部在lib库文件中实现。
89.工程服务层包括:产品端的训练参数的配置文件目录、开源数据集的文件格式目录、框架端的中间文件的输出目录、库文件模块、测试文件目录、训练和测试的总训练流程文件目录、官方预训练模型的保存目录、加密后的预训练模型保存目录、以及工具模块。
90.其中,中间文件用于表征模型训练过程信息,库文件模块用于配置深度学习开源框架的工程库,工具模块用于设计插件功能或辅助功能。
91.在一些实施例中,深度学习框架底层库,用于调用目标深度学习开源框架的功能接口,深度学习框架底层库与深度学习开源框架耦合。
92.图5为根据本技术一个或多个实施例的深度学习框架底层库的结构示意图。如图5所示,深度学习框架底层库包括:主干模型模块、配置文件模块、评估模块、数据曾广模块、数据输入/输出模块、误差模块、组件模块、封装模块和保存模块。
93.深度学习框架底层库是调用具体的深度学习开源框架的接口,能完成用户训练模型过程中所需的各个功能模块的组件化开发,能够直接与深度学习开源框架的功能接口耦合。
94.在一些实施例中,主干模型模块,包含分类、分割、检测的深度学习检测任务的主干模型。配置文件模块,用于从深度学习开源框架中调用框架端的默认参数配置文件;评估模块,用于从深度学习开源框架中调用模型验证过程中的验证功能函数、以及模型训练过程中的模型评估功能函数。
95.数据曾广模块,用于从深度学习开源框架中调用数据曾广变化功能函数;数据输入/输出模块,用于从深度学习开源框架中调用数据输入/输出功能函数;误差模块,用于从深度学习开源框架中调用训练误差值功能函数;组件模块,用于从深度学习开源框架中调用主干模型之后的分支功能函数;封装模块,用于对深度学习开源框架中的非通用组件话模型进行封装;保存模块,用于存放模型训练过程中生成的训练数据、训练日志。
96.完成深度学习框架底层库的以上模块与所使用的深度学习开源框架(如pytorch框架,tensorflow框架,paddlepaddle框架等)按照对应的模块接口耦合,模块接口里封装了具体深度学习开源框架的功能函数,易于高效扩展,无需重新设计架构,更无需改动产品端;同时对于基于各种开源框架的新技术也能够快速的吸收和转化,高效地服务工业检测场景的需求。
97.在一些实施例中,产品端使用c 语言进行编写,产品端适配c 语言的产品软件和window系统。
98.c语言是一门面向过程的、抽象化的通用程序设计语言,广泛应用于底层开发,能以简易的方式编译、处理低级存储器。c语言是仅产生少量的机器语言以及不需要任何运行环境支持便能运行的高效率程序设计语言。
99.python是一种具有动态语义的、解释型的、面向对象的、通用的、开源的脚本编程语言,主要用于web和应用程序开发。python是一种解释型脚本语言,这意味着用python编写的程序不需要事先编译就可以运行,可以跨平台,具有可移植性好的特点。
100.python是由c语言实现,c语言是编译型语言,经过编译后生成机器码再运行,执行速度快不能跨平台,一般用于操作系统驱动等底层开发。
101.产品端使用python语言进行编写,深度学习开源框架包括pytorch框架、tensorflow框架和paddlepaddle框架。
102.需要说明的是,深度学习开源框架是接口、库或工具,使我们能够更轻松、快速地构建深度学习模型,而无需深入了解基础算法的细节。pytorch框架中的神经网络层、损失函数和优化函数等高层被封装,深度集成的pytorch框架允许用户在python中使用流行的库和包编写神经网络层。
103.tensorflow具有高度的灵活性,任何用户都可以通过构建一个数据流图来表示驱动计算的内部循环,能够为用户提供有用的工具,帮助用户组装被广泛应用于神经网络的“子图”,同时用户也可以tensorflow的基础上编写自己的“上层库”;tensorflow可以进行迁移学习(transfer learning)。许多tensorflow模型都包含可训练、可优化示例,方便研发人员进行迁移学习,也就是在训练好的模型上继续训练其他内容,充分使用原来模型的权重,这样可以节省重复训练大型模型的时间,提高工作效率。
104.paddlepaddle框架的代码易于理解,依据官方提供的丰富的学习资料及工具,能够帮助用户迅速学习;paddlepaddle框架还具备非常好的扩展性,并且提供了丰富全面的应用程序编程接口,提高系统的维护性和扩展性。
105.需要说明的是,检测软件为c 产品端接口且设计为通用接口,对产品端保持接口不变,能够实现在修改框架端后无需再反复修改接口、修改检测软件;同时适配主流c 语言主流的产品软件和window系统pc主机。
106.在一些实施例中,产品端还可以使用c#语言、qt语言、或java语言等语言开发实现,以保证能够适配的系统包括linux操作系统、或嵌入式操作系统,满足各种各样应用深度学习的检测行业。
107.通过构建产品端和框架端,交互的产品端和框架端作为深度学习检测软件和深度学习开源框架之间的桥梁,能够基于本地配置参数文件生成深度学习目标模型,并将深度学习目标模型一键部署至检测设备;进一步,由于框架端是生成深度学习目标模型的核心部件,因此在检测需求发生变化时,仅修改框架端而无需修改产品端,进而实现无需修改与产品端接口的深度学习检测软件的目的;进一步,由于框架端基于深度学习开源框架组件了多个功能模块,因此在深度学习开源框架更新时或检测需求更新时,仅需将深度学习开源框架新技术中的功能函数或适配于新的检测需求的功能模块直接配置到框架端,而无需重新设计框架,极大地降低了开发者的学习成本和深度学习开源框架的部署难度,提高了开发者的工作效率,降低了维护成本。
108.为了方便解释,已经结合具体的实施方式进行了上述说明。但是,上述在一些实施
例中讨论不是意图穷尽或者将实施方式限定到上述公开的具体形式。根据上述的教导,可以得到多种修改和变形。上述实施方式的选择和描述是为了更好的解释原理以及实际的应用,从而使得本领域技术人员更好的使用实施方式以及适于具体使用考虑的各种不同的变形的实施方式。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献