• Stars
    star
    151
  • Rank 246,057 (Top 5 %)
  • Language
    Python
  • License
    BSD 3-Clause "New...
  • Created over 2 years ago
  • Updated 3 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Automated mapping of pedestrian networks from aerial imagery tiles

Tile2Net

Overview

Tile2Net is an end-to-end tool for automated mapping of pedestrian infrastructure from aerial imagery. We trained a semantic segmentation model to detect roads, sidewalk, crosswalk, and footpath from orthorectified imagery. The results are then converted to geo-referenced polygons and finally a topologically interconnected centerline network is generated. This work is as an important step towards a robust and open-source framework that enables comprehensive digitization of pedestrian infrastructure, which we argue to be a key missing link to more accurate and reliable pedestrian modeling and analyses. By offering low-cost solutions to create planimetric dataset describing pedestrian environment, we enable cities with a tight budget to create datasets describing pedestrian environment which otherwise would not be possible at a comparable cost and time.

The model is presented in our paper published at the Computers Environment and Urban Systems journal.

Mapping the walk: A scalable computer vision approach for generating sidewalk network datasets from aerial imagery
Maryam Hosseini, Andres Sevtsuk, Fabio Miranda, Roberto M. Cesar Jr, Claudio T. Silva
Computers, Environment and Urban Systems, 101 (2023) 101950

@article{hosseini2023mapping,
  title={Mapping the walk: A scalable computer vision approach for generating sidewalk network datasets from aerial imagery},
  author={Hosseini, Maryam and Sevtsuk, Andres and Miranda, Fabio and Cesar Jr, Roberto M and Silva, Claudio T},
  journal={Computers, Environment and Urban Systems},
  volume={101},
  pages={101950},
  year={2023},
  publisher={Elsevier}
}

Updates:

  • Tile2Net now supports the whole New Jersey state. You can find the list of supported regions here.
  • Tile2Net was featured in Planitizen!
  • Tile2Net was featured in MIT News Spotlight!

Getting Started

  1. What is New?
  2. Semantic Segmentation Requirements
  3. Installation
  4. Create Your First Project
  5. Run Our Example
  6. Running in the Terminal
  7. Running Interactively

What is New?

This is the Beta Version release of our code, featuring updated API and improved model compared to our baseline and published results.
During this experimental release, we encourage and welcome your feedback to help us improve the tool before publishing it as a PyPI and Conda package.

If your region of interest is not supported by our tool yet, but the high-resolution orthorectified tiles are publicly available, you can add the information of your region together with the link to the tiles under this topic, and we will do our best to include that region to our catalogue of supported regions.

Compared to our 2022 trained model (published in Feb. 2023), the semantic segmentation model is now trained on more data, including Manhattan, making it more generalizable.
Additionally, the network generation algorithm is now more generalized, not fine-tuned and fitted to any specific datasets, and thus should perform better on cities outside the training domain.
However, it is important to note that this also means the resulting network of Boston, Cambridge, NYC, and DC may differ from models specifically fine-tuned and fitted to each city, as described in the paper.

Aside from that, we have updated the code to work with the most recent, stable version of PyTorch (2.0.0) and Shapely ( 2.0.0), removing dependencies on apex and PyGeos.

Semantic Segmentation Requirements

  • Hardware: ==1 CUDA-enabled GPU for inference
  • Software: CUDA==11.7, Python==3.10.9, pytorch==2.0.0

Installation

It is highly recommended to create a virtual environment using either pip or conda to install Tile2Net and its dependencies. You can clone the repository by running the commands:

git clone [email protected]:VIDA-NYU/tile2net.git
cd tile2net

Activate your virtual environment and install locally:

python -m pip install -e .

Create Your First Project

In general, you will interact with the tool through two main components, generate and inference, both of which work with the Raster module. generate, as its name indicates, generates the project structure, downloads the weights and in case your region of interest is supported by Tile2Net, also prepares the image tiles, and finally outputs a JSON text regarding the raster specifications and the paths to the various resources. To know more about the basic concepts behind the tool, please read this.

inference will then run the semantic segmentation model on the prepared tiles (or your own tile data which should be prepared following the guidelines here), detect roads, sidewalks, footpaths, and crosswalks in your image data and outputs the polygons and network data for your region. All output maps are in WGS 84 Web Mercator (espg:4326), to best integrate with world-wide industry platforms such as Google Maps, Mapbox and Esri.

The weights used by the semantic segmentation model are available on the Google Drive.

Run Our Example

An example.sh script is also available, which will prompt the user for a path where the project should be created and saved. It will then download the tiles corresponding to Boston Commons and Public Garden, creates larger tiles (stitched together) for inference, run inference, create the polygon and network of this region. The sample area is small, just so you can test your environment settings and GPU, and see what to look for.

To run that, open your terminal and run:

bash ./examples/example.sh 

Running in the Terminal

To run the model in the terminal, you need to pass three main arguments: location -l, name -n, and output_dir -o. There are other default parameters that you can modify, such as zoom level, tile_step, stitch_step, but the first three are required to create a Raster object for your region.

Currently python -m tile2net generate and python -m tile2net inference are supported. The tool also supports piping results e.g. python -m tile2net generate <args> | python -m tile2net inference to allow for the whole process to be run in a single command.

To run the program in the terminal you can use the following command (replace <> with the appropriate information):

python -m tile2net generate -l <coordinate or address> -n <project name> -o <path to output directory>

Once that command is run and generate the respective files, use the command below to run inference and get the polygons and network. You can find the path to your city_info JSON file from the output of generate command above, look for the path printed in front of INFO Dumping to:

python -m tile2net inference --city_info <path to your region info json>

Or, you can pip the whole process and run it using only one line of code! (note that in piping scenario, you don't need to pass city_info argument.

python -m tile2net generate -l <coordinate or address> -n <project name> -o <path to output directory> | python -m tile2net inference

Running Interactively

Tile2Net may also be run interactively in a Jupyter notebook by importing with from tile2net import Raster. To view the project structure and paths, access the Raster.project attribute and subattributes.

The Raster instance can also be created from the city info json file with the method Raster.from_info().

This tool is currently in early development and is not yet ready for production use. The API is subject to change.

To see more, there is an inference.ipynb interactive notebook to demonstrate how to run the inference process interactively.

More Repositories

1

ache

ACHE is a web crawler for domain-specific search.
Java
454
star
2

reprozip

ReproZip is a tool that simplifies the process of creating reproducible experiments from command-line executions, a frequently-used common denominator in computational science.
Python
302
star
3

PipelineVis

Pipeline Profiler is a tool for visualizing machine learning pipelines generated by AutoML tools.
JavaScript
84
star
4

openclean

openclean - Data Cleaning and data profiling library for Python
Python
66
star
5

TaxiVis

Visual Exploration of New York City Taxi Trips
C++
54
star
6

urban-pulse

A standalone version of Urban Pulse
TypeScript
50
star
7

domain_discovery_tool

This repository contains the Domain Discovery Tool (DDT) project. DDT is an interactive system that helps users explore and better understand a domain (or topic) as it is represented on the Web.
JavaScript
46
star
8

data-polygamy

Data Polygamy is a topology-based framework that allows users to query for statistically significant relationships between spatio-temporal data sets.
Java
43
star
9

auctus

Dataset search engine, discovering data from a variety of sources, profiling it, and allowing advanced queries on the index
Python
41
star
10

city-surfaces

CitySurfaces semantic segmentation of sidewalk surfaces
Python
40
star
11

shadow-accrual-maps

Accumulated shadow data computed for New York City
Python
27
star
12

domain_discovery_tool_deprecated

Seed acquisition tool to bootstrap focused crawlers
JavaScript
23
star
13

alpha-automl

Alpha-AutoML is a Python library for automatically generating end-to-end machine learning pipelines.
Python
19
star
14

reprozip-examples

Examples and demos for ReproZip
HTML
16
star
15

pycalibrate

pycalibrate is a Python library to visually analyze model calibration in Jupyter Notebooks
Jupyter Notebook
16
star
16

memex

HTML
13
star
17

reproducibility-news

Currated reproducibility news displayed on reproduciblescience.org
Python
12
star
18

raster-join

C++
11
star
19

urban-data-study

Python
11
star
20

reproserver

A web application reproducing ReproZip packages in the cloud.
Python
10
star
21

BugDoc

BugDoc: python package to debug computational pipelines
Python
10
star
22

aws_taxi

Sample scripts to analyze taxi data on Amazon AWS
Python
10
star
23

domain-discovery-d4

Data-Driven Domain Discovery for Structured Datasets
Java
10
star
24

domain_discovery_API

Domain Discovery Operations API formalizes the human domain discovery process by defining a set of operations that capture the essential tasks that lead to domain discovery on the Web as we have discovered in interacting with the Subject Matter Experts (SME)s.
Python
8
star
25

ARGUS

ARGUS is a visual analytics tool that facilitates multimodal data collection, enables quick user modeling, and allows for retrospective analysis and debugging of historical data generated by the AR sensors and ML models that support task guidance.
TypeScript
7
star
26

openclean-core

Data Cleaning and Data Profiling Library for Python
Python
7
star
27

bdi-kit

A Python toolkit for biomedical data integration
Python
6
star
28

reproducible-science

Python
6
star
29

genotet

Genotet: An Interactive Web-based Visual Exploration Framework to Support Validation of Gene Regulatory Networks
JavaScript
6
star
30

Urban-Rhapsody

TypeScript
6
star
31

alphad3m

Jupyter Notebook
5
star
32

Segmentangling

C
5
star
33

openclean-pattern

Pattern identifier and anomaly detector
Python
5
star
34

birdvis

Source code for the BirdVis project, for more information visit www.birdvis.org
C++
5
star
35

tim-reasoning

Jupyter Notebook
4
star
36

mongodb-vls

MongoDB-VLS is an implementation of VLS (Virtual Lightweight Snapshots) in MongoDB. VLS is a mechanism that enables consistent analytics without blocking incoming updates in NoSQL stores.
C++
4
star
37

urban-data-provider

Download and transform (open urban) data sets from different data provider
Java
3
star
38

SamplingMethodsForInnerProductSketching

Python
3
star
39

openclean-metanome

Python package to run Metanome data profiling algorithms
Python
2
star
40

openclean-notebook

UI for openclean in Jupyter and Colab Notebooks
TypeScript
2
star
41

vida-nyu.github.io

Home page for the group
HTML
2
star
42

BusExplorer

Bus Time Tool: a web-based tool for the exploration of bus trajectory data
JavaScript
2
star
43

openclean-geo

Geo-Spatial Data Extension for openclean
Python
2
star
44

prida

PRIDA: Pruning Irrelevant Datasets for Data Augmentation.
Jupyter Notebook
2
star
45

ARIES-Issues

A version of ARIES
2
star
46

pedestrian-sensing-model

Generation of a pedestrian density map using ground-level images.
Python
2
star
47

city-surfaces-old

2
star
48

reproducible-science-nyu

https://nyu.reproduciblescience.org
Python
2
star
49

ptg-api-server

Python
1
star
50

Interactive-Visualization-Jupyter-Notebooks

Jupyter Notebook
1
star
51

redis-streamer

An API to communicate with redis over websockets
Python
1
star
52

interactivecalibration

Interactive Calibration Plots
Jupyter Notebook
1
star
53

repromatch

Website designed to help you find the tool (or tools) that best matches your reproduciblity needs
HTML
1
star
54

cmu-mmac2epic-kitchens

CMU MMAC 2 Epic Kitchens annotation format
Python
1
star
55

ptg-server-ml

The machine learning model deployment
Jupyter Notebook
1
star
56

python-staticflow

Construct a data flow from static analysis of Python code
Python
1
star
57

minesafe

Minesafe is a Crowdsourcing information system for people in rural areas of countries affected by antipersonnel mines
Java
1
star
58

user-agent-study

Python
1
star
59

wildlife_pipeline

Python
1
star
60

urban-event-detection

Python
1
star
61

artist

Python
1
star
62

urban-data-core

Core functionality and classes for Urban Data Integration project
Java
1
star
63

memex-cdr

Memex Crawl Data Repository Standard
Java
1
star
64

inner-product-sketches

1
star