1. 引言
AR技术当前被广泛使用于各类行业,如教育 [1]、医疗、游戏等,它凭借着良好的适用性结合了许多传统的应用场景。近年来,利用AR技术结合传统纸质介质承载的应用场景成为新的研究方向 [2]。目前,网络上已经存在多种基于增强现实技术的动态展示系统,如汽车维修辅助系统 [3]、复杂装备的装配系统 [4]、视频网站浮迹系统 [5] 等。它们都利用AR技术将应用场景中所需的各类信息均放在AR设备中显示,以此方便用户戴上头戴式设备后虚实结合地执行操作、获取信息,但是它们大多存在着识别目标物体准确率不高、显示信息偏少等缺点,同时大量的图形计算也对承载它们的AR设备造成了较大的压力。
本项目提出采用将较为成熟的目标检测技术与增强现实技术相结合的办法,使用目标检测技术对AR设备摄像头采集的图像进行识别,并用前端技术将识别结果和被识别事物的说明信息展示在AR设备显示屏上,以此提高目标物体识别准确率并增加所显示的信息。
2. 开发方法
2.1. Hololens2设备陈述
微软公司于2019年推出了第二代混合现实设备Hololens2,它有着更强大的计算能力和更多品类的传感器,新增了手动跟踪、眼动跟踪、语音交互、空间映射等多种技术,因此成为了研究增强技术的优良平台。Hololens2还可与Unity等开发引擎相配合,微软公司也提供了Hololens2开发的相关开发包,这些都大大减轻了开发人员的负担 [6]。(图1)
Figure 1. Hololens2 equipment diagram [7]
图1. Hololens2设备图 [7]
2.2. Hololens2使用与开发
2.2.1. Hololens2连接至PC
如果需要在Hololens2上进行软件开发,先将它连接至PC是必不可少的一步。我们首先需要在Hololens2的设置中打开“面向开发人员”选项,并打开“设备门户”选项,然后我们在Windows电脑中同样启用“开发人员模式”,首次连接时需要登录Hololens2在此局域网内的ip地址,并输入Hololens2上提供的PIN以配对。配对成功后,我们即可在PC上看到Hololens2此时的视角了。
2.2.2. 使用Unity进行开发
微软官方为Hololens2开发提供了混合现实工具包(MRTK),可直接调用,简便了在Unity中的开发工作量。为导入MRTK,我们首先需要在Unity中新建项目,将平台切换至通用Windows平台,然后开始导入MRTK。导入成功后,我们需要配置MRTK的相关设置,选择“Unity OpenXR”插件以启用XR插件管理,并将其必需的包添加到项目,选择“apply”以应用,重启Unity之后即可完成配置。
2.2.3. 在Unity中运行开发的项目
为将Unity上开发的应用部署到Hololens2上,我们需要将“解决方案配置”更改为“发布”,将“解决方案平台”更改为“ARM64”并从部署目标选项中选择“设备”,然后打开Hololens2并开始调试,运行成功后如图2所示。
Figure 2. Screenshot after successful operation
图2. 运行成功后截图
2.3. 对Hololens2采集的图像进行识别
我们利用深度学习的目标检测技术与增强现实技术相结合的方法,对Hololens2摄像头采集到的数据进行分析检测,使我们可以对物体进行分类标识,并添加说明信息 [8]。
本项目采用了OpenMMDetection框架,通过Faster R-CNN目标检测模型实现对待检测物体的识别和分类,MMDetection可以实现对图像、视频等2D信息的目标识别,同时它可拓展、可修改,支持自定义的修改,方便上手使用。
我们使用MMDetection框架对测试图像进行了识别,识别结果如下图3所示。
Figure 3. Result after object detection
图3. 目标检测后的结果
2.4. 在目标检测画框旁显示中文标签
我们在识别出目标属性后,需要将它们的信息展示在Hololens2中,所以我们需要通过前端技术将说明信息展示在目标检测画框旁。我们使用Python将中文说明信息展示在目标检测画框旁,如下图4所示。
2.5. 将项目部署到Hololens2上
在项目开发完成后,我们需要打包Unity中的项目并将它们部署到Hololens2上。在部署前,我们需要先确认Hololens2已连接至PC,如未连接可参考2.2.1节内容,如已连接,则需先将Unity项目转换成.lsn文件,然后打开工程,将发布类型选择为“ARM64”,再选择调试菜单下的“开始执行(不调试)”选项,之后等待部署完成即可。
2.6. 调用显示文字信息的接口
在项目部署到Hololens2上之后,我们需要调用在Unity中已经完成的显示文字信息的python接口,用来在Hololens2中识别出的物体旁显示对应信息。我们通过显示文字信息的接口对所需展示的文字的大小、数量、输入输出、与物体的对应关系等进行控制。
3. 算法概述
3.1. Faster R-CNN算法介绍
相较于one-stage算法,two-stage算法有着更高的准确率,所以我们使用two-stage算法中的Faster R-CNN模型 [9]。Faster R-CNN算法结构比较复杂,它一共会经过四个阶段:图片首先会经过一个预训练过的卷积特征提取层来提取图片的特征,随后Region Proposal Network (RPN)网络会帮我们找出可能会包含物体的那些区域,这里会得到可能包含物体的画框,然后算法会找到框中物体的特征并把它们的特征提取到新的张量中进行分类,最后将物体进行具体的分类,并使识别框更精准 [10] [11]。Faster R-CNN的结构示意图如下图5所示。
Figure 5. Faster R-CNN structure diagram
图5. Faster R-CNN结构图
3.2. RPN网络
Faster R-CNN算法使用RPN网络生成候选网络,这大大减少了检测时间 [12]。(图6) RPN算法的主要功能是:
1) 将feature map分割成多个小区域,识别出哪些小区域是前景,哪些是背景
2) 获取前景区域的大致坐标,进行粗略的定位
这样就得到了每个anchor是否含有目标和目标的位置信息。
RPN训练时要把RPN classification和RPN bounding box regression的loss加到一块实现联合训练,RPN的loss计算公式如下:
(1)
Figure 6. Structure diagram of RPN and Proposal layer
图6. RPN和Proposal layer结构图
4. 项目分析
本项目提出的将目标检测技术与AR技术相结合的方法相较于传统的基于增强现实技术的动态说明书,可以大幅提高目标物体识别的准确率,并且可以显示更多的文字内容,可以给用户带来较好的使用体验。这种方法对大型及中型目标识别准确,对小型、微型目标识别准确率仍有待改善。本项目的开发流程图如下图7所示。
5. 结束语
本文将新型的AR设备Hololens2与目标检测算法Faster R-CNN结合起来,实现了在增强现实设备中对现实世界物体的检测,又通过Hololens2开发技术将物体的说明信息添加在识别画框旁,实现了可视化的、直观的动态增强现实说明书。同时,本文为AR技术和传统应用场景的结合使用提供了新的思路,增加了用户使用说明书时的交互方式。但是,本项目还存在着目标检测准确率不足,画框显示信息过少等问题,在未来的工作中会继续完善解决。
基金项目
由北京信息科技大学大学生创新创业训练计划项目–计算机学院(5112210832)支持。