收藏 分销(赏)

基于容器化技术对机器视觉算法的封装和授权方法.pdf

上传人:自信****多点 文档编号:638776 上传时间:2024-01-22 格式:PDF 页数:6 大小:3.84MB
下载 相关 举报
基于容器化技术对机器视觉算法的封装和授权方法.pdf_第1页
第1页 / 共6页
基于容器化技术对机器视觉算法的封装和授权方法.pdf_第2页
第2页 / 共6页
亲,该文档总共6页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

1、802023.06人工智能0 引言机器视觉是计算机技术发展的必然趋势,在机器或流水线上,机器视觉能对产品进行质量检测,从而筛选出不符合要求的产品,或引导机器人进行装配。简而言之,机器视觉就是用机械来代替人类的眼睛进行测量和判断。机器视觉的算法库种类繁多,常用的算法库有OpenCV、Halcon、VisionPro等。由此可见,机器视觉算法是一项庞大的工程,这类 IOT算法需要大量的人力和物力来进行管理。一般来说,研发算法的公司和个人,都会提供一套完整的软件,为以后的技术服务和售后服务做准备。算法产品销售的关键是利用已激活的设备进行操作,越多设备使用该算法,对开发者的收益越大。然而,其中存在诸多

2、弊端:一是客户可能会将算法复制到其他设备上进行二次售卖,使开发者或企业丧失竞争优势;二是算法重新开发部署周期长,调制参数困难;三是算法运行使用必须具有时效性,否则试用期结束之后也能继续使用,无法实现算法的盈利效果。所以,限制算法在被授权的设备上有限时间内的运行,是算法授权的核心诉求。同时,还要减少算法中功能实现的代码细节,方便功能模块的部署和程序的访问级别,这就需要对算法进行封装。目前软件或服务的授权方法也有很多:(1)发送验证码到手机,通过验证码进行校验并授权;(2)采用自定义密钥,并用密钥对某些内容进行加密,接收方用同样的密钥解密校验授权,这种方式就是对称加密;(3)采用公开密钥和私有密钥

3、,用公开密钥对数据进行加密,再用对应的私钥进行解密;或者用私钥进行加密,用公钥进行解密,这种方式就是非对称加密。1 研究内容由于虚拟机镜像是机器视觉算法中的硬件虚拟化,因此,虚拟机的资源粒度较大,资源利用率较低,调度速度较慢。本文提出了一种基于容器化技术的机器视觉算法的封装和授权方法。开发者只需要关心算法能够快速部署并且有效减少开发周期就行。本文运用到了一种轻量级的开源的虚拟容器化技术Docker。Docker在主机的操作系统上建立 Docker引擎,它可以在主机的操作系统上直接调用硬件资源,而不需要虚拟化操作系统和硬件资源,因此运行起来更加迅速。其主要工作流程:去仓库把镜像拉到本地,然后用一

4、条命令把镜像(2022年江苏省通信学会“华苏杯”论文征集评优二等奖)基于容器化技术对机器视觉算法的封装和授权方法李鹏博 葛菲璠 霍永章南京华苏科技有限公司摘要:机器视觉是一门飞速发展的人工智能学科,它是制造工业的重要组成部分。算法是软件的核心部分,如人脸识别算法、模具达标检测算法等,但是,这些算法都有其共同的特点:复制成本低,扩散性强,难以管理。为了解决难以整合和部署的问题,本文提出了一种基于 Docker 容器化虚拟技术下,对机器视觉算法进行封装和授权的方法。用户首选将算法压缩包上传至管理平台,接着用户通过封装工具中 dockerfile 文件的方式生成镜像文件,接着部署 docker 镜像

5、包,使用授权工具进行信息加密,然后将.license 文件部署至 docker镜像包同一目录下,最后将 license 文件与相关的网卡中的 mac 地址等数据是否匹配,只有在符合条件的授权时间内,才能成功运行算法。关键词:容器化;算法封装;授权812023.06人工智能运行起来,变成容器。本文就对机器视觉算法在容器虚拟化环境下进行封装和授权,主要分为四大模块:(1)通过封装工具封装算法形成 docker 镜像包;(2)通过配置文件解析工具来识别算法配置文件、下载依赖包;(3)通过管理平台来管理 docker镜像包和授权文件,实现数据支撑;(4)通过授权工具管理授权时间。2 算法概述2.1 算

6、法选择本文以机器视觉算法中的目标视觉这一类为例。常用的目标识别方法有三种:Blob 分析法(BlobAnalysis)、模板匹配法、深度学习法。随着 CNN 技术的应用越来越广泛,本文采用了深度学习法,使检测精度和检测速度都获得了改善。本文将深度学习应用到机器视觉算法中的目标类别检测中,使图像的分类精度有了很大的提高。卷积神经网络不但可以提取出更高级的特征,而且可以从相同的模式中提取、选择和分类特征。在这方面,主要有两类主流的算法:一类是结合 RPN 网络,基于分类的 R-CNN 系列两阶目标检测算法(twostage);另一类则是将目标检测转换为回归问题的一阶目标检测算法(onestage)

7、。目标检测是一项重要的研究课题,它能够准确地识别出目标的位置和尺寸。如图 1 所示,物体或人有许多不确定因素,它们有不同的外观、数量、形状、姿态,还有光照环境的影响。本文主要运用深度学习中的 onestage 算法,如 YOLO、SSD 等。onestage 算法会直接在网络中提取特征来预测物体分类和位置。本文选取了 YOLOv5,其中包含了三种损失函数:classification loss:分类损失,localization:定位损失,confidence loss:置信度损失。其中本文算法用到了边界框预测损失函数,即运用边界框所在的位置进行数据的预测,使用的是平方损失,即:L1ocal=

8、(x-x*)2+(y-y*)2+(w-w*)2+(h-h*)2 (1)其中 x,y,w,h 分别代表预测框的左上角坐标与框的长宽,此方法无法很好地衡量边界框和真实框的重叠面积大小。为了解决这一问题,本文算法使用的是基于 IOU 的 GIOU 损失计算公式。GIOU 在 IOU 的基础上还多增加了一个框,能够同时框住真实框与预测框的最小的框。如图 2 所示,设 A 为图中蓝色框,B 为图中黄色框,C为图中红色框,其中 A 和 B 不同部分的重叠会对 GIOU 产生影响。GIOU 损失函数公式如下:(2)YOLOv5 代 码 中 的 四 种 网 络 结 构,与 YOLOv3 与YOLOv4 不同,

9、是以 yaml 的形式来实现,随着网络的深入,特征抽取和特征的融合也越来越多。随着网络的宽度的增加,特征抽取的能力也随之增强。四种不同的YOLOv5网络结构中,卷积核的数目是不一样的,这对网络的 CSP1、CSP2 等都有很大的影响,从而影响到整个网络的运算量。运行算法后,CPU 内存占用量显而易见的增加,使得装载该算法的部署和运行不稳定性增加,如图 3,图 4 所示。因此,要考虑到从算法部署到硬件以及接口调用运行算图 1 安全帽和反光衣识别图 2 GIOU 计算框图图 3 运行算法前内存822023.06人工智能法代码的方法来确保系统进程稳定运行。3 技术架构3.1 Docker 镜像构建图

10、 5 给出了以 Docker 容器为基础的机器视觉算法的集成和执行流程,包括镜像的封装,镜像的管理,容器的编排和调度。一个 Docker 镜像包内包含算法程序,基础配置文件和依赖清单,通过上传代码到代码管理平台。由于 Docker 镜像具有可移植性和复用性,可以通过启动一个容器,将镜像文件挂载到一个可以读写的容器层目录下。Docker镜像是静态的数据,不会发生改变,Docker 容器的调用是算法对应算法镜像库中镜像文件的动态表现。Docker 采用 C/S 的系统架构,主要由客户端、守护进程、容器、镜像、仓库组成,如图 6 所示。Docker 客户机是 Docker 用户和 Docker 之间

11、的主要交流手段。在服务器端后台运行的守护程序,它被用来接收客户端的请求;容器是镜像的载体,它可以在不同的容器中建立一个独立的、没有任何干扰的应用程序。该镜像是一种只读文件,它为执行代码提供了全部的软硬件资源。3.2 业务架构图业务架构分为四层:用户呈现、业务展示、数据处理、数据输入。图 4 运行算法后内存图 5 整体技术路线图图 6 Docker 组成结构图图 7 业务架构图832023.06人工智能数据输入层是算法模块中的配置文件调用和加密。数据处理层是机器内部文件解析和生成相关配置文件。业务展示层是平台对镜像包、销售记录、授权文件等模块的管理。用户呈现层则关系到算法到设备的具体实现方法。如

12、图 7 所示。4 方法及流程4.1 封装方法及流程4.1.1 上传算法流程(1)内嵌授权前置代码Python 算法文件(.py 文件)是公开的,很容易被别人拿去二次利用,为了更好地保护开发者及公司的知识产权,可以对python文件加密为.so文件,这样就能保护python源代码。运行程序命令如图 8 所示。(2)模型加密接着通过字节异或的加密方式加密模型文件,其实模型文件就是个二进制文件(binary file),而加密二进制文件的方式就比较简单了。比较入门的级别,就是文件的重命名。推理框架读取机器视觉模型算法的方式之一就是从文件中读取,只要 python 文件名路径名正确,就能顺利读取文件。

13、由于 Python 打包后文件众多,有许多磁盘文件等。可以试着将文件名取名自己所熟悉的,接着将它放入动态链接库之中,便于隐藏。模型的加解密特别要注意的是:(1)解密模块的接口不能暴露,否则模型很容易被解密模块调用还原。(2)解密模块需要有验证机制,否则可以直接使用库文件和加密模型去解密模型。模型加密的程序命令如图 9 所示。(3)压缩上传算法用户在准备阶段中完成算法本身的加密后,压缩加密后的算法文件(.zip.tar.gz),接着向管理平台上传需要封装的机器视觉算法,包含包名、算法类型、算法名称、算法版本和算法描述,随后对压缩包进行格式判断,如果判断格式正确,则保存算法包、包名、算法类型、算法

14、名称、算法版权和算法描述等内容。4.1.2 封装算法流程用户向管理平台发出选择算法的请求,随后服务器会返回算法列表到管理平台供查询。管理平台会向解析工具请求需要封装的算法。解析工具会向服务器发出查询算法的请求,服务器得到请求后,会向解析工具返回算法压缩包。解析工具随后会解压算法压缩包,解析出压缩包中配置文件(即识别出.yaml文件)。在解析工具的作用下,下一步就是输出下载,生成依赖清单。这时候解析工具需要向封装工具发送依赖清单,封装工具会依据清单下载依赖。这时候,封装工具会向管理平台返回依赖清单和下载状态,同时封装工具还会向服务器返回已经下载的依赖。用户此时可以查看依赖清单,这时候需要上传未成

15、功下载的依赖,用户需要向管理平台上传未成功的依赖,随后管理平台向封装工具发送依赖。封装工具随之会验证用户上传的依赖,通过内部封装工具向管理平台返回验证状态。封装工具内部会向服务器传输用户上传的依赖,并发送请求算法封装所有依赖的命令,服务器会作出相应的回应,发送封装所需要的依赖。最后,封装工具用 docker 容器生成镜像配置文件(即声明在 yaml 文件中),然后将 GPU 的文件挂载声明到对应的yaml 文件下。在进行访问的时候,都是要暴露端口的。所以,每次都需要设置端口参数,一个端口是宿主机的端口,一个是映射在 docker 容器上的端口,通常是用宿主机的端口映射到容器上的端口,才能正常运

16、行,所以需要提前看好端口进行适配。然后选择好网络,将发送方和接收方的主机之间建图 8 授权前置代码图 9 加密代码842023.06人工智能立一条可靠的链接,以便算法封装部署到本地网络上,还能通过局域网进行传送。在局域网中,一般会用硬件地址来识别每个主机。一切准备就绪后,封装工具开始封装算法和依赖,并返回 docker 镜像包到服务器。这时候用户会向管理平台请求导出 docker 镜像包。管理平台接收到指令后,向刚才存储 docker镜像包的服务器来查询 docker 镜像包。层次渐进地,docker镜像包就从服务器-管理平台-用户,最终完成 docker 镜像包的封装。4.2 授权方法及流程

17、Python 实现加密算法的方法有很多:(1)MD5 加密,全称:消息摘要算法,它是一种常用的加密功能,用于保证信息的完全和一致,属于不可逆算法,通过网站接口实现解密。(2)SHA1 加密,全称:安全哈希算法,主要适用于数字签名标准里面定义的数字签名算法。安全性比 MD5 更强。(3)HMAC 加密,全称:散列消息鉴别码,这是一种基于加密hash函数和共享密钥消息的认证协。(4)DES加密,全称:数据加密标准,属于对称加密算法。(5)AES 加密,全称:高级加密标准,在密码学中又称 Rijndael 加密法,是一种区块加密标准方法。此标准已经代替 DES,被人们广泛使用。还有其他加密算法本文未

18、曾提到,本文在机器信息的加密授权中,主要用到了 AES 加密的方法。在容器化的环境下,用户首先将需要输入 MAC 地址,授权起止时间,然后将算法的软件授权规则信息保存在一个结构体中,通过AES加密的方法将其序列化为一个二进制文件,再使用密钥将之前生成的二进制文件加密为.license 文件,接着部署.license 文件至 docker 镜像包的同一目录下。与此同时,在之前已经封装好的 Docker 镜像包中,存在着算法文件、授权配置文件、以及计时器等,用户开始部署这些docker镜像包,程序对算法开始执行运行命令。Docker 镜像包中的授权运行代码.so 文件和计时器开始识别当前设备信息,

19、即识别.license 文件,对加密的.license文件进行读取解码。用户执行运行 docker 镜像包的命令后,授权运行程序来识别部署机器中的 MAC 地址和系统时间。接下来,为了机器能成功运行被授权的算法,机器内部开始判断部署机器中的 MAC 地址与.license 文件中的 MAC 地址是否一致。判断条件:MAC 地址是否一致。(1)如果判断是,则进入下一步判断条件:系统时间是否在授权时间内;(2)如果判断否,则说明系统环境发生变化,需要重新授权。:步骤(1)中系统时间如果判断是在起止时间内,则进入下一步操作:记录运行时间(加密);如果判断否,则为步骤(2),说明系统环境发生变化,需要

20、重新授权。:步骤中记录运行时间后,需要进行下一步判断:判断运行时间是否=识别的系统时间。如果判断是,则进入下一步,传参至授权前置代码(动态参数+参数有效时间+系统时间),并且每1小时调用一次;如果判断否,则为步骤(2),说明系统环境发生变化,需要重新授权。:步骤中传参至授权前置代码后,需要进行下一步判断:判断动态参数是否匹配。如果判断是,则进入下一步判断:判断授权前置代码获取的系统时间是否在有效时间内。如果判断否,则为步骤(2),说明系统环境发生变化,需要重新授权。:步骤中用户需要获取当前系统的时间,判断是否在有效时间内。如果判断是,则会成功运行算法代码。如果判断否,则为步骤(2),说明系统环

21、境发生变化,需要重新授权。假设机器上算法的合理授权使用时间在 2021 年 6 月 15号到 2022 年 6 月 15 号。而使用者由于暂时不用这个算法,将算法授权时间暂时停止在其中某一天(如 2022 年 1 月 1 号停止),出于保护购买算法使用权的用户利益,用户暂停使用后,需要重新向宿主机器上请求授权使用。简单来说,只要被部署算法的机器的总运行时间=被授权的总系统时长,那么用户仍然可以使用该算法。4.3 算法容器的启动和运行启动 Python 算法的容器程序,然后后台会在指定的端口上运行容器,并将其与指定的端口相连接,打开容器的标识和输入功能,以便使用者可以在一个终端上输入指令来完成该

22、容器的操作、或者在容器执行命令后,在对应显示屏上显示出来。如图 10 所示,用户通过调用接口返回计算结果,显示大屏上显示算法计算的结果。此大屏上展示的是一种机器视觉算法的容器运行情况,对视频中的人和动作行为进行判断,识别他们是否佩戴安全帽和穿戴防护服,对视频画面中不符图 10 目标行为检测识别852023.06人工智能合要求行为的人用不同颜色矩形框标注出来。5 结束语本文以容器化技术为基础,以机器视觉算法中的一阶目标检测算法的 YOLOv5 为例,对算法进行封装和授权。通过Docker 容器技术下算法调用命令显示的资源利用情况和算法初始安装部署情况对比,使用前者技术的算法在系统中安装部署更为简

23、单、内存占用量较低。最后,以表 1 总结对比。表 1 传统方式和 Docker 方式对比传统系统中配置Docker 容器系统中配置所需软件多少配置步骤多少软件兼容性要求高要求低运行占用 CPU高低运行占用内存多少运行系统进程多少由于如今大部分的企业服务器使用 Linux 操作系统,一般创建虚拟主机以满足所需的项目服务所需的基础环境,不同软件之间极易出现版本不兼容的现象。相比之下,Docker 把传统的安装软件的繁琐步骤简化为在系统中进行进程创建的方式。可以最后输入TOP命令进一步验证查看系统内部开销,如表 2 所示。表 2 传统方式和 Docker 方式的系统内部开销对比系统运行时间几个用户1

24、/5/15 分钟系统平均负载进程总数(total)正在运行进程数(running)睡眠进程数(sleeping)传统方式47 min1 user0.15/0.09/0.083612359Docker 方式43min1 user0.0/0.07/0.21252123停止的进程数(stopped)僵尸进程数(zombie)用户空间 CPU占比(us)内核空间 CPU占比(sy)CPU 空置率(id)传统方式0021.53.574.8Docker 方式000.00.399.5作者简介:李鹏博(1980),男,江苏南京人,工程师,学士;研究方向:人工智能,机器视觉,数据挖掘。(收稿日期:2022-08-10;责任编辑:韩菁菁)

展开阅读全文
相似文档                                   自信AI助手自信AI助手
猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 学术论文 > 论文指导/设计

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服