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

detecting and analyzing solar panels in
SMART_READER_LITE
LIVE PREVIEW

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


slide-1
SLIDE 1

Detecting and Analyzing Solar Panels in Switzerland using Aerial Imagery (SolAI)

Adrian Meyer Institute Geomatics University of Applied Sciences Northwestern Switzerland

slide-2
SLIDE 2

Team

Institute Geomatics @ FHNW Project Partners Adrian Meyer

Data Scientist

Martin Hertach

Federal Office for Energy (BFE)

  • Prof. Denis Jordan

Statistics & Mathematics

Peter Barmet

Energy Department of Canton Aargau (AG)

  • Prof. Martin Christen

Geoinformation & Computer Graphics

2

slide-3
SLIDE 3

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

slide-4
SLIDE 4

son

  • nnendach.ch

4

slide-5
SLIDE 5

Swiss Buildings 3D Dataset

5

slide-6
SLIDE 6

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

slide-7
SLIDE 7

Summary of Input Data

7

  • We have:
  • Areal imagery (partially in 10cm2, partially 25cm2 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)
slide-8
SLIDE 8

Deep Solar (2018)

  • https://github.com/wangzhecheng/DeepSolar

Images: DeepSolar/Stanford

slide-9
SLIDE 9

Common Object Detection Tasks

slide-10
SLIDE 10

Faster RCNN & TF to Identify Tiles with Panels

slide-11
SLIDE 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

slide-12
SLIDE 12

12

slide-13
SLIDE 13

Pre-Detection

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

slide-14
SLIDE 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

slide-15
SLIDE 15

Next Step: Mask RCNN

slide-16
SLIDE 16

Instanciation

slide-17
SLIDE 17

Cloud Contribution Client for Labelling

Code-Sprint: Europython 2019

slide-18
SLIDE 18

Labelling Workshop

  • 7’839 Image Tiles
  • 31’401 Polygons (22K PV)
  • 5 Days by 10 Experts
slide-19
SLIDE 19

24.07.2020 19

2 weit eitere von

  • n 7839 Bei

Beispie iele len

Images 1 & 2 of 7‘839

slide-20
SLIDE 20

20 13.3.2020

Generating Masks as PNGs

slide-21
SLIDE 21

Polygon Size Distribution of Solar Installations

21

Area in Square Meters (m²) Number of Samples

slide-22
SLIDE 22

Framework Selection

Source: Anto John, Oct 2018, IBM Developer Blog

slide-23
SLIDE 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.)

23 13.3.2020

slide-24
SLIDE 24

24.07.2020 GeoForum 2019 24

Project: Mask RCNN for Early Warning Detection of Avalanches (Stamm, 2019)

slide-25
SLIDE 25
  • JupyterHub using:
  • Python 3.7 – Kernel
  • Python 3.6 – Kernel
  • R-Kernel
  • Custom Kernels

4x

Nvidia Tesla V100 SXM2

  • 21 Billion transistors
  • 5120 CUDA-cores
  • 900 GB/s Mem-Bandwidth
  • 12nm
  • 300W

Hardware: HPE Apollo 6500

  • 48 cores
  • 192 GB RAM
  • Attached to 120 TB HD (~1 GB/s)

25 13.3.2020

slide-26
SLIDE 26

Running Pytorch in Jupyterlab

26

slide-27
SLIDE 27

October 10, 2019 Institute Geomatics 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.
slide-28
SLIDE 28

28

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

slide-29
SLIDE 29

Loss Graph Needs ±6 Epochs

29

0,00 0,10 0,20 0,30 0,40 0,50 0,60 0,70 0,80 0,90 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 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

Model Run with Separate Classes (PV // THM // Other)

slide-30
SLIDE 30

Preliminary Results: Metrics for Class Combination

30

0,1 0,2 0,3 0,4 0,5 0,6 0,7 0,8 0,9 Bbox 0.75 Bbox 0.5 Segm 0.75 Segm 0.5

Recall

3: PV / Thm / Other 2: PV / Thm+Other 1: PV+Thm+Other 0,1 0,2 0,3 0,4 0,5 0,6 0,7 0,8 0,9 Bbox 0.75 Bbox 0.5 Segm 0.75 Segm 0.5

Precision

3: PV / Thm / Other 2: PV / Thm+Other 1: PV+Thm+Other

slide-31
SLIDE 31

Statistical Linearity

31

y = 1,3286x - 0,3368 R² = 0,9968 0,47 0,49 0,51 0,53 0,55 0,57 0,59 0,61 0,63 0,60 0,62 0,64 0,66 0,68 0,70 0,72 0,74 Precision Recall

PV+Thm+Other Bounding box

Bounding box Linear (Bounding box) y = 1,6126x - 0,5041 R² = 0,9879 0,43 0,45 0,47 0,49 0,51 0,53 0,58 0,60 0,62 0,64 Precision Recall

PV+Thm+Other Segmentation

Segmentation Linear (Segmentation)

slide-32
SLIDE 32

Results

slide-33
SLIDE 33

Challenges

slide-34
SLIDE 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

slide-35
SLIDE 35

Challenge Labels: Class «Others»

  • These elements probably are photovoltaic panels but display somewhat

difficult characteristics

35

slide-36
SLIDE 36

Challenge Labels: Class «Other»

  • These are most likely NOT solar panels

36

slide-37
SLIDE 37

Challenge Labels: Class «Others»

  • Difficult

37

slide-38
SLIDE 38

Challenge: Labelling Mistakes

38

slide-39
SLIDE 39

24.07.2020 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)

slide-40
SLIDE 40

24.07.2020 40

Job Scheduler (MongoDB) Detection Detection Detection Detection swissimage

10 Gbit/s Job Queue Unlimited* Processes

slide-41
SLIDE 41

24.07.2020 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
slide-42
SLIDE 42

24.07.2020 42

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

slide-43
SLIDE 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

slide-44
SLIDE 44

Big Data Inferencing & Classification Workflow

44

Run multiple models for inferencing, using heuristic measures for edges and segment probability

→ Rasterio / fiona / GDAL

slide-45
SLIDE 45

NIR Data

Include Near- Infrared Data

10 cm GSD Coverage

slide-46
SLIDE 46

Random Forest & Xception for Post-Classification

46

Random Forest Classifier

GIS Attributes Cadastre Data Xception RGB & NIR

slide-47
SLIDE 47

Thank you!