Sketchar
返回博客

计算机视觉与增强现实中的“渐进标记”方法

作者:Sketchar阅读需 1 分钟

终于到了该聊聊我们过去一年开发了什么、又攻克了哪些难题的时候了,这是让SketchAR用户不受常规限制、自由感受创作乐趣的又一次重要进步。

市场对提供虚拟内容的移动应用有着强烈的需求,不管当前技术存在什么样的局限。因为计算机视觉是一个软件与硬件紧密相关的领域,很不幸,大多数AR产品的理念都会一直受限于技术端的滞后。

小团队很少能解决根本性的问题,但我们可以找到一种能简化任务的方法。

为什么要重新发明轮子?为什么之前没人尝试过?

大多数第三方库和平台都依赖预先安装的标记物,把虚拟物体固定在现实世界中的某个位置。而在我们的场景里,画画的手会挡住这些标记物,所以我们不得不开发出自己的方法。

ARKit在没有标记物的情况下无法做到同样的效果。

除此之外,ARKit和ARCore虽然不依赖标记物(环境标记除外),但如果有一些预先安装的标记物固定虚拟物体,其定位精度会更好。目前的方法确实包含关键点的检测和跟踪来引导用户,但用户还无法自行设置参考标记。ARKit和ARCore的第二个问题是无法让虚拟物体跟随真实世界一起移动。举例来说,把虚拟物体放在物理表面上后,我们没法把虚拟画面和物理表面像粘在一起那样整体移动——因为虚拟图像会停留在原地,不会跟随表面移动。

如前所述,SketchAR是在白纸上工作的,而白纸对大多数计算机视觉算法来说堪称“杀手”。不过,我们的算法专门针对这种情况做了优化。它们足够稳定和精准,能把AR内容牢牢绑定在纸面上,即使在ARKit跟踪失败之后依然能继续工作。速度同样重要。我们把大部分计算都转移到了GPU上,这让SketchAR能够在iPhone上实时运行,从iPhone 5SE机型开始都支持。

“渐进标记”方法

这意味着画师画下的一条线会变成一个锚点,为虚拟物体的固定增添稳定性。

同时,收集到的数据也在持续帮助我们为每一位用户打造功能完善的个性化助手。顺便说一下,我们运用机器学习和神经网络来分析和训练每位用户绘画产生的数据。这方面的细节我们会在后续文章中详细讲述。

休斯顿,我们遇到问题了——或者说,这就是工作原理:“不要害怕”。

要理解这个问题是怎么解决的,有必要从头说起:

环境。 每一种表面都有不同的纹理、颜色和结构。而且,算法还容易被环境中多余的“噪声”干扰。滤镜能解决这个问题(“通道”的概念和Photoshop里的通道是一样的)。

如果神经网络的训练不基于用户的真实数据,统一处理各种表面就会很困难。神经网络的训练是一个持续进行的过程,因此永远不应该被当作产品中已经完成的一部分。

“画布”。 画布指的是一张纸、一面墙,或者任何你可能选来作画的表面。“画布”的多样性只体现在尺寸上。与此同时,白色是计算机视觉的“天敌”。请阅读我们的文章《白纸难题》,了解这背后的原因。

绘画。 显然,我们清楚用户的水平,也不指望他们画出的草图能和原图完全一致。所以,我们的算法会将用户的偏差考虑在内。

手。 应用要成功运行还有另一个“天敌”:当屏幕上的手挡住了表面、标记物或画作本身时。手的大小和形状、肤色,甚至握笔的方式,都会分散算法的一部分注意力。

设备。 设备位置不固定。用户单手拿着手机,以不同角度靠近或远离表面。

解决方案。
对这些问题进行详细分析之后,我们弄清楚了该如何“教会”应用只识别用户所画的内容,过滤掉环境干扰,而不是直接忽略环境。

下面你可以看到,周围的世界是如何被转换成一张平面图像,并被分割成多个图层,逐一通过通道进行分析的。

它是如何工作的?

将渲染出的内容进行转换,与原图做映射,再把虚拟物体放置到表面上,这需要多方面的综合处理。事实上,在这些图层中,有些远比其他的更为重要。当我们只看整个过程中很小的一部分时,就能清楚地看到每一秒钟发生了多少动作。

下面是一个简单的示意图,展示环境是如何变成一张平面图像的。然后它会被拆分成多个图层(通道)逐一分析。

如上所述,图层被分离出来后,算法会学习区分它看到的一切内容。比如,把背景和手分开,把手和它的影子分开,等等。

从左到右的屏幕依次是:

  1. 位于表面上的虚拟图像,也就是用户在手机屏幕上看到的画面。
  1. 识别出表面上的纸张。
  1. 纸张与背景做了粗略的分离。可以看到桌面上的噪点,以及手的阴影被识别成了同一个物体。
  1. 手与表面被清晰地分离开来。
  1. 只检测出已绘制的内容。
  1. 识别出所绘内容相对于环境的位置。

当应用能够清晰识别出每一个对象后,它会将它们与原始图像进行匹配。请记住,算法的每一步操作,都是在摄像头和手在画面中不断移动的情况下完成的。

这是算法第一版中出现大量错误匹配的一个例子。

这是算法后续版本中匹配效果良好的一个例子。

不深入细节的话,这种方法解决了产品中的许多问题,也完成了改善用户体验的诸多任务。它拓宽了所获数据的应用范围,从而让我们能把产品提升到新的水平——这是一个由机器学习和神经网络数据支撑起来的、功能完善的助手。

SketchAR已经在AppStore上线近一年,在Play Market上线半年,甚至还登陆了MS Hololens。尽管用户和媒体的评价都十分热情,但至今仍没有一款功能相似的竞品应用出现。这恰恰说明了这个问题的复杂性,也彰显了我们算法的独创性。

持续关注我们的更新,多多画画,热爱科技吧——因为科技在帮助我们成长……而且很快它就会奴役人类啦!;)

艺术属于所有人!

分享这篇文章

相关文章

订阅公司动态

新文章、产品更新和社区故事直达您的邮箱。绝无垃圾邮件。