Real-Time Monocular Scene Analysis for UAV in Outdoor Environments
Organizations: University of Genova; DRIM; Ph.D. Program of National Interest in Robotics and Intelligent Machines; Administrative Headquarters: Università di Genova
Abstract
In this thesis, we leverage monocular cameras on aerial robots to predict depth and semantic maps in low-altitude unstructured environments. We propose a joint deep-learning architecture, named Co-SemDepth, that can perform the two tasks accurately and rapidly, and validate its effectiveness on a variety of datasets. The training of neural networks requires an abundance of annotated data, and in the UAV field, the availability of such data is limited. We introduce a new synthetic dataset in this thesis, TopAir that contains images captured with a nadir view in outdoor environments at different altitudes, helping to fill the gap. While using synthetic data for the training is convenient, it raises issues when shifting to the real domain for testing. We conduct an extensive analytical study to assess the effect of several factors on the synthetic-to-real generalization. Co-SemDepth and TaskPrompter models are used for comparison in this study. The results reveal a superior generalization performance for Co-SemDepth in depth estimation and for TaskPrompter in semantic segmentation. Also, our analysis allows us to determine which training datasets lead to a better generalization. Moreover, to help attenuate the gap between the synthetic and real domains, image style transfer techniques are explored on aerial images to convert from the synthetic to the realistic style. Cycle-GAN and Diffusion models are employed. The results reveal that diffusion models are better in the synthetic to real style transfer. In the end, we focus on the marine domain and address its challenges. Co-SemDepth is trained on a collected synthetic marine data, called MidSea, and tested on both synthetic and real data. The results reveal good generalization performance of Co-SemDepth when tested on real data from the SMD dataset while further enhancement is needed on the MIT dataset.
Figures & tables
| Board | GPU? | Memory | Storage | Power |
|---|---|---|---|---|
| Arduino Uno [ arduino_uno ] | No | 32KB | - | 5V |
| Arduino Portenta [ arduino_port ] | No | 2MB | 16MB | 5V |
| Rapberry Pi [ raspberry ] | No | 8GB | 8GB | 15W |
| Jetson Nano [ jetson ] | Yes | 4GB | 16GB | 5W-10W |
| Jetson TX2 [ jetson ] | Yes | 4/8GB | 16/32GB | 7.5W-15W |
| Jetson Xavier NX [ jetson ] | Yes | 8/16GB | 16GB | 10W-20W |
| Architecture | Output | Params(M) | Inf. Time (ms/f) | Semantic | Depth | ||||
|---|---|---|---|---|---|---|---|---|---|
| mIoU | RMSE | RelErr | |||||||
| M4Depth | D | 3.06 | 44.9 | - | 6.99 | 0.109 | 92.0% | 95.4% | 97.0% |
| M4Semantic | S | 2.61 | 9.8 | 76.80 % | - | - | - | - | - |
| Co-SemDepth | D+S | 5.2 | 49.6 | 75.44% | 6.70 | 0.096 | 92.3 % | 95.7 % | 97.2 % |
| Method | optimizer | lr | sched wt decay | max iter | epochs | batch |
|---|---|---|---|---|---|---|
| FCN | Adam | - | - | 60 | 4 | |
| ERFNet | Adam | - | 60 | 6 | ||
| SegFormer-B0 | Adam | 80K | - | 4 | ||
| RefineNet | Adam | - | 60 | 8 | ||
| TaskPrompter | Adam | 80K | - | 3 |
| Method | Output | Params(M) | Inf. Time (ms/f) | Semantic | Depth | ||||
|---|---|---|---|---|---|---|---|---|---|
| mIoU | RMSE | RelErr | |||||||
| MonoDepth2 ∗ | D | 14.8 | 23.9 | - | 12.35 | 0.394 | 61.0% | 75.1% | 83.3% |
| ST-CLSTM ∗ | D | 15.04 | 35.3 | - | 13.69 | 0.404 | 75.1% | 86.5% | 91.1% |
| ManyDepth ∗ | D | 46.3 | 82.9 | - | 10.92 | 0.203 | 72.3% | 87.6% | 93.3% |
| PWCDC-Net ∗ | D | 9.4 | 25.8 | - | 8.35 | 0.095 | 88.7% | 93.8% | 96.2% |
| DepthAnythingV2 @ | D | 24.8 | 75.2 | - | 33.37 | 0.640 | 12.3% | 25.6% | 39.7% |
| Method | Sky | Water | Trees | Land | Boulders | Road | Others | mIoU |
| FCN(VGG16) [ fcn ] | 88.56% | 83.12% | 75.50% | 82.30% | 29.97% | 88.04% | 54.60% | 72.93% |
| FCN(MobileNetv2) [ fcn ] | 87.82% | 82.42% | 73.42% | 81.28% | 26.57% | 84.64% | 46.09% | 69.82% |
| ERFNet [ romera2017erfnet ] | 91.50% | 87.64% | 82.48% | 85.10% | 40.63% | 90.90% | 63.70% | 77.42% |
| SegFormer-B0 [ xie2021segformer ] | 90.54% | 88.58% | 79.70% | 83.33% | 30.13% | 92.19% | 61.20% | 75.10% |
| RefineNet [ nekrasov2019real ] | 89.70% | 81.60% | 79.70% | 82.20% | 30.15% | 91.36% | 54.10% | 72.69% |
| TaskPrompter [ taskprompter ] | 90.60% | 87.10% | 79.10% | 85.30% | 41.00% | 95.30% | 83.20% | 80.23 % |
| RMSE | AbsRelErr | |||
|---|---|---|---|---|
| 14.9 | 0.303 | 58.7% | 80.7% | 91.5% |
| Sky | Water | Trees | Land | Rocks | Road | Others | mIoU |
| - | 0.9% | 32.8% | 34.8% | - | 14.9% | 0% | 16.7% |
| Method | Params(M) | P/S | Open-Source | mIoU |
|---|---|---|---|---|
| FCN-8S [ zheng2023deep ] | 14.7 | P | No | 43.12% |
| FCN-16S [ zheng2023deep ] | 14.7 | P | No | 44.52% |
| FCN-32S [ zheng2023deep ] | 14.7 | P | No | 45.51% |
| FCN-ImageNet-4S [ aeroscapes ] | 14.7 | P | No | 48.96% |
| FCN-Cityscapes [ aeroscapes ] | 14.7 | P | No | 49.55% |
| FCN-ADE20K [ aeroscapes ] | 14.7 | P | No | 51.62% |
| Architecture | Inf. Time (ms/f) | mIoU |
|---|---|---|
| M4Semantic (4level) | 9 | 75.1% |
| M4Semantic (5level) | 9.8 | 76.8 % |
| M4Semantic (6level) | 10.9 | 74.9% |
| Original-{DINL} | 9.5 | 75.6% |
| Original-{Normalize} | 9.7 | 74.1% |
| Original+{SNCV} | 17.7 | 71.9% |
| Setting | Value |
|---|---|
| SimMode | ComputerVision |
| ImageType | 0, 3, 5 |
| RecordOnMove | True |
| RecordInterval | 0.05 (Sec) |
| Width | 384 |
| Height | 384 |
| Train Dataset | optimizer | lr | weight decay | epochs | batch | Train size | Valid size | resolution |
|---|---|---|---|---|---|---|---|---|
| MidAir+TopAir | Adam | - | 60 | 3 | 16868 | 5381 | ||
| SkyScenes+SynDrone | Adam | - | 60 | 3 | 12972 | 4138 |
| Train Dataset | optimizer | lr | weight decay | iterations | batch | train size | valid size | resolution |
|---|---|---|---|---|---|---|---|---|
| MidAir+TopAir | Adam | 80k | 3 | 16868 | 5381 | |||
| SkyScenes+SynDrone | Adam | 80k | 3 | 12972 | 4138 |
| Test Data | Train Data | Method | Params | RMSE | AbsRelErr | |||
|---|---|---|---|---|---|---|---|---|
| WildUAV | MidAir+TopAir | Co-SemDepth | 5.2M | 14.9 | 0.303 | 58.7 % | 80.7 % | 91.5 % |
| TaskPrompter | 126M | 21.26 | 0.459 | 18.5% | 37.5% | 54.5% | ||
| SkyScenes+SynDrone | Co-SemDepth | 5.2M | 18.9 | 0.388 | 33.78% | 58.6% | 73.4% | |
| TaskPrompter | 126M | 23 | 0.48 | 10.5% | 25.2% | 46.2% |
| Test Data | Method | Train Data | Finetuning Data | RMSE | AbsRelErr | |||
|---|---|---|---|---|---|---|---|---|
| WildUAV | TaskPrompter | MidAir+TopAir | - | 21.26 | 0.459 | 18.49% | 37.46% | 54.54% |
| Dronescapes | 15.87 | 0.32 | 31.42 % | 62.39 % | 84.27 % | |||
| TaskPrompter | SkyScenes+SynDrone | - | 23 | 0.48 | 10.5% | 25.2% | 46.2% | |
| Dronescapes | 18.05 | 0.354 | 29.4% | 53.86% | 73.14% | |||
| DroneScapes | TaskPrompter | MidAir+TopAir | - | 96.77 | 0.78 | 0.1% | 0.6% | 2.5% |
| Dronescapes | 76.12 | 0.485 | 8.12% | 34.53% | 55.15% |
| Test Data | Train Data | Method | Params | Sky | Water | Trees | Land | Vehicle | Rocks | Road | Building | Others |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| WildUAV | MidAir+TopAir | Co-SemDepth | 5.2M | - | 0.93% | 32.8% | 34.76% | 0% | - | 14.9% | - | 0% |
| TaskPrompter | 126M | - | 61.66% | 55.36 % | 67.63 % | 1.65% | - | 53.5 % | - | 3.1% | ||
| SkyScenes+SynDrone | Co-SemDepth | 5.2M | - | 17.63% | 4.2% | 14.1% | 1.2% | - | 1.8% | - | 0.04% | |
| TaskPrompter | 126M | - | 62.1 % | 51% | 62.05% | 46.2 % | - | 45.9% | - | 5.9 % | ||
| FSI | MidAir+TopAir | Co-SemDepth | 5.2M | - | 10.1% | 40.6% | 34.67% | 0% | - | 9.14% | 1.43% | 0.01% |
| TaskPrompter | 126M | - | 49.57 % | 67.36 % | 63.7% | 3.32% | - | 34.1% | 59.83 % | 1.73% |
| Test Data | Train Data | Finetuning Data | Method | Sky | Water | Trees | Land | Vehicle | Rocks | Road | Building | Others |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| WildUAV | MidAir+TopAir | - | TaskPrompter | - | 61.66% | 55.36% | 67.63% | 1.65% | - | 53.5% | - | 3.1% |
| Dronescapes | - | 59.36% | 56.88% | 77.54% | 7.62% | - | 39.12% | - | 2.6% | |||
| SkyScenes+SynDrone | - | TaskPrompter | - | 62.1% | 51% | 62.05% | 46.2% | - | 45.9% | - | 5.9% | |
| Dronescapes | - | 63.9% | 47.77% | 55.66% | 22.89% | - | 45.26% | - | 5.5% | |||
| RuralScapes | MidAir+TopAir | - | TaskPrompter | 92.7% | 9.13% | 40.14% | 42.12% | 0.2% | - | 23.1% | 31.45% | 6.8% |
| Dronescapes | 89.61% | 14.07% | 46.8% | 47.65% | 2.1% | - | 33.6% | 46.93% | 7.8% |
| Method | Semantic Metrics | Depth Metrics | ||||
|---|---|---|---|---|---|---|
| mIoU | RMSE | AbsRelErr | ||||
| Base CoSemDepth | 83.38% | 4.24 | 0.092 | 81.7% | 95.5% | 98.5% |
| CoSemDepth + custom augm. | 91.21% | 3.59 | 0.081 | 88.0% | 97.3% | 98.9% |
| Finetuned MoCo | 75.0% | 9.03 | 0.265 | 67.3% | 79.1% | 87.4% |
| ViT+DINO encoder | 79.11% | 9.42 | 0.221 | 65.0% | 75.2% | 83.4% |
Appendix figures & tables2 assets
Supplementary material from the paper’s appendix.