• Stars
    star
    157
  • Rank 238,399 (Top 5 %)
  • Language
    Python
  • License
    Apache License 2.0
  • Created almost 6 years ago
  • Updated about 1 year ago

Reviews

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

Repository Details

Kitware's system for 3D building reconstruction for the IARPA CORE3D program

Danesfield

This repository addresses the algorithmic challenges of the IARPA CORE3D program. The goal of this software is to reconstruct semantically meaningful 3D models of buildings and other man-made structures from satellite imagery.

The Danesfield system performs 3D reconstruction from satellite imagery

This software is designed to process multiple view satellite imagery and is currently configured to process collections of panchromatic and multispectral WorldView3 imagery such as the examples provided in the public CORE3D Dataset. The algorithms were described in a Best Paper awarding winning paper at EarthVision 2019:

M. Leotta, C. Long, B. Jacquet, M. Zins, D. Lipsa, J. Shan, B. Xu, Z. Li, X. Zhang, S. Chang, M. Purri, J. Xue, and K. Dana, "Urban Semantic 3D Reconstruction From Multiview Satellite Imagery," in The IEEE Conference on Computer Vision and Pattern Recognition (CVPR) Workshops: EarthVision, 2019.

The Danesfield project has evolved since this publication. For details, see Project History.

This repository contains the algorithms to solve the CORE3D problem, but a web-based user interface and cloud-based processing infrastructure are provided in the girder/Danesfield repo. Additionally, an older version of the web app may be found at Kitware/Danesfield-App. The algorithms in this repository are written in Python or provide a Python interface.

Getting Started

Clone repository

Clone this repository with its sub-modules by running:

git clone --recursive [email protected]:Kitware/Danesfield.git

To fetch the latest version of this repository and its sub-modules, run:

git pull
git submodule update --init --recursive

Create Conda environment

The first step in running or developing Danesfield code is to obtain the correct development environment. The Danesfield algorithms require a number of dependencies on geospatial and computer vision libraries. Provided with this repository are instructions for configuring a development environment with Conda. Conda provides a consistent development environment with a known configuration of dependencies versions. Follow the directions in deployment/conda/README.rst to setup this environment.

Docker image

This repository has also been built into a Docker image, which includes the required conda environment. The image is available from Docker Hub at https://hub.docker.com/r/kitware/danesfield and can be pulled down by running docker pull kitware/danesfield. The image was built using the Dockerfile included in this repository.

As some of the Danesfield algorithms require a GPU, you'll need to have NVIDIA Docker installed, and use the nvidia-docker command when running the image.

Project Layout

The Danesfield project is organized as follows:

  • danesfield: directory where the Danesfield algorithmic modules live.
  • tools: directory with command line tools to execute the Danesfield algorithms.

Run Danesfield CLI

The Danesfield pipeline can be run from a command line using tools/run_danesfield.py and constructing a danesfield configuration file based on the example in input.ini.

If running via the docker container, first ensure you have the latest danesfield docker image and nvidia-docker. Use nvidia-docker to start a bash session inside the container:

nvidia-docker run -it --rm --gpus all --shm-size 8G\
 -v /$DATA:/mnt kitware/danesfield /bin/bash

where $DATA is a path on the host to data directory containing your input imagery or point cloud and input.ini. This host directory is mounted inside the container at /mnt in the above command.

Once the environment is set up, you can execute a pipeline to process either multiple satellite images or start with a geospatial point cloud. To execute a pipeline with a point cloud, run

docker run --rm --gpus all -it -v ~/projects/danesfield:/root/danesfield -v ~/data/run_danesfield/:/root/run_danesfield kitware/danesfield 'LOGLEVEL=DEBUG python /root/danesfield//danesfield/tools/run_danesfield.py /root/run_danesfield/wrk/input.ini' > output_pointcloud.txt 2>&1

Note: input.ini should contain a valid point cloud path via p3d_fpath.

To execute a pipeline with a set of satellite images, run

docker run --rm --gpus all -it -v ~/projects/danesfield:/root/danesfield -v ~/data/run_danesfield/:/root/run_danesfield kitware/danesfield 'LOGLEVEL=DEBUG python /root/danesfield/danesfield/tools/run_danesfield.py --image /root/run_danesfield/imageful/imageful.ini' >> output_image.txt 2>&1

Note: input.ini should contain a valid path to imagery via imagery_dir.

See comments in input.ini for each configuration option. To see more options on runnning danesfield pipeline, execute

python run_danesfield.py -h

where notable options are

  • --image: run pipeline with image data as the source; default uses a point cloud
  • --roads: get roads from open street maps; default extracts no roads
  • --vissat: run VisSat stereo pipeline using satellite imagery
  • --run_metrics: run evaluation metrics; requires ground truth for DSM, DTM, etc.

Minimum Harware Requirements

Danesfield runs a variety of processing steps, some of which take advantage of multiple CPU cores and GPUs to accelerate processing large data sets. At a minimum Danesfield requires:

  • 12GB RAM, 16GB preferred
  • a modern CPU preferably multi-core
  • a modern Nvidia GPU with 8GB of GPU RAM, 16GB preferred

Project History

The Danesfield project is named for Danesfield House in Buckinghamshire, England. This location was the center of Allied image intelligence during World War II. During the war, analysts use multiple overhead images to physically build 3D models of important sites.

Initial work on this project was funded by the IARPA CORE3D program in 2017 and 2018. The results of this initial work were presented at EarthVision 2019. At the time of this publication, Danesfield included a dependency on proprietary software developed by Raytheon. The Raytheon P3D software was used to extract point clouds from satellite images and bundle adjust RPC camera models. This dependency limited the use Danesfield to users with a license for the Raytheon P3D.

Since the initial CORE3D work, we have extended Danesfield in a few ways. First, we have since integrated VisSat as an open source alternative to P3D to allow for an end-to-end open source pipeline. Note that while VisSat works as a replacement to P3D, several downstream algorithms were trained on, or had parameters tuned for, P3D data. So results produced with VisSat instead of P3D may not achieve the same results as published.

Second, we have started to explore other input data in addition to WorldView 3. We have generalized the pipeline to allow processing a geospatial point cloud directly. This allows Danesfield to run on Lidar or other sources of point clouds. We are also exploring other options, such as integrating the TeleSculptor project to extract the point cloud from aerial video sources.

Third, we are adding open source tools to convert the meshes produced by Danesfield into the 3D Tiles format for more efficient transmission over the web.

More Repositories

1

CMake

Mirror of CMake upstream repository
C
5,967
star
2

VTK

Mirror of Visualization Toolkit repository
C++
2,250
star
3

vtk-js

Visualization Toolkit for the Web
JavaScript
1,233
star
4

ParaView

VTK-based Data Analysis and Visualization Application
C++
1,051
star
5

TeleSculptor

TeleSculptor: Aerial Photogrammetry Application powered by KWIVER
C++
605
star
6

trame

Trame lets you weave various components and technologies into a Web Application solely written in Python.
Python
419
star
7

pyLiDAR-SLAM

Python
306
star
8

VeloView

VeloView performs real-time visualization and easy processing of live captured 3D LiDAR data from Velodyne sensors (Alpha Prime™, Puck™, Ultra Puck™, Puck Hi-Res™, Alpha Puck™, Puck LITE™, HDL-32, HDL-64E). Runs on Windows, Linux and MacOS. This repository is a mirror of https://gitlab.kitware.com/LidarView/VeloView-Velodyne.
C++
304
star
9

LidarView

LidarView performs real-time reception, recording, visualization and processing of 3D LiDAR data. This repository is a mirror of https://gitlab.kitware.com/LidarView/lidarview.
C++
258
star
10

glance

Kitware Glance is an open-source web application developed at Kitware for visualizing volumetric images, molecular structures, geometric objects, and point clouds. It is part of the ParaView platform and can serve as a foundation for building custom web-based visualization applications involving ITK.js and VTK.js.
JavaScript
247
star
11

vtk-examples

This is the gh-pages branch of the VTK Examples Web Site and is set up to host web pages. ⚠️ DO NOT SUBMIT MERGE REQUESTS HERE. ⚠️ Merge requests must be submitted here: https://gitlab.kitware.com/vtk/vtk-examples
HTML
226
star
12

itk-vtk-viewer

2D / 3D web image, mesh, and point set viewer using itk-wasm and vtk.js
JavaScript
210
star
13

CDash

An open source, web-based software testing server
PHP
206
star
14

kwiver

Pulls Together Computer Vision Algorithms into Highly-Modular Run-Time Configurable Systems
C++
189
star
15

tangelo

A simple, quick, powerful web framework
JavaScript
185
star
16

VolView

Kitware VolView: an all-in-one radiological viewer!
TypeScript
184
star
17

paraviewweb

Web framework for building interactive visualization relying on VTK or ParaView to produce visualization data
JavaScript
160
star
18

candela

Visualization components for the web
JavaScript
116
star
19

visualizer

The ParaViewWeb Visualizer application which can be used standalone or as a component within another web context.
JavaScript
106
star
20

ipyvtklink

🔗 minimalist ipywidget to interface with any Python vtkRenderWindow
Python
93
star
21

wslink

Python/JavaScript library for communicating over WebSocket
Python
83
star
22

dive

Media annotation and analysis tools for web and desktop. Get started at https://viame.kitware.com
Vue
81
star
23

SMQTK

Python toolkit for pluggable algorithms and data structures for multimedia-based machine learning.
Terra
75
star
24

react-vtk-js

Declarative library exposing vtk.js visualization pipeline as React components
TypeScript
73
star
25

fletch

Computer Vision Software Development Environment
C++
62
star
26

SlicerSALT

An open-source, free comprehensive software that will allow biomedical scientists to precisely locate shape changes in their imaging studies. This software called Slicer Shape AnaLysis Toolbox (SlicerSALT), will enhance the intuitiveness and ease of use for such studies, as well as allow researchers to find shape changes with higher statistical power. Altogether this constitutes a crucial resource for the imaging field that will enable many and important new findings in biomedical imaging studies.
Python
54
star
27

KWStyle

Kitware Style Checker
C++
52
star
28

COAT

Official Code for CVPR 2022 paper Cascade Transformers for End-to-End Person Search
Python
49
star
29

HPCCloud

A Cloud/Web-Based Simulation Environment
JavaScript
49
star
30

SMTK

Simulation Modeling Tool Kit
C++
44
star
31

vue-vtk-js

Vue.js based components for vtk.js
JavaScript
36
star
32

minerva

Minerva: client/server/services for analysis and visualization
Python
36
star
33

MEVID

Official Code for WACV 2023 paper MEVID: Multi-view Extended Videos with Identities for Video Person Re-Identification
Python
34
star
34

Danesfield-App

Web application for the Danesfield System
Python
32
star
35

paraview-visualizer

Web frontend to ParaView based on trame
Python
31
star
36

arctic-viewer

Standalone application useful to load and explore cool data products.
JavaScript
31
star
37

MetaIO

MetaImage is the text-based tagged file format for medical images that resulted. We have now extended that file format to support a variety of objects that occur in medicine such a tubes (for vessels, needles, etc.), blobs (for arbitrary shaped objects), cubes, spheres, etc. The complete library is known at MetaIO.
C
31
star
38

VTK-m

Mirror of https://gitlab.kitware.com/vtk/vtk-m
C++
29
star
39

paraview-lite

Lite Client to a ParaView server which rely on Web technologies
JavaScript
29
star
40

ParaViewTangoRecorder

An app for the Project Tango development kit to enable recording data for ParaView
Java
28
star
41

cumulus

A REST API for creating and using cloud clusters
Python
27
star
42

web-project-templates

This repository try to gather various web project templates based on vue, vtk.js, paraviewweb...
JavaScript
26
star
43

DaxToolkit

Data Analysis at Extreme
C++
24
star
44

qtextensions

An open source collection of utility classes and tools for Qt.
C++
24
star
45

iMSTK

Mirror of https://gitlab.kitware.com/iMSTK/iMSTK
C++
24
star
46

py-web-vue

Build a 3D Web application using VTK or ParaView while only writing a Python script. This project aims to streamline the existing ParaViewWeb infrastructure into something that is simpler to use by lowering the entry point complexity.
JavaScript
24
star
47

kwcoco

Python
21
star
48

ParaViewCatalystExampleCode-MOVED-

Example problems and snippets of code to demonstrate ParaView's Catalyst.
C++
20
star
49

flow

Full data science workflows on the web
Python
20
star
50

seaborn_altair

Seaborn-compatible API for interactive Vega-Lite plots via Altair
Jupyter Notebook
20
star
51

vtk-book

Markdown version of the Visualization Toolkit Book - An object Oriented Approach to 3D Graphics
Python
20
star
52

light-viz

Scientific Visualization application for tailored post-processing relying on a ParaViewWeb backend.
JavaScript
20
star
53

vtk-js-datasets

Sample dataset for vtk.js examples
HTML
19
star
54

DIVA

DIVA project repository
C++
18
star
55

sprokit

Stream Processing ToolKit
C++
18
star
56

HPCCloud-deploy

VM Deploy for HPC-Cloud
Python
17
star
57

trame-vtk

VTK/ParaView widgets for trame
Python
17
star
58

simput

Input generator for simulation which can be used as a standalone application or as a component within another web context.
JavaScript
17
star
59

VisCL

Computer Vision GPU acceleration with OpenCL
C++
16
star
60

trame-vtklocal

VTK Local Rendering using VTK/WASM to match server side rendering pipeline on the client side.
JavaScript
16
star
61

vtk-wasm-demos

A collection of VTK.wasm demo applications
C++
16
star
62

IGSTK

Image Guided Surgery Software Toolkit
C++
15
star
63

cdash-docker

Shell
15
star
64

LookingGlassVTKModule

C++
15
star
65

trame-cookiecutter

Cookie Cutter template for creating trame application/module
Python
14
star
66

PCLPlugin

A plugin to enable PCL functionality in ParaView
C++
14
star
67

vivia

C++
14
star
68

generated-image-detection

Python
13
star
69

trame-tutorial

Tutorial material for trame.
Python
13
star
70

VERACore

Python
12
star
71

Visomics

Visomics is an open-source tool for the exploration of biological omics data with a focus on genomics, proteomics, transcriptomics, and metabolomics.
C++
12
star
72

keypointgui

Provides a wxPython GUI to select image-point correspondences between images and fits a homography.
Python
12
star
73

paraviewweb-demo

Website and launcher for ParaViewWeb container demo
HTML
11
star
74

kwant

KWANT is an open source C++ toolkit for computing scores and other metrics for object tracking systems.
C++
11
star
75

pan3d

Python
11
star
76

cinema

ParaView Cinema
JavaScript
11
star
77

peacock

Trame based UI for INL peacock project.
Python
11
star
78

openview

C++
10
star
79

clique

Graph editor library/application
JavaScript
10
star
80

romanesco

Romanesco is now named Girder Worker
10
star
81

trame-jupyter-extension

Jupyter extension for trame client/server communication
TypeScript
10
star
82

Remus

Remus is a remote mesh/model service framework.
C++
9
star
83

resonantgeo

Geospatial Vue components for Resonant
JavaScript
9
star
84

nrtk

The Natural Robustness Toolkit (NRTK) is an open source toolkit for generating operationally-realistic perturbations to evaluate the natural robustness of computer vision algorithms.
Python
9
star
85

conceptual-modeler

Conceptual Modeler based on GemPy and trame
Python
9
star
86

trame-server

Internal server side implementation of trame
Python
9
star
87

covid-19-vis

A visualization of some COVID-19 data
JavaScript
9
star
88

trame-vuetify

trame-vuetify brings Vuetify UI Material Components into trame
Python
9
star
89

QtTesting

This is a mirror of the Gitlab repository. Please use Gitlab for PRs and Issues.
C++
9
star
90

divvy

Divide your data analysis across tools and visualization for a better data insight
Python
9
star
91

trame-vtk3d

Wrapper to the WASM bundle of VTK from dicehub
JavaScript
9
star
92

BoneTextureExtension

Slicer extensions for computing feature maps of N-Dimensional images using well-known texture analysis methods.
Python
9
star
93

torch_liberator

Python
8
star
94

vaui

Python
8
star
95

trame-app-cone

Single file trame app show casing how to deploy to CapRover.
Python
8
star
96

super3d

C++
8
star
97

burn-out

A computer vision toolkit designed to generate pixel-level object classifications, and additionally perform other types of video filtering. Originally created to remove on-screen displays from video.
C++
8
star
98

UPennContrast

UPenn ?
Vue
8
star
99

vtk-web-solutions

Sample code showcasing VTK usage with Web
JavaScript
8
star
100

trame-simput

Simput implementation for trame
JavaScript
8
star