DI-smartcross - Decision Intelligence Platform for Traffic Crossing Signal Control

Overview

DI-smartcross

icon

DI-smartcross - Decision Intelligence Platform for Traffic Crossing Signal Control.

DI-smartcross is application platform under OpenDILab

Instruction

DI-smartcross is an open-source traffic crossing signal control platform. DI-smartcross applies several Reinforcement Learning policies training & evaluation for traffic signal control system in provided road nets.

DI-smartcross uses DI-engine, a Reinforcement Learning platform to build RL experiments. DI-smartcross uses SUMO (Simulation of Urban MObility) traffic simulator package to run signal control simulation.

DI-smartcross supports:

  • Single-Agent and Multi-Agent Reinforcement Learning
  • Synthetic and Real roadnet, Arterial and Grid network shape
  • Customizable observation, action and reward types
  • Easily achieve Multi-Environment Parallel, Actor-Learner Asynchronous Parallel when training with DI-engine

Installation

DI-smartcross supports SUMO version >= 1.6.0. Here we show an easy guide of installation with SUMO 1.8.0 on Linux.

Install sumo

  1. install required libraries and dependencies
sudo apt-get install cmake python g++ libxerces-c-dev libfox-1.6-dev libgdal-dev libproj-dev libgl2ps-dev swig
  1. download and unzip the installation package
tar xzf sumo-src-1.8.0.tar.gz
cd sumo-1.8.0
pwd 
  1. compile sumo
mkdir build/cmake-build
cd build/cmake-build
cmake ../..
make -j $(nproc)
  1. environment variables
echo 'export PATH=$HOME/sumo-1.8.0/bin:$PATH
export SUMO_HOME=$HOME/sumo-1.8.0' | tee -a $HOME/.bashrc
source ~/.bashrc
  1. check install
sumo

If success, the following message will be shown in the shell.

Eclipse SUMO sumo Version 1.8.0
  Build features: Linux-3.10.0-957.el7.x86_64 x86_64 GNU 5.3.1 Release Proj GUI SWIG GDAL GL2PS
  Copyright (C) 2001-2020 German Aerospace Center (DLR) and others; https://sumo.dlr.de
  License EPL-2.0: Eclipse Public License Version 2 <https://eclipse.org/legal/epl-v20.html>
  Use --help to get the list of options.

Install DI-smartcross

To install DI-smartcross, simply run pip install in the root folder of this repository. This will automatically insall DI-engine as well.

pip install -e . --user

Quick Start

Run training and evaluation

DI-smartcross supports DQN, Off-policy PPO and Rainbow DQN RL methods with multi-discrete actions for each crossing. A set of default DI-engine configs is provided for each policy. You can check the document of DI-engine to get detail instructions of these configs.

  • train RL policies
usage: sumo_train [-h] -d DING_CFG -e ENV_CFG [-s SEED] [--dynamic-flow]
                  [-cn COLLECT_ENV_NUM] [-en EVALUATE_ENV_NUM]
                  [--exp-name EXP_NAME]

DI-smartcross training script

optional arguments:
  -h, --help            show this help message and exit
  -d DING_CFG, --ding-cfg DING_CFG
                        DI-engine configuration path
  -e ENV_CFG, --env-cfg ENV_CFG
                        sumo environment configuration path
  -s SEED, --seed SEED  random seed for sumo
  --dynamic-flow        use dynamic route flow
  -cn COLLECT_ENV_NUM, --collect-env-num COLLECT_ENV_NUM
                        collector sumo env num for training
  -en EVALUATE_ENV_NUM, --evaluate-env-num EVALUATE_ENV_NUM
                        evaluator sumo env num for training
  --exp-name EXP_NAME   experiment name to save log and ckpt

Example of running DQN in wj3 env with default config.

sumo_train -e smartcross/envs/sumo_arterial_wj3_default_config.yaml -d entry/config/sumo_wj3_dqn_default_config.py
  • evaluate existing policies
usage: sumo_eval [-h] [-d DING_CFG] -e ENV_CFG [-s SEED]
                 [-p {random,fix,dqn,rainbow,ppo}] [--dynamic-flow]
                 [-n ENV_NUM] [--gui] [-c CKPT_PATH]

DI-smartcross training script

optional arguments:
  -h, --help            show this help message and exit
  -d DING_CFG, --ding-cfg DING_CFG
                        DI-engine configuration path
  -e ENV_CFG, --env-cfg ENV_CFG
                        sumo environment configuration path
  -s SEED, --seed SEED  random seed for sumo
  -p {random,fix,dqn,rainbow,ppo}, --policy-type {random,fix,dqn,rainbow,ppo}
                        RL policy type
  --dynamic-flow        use dynamic route flow
  -n ENV_NUM, --env-num ENV_NUM
                        sumo env num for evaluation
  --gui                 open gui for visualize
  -c CKPT_PATH, --ckpt-path CKPT_PATH
                        model ckpt path

Example of running random policy in wj3 env.

sumo_eval -p random -e smartcross/envs/sumo_arterial_wj3_default_config.yaml     

Environments

sumo env configuration

The configuration of sumo env is stored in a config .yaml file. You can take a look at the default config file to see how to modify env settings.

import yaml
from easy_dict import EasyDict
from smartcross.env import SumoEnv

with open('smartcross/envs/sumo_arterial_wj3_default_config.yaml') as f:
    cfg = yaml.safe_load(f)
cfg = EasyDict(cfg)
env = SumoEnv(config=cfg.env)

The env configuration consists of basic definition and observation\action\reward settings. The basic definition includes the cumo config file, episode length and light duration. The obs\action\reward define the detail setting of each contains.

env:
    sumocfg_path: 'arterial_wj3/rl_wj.sumocfg'
    max_episode_steps: 1500
    green_duration: 10
    yellow_duration: 3
    obs:
        ...
    action:
        ...
    reward:
        ...

Observation

We provide several types of observations of a traffic cross. If use_centrolized_obs is set True, the observation of each cross will be concatenated into one vector. The contents of observation can me modified by setting obs_type. The following observation is supported now.

  • phase: One-hot phase vector of current cross signal
  • lane_pos_vec: Lane occupancy in each grid position. The grid num can be set with lane_grid_num
  • traffic_volumn: Traffic volumn of each lane. Vehicle num / lane length * volumn ratio
  • queue_len: Vehicle waiting queue length of each lane. Waiting num / lane length * volumn ratio

Action

Sumo environment supports changing cross signal to target phase. The action space is set to multi-discrete for each cross to reduce action num.

Reward

Reward can be set with reward_type. Reward is calculated cross by cross. If use_centrolized_obs is set True, the reward of each cross will be summed up.

  • queue_len: Vehicle waiting queue num of each lane
  • wait_time: Wait time increment of vehicles in each lane
  • delay_time: Delay time of all vahicles in incomming and outgoing lanes
  • pressure: Pressure of a cross

Contributing

We appreciate all contributions to improve DI-smartcross, both algorithms and system designs.

License

DI-smartcross released under the Apache 2.0 license.

Citation

@misc{smartcross,
    title={{DI-smartcross: OpenDILab} Decision Intelligence platform for Traffic Crossing Signal Control},
    author={DI-smartcross Contributors},
    publisher = {GitHub},
    howpublished = {\url{`https://github.com/opendilab/DI-smartcross`}},
    year={2021},
}
Comments
  • style(hus): update email address

    style(hus): update email address

    Description

    Related Issue

    TODO

    Check List

    • [ ] merge the latest version source branch/repo, and resolve all the conflicts
    • [ ] pass style check
    • [ ] pass all the tests
    opened by TuTuHuss 0
  • update and fix typo in docs

    update and fix typo in docs

    Description

    Related Issue

    TODO

    Check List

    • [ ] merge the latest version source branch/repo, and resolve all the conflicts
    • [ ] pass style check
    • [ ] pass all the tests
    opened by RobinC94 0
  • update envs, docs and actions

    update envs, docs and actions

    Description

    Related Issue

    TODO

    Check List

    • [ ] merge the latest version source branch/repo, and resolve all the conflicts
    • [ ] pass style check
    • [ ] pass all the tests
    opened by RobinC94 0
  • Dev

    Dev

    Description

    Related Issue

    TODO

    Check List

    • [ ] merge the latest version source branch/repo, and resolve all the conflicts
    • [ ] pass style check
    • [ ] pass all the tests
    opened by RobinC94 0
  • Merge branch 'main' into dev

    Merge branch 'main' into dev

    Description

    None

    Related Issue

    TODO

    Check List

    • [ ] merge the latest version source branch/repo, and resolve all the conflicts
    • [ ] pass style check
    • [ ] pass all the tests
    opened by RobinC94 0
  • update readme

    update readme

    Description

    Related Issue

    TODO

    Check List

    • [ ] merge the latest version source branch/repo, and resolve all the conflicts
    • [ ] pass style check
    • [ ] pass all the tests
    opened by RobinC94 0
  • suit for 0.3.0

    suit for 0.3.0

    Description

    Related Issue

    TODO

    Check List

    • [ ] merge the latest version source branch/repo, and resolve all the conflicts
    • [ ] pass style check
    • [ ] pass all the tests
    opened by RobinC94 0
  • v0.1.0 update

    v0.1.0 update

    Description

    add cityflow env suit ding 0.3

    Related Issue

    TODO

    Check List

    • [ ] merge the latest version source branch/repo, and resolve all the conflicts
    • [ ] pass style check
    • [ ] pass all the tests
    opened by RobinC94 0
  • Dev: Version 0.0.1

    Dev: Version 0.0.1

    Description

    Related Issue

    TODO

    Check List

    • [ ] merge the latest version source branch/repo, and resolve all the conflicts
    • [ ] pass style check
    • [ ] pass all the tests
    opened by RobinC94 0
  • Dev: update obs helper, mappo; update configs

    Dev: update obs helper, mappo; update configs

    Description

    update obs helper, mappo; add arterial7; update configs

    Related Issue

    TODO

    Check List

    • [ ] merge the latest version source branch/repo, and resolve all the conflicts
    • [ ] pass style check
    • [ ] pass all the tests
    opened by RobinC94 0
  • add different settings for ppo

    add different settings for ppo

    Description

    Related Issue

    TODO

    Check List

    • [ ] merge the latest version source branch/repo, and resolve all the conflicts
    • [ ] pass style check
    • [ ] pass all the tests
    opened by kxzxvbk 0
Releases(v0.1.0)
Owner
OpenDILab
Open sourced Decision Intelligence (DI)
OpenDILab
A basic implementation of Layer-wise Relevance Propagation (LRP) in PyTorch.

Layer-wise Relevance Propagation (LRP) in PyTorch Basic unsupervised implementation of Layer-wise Relevance Propagation (Bach et al., Montavon et al.)

Kai Fabi 28 Dec 26, 2022
MatryODShka: Real-time 6DoF Video View Synthesis using Multi-Sphere Images

Main repo for ECCV 2020 paper MatryODShka: Real-time 6DoF Video View Synthesis using Multi-Sphere Images. visual.cs.brown.edu/matryodshka

Brown University Visual Computing Group 75 Dec 13, 2022
A package related to building quasi-fibration symmetries

qf A package related to building quasi-fibration symmetries. If you'd like to learn more about how it works, see the brief explanation and References

Paolo Boldi 1 Dec 01, 2021
利用python脚本实现微信、支付宝账单的合并,并保存到excel文件实现自动记账,可查看可视化图表。

KeepAccounts_v2.0 KeepAccounts.exe和其配套表格能够实现微信、支付宝官方导出账单的读取合并,为每笔帐标记类型,并按月份和类型生成可视化图表。再也不用消费一笔记一笔,每月仅需10分钟,记好所有的帐。 作者: MickLife Bilibili: https://spac

159 Jan 01, 2023
A clean and robust Pytorch implementation of PPO on continuous action space.

PPO-Continuous-Pytorch I found the current implementation of PPO on continuous action space is whether somewhat complicated or not stable. And this is

XinJingHao 56 Dec 16, 2022
Unsupervised Foreground Extraction via Deep Region Competition

Unsupervised Foreground Extraction via Deep Region Competition [Paper] [Code] The official code repository for NeurIPS 2021 paper "Unsupervised Foregr

28 Nov 06, 2022
PyTorch implementation of Decoupling Value and Policy for Generalization in Reinforcement Learning

PyTorch implementation of Decoupling Value and Policy for Generalization in Reinforcement Learning

48 Dec 08, 2022
Open-CyKG: An Open Cyber Threat Intelligence Knowledge Graph

Open-CyKG: An Open Cyber Threat Intelligence Knowledge Graph Model Description Open-CyKG is a framework that is constructed using an attenti

Injy Sarhan 34 Jan 05, 2023
Pipeline for employing a Lightweight deep learning models for LOW-power systems

PL-LOW A high-performance deep learning model lightweight pipeline that gradually lightens deep neural networks in order to utilize high-performance d

POSTECH Data Intelligence Lab 9 Aug 13, 2022
LTR_CrossEncoder: Legal Text Retrieval Zalo AI Challenge 2021

LTR_CrossEncoder: Legal Text Retrieval Zalo AI Challenge 2021 We propose a cross encoder model (LTR_CrossEncoder) for information retrieval, re-retrie

Hieu Duong 7 Jan 12, 2022
Code for Pose-Controllable Talking Face Generation by Implicitly Modularized Audio-Visual Representation (CVPR 2021)

Pose-Controllable Talking Face Generation by Implicitly Modularized Audio-Visual Representation (CVPR 2021) Hang Zhou, Yasheng Sun, Wayne Wu, Chen Cha

Hang_Zhou 628 Dec 28, 2022
Official PyTorch implementation of Segmenter: Transformer for Semantic Segmentation

Segmenter: Transformer for Semantic Segmentation Segmenter: Transformer for Semantic Segmentation by Robin Strudel*, Ricardo Garcia*, Ivan Laptev and

594 Jan 06, 2023
Lightweight Face Image Quality Assessment

LightQNet This is a demo code of training and testing [LightQNet] using Tensorflow. Uncertainty Losses: IDQ loss PCNet loss Uncertainty Networks: Mobi

Kaen 5 Nov 18, 2022
wgan, wgan2(improved, gp), infogan, and dcgan implementation in lasagne, keras, pytorch

Generative Adversarial Notebooks Collection of my Generative Adversarial Network implementations Most codes are for python3, most notebooks works on C

tjwei 1.5k Dec 16, 2022
A simple, high level, easy-to-use open source Computer Vision library for Python.

ZoomVision : Slicing Aid Detection A simple, high level, easy-to-use open source Computer Vision library for Python. Installation Installing dependenc

Nurettin Sinanoğlu 2 Mar 04, 2022
OpenCV, MediaPipe Pose Estimation, Affine Transform for Icon Overlay

Yoga Pose Identification and Icon Matching Project Goal Detect yoga poses performed by a user and overlay a corresponding icon image. Running the main

Anna Garverick 1 Dec 03, 2021
Provided is code that demonstrates the training and evaluation of the work presented in the paper: "On the Detection of Digital Face Manipulation" published in CVPR 2020.

FFD Source Code Provided is code that demonstrates the training and evaluation of the work presented in the paper: "On the Detection of Digital Face M

88 Nov 22, 2022
Meta Learning Backpropagation And Improving It (VSML)

Meta Learning Backpropagation And Improving It (VSML) This is research code for the NeurIPS 2021 publication Kirsch & Schmidhuber 2021. Many concepts

Louis Kirsch 22 Dec 21, 2022
A naive ROS interface for visualDet3D.

YOLO3D ROS Node This repo contains a Monocular 3D detection Ros node. Base on https://github.com/Owen-Liuyuxuan/visualDet3D All parameters are exposed

Yuxuan Liu 19 Oct 08, 2022
Official implementation of the ICCV 2021 paper: "The Power of Points for Modeling Humans in Clothing".

The Power of Points for Modeling Humans in Clothing (ICCV 2021) This repository contains the official PyTorch implementation of the ICCV 2021 paper: T

Qianli Ma 158 Nov 24, 2022