BRAILS (Building and Infrastructure Recognition using AI at Large-Scale) provides a set of Python modules that utilize deep learning (DL), and computer vision (CV) techniques to extract information from satellite and street level images. The BRAILS framework also provides turn-key applications allowing users to put individual modules together to determine multiple attributes in a single pass or train general-purpose image classification, object detection, or semantic segmentation models.
Online documentation is available at https://nheri-simcenter.github.io/BRAILS-Documentation.
The easiest way to install the latest version of BRAILS is using pip:
pip install BRAILS
This example demonstrates how to use the InventoryGenerator method embedded in BRAILS to generate regional-level inventories.
The primary input to InventoryGenerator is location. InventoryGenerator accepts four different location input types: 1) region name, 2) list of region names, 3) a tuple containing the coordinates for two opposite vertices of a bounding box for a region (e.g., (vert1lon,vert1lat,vert2lon,vert2lat)), and a 4) GeoJSON file containing building footprints or location points.
InventoryGenerator automatically detects building locations in a region by downloading footprint data for the location input. The three footprint data sources, fpSource, included in BRAILS are i) OpenStreetMaps, ii) Microsoft Global Building Footprints dataset, and iii) FEMA USA Structures. The keywords for these sources are osm, ms, and usastr, respectively.
InventoryGenerator also allows inventory data to be imported from the National Structure Inventory or another user-specified file to create a baseline building inventory.
Please note that to run the generate method of InventoryGenerator, you will need a Google API Key.
#import InventoryGenerator:
from brails.InventoryGenerator import InventoryGenerator
# Initialize InventoryGenerator:
invGenerator = InventoryGenerator(location='Berkeley, CA',
fpSource='usastr',
baselineInv='nsi',
lengthUnit='m',
outputFile='BaselineInvBerkeleyCA.geojson')
# View a list of building attributes that can be obtained using BRAILS:
invGenerator.enabled_attributes()
# Run InventoryGenerator to generate an inventory for the entered location:
# To run InventoryGenerator for all enabled attributes set attributes='all':
invGenerator.generate(attributes=['numstories','roofshape','buildingheight'],
GoogleAPIKey='ENTER-YOUR-API-KEY-HERE',
nbldgs=100,
outputFile='BldgInvBerkeleyCA.geojson')
# View generated inventory:
invGenerator.inventoryThis work is based on material supported by the National Science Foundation under grants CMMI 1612843 and CMMI 2131111.
NHERI-SimCenter [email protected]
@software{cetiner_2024_10448047,
author = {Barbaros Cetiner and
Charles Wang and
Frank McKenna and
Sascha Hornauer and
Jinyan Zhao and
Yunhui Guo and
Stella X. Yu and
Ertugrul Taciroglu and
Kincho H. Law},
title = {BRAILS Release v3.1.1},
month = feb,
year = 2024,
publisher = {Zenodo},
version = {v3.1.1},
doi = {10.5281/zenodo.10606032},
url = {https://doi.org/10.5281/zenodo.10606032}
}