ShadowCast: On-the-Fly Context-Aware Shadow Augmentation for Remote Sensing Image Segmentation
Organizations: Gwangju Institute of Science and Technology (GIST), 123 Cheomdangwagi-ro, Buk-gu, Jeonnam-Gwangju, 61005, Korea · AI Laboratory, LIG Defense&Aerospace, 333 Pangyo-ro, Bundang-gu, Seongnam-si, Gyeonggi-do, 13488, Korea
Abstract
Shadows cast by elevated objects alter the spectral appearance and obscure the boundaries of objects in remote sensing images, thereby degrading semantic segmentation performance. Most existing approaches handle shadows as degradations to be detected and removed, requiring additional costs from dedicated networks and shadow-specific annotations. We propose ShadowCast, which takes the opposite approach: it synthesizes shadows and injects them during training for remote sensing segmentation. It extracts masks of elevated objects, such as buildings and trees, directly from the segmentation labels and estimates an image-specific cast-shadow direction cue by probing the brightness around them. It then projects synthetic shadows along the inferred cast-shadow direction, requiring no learned network and no acquisition metadata. Experiments on three widely used remote sensing benchmarks, Vaihingen, Potsdam, and LoveDA, show that ShadowCast consistently outperforms the baseline across diverse state-of-the-art segmentation architectures. Moreover, it brings additional performance gains when combined with standard augmentation and regularization techniques, indicating that stochastic shadow injection serves as a simple and complementary augmentation strategy for remote sensing segmentation.
Figures & tables
| Cast-shadow direction | Vaihingen | Potsdam | LoveDA |
| No shadow augmentation | 77.53 0.30 | 82.95 0.10 | 43.29 0.77 |
| Random direction | 78.14 0.10 | 83.13 0.14 | 43.61 0.50 |
| Estimated direction | 78.20 0.07 | 83.22 0.13 | 44.45 0.30 |
| + Jittering ( Ours ) | 78.46 0.19 | 83.32 0.09 | 44.89 0.09 |
| Model | Vaihingen | Potsdam | LoveDA | |||
| Baseline | ShadowCast | Baseline | ShadowCast | Baseline | ShadowCast | |
| DeepLabV3+ [ 20 ] | 77.53 0.30 (+0.00) | 78.46 0.19 ( +0.93 ) | 82.95 0.10 (+0.00) | 83.32 0.09 ( +0.37 ) | 43.29 0.77 (+0.00) | 44.89 0.09 ( +1.60 ) |
| DANet [ 21 ] | 79.59 0.61 (+0.00) | 80.20 0.06 ( +0.61 ) | 84.47 0.24 (+0.00) | 84.88 0.04 ( +0.41 ) | 43.35 0.78 (+0.00) | 44.43 0.85 ( +1.08 ) |
| APCNet [ 22 ] | 79.15 0.85 (+0.00) | 80.53 0.18 ( +1.38 ) | 84.73 0.13 (+0.00) | 85.05 0.01 ( +0.32 ) | 46.46 0.60 (+0.00) | 47.94 0.17 ( +1.48 ) |
| OCRNet [ 23 ] | 75.39 0.79 (+0.00) | 77.88 0.43 ( +2.49 ) | 82.62 0.11 (+0.00) | 83.03 0.12 ( +0.41 ) | 44.26 0.66 (+0.00) | 44.84 0.32 ( +0.58 ) |
| InternImage [ 24 ] | 81.95 0.11 (+0.00) | 82.35 0.05 ( +0.40 ) | 86.22 0.08 (+0.00) | 86.35 0.00 ( +0.13 ) | 51.87 0.18 (+0.00) | 53.11 0.20 ( +1.24 ) |
| Augmentation | Vaihingen | Potsdam | LoveDA |
| No shadow augmentation | 77.53 0.30 | 82.95 0.10 | 43.29 0.77 |
| RandomShadow [ 13 ] | 78.36 0.04 | 83.15 0.12 | 43.67 0.40 |
| PlasmaShadow [ 13 ] | 76.98 0.19 | 82.37 0.11 | 44.01 0.17 |
| SynShadow [ 30 ] | 78.18 0.05 | 83.11 0.14 | 43.58 0.33 |
| SDAA [ 31 ] | 77.87 0.08 | 83.21 0.12 | 43.12 0.60 |
| Zhong et al. [ 32 ] | 78.07 0.19 | 83.24 0.12 | 43.46 0.56 |
| Existing method | Vaihingen | Potsdam | LoveDA | |||
| Baseline | ShadowCast | Baseline | ShadowCast | Baseline | ShadowCast | |
| Horizontal Flip [00] | 78.62 0.19 (+0.00) | 79.08 0.06 ( +0.46 ) | 84.00 0.12 (+0.00) | 84.32 0.08 ( +0.32 ) | 43.81 0.60 (+0.00) | 45.88 0.52 ( +2.07 ) |
| Random Resize [00] | 80.04 0.38 (+0.00) | 80.36 0.02 ( +0.32 ) | 84.37 0.13 (+0.00) | 84.50 0.03 ( +0.13 ) | 45.11 0.31 (+0.00) | 46.70 0.97 ( +1.59 ) |
| Photometric Distortion [00] | 77.33 0.35 (+0.00) | 77.86 0.12 ( +0.53 ) | 82.76 0.13 (+0.00) | 83.13 0.05 ( +0.37 ) | 47.19 0.64 (+0.00) | 48.45 0.21 ( +1.26 ) |
| CLAHE [ 36 ] [00] | 78.33 0.12 (+0.00) | 78.46 0.04 ( +0.13 ) | 83.13 0.25 (+0.00) | 83.30 0.27 ( +0.17 ) | 43.92 0.78 (+0.00) | 44.59 0.49 ( +0.67 ) |
| CutOut [ 14 ] [00] | 78.29 0.69 (+0.00) | 79.18 0.30 ( +0.89 ) | 83.27 0.03 (+0.00) | 83.56 0.07 ( +0.29 ) | 44.54 0.46 (+0.00) | 46.27 0.75 ( +1.73 ) |
| Dataset | Method | Shadowed | Non-shadowed |
| Vaihingen | Baseline | 57.88 0.95 | 82.77 0.37 |
| ShadowCast | 58.18 0.48 ( +0.30 ) | 83.26 0.33 ( +0.49 ) | |
| Potsdam | Baseline | 81.85 0.93 | 81.50 3.00 |
| ShadowCast | 82.27 0.13 ( +0.42 ) | 82.85 2.07 ( +1.35 ) | |
| LoveDA | Baseline | 26.83 1.34 | 38.86 1.48 |
| ShadowCast | 27.14 0.71 ( +0.31 ) | 39.41 1.13 ( +0.55 ) |
| mIoU | |||||
| (5, 30) | (0.5, 0.8) | 15 | 50 | 8 | 78.46 0.19 |
| (5, 20) | (0.5, 0.8) | 15 | 50 | 8 | 78.25 0.33 |
| (5, 40) | (0.5, 0.8) | 15 | 50 | 8 | 78.22 0.18 |
| (5, 30) | (0.4, 0.7) | 15 | 50 | 8 | 78.35 0.12 |
| (5, 30) | (0.6, 0.9) | 15 | 50 | 8 | 78.10 0.36 |
| (5, 30) | (0.5, 0.8) | 0 | 50 | 8 | 78.20 0.07 |
| mIoU | |||||
| (5, 30) | (0.5, 0.8) | 15 | 50 | 8 | 83.32 0.09 |
| (5, 20) | (0.5, 0.8) | 15 | 50 | 8 | 83.24 0.13 |
| (5, 40) | (0.5, 0.8) | 15 | 50 | 8 | 83.27 0.11 |
| (5, 30) | (0.4, 0.7) | 15 | 50 | 8 | 83.26 0.12 |
| (5, 30) | (0.6, 0.9) | 15 | 50 | 8 | 83.18 0.11 |
| (5, 30) | (0.5, 0.8) | 0 | 50 | 8 | 83.22 0.13 |
| mIoU | |||||
| (5, 30) | (0.5, 0.8) | 15 | 50 | 8 | 44.89 0.09 |
| (5, 20) | (0.5, 0.8) | 15 | 50 | 8 | 44.15 0.23 |
| (5, 40) | (0.5, 0.8) | 15 | 50 | 8 | 44.20 0.21 |
| (5, 30) | (0.4, 0.7) | 15 | 50 | 8 | 44.29 0.47 |
| (5, 30) | (0.6, 0.9) | 15 | 50 | 8 | 44.21 0.23 |
| (5, 30) | (0.5, 0.8) | 0 | 50 | 8 | 44.45 0.30 |
| Model | Backbone | Optimizer | Initial LR | Weight decay | Minimum LR |
| DeepLabV3+ | ResNet-18 | SGD | 0.01 | ||
| DANet | ResNet-50 | SGD | 0.01 | ||
| APCNet | ResNet-50 | SGD | 0.01 | ||
| OCRNet | HRNet-W18-Small | SGD | 0.01 | ||
| InternImage | InternImage-T | SGD | 0.01 | ||
| DOCNet | HRNet-W32 | AdamW | 0 |
| Method | Implementation | Parameters |
| Horizontal Flip | MMSeg | |
| Random Resize | MMSeg | Scale ratio relative to ( for LoveDA); aspect ratio preserved |
| Photometric Distortion | MMSeg | Brightness shift ; contrast and saturation factors ; integer hue shift (OpenCV hue scale); each applied with probability 0.5 |
| CLAHE [ 36 ] | Albumentations | ; clip limit ; tiles; applied to the CIELAB lightness channel |
| CutOut [ 14 ] | MMSeg | ; 5-10 holes of or pixels; image filled with 0 and labels with the ignore index 255 |
| CutMix [ 15 ] | Custom | ; patch area ratio ; image and label patches from another training sample |
| Method | Implementation | Parameters |
| ShadowCast (Ours) | - | ; pixels; ; ; pixels; pixels; for Vaihingen and Potsdam and for LoveDA |
| RandomShadow [ 13 ] | Albumentations | ; 1 or 2 triangles with vertices sampled over the whole image; shadow intensity |
| PlasmaShadow [ 13 ] | Albumentations | ; roughness 3.0; plasma size 256; shadow intensity |
| SynShadow [ 30 ] | Ported | ; 10 000 rendered mattes of [ 30 ] ; ; ; channel offsets ; random horizontal flip; minimum matte coverage 0.005; up to 5 trials |
| SDAA [ 31 ] | Re-implemented | ; mask from as in ShadowCast ; direction for each image; shift pixels; gamma |
| Zhong et al. [ 32 ] | Ported | ; one triangle with vertices in units of the image height and width; lightness scaled by ; 3-pixel edge blur; up to 10 trials |
| Class | Vaihingen | Potsdam | Class | LoveDA | |||
| Baseline | ShadowCast | Baseline | ShadowCast | Baseline | ShadowCast | ||
| Non-elevated classes | |||||||
| Impervious surface | 83.08 0.17 | 83.93 0.06 (+0.85) | 84.49 0.25 | 84.87 0.14 (+0.38) | Background | 49.30 0.73 | 50.19 0.12 (+0.89) |
| Low vegetation | 68.44 0.55 | 69.36 0.60 (+0.92) | 73.50 0.25 | 73.82 0.05 (+0.32) | Road | 48.40 0.96 | 49.24 0.71 (+0.84) |
| Car | 69.48 0.61 | 71.05 0.19 (+1.57) | 89.94 0.24 | 90.35 0.26 (+0.41) | Water | 47.89 1.71 | 54.39 0.97 (+6.50) |
| Barren | 19.48 0.96 | 20.38 1.45 (+0.90) | |||||
| Vaihingen | Potsdam | LoveDA | |
| Baseline | 77.53 0.30 | 82.95 0.10 | 43.29 0.77 |
| ShadowCast (Default: Hard-shadow) ( ) | 78.46 0.19 | 83.32 0.09 | 44.89 0.09 |
| ShadowCast (Soft-shadow) ( ) | 77.79 0.12 | 82.98 0.13 | 43.36 0.24 |
| Method | Vaihingen | Potsdam | LoveDA |
| Baseline | 77.53 0.30 | 82.95 0.10 | 43.29 0.77 |
| ShadowCast (Default) | 78.46 0.19 ( 0.93) | 83.32 0.09 ( 0.37) | 44.89 0.09 ( 1.60) |
| ShadowCast (+ Confidence checks) | 78.18 0.57 ( 0.65) | 83.22 0.04 ( 0.27) | 43.90 0.30 ( 0.61) |
| Limitation | Example | Observed failure | Underlying cause |
| Shadow length and shape | Fig. S4 (a) | Shadows too short; shape does not follow the object | Same shift range for all object heights; single shift of the top-view mask |
| Unclear direction | Fig. S4 (b) | Arbitrary direction in an already shaded area | No brightness difference between sides |
| Neighboring shadows | Fig. S4 (c) | Wrong side appears darkest | No link between shadows and casters; averaging over all objects |
Remote Sensing Image Segmentation
Remote sensing image segmentation labels land cover and objects in satellite, aerial, radar, and multispectral imagery.
See all 220 papers