文 / Raimondas Kiveris,Google Research 软件工程师

城市的老照片,可以让人倍感怀念与感叹……漫步在二十世纪四十年代的曼哈顿街头会是一种怎样的体验?儿时生活的街道经历了怎样的变迁?人们可以通过 Google 街景来查看某一区域的当前场景,但如何才能浏览某地的历史景象呢?

为了打造一种兼具研究和娱乐价值的“时光旅行”体验,我们推出了一款名为 的基于浏览器的工具集(发音为 re”turn"),它是一款运行在 Google Cloud 和 Kubernetes 上的开源可扩展系统,可以基于历史地图和照片来重建城市,这是我们今年早些时候推出的开源工具套件的一种实现。 取自英语中常表示再次或重新含义的前缀,表达了在众包研究工作背后的重建、研究、娱乐和纪念意义,它由以下三部分组成:

  • 众包平台:用户可通过该平台上传城市的历史地图,进行地理校正(即将其与现实世界中的坐标相匹配),并对这些数据执行矢量化转换

  • 临时地图服务器:用于展示随时间的变化的城市地图

  • 3D 体验平台:该平台在 地图服务器上运行,使用深度学习技术基于有限的历史图像和地图数据重建 3D 建筑物,从而打造 3D 体验。

  • 名为  的基于浏览器的工具集
    http://re.city

  • Google Cloud
    https://cloud.google.com/

  • Kubernetes
    https://kubernetes.io/

我们的目标是使 成为一种综合型工具集,让历史爱好者能够以虚拟的方式体验到世界各地城市的历史,为研究人员、政策制定者和教育工作者的工作提供帮助,以及慰藉普通用户的怀旧之情。

用户可以使用时间滑块鸟瞰曼哈顿切尔西区 1890 年至 1970 年的城市变迁,这些场景基于历史照片和地图并使用 的 3D 重建流水线制作,以预设的曼哈顿风格调色板进行了着色

基于历史地图的众包数据

处理历史图像数据的难度要高于现代数据,因为可用图像要少得多,并且从图像中捕获的元数据也少得多,所以大规模地重建城市往日景象可谓一项挑战。 地图模块可帮助解决这一难题,该模块是一组开源工具套件,共同用于创建具有时间维度的地图服务器,用户可以使用滑块在各个时间段之间来回游走,也可以通过这些工具上传历史印刷地图的扫描版本,进行地理校正以匹配现实世界中的坐标,然后通过追踪地理特征将其转换为矢量格式。最终,这些矢量化地图将被应用到图块服务器中,并渲染为瓦片地图,使用户可以放大和平移地图。

工具套件的子模块

地图模块的入口点为 Warper,它是一款网络应用,支持用户上传历史地图图像并通过找到历史地图上的控制点和基础地图上的对应点来对其进行地理校正。接下来将使用到名为 Editor 的应用,可加载经过地理校正的历史地图作为背景,然后追踪其地理特征(例如,建筑物轮廓、道路等)。追踪数据以 OpenStreetMap (OSM) 矢量格式存储。然后,这些数据将在矢量图块服务中被转换为矢量图块。最后,我们的地图渲染器 Kartta 将对时空矢量图块进行可视化处理,使用户能够在历史地图中浏览不同时间和空间下的场景。这些工具以包括 OpenStreetMap 在内的众多开源资源为基础构建而成,我们也要将我们的工具和数据打造成完全开放源代码的资源。

  • OpenStreetMap
    https://www.openstreetmap.org/

结合使用 Warper 和 Editor,用户可以上传地图,使用控制点将其锚定到基础地图,以及追踪诸如建筑物轮廓和道路等地理特征

3D 体验

3D Models 模块旨在使用关联的图像和地图数据重建包含细节的完整历史建筑 3D 结构,在一个存储区中正确组织这些 3D 模型,并在具有时间维度的历史地图上对这些模型进行渲染。

在许多情况下,建筑物都只有一幅可用的历史图像,这使 3D 重建成为一项极具挑战性的难题。为了解决这一挑战,我们开发了一种基于识别技术的从粗糙到精细的重建算法。

上图为 的 3D 重建流水线的高级概览,该流水线会获取标注后的图像和地图,并对其进行处理以进行 3D 渲染

首先是从地图中的建筑物轮廓和历史图像中的立面区域开始(均通过众包获得标注或通过自动算法进行检测),将某一输入建筑物的轮廓向上拉伸以生成粗糙的 3D 建筑物结构。高度根据地图数据库中相应元数据所提供的楼层数进行拉伸。

与此同时,3D 重建流水线会识别所有单独的组成部分(例如窗户、入口、楼梯等),并根据这些组成部分的类别来分别重建其 3D 结构,并非直接将每个立面包含细节的 3D 结构作为一个实体进行推断。然后,将这些包含细节的 3D 结构与粗糙的 3D 结构进行融合,从而形成最终的 3D 网格。结果将存储在 3D 仓库中用于后续的 3D 渲染。

多种先进的深度学习模型技术是实现这种功能的关键:

  • 更快的基于区域的卷积神经网络 (RCNN):该神经网络针对对应于每个目标语义类(例如窗户、入口、楼梯等)的立面组件标注进行了训练,这些标注用于定位历史图像中的边界框级实例。

  • DeepLab:它是一种语义分割模型,经训练可为每个语义类提供像素级标签。

  • 经专门设计的神经网络:该神经网络经训练可在同一语义类内部强制执行高级规则。这样,可以确保立面上生成的窗户彼此之间距离相等且形状一致。另外,这也改善了不同语义类(例如楼梯)之间的一致性,从而确保它们放置位置合理且尺寸一致(相对于关联入口)。

  • DeepLab
    https://arxiv.org/pdf/1606.00915.pdf

关键成果

3D 重建的曼哈顿切尔西区街景

结论

借助 ,我们开发了可促进众包的工具,有效解决了重建虚拟城市时历史数据不足这一重大挑战。我们仍在积极开发 3D 体验,并通过未来的更新不断完善。我们希望 成为能够连通爱好者的活跃社区和临时用户的纽带,让用户不仅能够使用我们的历史数据集和开放源代码,同时也能够对这两者做出积极贡献。

致谢

这项成果离不开许多人的辛勤工作,包括但不限于以下人士(按姓氏字母排序):Yale Cong、Feng Han、Amol Kapoor、Raimondas Kiveris、Brandon Mayer、Mark Phillips、Sasan Tavakkol 以及 Tim Waters (Waters Geospatial Ltd)。

更多 AI 相关阅读:

深度学习 + 众包重现历史街景,在线体验“时间旅行”相关推荐

  1. 冷战时期_从冷战到深度学习的机器翻译历史

    冷战时期 by Ilya Pestov 通过伊利亚·佩斯托夫(Ilya Pestov) 从冷战到深度学习的机器翻译历史 (A history of machine translation from t ...

  2. FFmpeg深度学习模块的历史、现状和计划

    本文来自英特尔资深图形图像软件工程师 郭叶军在LiveVideoStack线上分享的内容,详细介绍了FFmpeg中深度学习模块的历史.现状及未来计划,并针对深度学习模块总体架构与代码实践做详细解析. ...

  3. 【深度学习】PyTorch 历史版本安装-祖传老代码运行刚需

    最新 PyTorch 安装 以及 CUDA 版本 如果要安装最新的 PyTorch 其实是很简单的,直接到官网首页就有各种系统的安装方法,如同所示: 这里有一个是 CUDA 版本,实测需要一模一样,这 ...

  4. 深度学习的发展历史是什么?

    深度学习的历史可以追溯到1943年,当时Walter Pitts和Warren McCulloch建立了基于人脑神经网络的计算机模型.他们将算法和数学方法结合在一起,称之为"阈值逻辑&quo ...

  5. 【深度学习与图神经网络核心技术实践应用高级研修班-Day1】深度学习的发展历史(完整版)

    深度学习的常用模型及方法-深度学习发展历史 1. 深度学习发展历史 2. 深度学习的发展趋势 3. 人工神经网络 4. 模型与算法 4.1 前馈神经网络 4.2 前馈神经网络特点 4.3 前馈神经网络 ...

  6. 深度学习的发展历史及应用现状

    深度学习是人工神经网络的一个分支,具有深度网络结构的人工神经网络是深度学习最早的网络模型.1943年,美国数学家沃尔特·皮茨(W.Pitts)和心理学家沃伦·麦克洛克(W.McCulloch)首次提出 ...

  7. AIQ - deeplearning.ai 全套吴恩达老师的深度学习课程笔记及资源在线阅读

    http://www.6aiq.com/deeplearning_ai/html/SUMMARY.html 深度学习笔记目录 第一门课 神经网络和深度学习(Neural Networks and De ...

  8. AIQ - deeplearning.ai 全套吴恩达老师的深度学习课程笔记及资源在线

    http://www.6aiq.com/deeplearning_ai/html/SUMMARY.html 深度学习笔记目录 第一门课 神经网络和深度学习(Neural Networks and De ...

  9. 【深度学习】线上租用设备平台体验以及踩过的坑(非广告)

    最近深度学习跑个模型,实在是太慢了.因为没有独立显卡,只能用cpu跑,当初买电脑想着不打游戏就不要什么显卡了(省钱),现在悔当初见识短浅没料到有今天.于是寻找线上提供算力的平台. 有百度的paddle ...

最新文章

  1. Git 错误提交后该如何回滚操作
  2. 光缆能预警地震?谷歌做到了!毫秒级反应速度,140万公里海缆有望成为报警器...
  3. IPv4_数据报文首部格式
  4. webGIS(离线版)研究路线归总
  5. Redis实现分布式锁释放锁
  6. [python] 列表解析式的高效与简洁
  7. uva 11491——Erasing and Winning
  8. java之arr.toString()与Arrays.toString(arr)区别
  9. 基于套接字SOCKET的及时聊天
  10. 数据类别不平衡/长尾分布?不妨利用半监督或自监督学习
  11. PHP中两种包含文件方式、三种注释风格、四种标记风格
  12. (19)Xilinx PCIE中断理论(学无止境)
  13. smpt authentification 配置
  14. 攻防世界之misc新手区
  15. 速达财务管理软件使用方法
  16. 图形的装饰教案计算机,《有趣的图形》中班教案
  17. S老师 Top-Down RPG Starter Kit 学习
  18. 12.1 hashlib--安全的哈希计算和签名库
  19. 去除警告 ArrayList is a raw type
  20. 2022中科院分区表即将公布,今年迎来较大变化

热门文章

  1. vim 文件编辑器配色(colorscheme)主题方案
  2. 安卓app开发菜鸟教程!开发者必备的顶级Android开发工具,吐血整理
  3. c# messageBox.show()应用
  4. asp.net学生在线论坛
  5. CDH Parcel包制作流程详解
  6. js插值计算_js插值-和js插值相关的内容-阿里云开发者社区
  7. QString将16进制字符串转换成10进制字符串(16进制IP地址的转换显示)
  8. 三十、基础五迪米特法则
  9. android 4.4调整分辨率,Android 4.4 前端调试
  10. 【linux】linux虚机修改固定ip地址的方式