
「通過使用AR技術和机器学習設計制作需要識别各种記號的真实空間的工作輔助系統」(学習用 - 譯)
摘要:在利用AR技术在真实空间工作辅助系统的构建当中,机器学习的使用是不可或缺的, 在机器学习的应用中,训练模型的构建并不容易,对其进行辅助是有必要的。 在本研究中,作为关于需要识别各种符号的真实空间工作中辅助研究的其中一环,为了进行麻将辅助,尝试设计基于AR技术的辅助系统。麻将辅助,识别各种图形,真实环境中先后关系的识别同样有必要,因此是很有挑战性的课题。本论文中,介绍了基于AR技术的麻将辅助程序中机器学习的应用事例。
1.绪论
伴随着Augmented Reality(AR)技术(苹果公司的 ARKit 和 Google 的 ARCore 等)的普及,在真实空间中工作辅助系统的实现变得容易了,举例来说,用于辅助工作的信息可以畳加并显示在增强现实空间中。这个时候为了能够提示适当的信息,系统需要通过识别真实空间中各种各样的记号来理解当场的状况。这里说的记号是真实空间中存在的文字和图形的意思。为了实现那样的技术,识别现实空间的各种记号,从识别的记号集合等等来理解现实情景是有必要的。 在本研究中,以支持现实空间中的作业辅助系统的开发为目的,实现一旦识别了空间中各种符号之后,随之伴随的便是情景识别(这样的技术),为了使这项的技术变得容易于是进行辅助技术的开发。在本文中的真实空间工作辅助,是介绍利用ARKit技术面向初学者的麻将辅助系统的开发实例。尤其是关于有着各种记号的麻将牌的识别的说明。除此以外与理解情景相关的,在AR技术中使用自定位,对基于麻将牌的位置的属性识别来进行说明。 本文之后的章节构成:第二章是相关研究的展示。第三章是关于麻将和麻将辅助的说明。第四章是结合实例解释开发的麻将辅助系统。第五章是解释评估实验,第六是讨论。最后第七章是总结。
2.AR技术和机器学习
2.1. AR技术
ARKit是面向IOS开发者的AR框架,它通过集成使用IOS终端上的摄像头和传感器设备来提供AR体验。接下来对ARKit上的平面检测、hitTest以及自定位技术进行详细说明。所谓的平面检测,是指在桌子和地板等平面上获取特征点,有识别平面的功能。hitTest是指画面上的点与AR空间上的对象进行碰撞侦测,具有获取碰撞点在AR空间上的坐标的功能。将hitTest与平面检测相结合,可以获取平面上任意一点的坐标,同时设置虚拟对象也变得可能。
自定位技术是指,对移动终端的位置进行定位。对于终端位置的定位,有通过使用加速度传感器、陀螺仪传感器以及GPS的定位方法。但是基于传感器信息的位置估计是通过瞬间加速度进行计算的,很容易产生误差。此外,GPS并不适合严格精确到cm的场合以及室内使用的情况。在ARKit中,除了传感器信息以外,基于图像处理的位置推定也是可行的。具体来说,在平面上的位置推定可以以10mm为单位进行自我定位。
2.2 机器学习
伴随着移动终端性能的提升,在终端上使用机器学习构建的训练模型的研究变得流行起来。这些研究的目的是通过减小学习模型的大小,计算复杂性,内存使用和功耗来创建更适合移动设备的学习模型。
本研究中,我使用服务器上创建学习模型,移动终端拿来使用的方式。在真实空间进行辅助工作的同时,所获得的数据需要进行实时处理,因此有必要在移动终端上使用基于机器学习的识别器来提供工作支持。为了能够在移动端运行识别器,我使用了Apple公司的CoreML,CoreML是IOS终端上使用基于机器学习的识别器的框架。
3.真实空间的麻将辅助
3.1 麻将
麻将是全世界流行的棋盘游戏,发祥于中国,在日本以其独有的规则发展开来。麻将,是通使用放置于叫做「雀卓」的台子上的136个麻将牌来进行游戏的,普遍由4人进行游戏。玩家通过所持的14张牌的种类和属性的组合来计算得分。
对于牌的属性,根据牌的位置不同牌的作用也会发生改变,如手牌、鸣牌、王牌等等。我们进一步通过图一来解释一下麻将牌的属性。图一实际上是牌排列起来的样子,图中用椭圆全起来的A、B、C三个区域分别代表手牌、鸣牌和王牌。玩家依次从牌山上取牌,除了当做手牌以外,还要重复舍弃不要的牌。每位玩家的目标是凑成役,组成役的种类有很多,它是指所持有的14张手牌所可以得分的特定的组合,在无役的情况下,需要从手牌舍弃一张牌,并且回合切换到下一名选手。除了可以通过从牌山摸牌的方式获取手牌之外,还可以通过「鸣牌」的方式获取别人舍弃的牌。和手牌不同的是,通过鸣牌取得的牌必须置于麻将桌上。「宝牌」同样是对得分有重要影响的因素之一,在和牌计算得分时如果牌中有相对应的宝牌,则得分会进一步增加,表示宝牌的牌会堆积在牌山上,根据情况进行公示。
3.2 麻将辅助
在本研究中所说的麻将辅助,是指通过识别麻将进而识别麻将役种并且显示出计算结果。对于麻将初学者来说,麻将得分的计算有难度,不仅需要记住大量的役种,宝牌的个数以及鸣牌的有无,还需要结合场上提示的情报进行计算。本研究是为了在真实空间中能够像网络麻将一样自动计算得分来对玩家进行麻将辅助。
本研究,选取需要识别多种记号的真是空间工作辅助中的其中一例麻将辅助作为对象,理由有以下3点:第一点,在打麻将的时候,麻将牌全部是规则地排列在麻将桌的平面上的,虽然包括基于传感器的位置推算在内,基于AR技术的3次元空间的位置推定同样不容易进行,并且误差很大。但是,如果识别目标仅限于平面,则很容易掌握特征量,我觉得高精度的位置推定还是有可能的。第二点,除了少数几种分类,无论是手牌、鸣牌还是王牌都是34种牌之一,这是因为牌获得了属性,这一点可以通过后面说的位置关系来考证。第三点,AR技术可以在特征点多的空间中进行高精度的现实增强。所谓的特征点,是指图像上可以明显检测出的点,ARKit的位置推定技术是基于特征点追踪,放置了许多麻将的麻将桌有着大量的特征点,很适合作为使用AR技术的环境。
4.麻将辅助系统
本章将对本研究中开发的麻将辅助系统进行陈述,图3是系统构成图。本系统包含基于AR技术的麻将牌属性识别机制,基于机器学习的麻将牌记号识别机制以及得分计算机制三种模块。
下面对本系统的处理流程进行简单描述。如图3所示,自我位置推算机制以及麻将牌识别机制所得到的数据,通过使用服务器上构建的得分计算组件进行计算,从而得到役、翻数、符数和得分,最后通过AR将结果显示出来。在进行点数计算时所必要的信息中,有一些信息是使用本系统无法获得的。比如说,在麻将游戏的四名玩家中,其中一名是庄家,其余3名玩家在庄家后依次出牌,是否是庄家这一点只有玩家自己知道,这一点无法从麻将桌上判断出来,这种信息需要玩家自行输入。
麻将属性识别机制如图3所示,由(1)坐标空间取得模块和(2)区域判定模块两个子模块构成。坐标空间取得模块是指,利用现实空间存在的特征点,在AR空间构建相对应于现实空间的坐标空间,构建完的坐标空间交给区域判定模块。区域判定模块的作用是,获取通过坐标空间取得模块获得的坐标空间信息,将放置麻将牌的区域名交给后面所说的麻将牌记号识别机制和得分计算机制。接下来是对这两个子模块的详细说明。
(1) 坐标空间取得模块实现了AR空间与现实空间的对应,在AR空间中,以用户视角的麻将桌左前角作为原点,将该原点作为基准来模拟麻将桌。玩家正面所对的麻将桌的左右方向作为x皱,前后方向为y轴,由于麻将桌是个正方形,假设麻将桌的边长为a,则x,y的定义域为0x,ya,同时定义麻将牌的长边和短边的长度分别为h,w。利用这些定义,我对上文提到
的A、B、C三个区域进行如下定义。
A:1/2 a - 7w ≤ x ≤ 1/2 a + 7w,h ≤ y ≤ 2h
B:a - 4(2w + h)≤ x ≤ a,0 ≤ y ≤ h
C:3h ≤ x ≤ 3h + 7w,a - 4h ≤ y ≤ a - 3h
这些区域对评估进行了严格的设定,精确度达到10cm,由于根据玩家不同,麻将摆放的位置会有差异,只能在估计误差的情况下对区域进行大致的设定。其中,C点是为了进一步实验而进行设定,根据实际情况位置会有差异(王牌是指庄家背面一侧的牌山)。
接下来对AR空间和现实空间对应机制进行说明。首先对麻将桌平面进行识别,麻将桌上由于存在着众多麻将因此特征点非常多,识别起来比较容易,通过这个处理,在AR空间中以此为基准来获得二次元平面的信息。而坐标轴和原点则是通过使用OpenCV的图像处理程序来识别,通过移动终端对作为坐标原点的麻将桌左前角进行摄影,然后对摄影的图像进行二值化操作然后进一步对边缘进行识别。麻将桌通常是绿色平面并且周围有彩色边缘,通过这个方式识别比较有效,边缘识别使用的是Canny算法。接下来对识别出的边缘进行Hough变换来检测出直线,检测出的直线作为坐标轴的候补,对检测出的直线组获取其交点,这里为了减少交点候补的数量,针对直线组进行限制。由于检测对象是拐角,可以预想到直线必定是以直线相交的,假设所有线相交的夹角为θ,
4/9π ≤ θ ≤ 1/2π
,其中仅交叉直线的交叉点作为原点候补。将画面上检测出的所有的原点候补与麻将桌进行碰撞检测。需要注意的是从终端拍摄图像一直到原点碰撞的过程中终端的位置是会发生变化的。ARKit的摄影帧数是60帧,在切换到下一帧之前必须完成原点检测过程。
用户在平面中对进行碰撞检测后的原点候补进行挑选选出合适的原点,选择的原点作为交点,相交的两条直线作为坐标轴,由于作为坐标轴的两条直线并不总是以直角相交,并且由于是在真实空间中一定的误差是被允许的,所以以麻将桌为基准的x轴旋转90°作为y轴。一旦获取了原点和坐标轴,那么坐标空间也就建立完毕了,接下来将建立好的坐标空间交给区域判定模块。
(2)接下来对区域判定部分进行说明。在AR空间中依照ABC区域进行构图如图2,通过将每一帧的画面中央的坐标与麻将桌进行碰撞检测,来实时获取AR空间上对应的麻将桌上的坐标,这样就可以在AR空间上标记终端的位置,使得自我定位可以执行。当自定位映射到①所示的区域之一时,就可以获取到区域名称,然后将区域名交给麻将记号识别机制和得分计算机制。
4.2 基于机器学习的麻将牌记号识别机制
麻将牌记号识别机制,如图3所示是由(1)麻将牌检测模块和(2)麻将牌识别模块两个部分构成的。(1)中的麻将牌检测模块是通过获取麻将牌属性识别机制传递来的区域名来识别麻将牌列,将裁剪后的牌的图像交给麻将牌识别模块。(2)中的麻将牌识别模块针对麻将牌检测模块得到的麻将牌图像,使用基于机器学习的识别器进而获得麻将牌的种类,然后将结果交给得分计算机制。以下,对这两个子模块进行详细说明。
(1)麻将牌检测模块,使用了基于OpenCV矩形检测的检测器,麻将牌检测由麻将列区域识别处理和各个牌的分割处理构成。其中麻将列是指并列摆放在①定义的区域的麻将牌。无论是A、B还是C都是使用基于AR技术的麻将牌属性识别机制来区分的。麻将牌列的识别和麻将桌边缘的识别一样,是通过对牌列的灰度图像进行二值化处理后得到的。这个处理使得牌和背景的界限十分明确,因此十分实用。接下来是对每张牌的轮廓进行识别,由于鸣牌和手牌的界限不够明显,单纯处理像素值对其二值化来获取轮廓比较困难,因此,考虑在邻域的二值化之后,通过在垂直方向上执行扩展处理来强调牌的界限,进而检测出各牌的轮廓。
(2)麻将牌识别模块,使用的是基于卷积神经网络(Convolutional Neural Network)的识别器,学习数据是大量包含麻将列的图像,实际情况中已经通过使用前述模块已经获得了600张图像。由于识别时和学习时的数据取得方法被一致化,差异会进一步减少,期待精度的提升。通过模糊,投影变换,反演和噪声添加等手法对调整大小的图像进行处理,目前已经扩展到3,000个案例。识别器是使用机器学习库Keras构建的卷积神经网络。通过将麻将牌的图像作为输入,可以输出任意34种牌的名称。借助CoreML可以在手机终端上使用构建完毕的识别器。
4.3 AR显示模块
图3所示的AR显示模块,获取得分计算机制传来的区域名和计算结果并显示出来。图4是借助麻将牌属性识别的到的区域名的表示情况,图5显示的麻将牌记号识别的结果和得分计算结果的显示案例。图4画面中央的原点坐标位于手牌的区域之中,图5中为了对记号识别的结果进行确认因此在画面上显示出了麻将牌的图像,同时平面中显示相应的役、番、符和得点。
5.评价试验
5.1 评价手法
下面根据该系统对麻将牌的属性和记号的识别性能进行评价。实验中使用的是市场上购买的麻将套装,实验场所是室内,使用是各边长为62.5cm正方形的麻将桌,麻将牌长2.5cm宽1.8cm。物品摆放如图1所示,麻将牌配置在4.1节定义的区域当中,实验设备为iPad(iOS 12.0)。
为了调查牌属性识别精度,首先对自定位精度进行考察。这是因为牌属性的识别,仅仅由自定位的性能决定的。