目前越来越多深度学习算法被应用于城市计算领域,然而在欠缺一个统一的评估体系对模型性能进行测试的情况下,研究者很难去公平比较不同模型的性能优劣。为此北航计算机学院 BIGSCity 课题组提出 LibCity 工具库,一个全面、统一、可拓展的开源城市时空预测算法库,旨在为研究者提供一个可信的模型对比工具,并规范算法评估标准以及促进开源化进程。

LibCity 采用模块化框架结构,通过整合 30 多个时空数据集与 50 多个时空算法模型,覆盖了包括交通状态预测、路网匹配、轨迹位置预测等 9 类任务来支持城市场景演化规律挖掘,并向用户提供标准可信的算法评估功能。LibCity 的中文名为“阡陌”,取自陶渊明的《桃花源记》中的“阡陌交通,鸡犬相闻”。目前,LibCity 已经在 Github 开源,相关工作已经被收录入 ACM SIGSPATIAL 2021 会议中。

论文标题:

LibCity: An Open Library for Traffic Prediction

论文作者:

王静远(北航),姜佳伟(北航),蒋炆峻(北航),李超(北航),赵鑫(人大)

收录会议:

ACM SIGSPATIAL 2021

论文链接:

https://dl.acm.org/doi/10.1145/3474717.3483923

开源代码:

https://github.com/LibCity/Bigscity-LibCity

课题组介绍

BIGSCity 课题组是北京航空航天大学大学计算机学院下属的北航智慧城市兴趣组,其负责人为北京航空航天大学计算机学院王静远教授。BIGSCity 小组致力于研究机器学习与数据挖掘在城市科学、社会科学等领域的交叉应用技术,包括城市计算,时空数据挖掘,机器学习可解释性,以及 AI 在交通、健康、金融等领域的应用等。详细情况参见研究组主页:http://www.bigcity.ai。

交通预测问题介绍

1.1 背景与问题介绍

回顾我们的个人生活,你会发现我们每个人的日常生活都离不开交通大数据,下图中展示了一个人一天的生活的例子。这些生活中常用的 APP 的技术中,离不开的就是交通预测的相关任务,例如交通状况预测、POI 推荐、需求调度与预测、出行时间预测等等。

而交通预测,不仅仅在个人生活中存在应用。在城市治理上也有广泛的应用,例如拥堵治理、道路规划、重大活动管理、甚至于疫情防控。

交通预测问题的本质是一个带有时空附加信息的时间序列预测问题,设 代表 时刻的交通时空数据, 代表预测 时刻交通系统的某一状态, 为输入序列的长度,  为预测序列的长度,那么交通预测问题可以定义为用历史的 步数据对未来的 步数据进行预测,图示如下:

交通预测可以分为两个方面,一个是面向群体的预测,另一个是面向个体的预测。

1.2 群体交通预测

在交通状态建模时,从时间序列的角度,可以对时间序列的周期性、趋势性和邻近性进行建模,常用的方法有:

  • 早期神经网络:MLP 多层感知机、DBP 深度置信网络、AE 自编码器

  • RNN-based:LSTM、BiLSTM、GRU、Seq2Seq

  • CNN-based:1D-CNN

  • Attention:RNN 与 CNN 的基础上,强化周期性

从空间的角度建模交通状态,常有两种结构,一个是栅格结构,常常使用 CNN-based 的方法进行建模,另一个是网络结构,则常常使用 GNN-based 的方法进行建模。

最后,在进行时空融合的时候,一般需要将上述的模型进行结合形成 Hybrid Model,例如 CNN+RNN, GCN+RNN, GCN+CNN 等等。

1.3 个体交通预测

在面向个体的交通预测建模中,关键是如何将时空上下文信息融入到个体行为的建模之中,另外也可以融合用户偏好信息,像用户画像、出行偏好等。这里可以参考实验室在 KDD19 上发表的论文 Empowering A* search algorithms with neural networks for personalized route recommendation,其主要内容是基于深度 A* 算法的个体出行路径推荐。

另外一个关键点就是要融合空间位置信息,个体空间位置的表征方法有:

  • 传统经纬度映射嵌入法:划分区域并进行编码,再将经纬度映射到区域

  • 空间词嵌入法:将空间位置视作单词,轨迹视作句子,使用 Embedding 矩阵对空间位置进行编码

  • 预训练表征嵌入法:通过预训练获得位置的的表征向量,如 Node2Vec

路网表征学习的相关工作也可以参考实验室在 KDD20 上发表的论文 Learning Effective Road Network Representation with Hierarchical Graph Neural Networks,其主要工作是对城市路网进行表征学习,来支撑下游任务的应用。

现有研究存在的挑战

目前交通预测领域的研究成果已经非常丰富,我们总结了近 5 年 11 个顶级期刊会议(KDD, AAAI, ICLR, IEEE TKDE 等等)上交通预测领域的论文,得到一个 PaperList,包含 14 篇综述,351 篇论文,具体内容见地址:

https://www.github.com/LibCity/Bigscity-LibCity-PaperList

但是,近 5 年发表在 11 个顶会与期刊共 351 篇论文中, 仅有不到 3 成开源或部分开源代码与数据,这就导致了本领域中存在复现困难。其次,由于现有文献的实验数据不开源、不统一,缺乏公认的 SOTA 模型,实验设置不透明等等,目前还存在评价困难的问题,难以对比评价新的交通预测模型的性能。最后,这些问题最终导致的就是创新困难,可能我们正在“重复制造轮子”而不自知 !

在计算机视觉领域,有 IMAGENET、OPENCV,在NLP 领域,有 WordNet、CoreNLP 等等,那么在交通预测领域,目前来看,开源的算法库和标准的数据集还不存在,这也就是我们提出 LibCity 的原因。

LibCity开源平台

针对交通预测, 我们构建了统一、全面、可拓展的全流程算法库和数据集库——LibCity。目前,LibCity 已经在 Github 开源,开源代码仓库地址为:https://www.github.com/LibCity。项目主页地址为:https://libcity.ai。

3.1 支撑9类交通预测相关任务

  • 交通速度预测(Traffic Speed Prediction):预测道路上车辆的平均速度。

  • 交通流量预测(Traffic Flow Prediction):预测流入或流出某道路或区域的车辆数量。

  • 乘车需求预测(On-demand Service Prediction):预测某区域的乘车(出租车、共享单车等)需求。

  • OD 矩阵预测(Origin-destination Matrix Prediction):预测区域之间或者道路之间的车流量或乘车需求。

  • 交通事故预测(Traffic Accidents Prediction):预测道路上出现交通事故的数量或风险。

  • 未来位置预测(Future Location Prediction):预测行人下一步前往的位置,包含进行 POI 推荐。

  • 到达时间预测(Estimated Time of Arrival):预测两地之间的到达时间。

  • 路网匹配(Map Matching):匹配 GPS 轨迹点对应的路段以用于下游任务。

  • 路网表征学习(Road Network Representation Learning):学习路网结构的低维嵌入表示以用于下游任务。

3.2 统一的数据输入

为了统一表示不同种类的交通数据,LibCity 定义了五种原子文件,即交通数据中的五种最小信息单元:

目前,LibCity 已经将 32 个开源数据集转换为标准的原子格式数据集。这 32 个数据集分布于 11 个国家的 22 座城市,覆盖了 LibCity 中 79% 的模型。并且,项目组开源了原子数据转换脚本,供用户在转换自有数据集时进行参考,链接:

https://github.com/LibCity/Bigscity-LibCity-Datasets

▲ 部分数据集统计信息表

▲ 数据集空间分布图

基于原子文件,LibCity 进一步构建了数据预处理和 Batch 提取工具,形成统一的数据处理流程,来将原始数据转换为标准化的模型输入——Batch。

▲ 数据处理流程图

3.3 统一的评测标准

LibCity 为每一个交通任务定制了标准评测标准。其中,评估指标包括两类:

(1)Value-based 指标:用于回归任务的评估,如交通速度预测等。

(2)Rank-based 指标:用于分类任务的评估,如轨迹位置预测等。

这是常用评测指标表格:

LibCity 也支持常用的评估策略,其中最常用的就是数据集切分设置和数据窗口设置:

  • 输入窗口:决定模型所基于的历史交通状态序列的长度。

  • 预测窗口:决定模型所预测的未来交通状态序列的长度。

  • 数据集划分:决定训练集、测试集、验证集的比例等。

3.4 统一的模型接口

项目组对 2016-2020 期间在 11 个会议和期刊(SIGSPATIAL, KDD, ICDM, AAAI, IJCAI, CIKM, WWW, NIPS, ICLR, IEEE TKDE, IEEE TITS)上发表的研究论文及综述进行调研,得到相关领域的研究论文共计 365 篇,并选择了其中 56 个代表性模型,进行标准化复现,形成开源算法库。这是 4 个最常见任务的模型的分类图:

LibCity 为交通预测模型定义了统一的实现接口:

  • predict() 接口:计算模型的预测结果。

  • calculate_loss() 接口:计算模型训练时的损失 Loss 值。

有了统一模型的接口,就可以简化新模型的实现流程,便于用于在 LibCity 现有代码的基础上,进一步实现新的模型。

3.5 支持多样的训练策略

LibCity 支持多种类型的深度学习模型训练策略:

  • 优化器(Optimizer)选择:SGD / RMSProp / Adam / AdaGrad / SparseAdam…

  • 学习率(Learning Rate)调整策略选择:StepLR / MultiStepLR / ExponentialLR / LambdaLR / ReduceLROnPlateau…

  • 损失函数(Loss Function)选择:L1 损失、L2 损失、Huber 损失、Log-Cosh 损失、Quantile 损失…

  • 早停机制(Early Stopping):处理过拟合问题。

  • 梯度裁剪(Gradient Clipping):处理梯度爆炸、梯度消失问题。

3.6 建立任务流水线机制

LibCity 将交通预测任务解构为一条模块化的流水线:

  • 实验参数配置:用户命令行设置参数,用户自定义参数配置文件

  • 加载数据集:加载原子文件,包括轨迹数据, 交通状态数据, 额外信息…

  • 数据预处理:数据归一化,数据过滤,特征提取,生成模型输入

  • 模型选择与训练:交通速度、交通流量…

  • 模型评估:根据任务需求建立评估指标和评估策略…

▲ 任务流程图

LibCity的应用工具

4.1 实验辅助工具

1)模型评估实验工具

用户仅需在命令行指定相应实验参数,即可完成模型的训练与评估。

▲ 模型训练Log输出

2)自动超参搜索工具

基于 Ray Tune 第三方库扩展实现。用户仅需在命令行指定需搜索的参数名及其搜索算法与范围。

▲ 自动调参工具Log输出

3)时空数据可视化工具

读取数据集原子文件,转为 GeoJSON 格式数据,并在 GIS 上可视化。支持 GIS 点图、线图、区域图。

▲ 纽约市流量数据分布

4)实验结果可视化工具

基于评估实验评估结果文件,自动绘制实验结果表格与曲线图。

▲ PEMS_BAY数据集模型性能折线图

4.2 项目网站建设

1)项目主页:

https://libcity.ai

2)项目文档:

https://bigscity-libcity-docs.readthedocs.io/en/latest/

3)模型性能排行榜:

https://libcity.ai/#/ranking

4)项目开源代码主页:

https://github.com/LibCity/Bigscity-LibCity

5)数据集转换工具仓库:

https://github.com/LibCity/Bigscity-LibCity-Datasets

6)论文列表仓库:

https://github.com/LibCity/Bigscity-LibCity-PaperList

4.3 LibCity的影响力

目前,受到了来自 20 个国家的访问,在 GitHub 上获得 152 星(前 3‰)。

▲  LibCity 主页访问分布

LibCity的贡献者们

包括实验室项目组成员在内,目前已有 40 余名用户向仓库做出贡献。

最后,如果您有任何关于 LibCity 的问题,都可以在我们的仓库提起 issue,或者通过邮件联系我们:jywang@buaa.edu.cn

特别鸣谢

感谢 TCCI 天桥脑科学研究院对于 PaperWeekly 的支持。TCCI 关注大脑探知、大脑功能和大脑健康。

更多阅读

#投 稿 通 道#

 让你的文字被更多人看到 

如何才能让更多的优质内容以更短路径到达读者群体,缩短读者寻找优质内容的成本呢?答案就是:你不认识的人。

总有一些你不认识的人,知道你想知道的东西。PaperWeekly 或许可以成为一座桥梁,促使不同背景、不同方向的学者和学术灵感相互碰撞,迸发出更多的可能性。

PaperWeekly 鼓励高校实验室或个人,在我们的平台上分享各类优质内容,可以是最新论文解读,也可以是学术热点剖析科研心得竞赛经验讲解等。我们的目的只有一个,让知识真正流动起来。

北航BIGSCity课题组提出LibCity工具库:城市时空预测深度学习开源平台相关推荐

  1. 深度学习开源库tiny-dnn的使用(MNIST)

    tiny-dnn是一个基于DNN的深度学习开源库,它的License是BSD 3-Clause.之前名字是tiny-cnn是基于CNN的,tiny-dnn与tiny-cnn相关又增加了些新层.此开源库 ...

  2. pli测试50题题库_AI面试必备/深度学习100问1-50题答案解析

    1.梯度下降算法的正确步骤,(正确步骤dcaeb)(梯度下降法其实是根据函数的梯度来确定函数的极小值),这里的问题与其说是梯度下降算法的步骤不如说类似图图像分类训练的整个流程:网络初始化-输入to输出 ...

  3. 超强Video深度学习开源工具集,来了!

          01       导读 广大人工智能算法工程师,有没有感觉到近几年AI程序员数量激增,公司新来的程序员也可以轻松实现图像分类.目标检测等基本深度学习任务,资深算法工程师岗位如何自保? 广大 ...

  4. 谷歌大脑开源Trax代码库,你的深度学习进阶路径

    2020-02-27 14:37:02 机器之心报道 参与:思 感觉深度学习建模只不过调库与堆叠层级?你需要谷歌大脑维护的这条路径 Trax,从头实现深度学习模型. 从最开始介绍卷积.循环神经网络原理 ...

  5. 怎么装python的keras库_matlab调用keras深度学习模型(环境搭建)

    matlab没有直接调用tensorflow模型的接口,但是有调用keras模型的接口,而keras又是tensorflow的高级封装版本,所以就研究一下这个--可以将model-based方法和le ...

  6. 怎么装python的keras库_Keras 教程: Python 深度学习终极入门指南

    在这篇 Keras 教程中, 你将学到如何用 Python 建立一个卷积神经网络! 事实上, 我们将利用著名的 MNIST 数据集, 训练一个准确度超过 99% 的手写数字分类器. 开始之前, 请注意 ...

  7. 机器视觉实用工具集NO.10——使用深度学习模型(yolo3)实现物体检测工具

    目录 前言 opencv+YOLO3实现物体检测 python源码 前言 OpenCV 3.3版本之后提供了对主流深度学习主干网络框架的加载支持.opencv给我们提供了一个应用成熟深度学习模型的便捷 ...

  8. 使用thop库对yolo等深度学习模型的FLOPS进行计算

    据说yolov5原来的FLOPS计算脚本有bug,因此这个大神推荐使用thop库进行计算,代码如下: input = torch.randn(1, 3, 416, 416) flops, params ...

  9. 全球名校AI课程库(1)| 深度学习专项课程『Deep Learning Specialization』

最新文章

  1. lua创建文件和文件夹
  2. C++的那些事:你真的了解引用吗
  3. MySQL:参数wait_timeout和interactive_timeout以及空闲超时的实现【转】
  4. 软件工程师的6年总结
  5. 与专门团队一起持续交付
  6. 年薪百万程序员竟遭亲妈拍卖:才拍到10块,还不够买一盒鸡蛋!
  7. C#之DotfuscatorCommunity
  8. [RTOS]uCOS、FreeRTOS、RTThread、RTX等RTOS的对比之特点
  9. 蓝牙盾/颈椎按摩仪/迷你充电宝/探头温度记等,段码LCD液晶显示驱动IC-VK1088B QFN32 4*4超小体积,22seg*4com且可通过指令进入省电模式
  10. 用友t6请先设置文件服务器,用友T6-餐饮管理软件标准版发版说明
  11. flutter图标按钮_flutter 按钮封装 带图片的按钮,带边框的按钮,纯文字的按钮
  12. html页面的src引用网络图片无法显示
  13. 【转载】深入浅出的讲解傅里叶变换
  14. CSS样式自动换行(强制换行)
  15. 计算机专业铁路局面试题目,铁路局招聘面试
  16. Windows操作系统深入解析原理
  17. 在N1盒子进行Openwrt的内网穿透
  18. NFC-PN532串口驱动编写
  19. PSD格式怎么转换成JPG?这几种方法轻易转换图片格式
  20. Volatile:可见性保证+禁止指令重排

热门文章

  1. Android 系统的安全性分析(1)--移动设备上的安全威胁
  2. 中兴C220 、C300 GPON EPON常用命令
  3. 如何用c语言编辑一个象棋软件,C语言编写象棋软件源代码.doc
  4. 内网计算机如何在线查找mac地址,怎么查自己电脑的ip 和mac地址 局域网ip地址怎么查?...
  5. 【AppCan开发者故事 第九期】泡泡:KTV包厢里的移动开发技术
  6. 从本体论到知识图谱, 著名学者Pascal Hitzler长文回顾语义网20年发展
  7. 活体检测的多种方法,保障刷脸时代身份验证的安全性
  8. html三栏布局的方式,12种方式实现三栏布局/圣杯布局
  9. 语义分割-CityScapes数据集
  10. sony 刷机软件, 刷机教程,固件下载,谷歌全家桶卸载,等问题总结