要训练计算机视觉识别住宅内部装修是一项非常复杂的任务。若想要训练数据具备一定的多样性和准确性,那么则必然需要耗费大量的成本、时间,有时甚至还会涉及隐私问题。在本篇文章中我们将就如何通过Unity的合成数据生成工具和服务,训练出更为强大的计算机视觉应用,从而解决开发障碍与难题进行深入探讨。
在开发高性能计算机视觉(Computer Vision,简称CV)模型时,最难点往往是需要获取足够多样、标注准确的数据集。而最近兴起的合成数据可以最小化数据获娶注释所需的时间与成本,这也使合成数据成为了数据收集问题的一种较为可行的解决方案。
Unity一直是合成数据推广的引领者。对于各个专业的合成数据技术Unity也都十分有经验,其中一个重要行业便是家装。
合成的家装数据可用于智能家居、防火防盗、生活辅助、医疗保舰宠物与婴儿监控、室内设计等各种应用。
在开发家居应用时,获取真实的标注数据常常会因为隐私问题而受到阻碍。除此之外,数据集在材料、颜色、光照和家具等组成要素上要求有一定的多样性,让数据进一步复杂化。
为了解决这些难题,满足客户需求,Unity已在开发用于生成逼真家居环境的工具和3D内容库。借助程序化方法,能够实现在数据集中摆放家具,在诸如镜头位置、家具材料、光照、时间变化、天空和室外环境等组成上添加随机元素,除此之外Unity还添加了自定义对象的支持。下图展示了其中四种元素的随机化。
其他参数不变,四种场景组成的随机化
Home Interiors数据集是用工具生成的一个数据样本。这个数据集包含以用途与实例划分的图像(分别标注为家具、装饰、墙壁、天花板和地板),家具皆以2D或3D边框框眩相较于参考数据稀少的训练数据,带有更多标签类型的数据可以大幅拓宽CV的应用范围。
接下来我们来了解几个家居应用案例。Unity在这些案例中帮助客户克服了获取真实数据集的难题。
Home Interiors数据集所包括的四种参考数据。左上:2D选框,左下:3D选框,右上:用途划分,右下:实例划分
智能化家居
在自动化家居和生活辅助等应用上,计算机视觉技术有着极大的吸引力。在应用领域,传统的传感器阵列也正在转向以CV驱动的摄像机,从而更加高效的执行任务。
扫地机器人就是一个很好的例子。扫地机器人自发明以来已近30年,而传统型号的主要缺点之一是无法分辨垃圾和其他物体,并且很难穿梭于障碍物过多的空间里。如今我们可以借助Unity的力量针对这些缺点为其制定相应的解决方案。例如,Unity的物理引擎可以逼真地模拟出带有随机褶皱和折痕的织物,以此用于训练扫地机器人识别并避开衣物。
智能扫地机器人的视角模拟。左图:2D选框,右图:用途划分
利用合成数据改善CV模型的另一个用例是智能摄像机。智能摄像机的作用是检测房间里是否有人,以便控制和调整照明、气温等房间环境情况。Unity的工具同样发挥了重要作用。其中的一个例子便是训练相机模型识别宠物。要想识别宠物,就需要在居家环境下获取大量不同姿势、动作、毛色等的宠物图像。作为一个游戏引擎,Unity完全可以借助包括骨骼动画、动态模糊等效果生成高度逼真的图像。
并且,Unity还可以合成不同位置与视角、透视投影、长宽比、镜头扭曲和其他图像属性(对比度、饱和度等)等符合真实摄像机特征的数据。例如在一个合成环境里,引擎可以轻松模拟夜视摄像机及普通RGB摄像机。此外,Unity所具有的使合成数据快速迭代的这一特点也能让两种摄像机间的切换非常轻松。
模拟一台带有鱼眼镜头的夜视摄像机。左图:2D选框,右图:用途划分
安全与防盗
CV另一个占据主导地位的领域在于以医疗保健和生活辅助技术改善家庭安全与生活质量。
比如,为了需要帮助视力障碍者安全地在屋内行走,CV模型需要全面地了解房屋的布局及物品摆放。模型需要通过检测家具、墙壁、楼梯和门等元素来识别出安全路线,并且需要测量出墙壁及其他障碍物的距离,在用户靠得太近时发出警告。为了解决这个问题,在数据集中我们采用了多种单层和多层住宅布局,随机化了家具的类型和摆放、门窗的开放程度。除了数据集的多样性之外,这种复杂程度需要多种类型的基础行为来训练,包括分割、边界框和深度图等,这使得编制高度多样化和准确标记的真实数据集更加困难。
同样的家居场景也可用于训练CV模型以用来检测人类,我们可在模拟中加入3D人体模型,并随机化其姿势、身高、身材、头发、皮肤等。这些CV模型可用于监测人的体态,并检测异常的步态和灵巧度等。如果住户在特殊位置或卧榻以外的地方跌倒或长时间不动,则系统也可以向应急服务机构发出警报。同样地,CV模型还能学习人在服药时的肢体和手臂动作,在用户忘记服药时发出提醒。
居家环境内的3D人体模型。左图:2D选框,右图:监测对象
室内设计
机器学习赋予了计算机一定的艺术创作能力,计算机室内设计便是其中的一个例子。一些在线家具经销商已经在利用智能手机摄像头于消费者家中展示其产品。经过训练的CV模型可以识别和测量室内表面(包括地板、桌子、墙壁)的范围和面积,以在空间内准确地展示产品模型。
此外借助CV强化AR的例子还有很多。比如,Unity曾使用用户上传的图片来训练CV模型检测室内的装修材料和设计风格。此类模型可用于在线推荐系统,帮助用户快速找到契合自家装修的产品。Unity模拟真实物理的渲染引擎可以渲染出多种逼真的装修材料(如各种木材和胶合板)。并且,前边提到的随机化工具还能在每张生成的图像中轻松修改材料的各种参数。
CV模型还可以检测室内家具的总体形状和尺寸,据此来推荐家具,或更准确地展示类似尺寸的家具。类似地,我们也能制作一个配色工具,为家具配置各种颜色,如果消费者决定要为装修风格重新定调,可借助工具来挑选想要的颜色。
更多应用
我们在本文中讨论的CV应用只是沧海一粟,合成数据完全可以在更广的领域内进一步释放CV模型的潜力。除了文中的例子外,其它一些例子还包括老建筑翻新(绘制精确的内部结构图)、位置识别及合成环境的程序化生成。合成数据集具有极大的定制自由,其应用范围只有你想不到。本文的主题是家居装修,但程序化的合成数据工具完全可以生成大量带有随机化要素的环境。