detecting and analyzing solar panels in
play

Detecting and Analyzing Solar Panels in Switzerland using Aerial - PowerPoint PPT Presentation

Detecting and Analyzing Solar Panels in Switzerland using Aerial Imagery (SolAI) Adrian Meyer Institute Geomatics University of Applied Sciences Northwestern Switzerland Team Institute Geomatics @ FHNW Project Partners Adrian Meyer Martin


  1. Detecting and Analyzing Solar Panels in Switzerland using Aerial Imagery (SolAI) Adrian Meyer Institute Geomatics University of Applied Sciences Northwestern Switzerland

  2. Team Institute Geomatics @ FHNW Project Partners Adrian Meyer Martin Hertach Data Scientist Federal Office for Energy (BFE) Prof. Denis Jordan Peter Barmet Statistics & Mathematics Energy Department of Canton Aargau (AG) Prof. Martin Christen Geoinformation & Computer Graphics 2

  3. SolA lAI – Detection of f Sola lar Systems IGEO/FHNW and Federal Office for Energy (BFE)

  4. son onnendach.ch 4

  5. Swiss Buildings 3D Dataset 5

  6. Dataset: 300 MB / sqkm Unkompressed TIF PNG Tiles: 1000x1000 Px (2-3 Mbyte)

  7. Summary of Input Data • We have: • Areal imagery (partially in 10cm 2 , partially 25cm 2 per Pixel) • Vector data / 3D Data of all roofs in Switzerland • Roof size and solar potential → There are around 2 million buildings in Switzerland in total • We don’t have: • Location, Size, and Type of solar panels (PV, Thermal) 7

  8. Deep Solar (2018) • https://github.com/wangzhecheng/DeepSolar Images: DeepSolar/Stanford

  9. Common Object Detection Tasks

  10. Faster RCNN & TF to Identify Tiles with Panels

  11. Train your own Solar Detector! • https://colab.research.google.com/github/ FHNW-IVGI/workshop_geopython2019/blob/master/ Ex.02_SolarPanels/FasterRCNN_Tutorial_MeyerA.ipynb • Availabe under: tinyurl.com/solar-detect 11

  12. 12

  13. Pre-Detection Photovoltaic Systems: 92% mAP Thermal Systems: 62% (ca. 30% are detected as PV)

  14. Multilayered Workflow • Split Swissimage Dataset into 1000x1000 px tiles • Using Faster RCNN to identify tiles with Solar Panels • Letting trained professional experts specify the geometry of a few thousand solar systems using Cloud Contribution Client • Train Mask RCNN to find geometry in single class paradigm • Run Inferencing on multi GPU HPC over the total area of Switzerland • Read/Write on NoSQL Databases • Train Xception + Random Forest to decide on class type of panel • GDAL Geoconversion to vector with joined attributes 14

  15. Next Step: Mask RCNN

  16. Instanciation

  17. Cloud Contribution Client for Labelling Code-Sprint: Europython 2019

  18. Labelling Workshop • 7’839 Image Tiles • 31’401 Polygons (22K PV) • 5 Days by 10 Experts

  19. Images 1 & 2 of 7‘839 2 weit eitere von on 7839 Bei Beispie iele len 24.07.2020 19

  20. Generating Masks as PNGs 13.3.2020 20

  21. Polygon Size Distribution of Solar Installations Number of Samples Area in Square Meters (m²) 21

  22. Framework Selection Source: Anto John, Oct 2018, IBM Developer Blog

  23. • Open Source Library for Machine Learning (BSD-License) • Based on Torch Framework (Lua, C++, CUDA), published in 2002 • PyTorch was published in October 2016 • Main Developers are the AI R&D Teams of Facebook • Development with Python Advantages: • Pythonic Interface • GPU Support with nice Interface • a.from_numpy/a.numpy torch tensor bridge • Pretrained Models available (Torchvision) • Multiple Optimizers (SGD/Adam/etc.) 13.3.2020 23

  24. Project: Mask RCNN for Early Warning Detection of Avalanches (Stamm, 2019) 24.07.2020 GeoForum 2019 24

  25. Hardware: HPE Apollo 6500 • 48 cores • 192 GB RAM • Attached to 120 TB HD (~1 GB/s) Nvidia Tesla V100 SXM2 • 21 Billion transistors • JupyterHub using: 4x • 5120 CUDA-cores • 900 GB/s Mem-Bandwidth • Python 3.7 – Kernel • 12nm • 300W • Python 3.6 – Kernel • R-Kernel • Custom Kernels 13.3.2020 25

  26. Running Pytorch in Jupyterlab 26

  27. Ext xtending Models & Mult lti GPU Support • In PyTorch we can add new custom datasets for object detection and instance segmentation by inheriting the class torch.utils.data.Dataset • PyTorch provides an example for that: https://pytorch.org/tutorials/intermediate/torchvision_tutorial.html • The tricky part is to support our 4 GPUs. Data Parallelism is implemented using torch.nn.DataParallel . • PyTorch doesn’t really provide many examples for multi-GPU, so it was a little bit try and error. October 10, 2019 Institute Geomatics 27

  28. lass torch.utils.data.Dataset inheriting the cla in … 28

  29. 0,00 0,10 0,20 0,30 0,40 0,50 0,60 0,70 0,80 0,90 Loss Graph Needs ±6 Epochs 1-200 1-800 1-1400 1-2000 1-2600 1-3200 1-3799 2-500 2-1100 2-1700 2-2300 2-2900 2-3500 3-200 3-800 3-1400 3-2000 3-2600 3-3200 3-3799 Model Run with Separate Classes (PV // THM // Other) 4-500 4-1100 4-1700 4-2300 4-2900 4-3500 5-200 5-800 5-1400 5-2000 5-2600 5-3200 5-3799 6-500 6-1100 6-1700 6-2300 6-2900 6-3500 7-200 7-800 7-1400 7-2000 7-2600 7-3200 7-3799 8-500 8-1100 8-1700 8-2300 8-2900 8-3500 9-200 9-800 9-1400 9-2000 9-2600 9-3200 9-3799 10-500 10-1100 10-1700 10-2300 10-2900 10-3500 29

  30. Preliminary Results: Metrics for Class Combination Precision Recall 0,9 0,9 0,8 0,8 0,7 0,7 0,6 0,6 0,5 0,5 0,4 0,4 0,3 0,3 0,2 0,2 0,1 0,1 0 0 Bbox 0.75 Bbox 0.5 Segm 0.75 Segm 0.5 Bbox 0.75 Bbox 0.5 Segm 0.75 Segm 0.5 3: PV / Thm / Other 2: PV / Thm+Other 3: PV / Thm / Other 2: PV / Thm+Other 1: PV+Thm+Other 1: PV+Thm+Other 30

  31. Statistical Linearity PV+Thm+Other Bounding box PV+Thm+Other Segmentation 0,63 0,53 0,61 0,59 0,51 0,57 Precision Precision 0,49 y = 1,6126x - 0,5041 0,55 R² = 0,9879 y = 1,3286x - 0,3368 R² = 0,9968 0,53 0,47 Segmentation Bounding box 0,51 Linear 0,45 Linear (Bounding 0,49 (Segmentation) box) 0,47 0,43 0,60 0,62 0,64 0,66 0,68 0,70 0,72 0,74 0,58 0,60 0,62 0,64 Recall Recall 31

  32. Results

  33. Challenges

  34. Challenge: Small Panels? • Single Class Paradigm (PV+Thm+Other) including no modules smaller than 3qm did not increase Precision or Recall → Cleaning up the Labels is more important 34

  35. Challenge Labels: Class «Others» • These elements probably are photovoltaic panels but display somewhat difficult characteristics 35

  36. Challenge Labels: Class «Other» • These are most likely NOT solar panels 36

  37. Challenge Labels: Class «Others» • Difficult 37

  38. Challenge: Labelling Mistakes 38

  39. Computational Load for a Single Run over Complete Switzerland • 4 Million Images with 2-3 Mbyte • Inferencing & IO Operation Duration per Image: CPU (44 Cores): 2.1 Seconds (100 Days) 1 GPU: 1.6 Seconds 4 GPUs: 1.0 Seconds (46 Days) 24.07.2020 39

  40. Job Scheduler Job Queue (MongoDB) Detection Detection Detection Detection Unlimited* Processes 10 Gbit/s swissimage 24.07.2020 40

  41. Optimization • Currently a Country Level Inferencing Run Takes ±10 Days • Still Potential with Model Optimizations • Inferencing Times for Tensorflow Possibly Faster but Requires TF Records • Increase the Load on GPUs • Hybrid CPUs/GPUs on Multiple HPCs 24.07.2020 41

  42. More Potentia ial: Optimization for hig igher GP GPU Loa Load 24.07.2020 42

  43. Outlook • Pytorch currently just supports ResNet50 • We want to try out ResNet101 or ResNet+Inception v2 but at the moment we would need Tensorflow for it • Trying different sets of optimizers • Adapt Learning Rate dynamically • Some more manual labelling • Post-Classification Strategies 43

  44. Big Data Inferencing & Classification Workflow Run multiple models for inferencing, using heuristic measures for edges and segment probability → Rasterio / fiona / GDAL 44

  45. Include Near- Infrared Data 10 cm GSD Coverage NIR Data

  46. Random Forest & Xception for Post-Classification Xception RGB & Cadastre NIR Data GIS Attributes Random Forest Classifier 46

  47. Thank you!

Recommend


More recommend