APP下载

一种智能视觉计算服务的调度系统和实现方法

2023-08-19陆小慧刘勇

广东通信技术 2023年7期
关键词:空闲引擎人脸

[陆小慧 刘勇]

1 研究背景

随着深度学习技术的发展,在掀起第三次人工智能热潮的同时,也使得计算机视觉技术在目标分析,如车辆分析、人脸识别、人形分析等领域的应用成为可能,进一步提升了计算机视觉应用产品的智能化特征。比如:基于车牌的自动检测和识别技术已经替代了传统的停车场出入管理系统;人脸识别也已经在金融等领域替代了传统的身份认证方式。

然而,基于深度学习的目标(人脸、人形、车辆、车牌等)检测和识别技术存在的一个缺陷就是对计算资源的能力要求非常高。对于简单的深度学习网络模型计算,CPU 的时延可以接受,但是对复杂网络模型的计算,CPU 计算效率极其低下,无法达到商用的实时性要求。GPU 和FPGA的计算性能远远超过CPU;然而,GPU 成本高昂,FPGA的算法移植实施周期较长,对研发人员的技能要求也比较高。如何高效、充分地利用计算机系统的计算资源,既要满足商用中不同应用场景的实时性要求,又要满足用来运行基于深度学习的网络计算服务,是智能视觉相关产品交付中面临的一个重大的挑战。

2 系统定义与关键技术

本文研究的目的在于,提供一种基于异构硬件计算资源的深度学习智能视觉计算服务的调度系统及服务实现方法,以便针对不同应用场景的要求、不同的深度学习计算服务,提供满足性能、时延和成本要求的综合的系统部署和运行方案。

本文研究采用图1 所示技术方案,系统包括:

图1 智能视觉服务系统示意图

智能视觉服务管理引擎:根据基于深度学习的视觉服务计算复杂度、性能指标、实现模式,来确定不同类型的服务是否能够运行在CPU、GPU、FPGA 等不同的异构计算固件上。这些视觉计算服务包括但不限于人脸检测、人脸特征计算、人体属性识别、车辆识别、车牌识别、异常行为检测等计算机智能视觉服务。

智能视觉应用引擎:实现基于智能服务的业务应用,结合业务场景,定义业务实现流程,通过对智能服务能力的调用来实现智能视觉应用功能。

智能视觉服务调度引擎:根据不同的业务场景和业务性能指标要求,将不同的业务能力请求下发到对应的深度学习能力引擎上去完成计算。同时,在批量服务计算场景下,可以根据视觉服务计算引擎的忙闲程度、响应时间自适应地调度服务计算请求。

智能视觉服务计算引擎:基于深度学习实现的服务能力引擎,支持运行 在异构计算单位CPU、GPU 和FPGA等固件之上。可以支持同一种深度学习服务能力以多实例方式同时运行在不同的固件之上。

利用本系统方法的数据处理方法包括以下步骤:

步骤(1):智能视觉服务在异构计算单元上的部署。

智能视觉服务管理引擎根据业务确定的指标要求,结合各个视觉服务的计算性能指标,分别在CPU、GPU 和FPGA 上启动多个相同的或者不同的服务计算实例,并且确保内存、显存等计算资源可以支撑这些服务实例的运行资源要求。

步骤(2):在智能视觉服务部署成功之后,智能视觉应用引擎开始对外提供服务,它负责接收业务请求,并结合业务场景进行业务流程的编排和调度控制。

比如,对于智能视频监控场景,智能视觉应用引擎需要在得到解码后的视频帧时,先调用人脸检测服务,再通过人脸跟踪算法实现人脸轨迹跟踪,接着调用人脸特征计算服务获取人脸特征值,最终调用人脸检索服务定位人脸对应的人的身份。

当然,智能视觉应用引擎在调用后端的智能服务时,需要通过智能视觉服务调度引擎来确定将服务调用请求转发给哪个异构计算单元上部署的服务计算实例。

步骤(3):智能视觉服务调度引擎在接收到智能视觉应用引擎的服务计算请求时,根据该请求所要求的业务指标(如时延许可度),结合各个异构计算单元上运行的服务实例计算能力及其忙闲程度,将服务计算请求调度到后端的智能视觉服务计算引擎上,运行服务计算实例。

步骤(4):智能视觉服务计算引擎上运行的服务计算实例,在接收到服务计算请求时,完成相应的服务计算。

视觉服务计算引擎需要定时将各个异构计算单元的资源使用情况定时上报给智能视觉服务调度引擎,以便供智能视觉服务调度引擎去做服务调度决策。此外,智能视觉服务计算引擎还具备自动的资源更新功能。由于智能视觉计算服务在处理不同大小的批量图片计算请求之后,随着时间的推移,不同的异构计算单元内会存在无效的资源占用情况,比如内存和显存,如果不采用有效的办法及时处理,必将影响计算引擎的稳定性和计算效率。

为此,本文系统中,实现了一个自动的智能视觉服务计算引擎资源更新功能,当检测到异构计算单元上的资源占用情况达到一定的阈值,或者经过一定的时间间隔之后,计算引擎会分批将不同的服务计算实例进行资源刷新,使得在不影响系统业务功能的情况下,及时释放所占用的无效资源。

与现有技术相比较,本文系统支持同时利用异构计算单元GPU、CPU、FPGA 等固件来运行基于深度学习实现的智能视觉服务,有效提升整个系统的运行能力和运行效率,也可以有效降低整个系统的硬件成本。

其次,本文实现的智能视觉应用系统,可以进行精细化的智能视觉服务计算调度。可以根据业务场景及其时延要求,结合运行在异构计算单元上的不同智能视觉服务计算的性能指标,提供匹配的智能视觉计算实例为其服务,既不影响用户体验,也能在资源受限的条件下提供最佳业务功能保障。

最后,本文提供的方法实现了异构计算单元的服务资源更新机制,可以有效解决智能视觉服务计算长时间运行所产生的无线资源占用问题,进一步提升了系统的运行效率和运行稳定性。

3 具体实施方式

为了便于本领域研究人员的理解,下面结合智能视频监控场景实例对本文研究的系统和方法作进一步的描述。

同时,我们结合计算资源的处理能力和匹配情况,约定FPGA 运用于人脸检测服务,约定CPU 运用于人脸跟踪服务,约定GPU 运用于计算量最大的人脸特征计算服务。当然,这个是系统后台可以进行配置的,各计算资源也可以交叉使用,但不是最佳资源分配。

实例1:智能视频监控场景,下面结合图2 对本系统数据处理方法进行说明。

(1)智能视觉服务管理引擎,起N 路FPGA 人脸检测服务;

(2)智能视觉服务管理引擎,起N 路CPU 人脸跟踪服务;

(3)智能视觉服务管理引擎,起N 路GPU 人脸特征计算服务;

(4)智能视觉应用引擎,解码出视频帧;

(5)智能视觉应用引擎,向智能视觉调度引擎发起人脸检测请求;

(6)智能视觉调度引擎,从N 路FPGA 人脸检测服务中选一路空闲的做人脸检测;

(7)智能视觉服务计算引擎,选中的某一路FPGA人脸检测服务进行人脸检测计算,将计算结果返回给智能视觉调度引擎。

(8)智能视觉调度引擎,将检测出的人脸结果返回给智能视觉应用引擎;

(9)智能视觉应用引擎,向智能视觉调度引擎发起人脸跟踪请求;

(10)智能视觉调度引擎,从N 路CPU 人脸跟踪服务中选一路空闲的做人脸跟踪;

(11)智能视觉服务计算引擎,选中的某一路CPU人脸跟踪服务进行人脸跟踪计算,将计算结果返回给智能视觉调度引擎。

(12)智能视觉调度引擎,将跟踪到的目标结果返回给智能视觉应用引擎;

(13)智能视觉应用引擎,向智能视觉调度引擎发起人脸特征计算请求;

(14)智能视觉调度引擎,从N 路GPU 人脸特征计算服务中选一路空闲的人脸特征计算;

(15)智能视觉服务计算引擎,选中的某一路GPU人脸特征计算服务进行人脸特征计算,将计算结果返回给智能视觉调度引擎。

(16)智能视觉调度引擎,将计算的特征值结果返回给智能视觉应用引擎;

(17)智能视觉应用引擎,调用人脸检索服务查找到对应人的身份。

实例2:正脸检测场景,下面结合图3 对本系统数据处理方法进行说明。

图3 正脸检测场景

(1)智能视觉服务管理引擎,起N 路GPU 正脸检测服务;

(2)智能视觉服务管理引擎,起N 路CPU 正脸检测服务;

(3)智能视觉应用引擎,解码图片;

(4)智能视觉应用引擎,向智能视觉调度引擎发起正脸检测请求;

(5)智能视觉调度引擎,从N 路GPU 正脸检测服务中选一路空闲的做正脸检测;

(6)智能视觉服务计算引擎,选中的某一路GPU 正脸检测服务进行正脸检测计算,将计算结果返回给智能视觉调度引擎。

(7)智能视觉调度引擎,将检测出的正脸结果返回给智能视觉应用引擎;

(8)智能视觉应用引擎,向智能视觉调度引擎发起正脸检测请求;

(9)智能视觉调度引擎,从N 路CPU 正脸检测服务中选一路空闲的做正脸检测;

(10)智能视觉服务计算引擎,选中的某一路CPU正脸检测服务进行正脸检测计算,将计算结果返回给智能视觉调度引擎。

(11)智能视觉调度引擎,将检测出的正脸结果返回给智能视觉应用引擎。

实例3:批量特征提取场景,下面结合图4 对本系统数据处理方法进行说明。

图4 批量特征提取场景

(1)智能视觉服务管理引擎,起N 路FPGA 人脸检测服务;

(2)智能视觉服务管理引擎,起N 路GPU 人脸特征计算服务;

(3)智能视觉服务管理引擎,起N 路CPU 人脸特征计算服务;

(4)智能视觉应用引擎,解码图片;

(5)智能视觉应用引擎,向智能视觉调度引擎发起人脸检测请求;

(6)智能视觉调度引擎,从N 路FPGA 人脸检测服务中选一路空闲的做人脸检测;

(7)智能视觉服务计算引擎,选中的某一路FPGA人脸检测服务进行人脸检测计算,将计算结果返回给智能视觉调度引擎。

(8)智能视觉调度引擎,将检测出的人脸结果返回给智能视觉应用引擎;

(9)智能视觉应用引擎,向智能视觉调度引擎发起人脸特征计算请求;

(10)智能视觉调度引擎,从N 路GPU 人脸特征计算服务中选一路空闲的人脸特征计算;

(11)智能视觉服务计算引擎,选中的某一路GPU人脸特征计算服务进行人脸特征计算,将计算结果返回给智能视觉调度引擎。

(12)智能视觉调度引擎,将计算的特征值结果返回给智能视觉应用引擎;

(13)智能视觉应用引擎,存储图片的特征值;

(14)智能视觉应用引擎,解码图片;

(15)智能视觉应用引擎,向智能视觉调度引擎发起人脸检测请求;

(16)智能视觉调度引擎,从N 路FPGA 人脸检测服务中选一路空闲的做人脸检测;

(17)智能视觉服务计算引擎,选中的某一路FPGA人脸检测服务进行人脸检测计算,将计算结果返回给智能视觉调度引擎。

(18)智能视觉调度引擎,将检测出的人脸结果返回给智能视觉应用引擎;

(19)智能视觉应用引擎,向智能视觉调度引擎发起人脸特征计算请求;

(20)智能视觉调度引擎,从N 路CPU 人脸特征计算服务中选一路空闲的人脸特征计算;

(21)智能视觉服务计算引擎,选中的某一路CPU人脸特征计算服务进行人脸特征计算,将计算结果返回给智能视觉调度引擎。

(22)智能视觉调度引擎,将计算的特征值结果返回给智能视觉应用引擎;

(23)智能视觉应用引擎,存储图片的特征值。

实例4:资源刷新,在服务长期运行之后,在资源占用达到一定阈值或者达到一定运行时间的情况下,自动进行资源刷新。下面结合图5 对本系统数据处理方法进行说明。

图5 资源刷新

(1)智能视觉服务管理引擎,起N 路FPGA 人脸检测服务;

(2)智能视觉服务管理引擎,起N 路CPU 人脸跟踪服务;

(3)智能视觉服务管理引擎,起N 路GPU 人脸特征计算服务;

(4)智能视觉服务管理引擎,起N 路GPU 正脸检测服务;

(5)智能视觉服务管理引擎,起N 路CPU 正脸检测服务;

(6)智能视觉服务管理引擎,定时触发清理FPGA上的服务;

(7)智能视觉服务计算引擎,释放空闲的FPGA 服务占用资源,重新加载服务。

(8)智能视觉服务管理引擎,监控到FPGA 上资占用达到阈值,触发清理FPGA 上的服务;

(9)智能视觉服务计算引擎,释放空闲的FPGA 服务占用资源,重新加载服务。

(10)智能视觉服务管理引擎,定时触发清理CPU上的服务;

(11)智能视觉服务计算引擎,释放空闲的CPU 服务占用资源,重新加载服务。

(12)智能视觉服务管理引擎,监控到CPU 上资占用达到阈值,触发清理CPU 上的服务;

(13)智能视觉服务计算引擎,释放空闲的CPU 服务占用资源,重新加载服务。

(14)智能视觉服务管理引擎,定时触发清理GPU上的服务;

(15)智能视觉服务计算引擎,释放空闲的GPU 服务占用资源,重新加载服务。

(16)智能视觉服务管理引擎,监控到GPU 上资占用达到阈值,触发清理FPGA 上的服务;

(17)智能视觉服务计算引擎,释放空闲的GPU 服务占用资源,重新加载服务。

实例5:密集请求服务场景说明

本系统会根据已有资源使用情况,动态调整计算单元,高速并行地处理密集计算请求。与现有技术相比较,本系统同时利用GPU、CPU、FPGA 等一切可利用的资源进行计算来提高计算性能。

每次处理固定数量的图片,对计算资源优化处理,将每个计算单元所占用的资源量化可控,以便主进程可以根据各资源的实际使用情况动态调整对应资源的图片处理线程和服务计算模块数。处理步骤如下:

(1)系统主进程是调度单元,它读取海量图片目录,生成待处理文件列表;

(2)主进程根据GPU 剩余显存大小,决定起多少个GPU 图片处理线程,和对应的GPU 服务计算模块;

(3)主进程根据CPU 空闲核心数,决定起多少个CPU 图片处理线程,和对应的CPU 服务计算模块;

(4)主进程根据FPGA 空间可编程器件多少,决定起多少个FPGA 图片处理线程,和对应的FPGA 服务计算模块;

(5)各图片处理线程读取固定数量的一批图片数据,送给对应的服务计算模块,收到服务器计算单元计算出的特征值进行保存,再处理下一批图片数据。以此循环处理,直至待处理文件全部处理完毕,通知对应的服务计算模块释放计算资源;

(6)各服务计算模块,加载各自的算法模型后,处理来自图片处理线程的图片数据。因为很多图片的背景复杂,主体占比通常较小,所以为了减少背景对特征提取准确性的干扰,需要将主体从图片中分离出来。自然地,图片特征提取的分为两步,先用目标检测算法检测出目标,然后用特征提取算法提取目标特征。在目标检测前,对计算资源做优化处理,以保证每个服务单元的资源占用是可控的。进行特征计算后,将结果返回给图片处理线程。如果收到图片处理线程的计算完毕的通知,则释放所占用的计算单元,并重新加载算法模型;

(7)主进程在运行过程中,监控系统中的各资源的实际使用情况,动态创建对应资源的图片处理线程和服务计算模块。

4 总结

本文研究并提供了一种智能视觉计算服务的调度系统和实现方法,是一种用于实时或离线状态下进行视频图像分析的图像结构化大数据实现方法和系统。本文研究并同时利用GPU、CPU、FPGA 等一切可利用的资源进行计算来提高计算性能。每次处理固定数量的图片,对计算资源优化处理,将每个计算单元所占用的资源量化可控,以便主进程可以根据各资源的实际使用情况动态调整对应资源的图片处理线程和服务计算模块数。本文提供的系统和实现方法可广泛应用于智能视频监控、视频内容分析、图片检索等多种应用场景之中。

猜你喜欢

空闲引擎人脸
恩赐
有特点的人脸
“鸟”字谜
三国漫——人脸解锁
彪悍的“宠”生,不需要解释
蓝谷: “涉蓝”新引擎
WLAN和LTE交通规则
无形的引擎
基于Cocos2d引擎的PuzzleGame开发
马面部与人脸相似度惊人