2021年12月11日,由雷峰网(公众号:雷峰网) & AI 掘金志主办的第四届中国人工智能安防峰会,在深圳正式召开。
本届峰会以「数字城市的时代突围」为主题,会上代表城市AIoT的14家标杆企业,为现场和线上观众,分享迎接数字城市的经营理念与技术应用方法论。
作为上午场的开场嘉宾,虞晶怡从深度学习的角度,从建模、渲染以及隐私保护三个方面分享了对未来城市元宇宙的理解。
虞晶怡提到,他所研究的计算机视觉领域一个非常重要的任务,就是完成物理世界向数字世界的映射。为了完成这个映射,产生了非常多的概念,比如最早的数字孪生,到现在的元宇宙。但无论是什么概念,归根到底需要解决几个核心问题:
三维建模如何完成?图像分析如何完成?隐私保护如何完成?
虞晶怡教授从四个方面出发阐述了对以上问题的理解:
计算成像、三维重建、智能融合、隐私保护。
2D计算成像。过去几年,编码成像取得了很大的进步。在图像质量方面,利用编码成像可以在高速和离焦的情况下获得更好的图像。
虞晶怡指出,做智慧城市离不开三维重建。计算机视觉界已经做了很多年,其中最为出色的解决方案来自谷歌的“一日建模”。具体有三个步骤:通过针对大量图像进行位置猜测,再通过特征提取获取精确的相机位置,再对图像特征进行匹配和三维确认,最后得到模型,这个方式在大规模城市重建中非常常用。
基于神经网络深度学习的最新方法,即2D+3D融合。因为很多智慧城市模型并不精确,将城市进行三维重建后,把二维的贴图与三维模型融合,可以得到多视角视频。
最后,虞晶怡教授着重分享了隐私保护,他认为重建做得无论多好,最重要的是保护隐私。
以下是虞晶怡演讲全文,雷峰网AI掘金志作了不改变原意的整理与编辑:
今天给大家分享一个我认为非常有意思的话题,主题叫《The future of MetaCity:Modeling,Rendering,and Privacy Protection》,讲讲我眼里的元城市,我会从深度学习的角度分享如何建模、如何渲染,以及最重要的如何保护个人隐私。
大家讨论的智慧城市是什么?这是一件很有意思的事情。我记得很多年前王坚博士跟我有个讨论,他想要知道智慧城市的一个功能,比如“你能不能告诉我现在马路上有多少辆车在开?”
这个问题听上去好像很简单,其实很复杂,虽然我们已经有大量摄像头,但每个摄像头只能看到城市中很小一部分的车辆,如何统计出它们分别在什么位置,如何计算出有多少车辆是非常大的挑战。
我研究的领域是计算机视觉,其中一个非常重要的任务是完成从物理世界向数字世界的映射。完成了这个映射,大家就可以玩各种概念。而从最早的数字孪生到现在的元宇宙,归根到底,需要解决几个核心问题:
三维建模怎么完成?图像分析怎么完成?隐私保护怎么完成?
今天的演讲主要分为四个部分:计算成像、三维重建、基于神经网络深度学习的最新方法、隐私保护。
第一部分,所谓的2D高清图像,就是传统的计算成像。过去二十年我一直在做计算成像,设计了各种各样的相机系统。
相机系统本身很复杂,有很多组成部分,比如相机的镜头、快门、闪光灯、光圈以及各相机阵列。得益于计算成像,在获取图像之后可以通过各种计算方法对图像进行进一步的分析,基于此,我们已经可以做很有意思的事情了。
2018年上海第一届进博会,我们展示了一个技术,叫“亿万像素的上海”,照片可以进行实时无穷尽地推进。
可能大家都去过上海,但绝大部分的人没有去过东方明珠的塔尖(因为去的话就会被就地拘留)。这幅图片是140亿像素的上海,我可以随时随地做实时渲染,也可以推进到东方明珠的塔尖,你甚至可以看到塔尖上有几根天线。
这个系统是如何完成的?通过光场相机系统,用很多相机拍摄后进行拼接,再进行渲染。我们不希望这个渲染是在集群上进行的,因为云端渲染非常昂贵,而是在手机等便携终端上,比如刚才的示范样片就是在小米电脑上进行实时渲染。
我们当时利用了计算成像的算法技术,其实就是把图像进行分级的分割和存储,最后在存储之后,就能够非常快地索引到每一个部分的模块,这个文章发在TVCG上。
这项技术最近有很多进展,过去一年,有很多基于深度学习的方法,能把整个图像压缩在一个网络之中。
计算成像另一个优势是,不但能做超高清的成像,还能做超高速的成像。
十年前我做了一项工作,叫“超高速下的编码快门成像”(Coded Shutter Imaging:Ultra-High Speed),我拍摄了高速运动的车辆,试图通过图像的逆问题把图像恢复出来,比如高清恢复车牌。
传统的快门在高速运动下为什么做不了?
在传统快门高拍摄的过程中,整个快门就是关和开,如果把这个问题映射到傅里叶域,首先面临的是图像卷积的问题,它等于是用模糊的(也就是低频的)卷积核卷积了一张清晰的图像,整个图像的高频成分会被损坏,更糟糕的是逆卷积非常难,因为这是基本的数学问题。
Sinc function有一个弊端,首先它的高频部分会发生非常猛烈的振荡。其次,它会多次切入零点,如此,这个乘积就无法做除法,因为到处都是0点,那怎么求解这个问题?十年前我们就开始想如何解决这个问题。
第一种方式是快门随机地开/关,图像同样会被模糊掉。但为什么这个随机的开/关能使得“去模糊”的方法做得更好?因为随机开/关,等价于每次开的时候是sinc 函数,但因为它的位置不一样,等于把不同的sinc 函数在里面叠加,其结果就是这个频谱非常好看,因为同时在这个位置出现0的可能性非常低,我的目标是在频域里不希望出现0点,出现0点没办法除。有了这个频谱之后,用编码成像的方法对图像进行恢复,结果恢复得很好。
举个例子,这是一幅编码成像的图片,是我的同事在MIT拍摄的。大家可以猜一下这辆红色小轿车是什么型号?是哪个厂出的?绝大部分的人会猜测它是奥迪,也有人说是TOYOTA,但其实这个车通过编码成像,恢复出来的是大众的车牌。在过去这些年,编码成像得到了长足发展,在高速成像、散焦成像上都能通过编码成像得到更好的图像,过去几年很多高质量的图像都是通过编码成像技术获得。
做智慧城市避不开三维城市重建,这在计算机视觉界已经研究了很多年,其实最为出色的解决方案是来自谷歌的“一日建罗马”。大家都说“罗马不是一日建成的”,所以他们在罗马这样的城市级别做了大规模重建。他们的想法是拍摄大量城市的图像,把这些城市的图像通过相机位置的标定和三维重建的方法进行三维重现。
具体展开,分为几个步骤:
先是针对大量图像进行位置猜测,有很多方式,对城市级别来说,可以用GPS信号等数据做粗略定位,再通过特征提取获取精确的相机位置,然后再对图像特征进行匹配和三维关联确认,最后得到稀疏的3D点云信息。
对于大规模的城市这个方法非常常用。大家最熟悉的是倾斜摄影,大规模的城市尺度都是利用无人机拍摄然后进行计算,这个方法本身有几个比较严重的问题,最主要的问题是非常昂贵。
凡是做过大规模城市尺度重建的都知道,在集群上运算的时间长达半天,其实半天时间已经非常少见,绝大部分都需要运算几天几夜,而且,运算完后得到的点云依然很差。这是因为点云本身依靠特征来提取,特征本身是稀疏的,所以得到的点云本身是稀疏的三维点云。
如果这样给政府做城市级别的重建,会非常辛苦,你需要找一个非常大的艺术团队帮你修复,因为所有的点云都需要把噪音抹掉,把点云修正成几何形状,这是所有做过智慧城市的人都感同身受的。
随着技术的发展,这两步分别都将得到很大的进展。第一个是三维点云的获取,传统三维点云的获取是依靠倾斜摄影和图像,现在可以通过视觉定位、扫描和点云的LiDAR进行补偿。
因为LiDAR系统本身无法做三维空间的定位,你可以把LiDAR系统和视觉相机混合,靠视觉相机进行三维定位。
举个例子,我的学生在上科大创办的岱悟智能,让用户头上顶着LiDAR和RGB相机,RGB相机做定位,LiDAR获取场景里三维稀疏的点云信息,通过不断行走就可以把整个场景呈现出来。
我们上次做了一个尝试,把这个设备装在小车上,15分钟就可以完成一平方公里的地下车库扫描流程,效率非常高。
给大家演示一下我们当时完成的上海科技大学地下车库的数字孪生,人徒步完成还是比较吃力(但对码工来说走一个半小时还是蛮减肥的)大概15-20分钟就可以完全完成数据的采集。三维点云的采集不再需要复杂的计算机视觉系统,而是用比较简单的LiDAR+视觉定位的方式来解决,这将成为未来的大趋势。
同理,这个系统也可以装在无人机上,过程非常快。我们做了一个尝试,在上科大一平方公里的范围内进行边飞边实时产生点云,结果很酷。
几年前我看过一个电影《普罗米修斯》,就是拿三维小球,在三维空间进行扫描,隧道场景很快就出现了,也就是说这个梦想已经成真了,可以非常快地做外部场景的扫描。
有什么用?扫描之后你可以做很有意思的事情。
比如对工地进行监控,看工地是否每日按照图纸的规划进行建设,随着多次的扫描,不但可以获取非常高清的工地三维数字孪生模型,还可以把无人机拍到的视频信息融合。其实也就是把图片和三维几何的模型融合,切入到模型时,瞬间可以切换到高清图片,可以看到每一个图片的高清细节,效果非常酷炫,而且确实有用,上海很多社区都开始使用这个技术进行二纬和三维的融合了。
这对智慧城市有什么用?
第一,很多智慧城市的模型并不精确,是CG模型,通过我们的技术可以进行点云数据+视频/图像融合。
第二,很重要的点,能解决当时王坚博士的问题:在三维空间里判断有多少辆车。
2018年、2019年我们在徐家汇商圈做了一个很有意思的事情。当时我们用上述方式,把整个徐家汇的商圈进行了三维重建。重建之后,把路灯、楼顶视角的视频融合在一起,现在各位看到的是多个视角融合的视频。
如果我把一个区域内所有的视频融合在三维空间,我就可以告诉你现在路上有多少辆车在跑,有多少人在行走,这对智慧城市来说解决了非常重要的一个问题。有了这套系统,可以做非常多很酷的应用,比如可以做碳排放的检测,因为我知道有多少辆车,耗能是多少。
传统的三维重建,几何是几何、图片是图片,几何和图像是分离的。下面我想讲最为有意思的一部分,《Neural Modeling and Rendering》,用神经网络的办法把几何和图像融合在一起。
这是来自英伟达非常酷的一个demo,是为了游戏而做的。在这个demo里所有的几何都是定死的,但我可以随意地做风格迁徙,比如我希望它是沙漠,它就可以是沙漠,我希望树是真实的,就可以做真实的树。左下角是非常粗略的模型,但是有语义分割。根据语义分割和三维场景的粗略几何,可以变换分割成右上角这样看上去非常真实的三维图像。
换言之,我可以通过学习的方法,把粗略的几何恢复成非常好的三维的模型,从而大幅度降低人工成本。
过去十年里,我最为欣赏的一个项目来自加州大学伯克利分校,他们把几何和外观融合在一起。
在传统的方式中,要用点云或mesh来表示几何,然后再用贴图的方法构建外观,如果点云或贴图的质量不好,合成效果就很差。
前面讲了,我需要从多视角拍摄图片重建几何,那我不如把所有的图片都输入到一个神经网络NeRF中,训练完之后可以渲染任意视角下的任意图片,这样可以实现无需几何先验的几何重建。
怎样实现这件事?用神经网络完成光线-颜色-深度的映射,每一根光线可以用X、Y、Z,也就是光线的原点以及方向来表述,通过网络可以告诉你沿着这个光线应该看到什么样的RGB颜色,此外网络还会预测一个sigma参数,它代表的是X、Y、Z处的物质密度,如果密度很高说明存在物体,密度很低说明是真空的。
如此一来我就可以做很有意思的东西,也就是说,我们训练网络的时候,可以把几何和纹理的概念抛弃,我拥有的就是神经网络,只需完成利用这个神经网络从光线到颜色到深度的预测,几何和纹理就自然地生成了,这是我过去看到的非常酷的工作。过去几年大家逐渐意识到,原来用NeRF框架,不但能做元宇宙物体的生成,也能做元城市级别的生成。
以上介绍的主要是别人的工作,先说一篇《NeRF in the Wild》的工作,跟前面的工作的思路是一致的:也即是输入很多图片,同时这些图片包含了位置和图像性质,以及一个很有意思的概念——瞬态。瞬态是什么意思呢?比如我在三维空间拍摄了很多图片,因拍摄的视角不同,有的地方有遮挡,比如楼前面有树的遮挡,也有行走的人的遮挡。但因为我拍了很多图片,而且是在不同视角拍的,所以会产生很多不同的视角,唯一不变的就是静态几何,一直在变的是瞬态。然后我们可以将瞬态和静态几何一起重建,最后还可以把瞬态和静态几何进行分离。同样,用NeRF框架,所有一系列的工作,都可以通过一个神经网络的训练而完成。
我们看一下它的结果,非常酷。因为图片是白天和黑夜不同时刻拍摄的,但我能够在不同时刻展现出前景和后景的渲染,没有几何,用NeRF框架、神经网络表征这么大尺度的场景。
我们再看一些更复杂的场景,比如它可以在布拉格的街区用网络成像来做。
这是罗马的喷泉。虽然点云用传统的三维重建会很差,但没关系,用NeRF框架可以产生非常好的三维结构。这个方法不仅能重建外部几何,也可以在重建内部几何,比如在一个建筑的内部拍摄大量图片,然后用神经网络的框架进行重建。
这是在印度做的,通过多视角的图片,其实没有真正显示重建几何,而是隐式地表示三维重建的效果,它是全自动的,不需要人去修,所以大家看到这个结果应该觉得非常惊艳,如果用artist去修是非常大的工作量。
去年有一篇很有意思的论文《Urban Radiance Field》。想法类似,输入很多图片,但跟前面论文不一样的是,它还结合了LiDAR的点云信号。
前者的几何依然需要NeRF训练,但NeRF的训练非常慢,所以他们索性就用LiDAR产生的点云信号作为输入,输出是完整、高清的三维重建,同时还有一个高清的视角渲染,这非常酷,从多视角图片的倾斜摄影技术往点云融合。
但我当时研究还差了一步,用NeRF的框架做渲染,现在大家可以看到神经网络的这个强大功能。
这是一部分渲染的结果,可以看到上面的点云和光斑变化。这是圣保罗的场景,可以在里面走来走去,产生相当不错的渲染效果。
最为重要的是,这里不需要artist去修,否则人力成本太高了,不可能完成元城市(MetaCity)的重建。不同的国家和不同的城市都能使用这个方法,相当大规模的几何重建渲染,全是依靠NeRF的框架实现,所以我觉得它的效果还是非常酷的。
给大家介绍了基于神经网络三维重建的工作,很多是别人的工作,也有一部分是我们的工作。
最后我想讲,重建做得无论多好,最重要的是保护隐私。
给大家讲一个我的故事。2010年,十年前我和林海滨教授做了一个项目,内容是如何在安防系统下进行隐私保护。现在看来这个工作还是非常有意思的,因为2010年并没有想到安防会发展到如此高的地步,隐私保护当时也没有受到重视。
前面提到,可以通过图片快门的控制,把曝光变得模糊。我们在想,能不能故意把图片进行模糊?模糊了图片就可以保护隐私了。
听起来很容易,但问题来了,模糊完了图片,怎么保证捕捉重要的信息?比如我需要知道这个人的行为,但不希望泄露这个人的身份。
当时我们提出一个非常酷的概念。把一个视频用两种不同的模式进行模糊,我们把这两种模式称为互素的,这里借鉴了数学中的素数概念。
这样做有什么好处?如果只是给低权限的人看,只需要给他看模糊线条轮廓,它可以用任何现有的算法,对监控视频进行去模糊,结果看不到脸,但能看到人的行为。但对于高权限的人来说,我可以给到两个已经模糊后线条轮廓,通过互素性质对图像进行去模糊,从而产生非常高清的监控视频,我们的论文发在PAMI上,当时这个想法还是非常酷的。
这个结果很有意思,左上角是一个模糊的图像,你可以通过最好的方法进行去模糊。右上角和左下角的去模糊方法可以恢复人在行走的信息,但无法恢复出人脸的细节。而在右下角,如果是高权限人群,可以同时拿到两个blur stream,利用互素的性质对整个图像进行解码。非常重要的一点是,不需要知道这些图像用什么kernel进行模糊的,就可以对其进行解码。
另外,我们希望通过多闪光灯的方法进行保护。可能大家会觉得很奇怪,为什么多闪光灯能进行隐私保护?
通过闪光灯,可以产生影子。闪光灯如果在左边,影子就会在右边。如果闪光灯在右边,影子会在左边。随着闪光灯位置的变化,影子也会产生变化。根据影子的变化,我可以分析这些影子是如何变化的,从而获取到一个非常有意思的图像。虽然我没办法精确知道它的深度是什么,但可以提取出它的深度边界。
为什么这件事对隐私保护很重要?这是一款老旧的车,通过多闪光灯的方法,可以非常准确地把边界提取出来。其中一些细节,比如看左上角的图,我知道这个车生锈了,但左下角的图看不出生锈,这是很具体的生锈的纹理,跟深度不相关的信息,会被我们轻易抹去。
如果我的安防是由多个闪光灯组成的,就可以把多个重要的身份信息隐藏,比如海报上的字,比如衣服上的花纹,都可以被抹掉,从而起到隐私保护的作用。
再比如人脸上有很多特征,像左图里的痣,是非常明显的身份标志,但痣本身是一个纹理,通过闪光灯的方法,可以把痣去掉,通过边界对图像进行模糊,刻意去掉这个信息。
2010年的时候,美国对隐私保护不够重视,当时我们两人写了一个非常激动人心的项目,但被否定了。我记得非常清楚,其中有一个回复的意见说:隐私保护是已经解决的问题,你们为什么还要再写一个隐私保护的提案。可见大家在做研究的时候,必须先有先知,要意识到这个事情对整个社会的影响。
总结一下。我给大家介绍的最新的MetaCity的工作,包括2D成像、3D重现的技术、用神经网络的建模和渲染方法对整个智慧城市进行建模,它的最大功效,不需要人工参与,就可以对渲染起到增强和去噪作为。隐私保护是重要组成部分,前面讲到两种隐私保护的方法,我今天特别介绍了用神经网络,本身它就具有隐私保护的作用,因为传统方式需要传几何、图片,但几何和图片全都被编码在神经网络中,这个神经网络本身又能起到隐私保护的作用,又能有效地渲染图片。