Predicting Void Points in Self-Occluding Forest Volumes
Organizations: Institute of Computer Graphics, Johannes Kepler University Linz, Austria
Abstract
Synthetic Aperture Imaging (SAI) enables drones to observe forest canopies by warping and averaging multiple displaced views at a common depth. However, occlusion is suppressed rather than eliminated, causing poorly observed regions to appear occupied and leading to systematic biomass overestimation. The Deep Forest project cannot distinguish reconstruction artifacts from real vegetation because its training data relies on measured reflectance points, excluding empty space and preventing the network from learning explicit occupancy boundaries. This thesis addresses the problem by modifying training labels rather than the imaging process. Each simulated scene is rendered twice: as a 9x9 grid of top-down captures for focal-stack generation and as 550 depth-clipped slabs derived from scene geometry to provide occupancy labels, explicitly representing void space as a negative class. A Gazebo pipeline generates procedural forest stands containing 80-200 trees across three species. A pretrained Pix2Pix model translates rendered RGB images into a synthetic near-infrared band, and Light Field Rendering produces aligned focal stacks of 550 planes across three channels. Four architectures were evaluated on a held-out scene. The plain 2D U-Net achieved an IoU of 0.6290, outperforming the volumetric 3D U-Net (0.5707). Established reconstruction methods performed substantially worse: COLMAP achieved 0.3446 and DepthAnything3 0.2959, both after their respective optimal dilation sweeps. An RGB-input variant of the volumetric architecture achieved the highest IoU of 0.6514 without dilation or per-scene calibration. These results highlight the limitations of conventional reconstruction methods, which recover visible surfaces but struggle to infer occupancy within closed canopies.
Figures & tables
| Approach | Input | Output | Interior | Needs labels |
|---|---|---|---|---|
| SfM / MVS [ 18 ] | Multi-view | Sparse points | Partial | No |
| Learned depth prediction | One or more views | Depth map | No | No |
| LiDAR [ 5 ] | Active scan | Dense points | Partial | No |
| DeepForest [ 22 ] | Focal stack | Reflectance | Yes | Yes |
| This work | Focal stack | Occupancy | Yes | Yes |
| Group | Parameter | Value |
| Forest | Patch size | units |
| Trees per scene | 80 to 200 (16-value cycle) | |
| Random seed | Scene number | |
| Ground texture index | 0 | |
| Direct spawning | Enabled | |
| Species | Birch | 40 % of trees |
| Parameter | Value |
|---|---|
| Render resolution | |
| Field of view | |
| Input views per plane | 81 |
| Focal planes | 550 |
| Near focal depth | units |
| Far focal depth | units |
| Role | Scenes | Samples |
|---|---|---|
| Training | All remaining Scene_* | 550 per scene, augmented |
| Validation | Scene_202 , Scene_204 , Scene_205 | 1,650 |
| Test | Scene_201 | 550 |
| Version | Type | Input | Depth reasoning | Parameters | Channels |
|---|---|---|---|---|---|
| v1 | 2D U-Net | None | 1,885,441 | RGB | |
| v2 | 2D U-Net, 12 channels | Channel-wise | 1,890,625 | RED, NIR, NDVI | |
| v3 | 3D U-Net, from scratch | Volumetric | 5,638,481 | RED, NIR, NDVI | |
| v4 | Dual-head 3D CNN | Per-voxel patch | 2,931,362 per layer | GRAY |
| Parameter | Type | Range or value |
|---|---|---|
| Batch size | Categorical | |
| Learning rate | Log-uniform | to |
| Initial features | Categorical | |
| Encoder depth | Integer | 2 to 4 |
| Input size | Fixed | |
| Focal planes | Fixed | 4 of a 16-plane window |
| Trial | Val. loss | Batch | Features | Depth | Bottleneck | Learning rate |
|---|---|---|---|---|---|---|
| 16 | 0.3382 | 4 | 16 | 4 | 256 | |
| 13 | 0.3405 | 4 | 16 | 4 | 256 | |
| 7 | 0.3426 | 4 | 16 | 3 | 128 | |
| 18 | 0.3396 | 2 | 32 | 4 | 512 | |
| 0 | 0.3502 | 4 | 16 | 4 | 256 |
| Model | 301 (150) | 302 (175) | 303 (200) | Pooled |
|---|---|---|---|---|
| v1 (2D U-Net) | 0.6033 | 0.6069 | 0.5903 | 0.5993 |
| v2 (multi-channel) | 0.5632 | 0.5710 | 0.6145 | 0.5857 |
| v3 (3D U-Net) | 0.5669 | 0.5522 | 0.5883 | 0.5706 |
| v3 before search | 0.5407 | 0.5362 | 0.5597 | 0.5466 |
| v3b (RGB) | 0.6528 | 0.6540 | 0.6874 | 0.6668 |
| Metric | Before search | After search | Change |
| Precision | 0.8052 | 0.7800 | |
| Recall | 0.6296 | 0.6802 | |
| F1 / Dice | 0.7067 | 0.7267 | |
| Specificity | 0.9360 | 0.9194 | |
| Accuracy | 0.8453 | 0.8486 | |
| Balanced accuracy | 0.7828 | 0.7998 |
| Threshold (8-bit) | Probability | IoU | Dice |
|---|---|---|---|
| 50 | 0.20 | 0.5951 | 0.7462 |
| 65 | 0.25 | 0.6062 | 0.7549 |
| 70 | 0.27 | 0.6077 | 0.7560 |
| 75 | 0.29 | 0.6082 | 0.7564 |
| 80 | 0.31 | 0.6079 | 0.7562 |
| 85 | 0.33 | 0.6069 | 0.7554 |
| Method | Optimal Dilation Iterations | Peak IoU | Peak Dice |
|---|---|---|---|
| 3D U-Net (v3b) | 0 | 0.6514 | 0.7889 |
| COLMAP (SfM) | 40 | 0.3446 | 0.5126 |
| DepthAnything3 | 79 | 0.2959 | 0.4567 |
| Campaign | Date | Canopy state | v3 density | v3b density |
|---|---|---|---|---|
| October | 2024-10-25 | fall | 0.143 | 0.011 |
| March | 2025-03-03 | leaf-off | 0.084 | 0.012 |
| May | 2025-05-14 | full leaf-on | 0.022 | 0.010 |