2017年5月21日,由中国人工智能学会、中文信息学会主办、亿欧承办的2017·全球人工智能技术大会在北京·国家会议中心拉开帷幕。作为中国人工智能技术和产业领域规模最大、影响力最强的专业会议之一,本次大会汇聚了全球人工智能学术界和产业界著名学者、顶级专家和业界精英,在48小时的议程中,立体剖析了技术大牛与产业明星眼中的人工智能,硕果累累。
中科院自动化所模式识别国家重点实验室研究员吴毅红在模式识别与智能感知分论坛上以“三维视觉研究及应用”为题做了演讲。
以下为观点提炼:
1、三维计算机视觉的应用从传统工业领域逐渐走向生活、娱乐、服务等,比如虚拟现实,增强现实都离不开三维视觉的技术
2、虚拟现实对内容进行制作,要进行360度全方位的感受和观察,就需要三维重建的技术
3、描述子有两个重要的属性,一个是重复性,一个是可区分性
4、三维重建目前分为两大类,一大类是基于全局式的重建方面,一种是基于增量式的重建方法
【吴毅红现场演讲实录】
谢谢大家听这个报告,我的工作是介绍我们团队最近在三维视觉方面的进展。我的提纲是先是基本概念的介绍,然后是三维视觉的应用场合,之后是我们团队在图像匹配,视觉定位和三维重建最近几年的工作,最后是展望与趋势分析。
首先,计算机视觉大家都知道,我就说一下三维计算机视觉,它是要让计算机感知周围的三维环境结构,物体的形状,以及物体和物体之间的相对位置等等,在三维计算机视觉里有三个关键的任务,一个是图像匹配,相机定位,还有三维重建。首先介绍基本概念,先看图像匹配,在某一幅图像上提取一些几何特征,比如点,在另外一幅图像中找到一个点,它们要满足一个条件,满足它们都来自空间中同一个物体点的像,它们就成为对应点,寻找对应点的过程,就是图像匹配。
相机定位,就是我们输入一系列二维的图像和视频,根据这个视频和图像计算出相机的位置,就是给出在一个坐标系下相机的坐标xyz。还有朝向,计算机朝什么方向拍摄,这就是姿态,这是相机定位所要计算的目的是什么。什么是基于图像的三维重建呢,是指输入一系列的二维图像或者视频,根据这些二维的信息计算出视频和图像包含的场景的三维结构,或者某个物体具体的三维形状,这是三维重建的目的。
三维计算机视觉在计算机视觉是偏基础的方向,越基础应用越广泛,随着2010年阿凡达在全球热映以来,三维计算机视觉的应用从传统工业领域逐渐走向生活、娱乐、服务等,比如虚拟现实,增强现实都离不开三维视觉的技术。
一个机器人要在环境中行走,首先要知道这个环境中的三维形状是什么,所以要对周围的环境进行三维重建,这就是地图的重建,同时要知道它走在什么地方,就需要进行定位,目前基于视觉传感器的机器人定位,也是最灵活,性价比最高的定位方式,相比于其他的传感器,这是机器人能够进入到千家万户的手段之一。
还有虚拟现实怎么应用三维视觉的,比如虚拟现实对内容进行制作,要进行360度全方位的感受和观察,就需要三维重建的技术。虚拟现实还有一个交互的属性,你要基于动作的交互就可以使用相机或视觉的定位技术,如果定位技术精度越高,以及速度越快,虚拟现实的在场的真实感越强。
还有增强现实的应用,比如你拿相机手机拍摄一系列周围的真实场景的图像,然后把这个图像在显示屏上或手机上显示出来,要在这个画面上插入一些虚拟的东西,使得虚实进行自然逼真的融合,这就需要三维视觉的重建和定位,把虚拟的物体放入到重建的场景中,根据定位的姿态和朝向把这个虚拟的物体与真实的画面显示出来,这也是三维视觉在增强现实里的应用的地方。
还有在生活服务中,比如在精细导航,目前室外的GPS导航不到某个楼的楼层,依靠视觉定位的技术就可以精细到某个楼层的导航。还有虚拟广告,通过拍摄的照片,相机的位置,可以把虚拟的画插入进去。还有自助旅游,对一个旅游景点进行三维重建,如果游客在这个场景里行走,走到哪可以拍摄一个照片,通过拍摄的照片计算出位置,就可以基于这个位置对你进行服务。
我是来自模式识别国家重点实验室的机器人视觉组,我们研究组专注于三维计算机视觉有20年的历史,在理论方面,在三维视觉的各个方面都有系统性的深入的积累,除了发表在视觉领域顶级期刊顶级会议的论文外,还有国内外的竞赛拿第一名的成绩,还有国内外专利的申请与授权,中英文专著的出版。另外,我们也追求技术的应用我们和国内外的企业有长期的合作。
首先看一下图像匹配。图像匹配里一个重要的工作,就是对图像描述子的提取,我们让一张图像参与计算,首先让图像里的一些特征进行代数化,三维视觉主要使用的是几何特征,比如点,直线,曲线等等,这里指的图像的描述子,就是要提取到这些几何特征的图像表观本质,一个点的描述子就是把它转化成一个向量,然后就可以参与计算。
描述子有两个重要的属性,一个是重复性,一个是可区分性,重复性就是你提出来图像的描述子,比如光照的变化,视角的变化,尺度的变化,你提出的图像描述子还得反映这个点的本质特征,还是不变的,这就是重复性。区分性,对不同的点,你提出的描述子,得到的描述子的向量应该是不同的,所以这是描述子的区分性。
图像描述子早期的工作是基于知识驱动的图像描述子方法,就是你做图像描述子必须有一定的专业知识背景才能做好图像描述子,比如最典型的影响最广泛的SIFT描述子,你需要懂图像的灰度,梯度,光照等等,你才能设计出一个好的图像描述子,但是这类方法有它的限制,鲁棒性上是受限的。因此,07年开始兴起了基于数据驱动的方法,即基于机器学习的方法,需要先验数据需要一些训练,到目前为止深度学习非常火热,三维计算机视觉也不排除深度学习的方法,对图像描述子进行研究。
这就是这两类方法,一类刚才讲的是知识驱动的方法,一类是机器学习的数据驱动的方法,知识驱动的方法,虽然在性能上受限,但是速度还是快于机器学习的方法,目前虽然深度学习描述子取得了很大的进展,但是还比不上知识驱动的方法的速度。基于知识驱动以及数据驱动的方法我们都有一系列的研究,早期有LIOP。最近我们也开始做深度学习的图像描述子。我们的基于知识驱动的方法,国际上多个专家在公开的数据库上测评得到的结论,我们的方法性能是最好的,超越了SIFT和SURF等。我们的代码都开源了,欢迎大家下载使用。
下面讲一下深度学习的方法。深度学习在底层的特征上发挥了很大的威力,在几何学习上它不一定是性价比非常高的事情,但是不排除在特征上的描述方法上发挥它的威力,现有深度学习方法有它的局限性,泛化能力若,普适性不强,还需要度量学习,速度慢。在我们的网络中有6个3×3的卷积层,1个8×8的网络层。
在构造目标函数时,我们考虑了多个误差约束,相似性的误差采用相对距离而不是通常的绝对距离,紧致性误差降低128位描述子位与位之间相关性,用来防止过拟合,泛化能力误差,为增强泛化能力,在两个中间层加入误差约束,无需更多参数。训练时2至4小时在GPU上,在进行测试的时候,速度也很快,一秒钟可以做2万多个描述子的提取。这个网络输出128维向量就可以进行图像的匹配,如果计算描述子的最近点,我们直接计算欧氏距离L2范数就可以了,不需要度量学习所以速度也是很快的。
相关工作最近发表在CVPR2017,另外参加ECCV2016描述子竞赛,三项指标第一。这是实验的结果,我们可以看出我们的方法超越SIFT方法几十个百分点,也超越了目前的深度学习的方法,这是patch分类上,patch检索上都有类似的结果。
下面说一下视觉定位。视觉定位主要一个研究方向是做SLAM,SLAM的全称是Simultaneous Localization and Mapping,主要解决的是相机在空间中的定位,以及创建环境的地图。最大的特性是基于视频,不仅是有连续性,还要有速度,最早起源于1986年。SLAM一个很大的特性就是连续进行工作,但是视频周围的环境非常复杂,光照的变化,完全遮挡,运动快速提取不到特征,则可能中断,需要进行重定位,保证它系统的连续性,因此重定位是非常必要的。最近在重定位方面的进展一是基于随机森林的城市大数据千万级的毫秒级定位,还有基于Local Sensitive Hashing大数据实时定位。
重定位最关键的问题是对已有的三维地图与当前图像进行匹配,基于这个匹配就可以计算相机的位置和姿态了。由于这个数据量非常大,所以进行快速的匹配是非常关键的。首先是要提取图像的描述子,如果按一般的提取,我们看视觉定位的过程,黄色部分是图像描述子提取的时间,绿色的部分是图像匹配的时间,最后紫色的部分是定位的时间。图像描述子的提取在视觉定位中占了大部分的时间,怎么样加快速度,一个最直接的想法,就是把这个图像描述子替换为二值描述子,但是替换之后,虽然描述子提取的时间缩短了,但匹配的时间增加了,并没有达到我们期望的结果。为了解决这个问题,我们提出了两种方法,一个是基于随机森林的城市大数据毫秒级定位,一个是基于Local Sensitive Hashing的实时定位。
首先看基于随机森林的方法,一般用这种方法就是按照一般的思路,先把三维点存储起来,新来了一个特征点,按照随机森林进行搜集和匹配,我们很大的不同就是在已有的三维地图重建的时候,利用了一系列的二维图像,我们把二维图像的描述子信息利用起来,利用这种信息我们建立了目标函数,考虑了两个误差,一个是误差率,误差率越小匹配精度越高,另外还考虑了随机森林的叶子节点大小,一个叶子节点的大小是指叶子节点里存储的点的个数,叶子节点大小越均匀,搜索的时候速度越快,所以我们建立了基于这两个因素的目标函数,将已有的三维地图中的点存储在随机森林的叶子节点里,新来一个特征,我们建立了一个概率,基于这个概率可以优先搜索到最大成功概率的叶子节点,在这个叶子节点里进行搜索,不仅保证了速度,而且保证了一定的精度。我们目前的实验是一个普通的笔记本上这样的配置上,只是基于CPU的。
我们与大数据的搜索方法也进行了比较,红色的部分就是我们搜索的结果,第一列代表的是成功率,第二列代表的搜索的时间,与已有的方法相比精度都是相当的,但是速度提高了很多倍,比如说与LSH比提高了9到14倍的速度。这是在公开数据上测试定位的结果,这个数据最大能达到几千万的数据量,红色部分也是我们的结果,我们的定位可以做到毫秒级的技术。
下面是基于哈希的实时重定位,采用多个哈希键索引特征,随机选取特征的某些比特位构成哈希键,进行视觉重定位。H1H2代表哈希键,F1是描述子,这就是对三维地图点进行存储和管理,也就是在SLAM系统中,当插入关键帧进行地图构建的时候会得到新的三维点,在新的三维点来的时候,我们利用局部敏感哈希,对三维地图重新进行存储和管理的过程。刚才是把三维点存储好以后,在线来了一个视频的特征点,这也是一个二值描述子,我们可以搜索它在哪个桶里,把相对应的桶拿来,就在桶里进行搜索匹配,可以大大加快搜索的速度。
搜索效率的提升,影响搜索效率的因素有两个,哈希桶大小(存储的数据库特征的数量)的均匀性,相互匹配的特征哈希碰撞率,即相互匹配的特征出现在同一个哈希桶中的概率,如果概率越大精度越高,我们提出在线学习的方法,使得哈希桶尽可能均匀存储三维点,另一方面,尽量提高哈希桶的碰撞率,保持一定的精度。
这是在线学习的过程,当SLAM对一个视频进行三维重建的时候,我们更新地图,然后重新学习比特位,要对哈希键更新。这是构造的损失函数,这个就是碰撞率,碰撞率越大,这一项越小,第二项是代表了哈希桶的大小,越小越均匀,其中N是哈希桶的数量。这是实验的结果。通过在线学习构建哈希键,提高近似最近邻搜索的效率,学习被分散在SLAM的过程中,不会给SLAM系统带来延迟。与没有学习LSH方法相比,性能都有所提高。这是在自动化所的楼上进行三维重建,白色的部分就是楼房的三维重建的结果,这有一个相机的位置,这个可以达到实时性。
重定位放到SLAM系统中,我们搭建了基于光流的SLAM方法,有两类一种是基于动态目标的SLAM,还有另外一种基于场景的SLAM。光流的方法不是一般的光流方法直接应用,是基于和三维点的信息结合起来,通过三维点从空间往视频中的映射,使得光流的图像搜索更准确,速度更快,在纹理比较稀少或者有运动模糊时比一般特征点的方法更稳定更鲁棒,可应对尺度、旋转、仿射等变形。
跟踪质量评价,与PTAM相比,精度都得到了提高PTAM在少纹理的物体上有失败,我们的都可以成功,PTAM定位有抖动,我们的SLAM更稳定。另外,我们的场景光流SLAM和国际上最好的ORBSLAM2相比,在公开的数据库上有所提高。
最后一点,简单介绍一下三维重建。我们搭建了自己三维重建系统框架,一个三维重建需要这样的过程,在每一个过程上都有自己核心的算法,这是最近在CVPR2017上的论文,作为spotlight被接收,论文的思想是基于混合式稀疏重建,三维重建目前分为两大类,一大类是基于全局式的重建方面,一种是基于增量式的重建方法,我们考虑将两个方法结合,计算旋转矩阵式是基于全局的方法,计算平移时我们采用增量式的方法,可以将各自的优势进行最优的组合。
三维视觉理论日趋成熟,逐渐走向应用,尤其在大数据和移动端具有广泛的应用前景,但是对视觉来说,它存在根本性的问题,就是鲁棒性和可靠性不是很高,有效的途径是要进行多传感器、几何与学习结合,来解决这个鲁棒性和可靠性的问题。谢谢大家。