Awesome
Aligning and Updating Cadaster Maps with Remote Sensing Images
<p align="center"> <img src="projects/mapalign/mapalign_multires/com/inference_anim/render/mapalignment_anim.gif" width="250" height="250" /> </p>This is the official code for the papers:
Noisy Supervision for Correcting Misaligned Cadaster Maps Without Perfect Ground Truth Data
Nicolas Girard,
Guillaume Charpiat,
Yuliya Tarabalka
IGARSS 2019
[Paper]
And:
Aligning and Updating Cadaster Maps with Aerial Images by Multi-Task, Multi-Resolution Deep Learning
Nicolas Girard,
Guillaume Charpiat,
Yuliya Tarabalka
ACCV 2018
[Paper] [Supplementary materials]
It can be adapted to implement the method of our previous paper:
Multimodal image alignment through a multiscale chain of neural networks with application to remote sensing
Armand Zampieri,
Guillaume Charpiat,
Nicolas Girard,
Yuliya Tarabalka
ECCV 2018
[Paper]
Python environment
The code uses a few Python libraries such as Tensorflow, etc. The docker image lydorn/anaconda-tensorflow-geo has all the needed dependencies. See the instructions in the docker folder to install docker and build that image. One the Docker image is built on your system, you can launch one container to execute all the code from this repository.
Quickstart
In order to align the OSM building annotations of your own GeoTIFF image using our pre-trained models, follow these instructions:
1 - Download pre-trained networks
4 pe-trained networks are available, one for each downsampling factor 8, 4, 2 and 1.
You can either: Execute the download script download_pretrained.py
Or: manually download the zipfile at https://www-sop.inria.fr/members/Nicolas.Girard/downloads/mapalignment/runs.igarss2019.zip,
extract and place the runs folder in the mapalign_multires folder
so that the folder structure is projects/mapalign/mapalign_multires/runs.igarss2019
.
2 - Execute script
Execute the projects/mapalign/mapalign_multires/main.py script: python main.py
.
Use python main.py -h
for available options. The most relevant ones are:
--image
to change the GeoTIFF image used--shapefile
to specify the shapefile to align (if not specified, will load and align OSM annotations)--batch_size
which you can adapt depending on the available GPU memory The script will save the aligned annotations in the same folder as the image.
Train your own models
Download datasets
Three datasets are used for training and have individual instructions for downloading in their respective folder:
- Inria Aerial Image Dataset
- Aerial imagery object identification dataset for building and road detection, and building height estimation
- Mapping Challenge from CrowdAI Dataset
Pre-process datasets
All scripts for dataset handling relative to the alignment project are located in the dataset_utils folder. See the README in that folder for instructions on dataset pre-processing.
Or use your own dataset
If you want to use your own dataset, I suggest you to write a read.py
script based on this one: read.py.
Then write a process_dataset.py
script based on this one: preprocess_aerial_image_multires.py.
The process_dataset.py
script should take as input the images and ground truth data read by the read.py
script and split them in patches that are then stored in TFRecord format for training.
Once the TFRecords are created, you will have to add their path to the config.py script in the TFRECORDS_DIR_LIST list.
Perform inference and training of models
The useful scripts and instructions for performing inference and training of the models are in the mapalign_multires folder.
If you use this code for your own research, please cite:
@InProceedings{Girard_2019_IGARSS,
title = {{Noisy Supervision for Correcting Misaligned Cadaster Maps Without Perfect Ground Truth Data}},
author = {Girard, Nicolas and Charpiat, Guillaume and Tarabalka, Yuliya},
booktitle = {IEEE International Geoscience and Remote Sensing Symposium (IGARSS)},
ADDRESS = {Valencia, Spain},
year = {2019},
month = Jul,
}
@InProceedings{Girard_2018_ACCV,
author = {Girard, Nicolas and Charpiat, Guillaume and Tarabalka, Yuliya},
title = {Aligning and Updating Cadaster Maps with Aerial Images by Multi-Task, Multi-Resolution Deep Learning},
booktitle = {The Asian Conference on Computer Vision (ACCV)},
month = {December},
year = {2018}
}
@InProceedings{Zampieri_2018_ECCV,
author = {Zampieri, Armand and Charpiat, Guillaume and Girard, Nicolas and Tarabalka, Yuliya},
title = {Multimodal image alignment through a multiscale chain of neural networks with application to remote sensing},
booktitle = {The European Conference on Computer Vision (ECCV)},
month = {September},
year = {2018}
}