Mapping 2019–20 Australian bushfires

A case study showing how you can use deep learning to monitor the daily progression of fires from satellite imagery in 5 simple steps

Miguel Pinto
Towards Data Science

--

Bushfires on East Coast of Australia. Image from NASA.

The extreme extent of 2019–20 Australian bushfires made headlines around the world at the beginning of 2020. Extreme events like these are expected to become more frequent in a warming climate. Monitoring the extent of the fires is very important to assess the damage and for a wide range of applications ranging from forest management to fire carbon emission and air pollution. Daily satellite images with resolution up to about 500m per pixel allow monitoring the burned regions. It is however not a simple task as clouds and smoke are often present in the images. As an image-based problem, monitoring the daily progression of burned areas is a well-suited task for the computer vision domain.

In this story, I show how to use BA-Net model (of which I’m one of the authors) to map the fires in Australia, and how you can do the same for virtually anywhere on Earth, with the open-source code and pre-trained models provided in this Github repository as a Python package named banet.

If you are only interested in the results you can jump straight to the “Visualizing the results” section, after the 5 steps.

Step 1. Defining the study region

The Region class in banet.geo should be used as follows, where the bbox argument receives a list with the left, bottom, right and top boundaries of the region. The pixel_size should be kept as 0.01º (about 1 km) to be close to the resolution of the satellite data that will be used here.

r = Region(name='Australia', bbox=[146, -39, 154, -26], pixel_size=0.01)
r.export('data/regions/R_Australia.json')

Step 2. Download VIIRS Active Fires data

Scatter plot of active Fires in the study region. Image created by the author.

VIIRS Active Fires is a product that provides near-real-time estimations of the radiative power of fires that are active during the satellite passage. These polar orbit satellites view most of the points on Earth twice a day. The data can be downloaded from this page: following “Create New Request”; selecting the region; selecting “VIIRS S-NPP”; selecting the time-range starting one month before and ending one month after the study period (or at least 15 days). As for the file format, it should be selected CSV. After submitting the request it should be processed shortly. Data can then be downloaded and saved as “hotspots{name}.csv”, using the “name” defined in Step 1.

Plotting all the active fire events results in the figure above where colours represent the day of burning starting the count at Jan 1st, 2019.

Step 3. Downloading VIIRS image data

The following bash code makes use of the banet command-line utility to download the data from Nasa Earth Data.

#!/bin/bash -l 
region="Australia"
tstart="2019-08-01 00:00:00"
tend="2020-02-17 23:59:59"
path_save="/data/Australia/rawdata"
regions_path="/data/regions"

banet_viirs750_download $region "$tstart" "$tend" $path_save $regions_path

The region variable needs to be set to the name defined in Step 1 and the regions_path to the respective directory where the JSON file was saved.

Step 4. Data preprocessing

For this step, another utility function is provided in banet package. The procedure consists on reading the raw data (in HDF format) as downloaded in Step 3, and saving a MAT file for each day with:

  • Red, near-infrared (NIR) and middle infrared (MIR) reflectances;
  • Gridded active fire data.
#!/bin/bash -l
region="Australia"
viirs_path="/data/Australia/rawdata"
save_path="/data/Australia/dataset"
fires_path="/data/ActiveFires"
regions_path="/data/regions"

banet_create_dataset $region $viirs_path $fires_path $save_path $regions_path

Notice that fires_path should be set to the directory in which the CSV file obtained in Step 2 was saved.

Step 5. Use BA-Net to generate burned area maps

Once again, banet package provides a utility command line function to process this step. This procedure consists in loading 64-day sequences and cropping the large images into 128x128 tiles, feed each to the model and merge back the tiles to get the results for the entire image.

#!/bin/bash -l
region="Australia"
tstart="2019-08-01 00:00:00"
tend="2020-02-17 23:59:59"
input_path="/data/Australia/dataset"
output_path="/data/Australia/output"
regions_path="/data/regions"

banet_predict_times $region "$tstart" "$tend" $input_path $output_path $regions_path

Notice that the input_path should correspond to the save_path of Step 4 — the directory where the dataset is stored.

Visualizing the results

After following the 5 steps above, results will be saved in the output_path. The figure below shows the confidence level (left) and the day of burning given by the model (right). Hereafter, only pixels with a confidence level of at least 0.5 are considered.

Maps of confidence level (left) and days of burning (right) obtained from BA-Net model. Image created by the author.

Notice that the progression of dates of burning is usually smooth, contrasting to other existing products as discussed in this story or in the BA-Net academic paper. The improvement in the date of burning allows for a more accurate representation of daily burned area as shown in the figure below.

Daily burned area for all the study region. Image created by the author.

Notice the extreme values of burned area at the end of 2019 and the beginning of 2020 — the period where the fires in Australia made headlines across the globe.

The total burned area represented in the bar plot is 6 688 147 ha. For comparison, the number mentioned in Wikipedia for New South Wales, Victoria and Australian Capital Territory all together is 6 956 688 ha. These numbers cannot be directly compared since here we include small fires in south Queensland and only consider part of Victoria state. Nevertheless, it is a close match.

At this scale, some overestimation of the burned area is likely as there are often smaller non-burned patches inside the burned regions. To better identify these regions, higher resolution images like Sentinel-2 (10-meter pixel size) would be needed. These images are, however, only available every 5 days, not allowing to map the daily progression of fires.

The path forward

Deep learning applications with remote sensing data started flourishing over the very recent years. I believe this trend will continue for the foreseeable future. Burned areas mapping is one of the topics where I expect significant advances over the next few years. The sheer volume of spatio-temporal data constantly retrieved from several satellites makes this problem challenging. Deep learning — powered by GPUs and TPUs — opens ground for a vast sea of new possibilities yet to be explored.

--

--

PhD student (Remote sensing, Meteorology), ML/DL enthusiast, fastai student, competition master at Kaggle, pianist/composer