Drones, AI, and big data in forest ecology
I am developing an automated workflow for producing high-accuracy, spatially extensive (> 100 ha), species-specific stem maps of forest stands using drone imagery. Such maps have many potential applications: planning post-fire reforestation treatments, develping thinning and prescribed fire prescriptions, inventorying carbon stocks, and more. Based on preliminary development, we expect to be able to map > 300 ha of contiguous area in only 5 days of a single technician’s time (including collection of drone imagery using a single consumer drone). The workflow has several steps:
1. Image collection and photogrammetry
We collect many partially-overlapping drone photos across the site. This means any given tree appears in many photos, each from a slightly different angle.
Because each tree is visible from multiple angles, it is possible to use methodologies related to stereo vision (more generally known as photogrammetry) to estimate each tree’s 3D structure. The photogrammetry algorithm produces a 3D cloud of points that is very similar to LiDAR data.
The primary photogrammetry software we use is Metashape. Photogrammetry is very computationally-intensive, especially when processing large projects consisting of thousands of high-resoluation photos. Processing a single 100-ha area can take over a day on a standard PC. I am collaborating with several researchers at UC Davis to develop a Python library to allow for efficiently running multiple photogrammetry projects in parallel on a high-performance computing cluster at UC Davis.
View our Github repository.
2. Tree detection and identification
Largely inspired by the wokflow developed by Michael Koontz.
After producing a 3D point cloud from drone images, we run an algorithm to detect individual tree canopies based on their shapes. First, we compute a digital surface model from the point cloud data. This process simply involves identifying the highest-elevation point in each grid cell across a grid of a given resolution. I use the lidR package in R for this purpose.
Next, to remove the influence of underlying topography, I subtract from the digital surface model elevations the elevations from a high-resolution (10 m) USGS digital elevation model (DEM). The result is a canopy height model.
Next, I use a varible-window filter algorithm (implemented in the ForestTools R package) to detect individual tree canopies from the canopy height model.
The final step is to identify individual trees to species. I am developing a workflow to use the photos of each tree as input to a convolutional neural network (CNN) computer vision model for identification of trees to species.
My primary collaborator on this project is Andrew Latimer.
This project is supported by: