使用增强现实技术和机器学习方法创建导航器

最近,一个人的出行能力正在快速增长,我们可以发现越来越多的地方。但是在这些地方导航并不总是那么容易,有时建筑物的结构形式如此复杂,以至于您甚至可能在陌生的地方迷路。

例如,我们位于圣彼得堡的777号工程技术学校属于此类建筑物。我们面临的问题是,当客人和家长参观我们的学校时,他们很难找到合适的办公室或其他必要的地方。每个人都从这种情况中找到自己的出路,有人无休止地要求建筑工人,有人只是在无尽的走廊里徘徊。分析了这个问题之后,我们决定为我们学校的访客创建导航器。但是,在建筑物内部具有地图的简单导航器并不重要,这不能说是一种新兴的,快速发展的增强现实技术(AR)。我们的导航仪是使用AR技术,计算机视觉和机器学习方法开发的。这将帮助您导航并找到访问我们学校的确切地点。

目的


目标是创建面向建筑的通用助手。

主要目标:

  • 简化新生,家长和来宾学校的定位;
  • 使该应用程序具有通用性,以便以后不仅支持我们学校中的导航,而且还支持全球其他建筑物中的导航;
  • 人性化的界面,每个人都可以理解;

AR-增强现实


现在,每年都会出现越来越多的新技术,其中一种就是增强现实技术,或者仅仅是AR。首先,他的第一次相识发生在著名的Google公司决定将其眼镜与增强现实技术结合使用时。然后,AR技术开始飞速发展。当Google放弃其谷歌眼镜项目时,一个崭新的面具时代进入了我们的视野,并将其转变为名人。然后,《神奇宝贝》捕捉了现实,人们走了数千公里,寻找最酷的角色。

最近,谷歌和苹果分别推出了自己的ARC引擎ARCore和ARKit,从中我们可以得出结论,随着越来越多的新应用程序和游戏的开发和创建,AR技术将变得更加易于使用。

什么是AR?


增强现实是一种实时补充现实世界的环境,正如我们看到的那样,借助任何电子计算设备和软件处理的数字数据,它都可以实现。

此外,增强现实(AR)必须与虚拟(虚拟现实,VR)和混合(混合现实,MR)区分开。

它们的主要区别是什么?


在AR中,与虚拟现实不同,虚拟数字对象被投影到真实环境中。

虚拟现实是通过数字技术手段创造的世界,通过感官传递给人。

混合现实是VR和AR之间的交叉,并结合了这两种方法。

VR创造了一个自己的世界,一个人在其中沉浸其中,而增强现实则与真实的物理世界协同工作,将虚拟对象引入其中。因此,VR仅与用户交互,而AR与外界交互。

发展前景


AR技术可能占据科幻小说专门针对全息图的位置。只有全息图不会很快出现,并且Hololens(Microsoft增强现实眼镜)等设备在技术上已经准备就绪。在学校中看到虚拟互动插图的前景,可以从各个方面进行查看,您可以与之互动并立即看到您的体验结果,似乎远非美好的未来幻想。任何工程专业的培训都可以变得更加直观,易于理解和有趣。

总而言之,附加现实不仅是社交网络的游戏和炫酷面具。在教育,工业和医学领域中,使用AR的机会很多。

增强现实的发展令人震惊。与VR不同,她不需要依靠笨重的头盔和强大的硬件,而只需依靠当今智能手机中最紧凑,最便携的设备即可。

增强现实已经改变了我们的现状:虚拟面具,在城市和沼泽中寻找神奇宝贝,孩子们不是通过木头而是通过电话屏幕互相射击。现在,这已经成为现实。

工作计划


我们的导航器具有内阁数字识别系统,该识别通过机器学习方法进行,特别是使用了卷积神经网络技术。让我们深入了解建筑。

对于此模型,我们必须解决2个主要问题:

  • 检测图像中的字母;
  • 字母识别。

如果要识别字母存在旧的-类似于LeNet的良好网络,则为了检测图片中的字母,我们必须编写我们的神经网络体系结构,编译数据库并训练模型。为了组成架构,我们需要了解我们的模型将解决哪种机器学习问题。

经过大量辩论,我们达成了共识-文本检测器应解决回归问题,即模型应预测该字母可能位于的位置。然后我们模拟了一个由两层组成的神经网络,其中不包括输入和输出层,但是我们面临一个问题:存在大量的输出数据,因此我们遇到了一个问题-重新训练问题,我们得出的结论是我们需要一个不同的体系结构和方法来解决该问题,经过长时间的讨论,我们得出的结论是,我们不需要一次检测字母,而是先检测单词,然后再检测字母。在这里,我们花费了很多时间来更改数据库,然后在级联中添加了另一个神经网络,因此我们的系数(我们选择了均方误差度量)降低了40%,但实际结果仍远未达到理想的结果,因此,我们决定为此重写2个神经网络的体系结构,我们不得不分解“集合”,了解每个网络如何独立工作,并了解为什么我们需要每个网络每个参数。然后我们意识到,除了减少参数数量之外,我们可以更改问题的方法,我们的团队更改了模型:现在这是一个卷积神经网络,通过这种方法,我们将错误率降低了30%,并且通过网络的运行速度提高了。现在这是一个卷积神经网络,通过这种方法,我们将错误率降低了30%,并且通过网络的运行速度提高了。现在这是一个卷积神经网络,通过这种方法,我们将错误率降低了30%,并且通过网络的运行速度提高了。

字符检测的问题得以解决,仍然需要解决字符识别的问题,对于我们的团队来说,字符识别本身并不是一项新任务,我们训练了与LeNet神经网络架构相似的卷积神经网络,并在测试数据集上获得了99%的误差系数(即神经网络)几乎没有错误)。但是实际上,这是不可接受的解决方案,因为应该将固定分辨率的图片输入到该网络的输入中,但是实际上,可以使用具有不同分辨率的不同图片,然后我们的团队考虑了一下,并决定训练相同的神经网络,但仅限于具有足够分辨率的图片较大的分辨率,以至于可以准确地假定不会有更大的权限进入神经网络,但是后来我们放弃了这个想法,因为我们试图更改提供给体系结构输入的图像分辨率,但这并不意味着图像分辨率会发生变化,因此现在我们需要考虑识别字母的体系结构,并且我们意识到最好的解决方案是作为基础体系结构-LeNet神经网络的后代-Microsoft的ResNet,该体系结构表示它将接收具有不同分辨率的图像。它将接收具有不同分辨率的图像。它将接收具有不同分辨率的图像。

结果,在我们训练了神经网络之后,我们的错误率变成了95%-是的,虽然比LeNet架构要少一些,但是它可以工作,然后我们记住,我们不需要识别所有字母,而只需识别数字,并决定在确定之前添加符号是另一个确定待确定符号是数字还是字母的模型,由于该模型解决了分类问题并仅对2个类别进行了分类,因此神经网络毫无意义,因此在将模型添加到模型后,我们将逻辑回归作为体系结构的基础对神经网络进行“集成”和再训练(仅通过数字),我们的错误率是+-97%,这不是很差,在这个“注释”上,我们决定完成字符识别的工作,结果,我们得到了这样的“合奏”:

原始图片->确定单词位置的卷积神经网络->确定字母位置的卷积神经网络-> Logistic回归,确定图片或数字中的字母-> ResNet,确定最终数字

但是,我们还有另一个问题:跟踪地理位置的问题。最初,我们认为这是最简单的任务之一,结果证明是错误的。首先,我们像真正的程序员一样,采取了阻力最小的路径,并简单地跟踪了对象的GPS地理位置-它不起作用,误差太大以至于根本不适合我们,我们决定考虑其他确定地理位置的方案,并决定从公司连​​接服务Yandex-Yandex Latitude,但事实证明它无法正常工作,即它不是您无法连接API的有效服务,我们的下一个想法是连接Unity引擎的mapbox框架(正是在此基础上,我们决定开发我们的项目),在我们成功连接该框架,检查了其功能并编写了一个简单的GPS跟踪器后,结果已经更好了但是误差仍然很大,因此,我们继续寻找解决方案,并且仔细阅读了文档,我们发现所获得的值存在15%的误差,这不适合我们,尤其是因为这种方法有很大的缺点-它使用了GPS ,并且我们正在学校周围创建导航器,这意味着在室内,那么GPS信号将变得非常微弱或根本不起作用+在所有设备上均不支持GPS,这就是为什么我们更改了方法,并基于视觉定位系统从全局识别改为本地识别的原因这种方法也有其缺点,但是它们丝毫没有影响我们的工作,因此地理位置跟踪系统已经准备就绪。所获得的值存在15%的误差,这不适合我们,尤其是因为这种方法有很大的缺点-它使用GPS,并且我们在学校附近进行导航,然后在室内进行操作,那么GPS信号要么很弱要么不很弱通常,并非所有设备都支持+ GPS,这就是为什么我们改变了方法,并基于视觉定位系统从全局识别转向了本地识别。这种方法也有其缺点,但是它们并没有以任何方式影响我们的工作,因此可以使用地理位置跟踪系统了。所获得的值存在15%的误差,这不适合我们,尤其是因为这种方法有很大的缺点-它使用GPS,并且我们在学校附近进行导航,然后在室内进行操作,那么GPS信号要么很弱要么不很弱通常,并非所有设备都支持+ GPS,这就是为什么我们改变了方法,并基于视觉定位系统从全局识别转向了本地识别。这种方法也有其缺点,但是它们并没有以任何方式影响我们的工作,因此可以使用地理位置跟踪系统了。则GPS信号将非常弱或根本不微弱+在所有设备上均不支持GPS,这就是为什么我们更改了方法,并基于视觉定位系统从全局识别切换为局部,这种方法也有其缺点,但并没有影响我们的工作,因此地理位置跟踪系统已经准备就绪。则GPS信号将非常弱或根本不微弱+在所有设备上均不支持GPS,这就是为什么我们更改了方法,并基于视觉定位系统从全局识别切换为局部,这种方法也有其缺点,但并没有影响我们的工作,因此地理位置跟踪系统已经准备就绪。

实际意义


我们的应用程序可以使初次来到这里的人或对我们的教育机构中的人们的学校结构了解甚少的人有更好的定位。阅读下载的应用程序时,他们将在入口处遇到一个带有QR码的摊位。

功能性


我们的应用程序可以做什么:

  • 通过铭牌识别机柜号,
  • 详细的学校地图,
  • 带领一个人去他的办公室,
  • 通过编号搜索办公室,
  • 在列表中并按类型搜索教室(所有教室根据该教室教授的主题按特定的组分配)。

应用实施


该应用程序是使用C#编程语言以及Python和TensorFlow库在最流行的一种称为“ Unity”的引擎上编写的,此外,还使用了Anaconda软件包管理器。

如何使用此应用程序?


假设我是父母,并且参加了父母的聚会,我需要进入信息学办公室339室。我上学了并且必须扫描,因为我重复了平板电脑上的QR码。然后,在成功加载应用程序之后,我将进入主菜单:

图片

之后,我可以转到说明菜单以查找如何使用该应用程序:

图片

该说明详细描述了如何查找类,即首先,在主菜单中,单击“查找类别”,然后显示以下菜单:

图片

右上角箭头使我们可以返回主菜单,如果系统识别出机柜号,则板周围会出现一个框架,然后出现一个确认窗口:

图片

如果模型正确识别了机柜,则我们的条件“父”将单击“是”,如果未正确识别机柜号,则单击“否”并再次拍摄照片。因此,应用程序将了解我们在学校空间中的位置。

接下来,“父母”必须选择一个目的地,在这里他有2个选择,要么输入办公室的编号,要么选择其类型并在以后的列表中找到它:

图片

图片

之后,“父母”必须遵循摄像机上的标志。

当您到达目的地时,导航器会通知您。

还有一个更熟悉的选项,即在主菜单上单击“父母”,然后单击“计划”,然后打开详细计划,您可以在其中独立导航如何到达所需的位置。

平面图1

图片


平面图2

图片

目前,这是应用程序中存在的所有功能,将来计划完成该应用程序并添加更多有趣的功能。

您可以通过以下链接观看视频:


结论


通过协调良好的团队合作,足够的时间和技能来应用软技能,可以实施任何项目。

应用程序工作人员:

Ilya Vasilenko-程序员(后端)

Parfenyev Demid-设计师

Lunev Daniil-Unity开发人员(前端)

Mikhail Purtov-数据挖掘者,创建者

由于我们的项目,我们团队的每个成员都学到了很多新东西。从设计到编程和计算机视觉。

我们的PYC团队相信,哈伯会喜欢我们的项目。

此致,PYC小组敬上

工具类


Unity + C#

Python + Anaconda软件包管理器+用于创建神经网络的TensorFlow库+用于创建机器学习模型

的库scikit-learn Immersal-实现VPS的库

参考书目


Tensorflow
网站Immersal
网站C#
网站Python网站

*该出版物不假装宣传我们的应用程序,因为它甚至在开放源代码中也不可用,并且仅在学校内部可用

All Articles