1 of 49

Step-by-step guide for the CCDC-based NRT alert generation on the SEPAL platform

NFM Team

FAO Forestry Division

2 of 49

Change Alert Recipe

Overview

  •  Based on CCDC method (GEE powered)
  •  On-the-fly generation of latest alerts
  •  Large-scale - daily/weekly/monthly
  •  Parameter tuning for local conditions
  •  Export to GEE/SepalDrive/Locally

3 of 49

NRTM in SEPAL

3

25.07.23

Change Alert Recipe

Original Method

  • time-series fitting
  • new observations compared to modelled value
  • if > threshold, flagged change
  • If n-times > threshold, confirmed change
  • default threshold: 3x model RMSE
  • new model initialization

4 of 49

NRTM in SEPAL

4

25.07.23

CCDC model + RMSE (1 year before)

First Observation in monitoring period

CCDC slice to image comparison

Calibration period

Monitoring period

Change Alert Recipe

SEPAL Method tweaked for NRT

5 of 49

NRTM in SEPAL

25.07.23

Workflow

  1. Generation of historical CCDC Asset 🡪 CCDC Recipe
  2. Creation of Forest Mask (optional) 🡪 Masking Recipe
  3. Generation of Alerts 🡪 Change Alerts Recipe
  4. Visual inspection and parameter tweaking 🡪 Change Alerts Recipe interface
  5. Export and Post-processing 🡪 EE script

6 of 49

NRTM in SEPAL

25.07.23

Workflow

  1. Generation of historical CCDC Asset 🡪 CCDC Recipe
  2. Creation of Forest Mask (optional) 🡪 Masking Recipe
  3. Generation of Alerts 🡪 Change Alerts Recipe
  4. Visual inspection and parameter tweaking 🡪 Change Alerts Recipe interface
  5. Export and Post-processing 🡪 EE script

This how-to guide provides the general steps when using a combination of Landsat and Sentinel-2 data for an exemplary area in Bolivia.

7 of 49

NRTM in SEPAL

7

25.07.23

Change Alert Recipe

I - Generation of historical CCDC Asset

  1. Open the recipe menu
  2. Click on CCDC

8 of 49

NRTM in SEPAL

8

25.07.23

Workflow

I - Generation of historical CCDC Asset

  1. Open the recipe menu
  2. Click on CCDC
  3. Select and Area of Interest

Note: As an example you can use the following EE Table:

users/andreasvollrath/workflows/aoi_bolivia_nrt

1

2

3

4

9 of 49

NRTM in SEPAL

9

25.07.23

Workflow

I - Generation of historical CCDC Asset

  1. Open the recipe menu
  2. Click on CCDC
  3. Select and Area of Interest
  4. Select a date

Note: if cloud cover is not persistent, a 3-year period before the start of monitoring is sufficient

1

2

10 of 49

NRTM in SEPAL

10

25.07.23

Workflow

I - Generation of historical CCDC Asset

  1. Open the recipe menu
  2. Click on CCDC
  3. Select and Area of Interest
  4. Select a date
  5. Select source imagery

Note I: Even if you plan to use a combination of Landsat and Sentinel-2 it is sufficient to only use 1 for the reference period. In our example we just use Landsat 8 and 9

Note II: By default, the breakpoint band is NDFI, you can select any other one, but consider that we are interested in stable forest for the reference period

1

2

11 of 49

NRTM in SEPAL

11

25.07.23

Workflow

I - Generation of historical CCDC Asset

  1. Open the recipe menu
  2. Click on CCDC
  3. Select and Area of Interest
  4. Select a date
  5. Select source imagery
  6. Set pre-processing parameters

Note I: We aim for the highest quality, using surface reflectance and aggressive cloud and shadow masking

Note II: BRDF Correction is highly recommended for larger areas with overlapping scene footprints, but can be quite compute intense

1

2

12 of 49

NRTM in SEPAL

12

25.07.23

Workflow

I - Generation of historical CCDC Asset

  1. Open the recipe menu
  2. Click on CCDC
  3. Select and Area of Interest
  4. Select a date
  5. Select source imagery
  6. Set pre-processing parameters
  7. Set CCDC parameters

Note: We select conservative break detection, as we do not expect breaks for stable forest in the history period. In this way we avoid false positives

1

2

13 of 49

NRTM in SEPAL

13

25.07.23

Workflow

I - Generation of historical CCDC Asset

  1. Open the recipe menu
  2. Click on CCDC
  3. Select and Area of Interest
  4. Select a date
  5. Select source imagery
  6. Set pre-processing parameters
  7. Set CCDC parameters
  8. Rename Recipe

1

14 of 49

NRTM in SEPAL

14

25.07.23

Workflow

I - Generation of historical CCDC Asset

  1. Open the recipe menu
  2. Click on CCDC
  3. Select and Area of Interest
  4. Select a date
  5. Select source imagery
  6. Set pre-processing parameters
  7. Set CCDC parameters
  8. Rename Recipe
  9. Export asset (optional)

Note I: We only want to export bands potentially used in later monitoring

Note II: If you renamed the recipe, the asset ID will be automatically created

Note III: Especially for larger areas it is a good idea to export the asset, as computation gets slow if calculated on the fly.

1

2

15 of 49

NRTM in SEPAL

15

25.07.23

Workflow

I - Generation of historical CCDC Asset

Important consideration:

The CCDC asset needs regular updating, but:

this step will ONLY have to be repeated every 6-8 months, as the subsequent alerts are generated by comparing new incoming images with the modelled CCDC slice of 1 year ago.

16 of 49

NRTM in SEPAL

16

25.07.23

Workflow

II - Applying a Forest Mask

  1. Open the recipe menu
  2. Click on the masking recipe

1

17 of 49

NRTM in SEPAL

17

25.07.23

Workflow

II - Applying a Forest Mask (optional)

  1. Open the recipe menu
  2. Click on the masking recipe
  3. Select the Input Format of the historical CCDC Asset

Note I: If you exported the CCDC asset, select “Earth Engine Asset”, otherwise click on “Saved Sepal Recipe”

1

18 of 49

NRTM in SEPAL

18

25.07.23

Workflow

II - Applying a Forest Mask (optional)

  1. Open the recipe menu
  2. Click on the masking recipe
  3. Select the Input Format of the historical CCDC Asset
  4. Select the recipe/EE path

Note I: You can use a the template CCDC asset over a small area in Bolivia:

users/andreasvollrath/Workflow_NRT/CCDC_historical

1

19 of 49

NRTM in SEPAL

19

25.07.23

Workflow

II - Applying a Forest Mask (optional)

  1. Open the recipe menu
  2. Click on the masking recipe
  3. Select the Input Format of the historical CCDC Asset
  4. Select the recipe/EE path
  5. Select the Input Format of the forest mask

1

20 of 49

NRTM in SEPAL

20

25.07.23

Workflow

II - Applying a Forest Mask (optional)

  1. Open the recipe menu
  2. Click on the masking recipe
  3. Select the Input Format of the historical CCDC Asset
  4. Select the recipe/EE path
  5. Select the Input Format of the forest mask
  6. Select recipe/EE path for the forest mask

Note I: The mask shall consist of 0s (non-forest) and 1s (forest)

Note II: You can use a global mask of Primary Humid Tropical Forest in 2018 as in the example:

UMD/GLAD/PRIMARY_HUMID_TROPICAL_FORESTS/v1

1

21 of 49

NRTM in SEPAL

21

25.07.23

Workflow

II - Applying a Forest Mask (optional)

  1. Open the recipe menu
  2. Click on the masking recipe
  3. Select the Input Format of the historical CCDC Asset
  4. Select the recipe/EE path
  5. Select the Input Format of the forest mask
  6. Select recipe/EE path for the forest mask
  7. Rename recipe

Note: Masking is a very fast process, so you usually do no need to export the results, and can use the output of the masking recipe as input in the next recipe

1

22 of 49

NRTM in SEPAL

22

25.07.23

Workflow

III – Generation of alerts

  1. Open the recipe menu
  2. Click on the Change Alerts recipe

23 of 49

NRTM in SEPAL

23

25.07.23

Workflow

III – Generation of alerts

  1. Open the recipe menu
  2. Click on the Change Alerts recipe
  3. Define the source type of the (masked) historical layer

24 of 49

NRTM in SEPAL

24

25.07.23

Workflow

III – Generation of alerts

  1. Open the recipe menu
  2. Click on the Change Alerts recipe
  3. Define the source type of the (masked) historical layer
  4. Navigate to your Sepal recipe/EE Path

25 of 49

NRTM in SEPAL

25

25.07.23

Workflow

III – Generation of alerts

  1. Open the recipe menu
  2. Click on the Change Alerts recipe
  3. Define the source type of the (masked) historical layer
  4. Navigate to your Sepal recipe/EE Path
  5. Select the end data, and data range for calibration and monitoring period

Note I: The monitoring period can range from days to months. It should not be too short, as otherwise alerts cannot be confirmed, but also not too long, as otherwise confirmed alerts might be unflagged due to regrowth

Note II: The calibration period for 3 months works for most cases. In areas/seasons with dense cloud cover, this value might need to be increased due to scarcity of available image.

26 of 49

NRTM in SEPAL

26

25.07.23

Workflow

III – Generation of alerts

  1. Open the recipe menu
  2. Click on the Change Alerts recipe
  3. Define the source type of the (masked) historical layer
  4. Navigate to your Sepal recipe/EE Path
  5. Select the end data, and data range for calibration and monitoring period
  6. Select the Sensors and Analysis Band

Note I: Even though your CCDC asset is only based on Landsat data, you can select both Sentinel-2 and Landsat. Note II: Landsat-7, due to its striping issues might introduce artifacts.

Note III: If your CCDC asset has been exported, the bands that show up here will depend on the band selection during export.

27 of 49

NRTM in SEPAL

27

25.07.23

Workflow

III – Generation of alerts

  1. Open the recipe menu
  2. Click on the Change Alerts recipe
  3. Define the source type of the (masked) historical layer
  4. Navigate to your Sepal recipe/EE Path
  5. Select the end data, and data range for calibration and monitoring period
  6. Select the Sensors and Analysis Band
  7. Set pre-processing parameters

Make sure to align those with the ones in the historical CCDC asset

28 of 49

NRTM in SEPAL

28

25.07.23

Workflow

III – Generation of alerts

  1. Open the recipe menu
  2. Click on the Change Alerts recipe
  3. Define the source type of the (masked) historical layer
  4. Navigate to your Sepal recipe/EE Path
  5. Select the end data, and data range for calibration and monitoring period
  6. Select the Sensors and Analysis Band
  7. Set pre-processing parameters

1 Make sure to align those with the ones in the historical CCDC asset

2 Those can be independently set from the CCDC asset

1

2

29 of 49

NRTM in SEPAL

29

25.07.23

Workflow

III – Generation of alerts

  1. Open the recipe menu
  2. Click on the Change Alerts recipe
  3. Define the source type of the (masked) historical layer
  4. Navigate to your Sepal recipe/EE Path
  5. Select the end data, and data range for calibration and monitoring period
  6. Select the Sensors and Analysis Band
  7. Set pre-processing parameters
  8. Set algorithm parameters

Covered in IV – Instant verification and parameter tweaking

30 of 49

NRTM in SEPAL

30

25.07.23

Workflow

III – Generation of alerts

  1. Open the recipe menu
  2. Click on the Change Alerts recipe
  3. Define the source type of the (masked) historical layer
  4. Navigate to your Sepal recipe/EE Path
  5. Select the end data, and data range for calibration and monitoring period
  6. Select the Sensors and Analysis Band
  7. Set pre-processing parameters
  8. Set algorithm parameters
  9. Rename Recipe

31 of 49

NRTM in SEPAL

31

25.07.23

Workflow

IV – Visual inspection and parameter tweaking

  1. Stay in the Change Alert Menu
  2. Open the Multi-View Interface

32 of 49

NRTM in SEPAL

32

25.07.23

Workflow

IV – Visual inspection and parameter tweaking

  1. Stay in the Change Alert Menu
  2. Open the Multi-View Interface
  3. Set-up multi-view

Move the recipe 3 times to the left

1

2

3

33 of 49

NRTM in SEPAL

33

25.07.23

Workflow

IV – Visual inspection and parameter tweaking

  1. Stay in the Change Alert Menu
  2. Open the Multi-View Interface
  3. Set-up multi-view
  4. Note the visual button

For now, we have 4 equal windows showing the confidence of the detected alerts.

Our aim is to place:

- detection date on the top right

- a “before” median image composite on the lower left

- a “last valid pixel” composite on the lower right

1

2

3

34 of 49

NRTM in SEPAL

25.07.23

Workflow

IV – Visual inspection and parameter tweaking

  1. Stay in the Change Alert Menu
  2. Open the Multi-View Interface
  3. Set-up multi-view
  4. Note the visual button
  5. Add detection date window

1

2

3

35 of 49

NRTM in SEPAL

25.07.23

Workflow

IV – Visual inspection and parameter tweaking

  1. Stay in the Change Alert Menu
  2. Open the Multi-View Interface
  3. Set-up multi-view
  4. Note the visual button
  5. Add detection date window
  6. Add a “before” median image composite
  7. Add a “last valid pixel” image composite

Note: Pixels can come from different images, depending on cloud conditions and coverage of the AOI

1

2

3

4

5

36 of 49

NRTM in SEPAL

25.07.23

37 of 49

NRTM in SEPAL

25.07.23

Workflow

IV – Visual inspection and parameter tweaking

From the previous slide we can observe several issues with our alerts as they are:

  • Lots of low confidence alerts that seem to be related to image artifacts, rather than actual alerts
  • Actual alerts seem to pop up in green (strongly visible in the before after composites)
  • Lots of single pixels/small island patches

38 of 49

NRTM in SEPAL

25.07.23

Workflow

IV – Visual inspection and parameter tweaking

Check underlying time-series:

  1. Click on the time-series icon
  2. Select a point and click

Observation I: In this case a shift in seasonality seems to have triggered the alert. As the signal of the NDFI goes up, we can assume this is not a real alert. Indeed the before and after images do not show a “degreening” of that area.

39 of 49

NRTM in SEPAL

25.07.23

Workflow

IV – Visual inspection and parameter tweaking

Check underlying time-series:

  1. Click on the time-series icon
  2. Select a point and click

Observation II: In this case a strong, abrupt decrease in NDFI is observable that is consistent. The area is clearly visible in the before and after image composites. An actual alert is present.

40 of 49

Workflow

IV – Visual inspection and parameter tweaking

Adjusting the results – Basic Parameters:

  1. Increase the confidence to 10

This shall always be the first parameter to tweak, as it only indirectly affect the date of detection/confirmation

  • Increase the number of observations

This shall always be the second parameter to play with, as it always will delay the detection of an alert

41 of 49

Workflow

Confidence = 3 difference/RMSE

Confidence = 10 difference/RMSE

Confidence

42 of 49

Workflow

Confidence = 3 difference/RMSE

Confidence = 10 difference/RMSE

First detection date

43 of 49

Workflow

IV – Visual inspection and parameter tweaking

Adjusting the results – Advanced Parameters:

  1. Confirmed in monitoring:

If enabled, a changes already confirmed in the calibration period are masked out

  • Stable before change:

If enabled, changes outside the monitoring period (i.e. between the reference date (i.e. 1 year from new observation) and current observation are masked out

  • Must stay change

If enabled, detected changes, that due to regrowth or other phenomena adhere to non-change criteria after the change event, are masked out. This might be helpful, if the recipe is used for long-term observations of several months.

44 of 49

Workflow

IV – Visual inspection and parameter tweaking

Observations from previous slides:

Increasing the confidence threshold:

  • Removed a lot of noise
  • But - actual change appeared

How is it possible that actual change increases despite a higher confidence value?

This is possible if for example a change has been already confirmed in the calibration period when applying a lower confidence value. Due to later detection with a higher confidence interval, it may pop up. You can tweak that with a disabled “Confirmed in monitoring” setting in the advanced parameters.

Another possibility is that due to the lower confidence, the sensitivity to regrowth is higher, and the alert gets masked as it does not stay change. The respective option can be used to disable that.

45 of 49

Workflow

Confidence = 3 difference/RMSE

Confidence = 3 difference/RMSE with confirmed in monitor option disabled

Confidence

46 of 49

Workflow

V – Export and post-processing

Results can be exported both:

- to SEPAL (and from there to local)

- as Earth Engine asset

47 of 49

Workflow

V – Export and post-processing

Small islands can be removed by a script, where a user can:

- Define the Minimum Mapping Unit in hectare

- Use the Earth Engine exported Asset of the alerts

🡪 needs first_detection_date band included

Follow this link:

https://code.earthengine.google.com/8cf59d6e39d90c7d3bbdc4691f23a08a

48 of 49

Workflow

V – Export and post-processing

Unfiltered Alerts

Filtered Alerts with a MMU of 0.5 ha

49 of 49

Thank you!

Join the Platform

www.sepal.io

Browse the Open Foris suite of tools

http://openforis.org/