- Introduction
- Requirements
- Involved Models
- Dataset
- Trained Models
- Evaluations
- Run Solar Panel Detection
- Demo
The global shift toward renewable energy has led to a rapid increase in the deployment of solar panels across residential, commercial, and industrial areas. Accurately mapping the location and extent of these installations is crucial for energy infrastructure planning, policy-making, and environmental monitoring. With the growing availability of high-resolution aerial imagery and advances in computer vision, automated detection methods offer a scalable and cost-effective alternative. This project aims to develop a system that automatically detects solar panels in aerial images using state-of-the-art computer vision techniques.
tensorflow = 2.16.2
opencv = 4.11.0
matplotlib = 3.10.1
- Dataset are made with high-resolution aerial imagery from Nearmap
- Labelme is used as the tool to label the images.
- Training dataset contains 3936 256x256 rgb images and labels which are collected from Capalaba, Springfield, New Farm, Fairfield, Sunnybank Hills in Brisbane, Australia.
- Validation dataset contains 1344 images and labels which are collected from Springfield and Sunnybank Hills.
- Test dataset contains 1360 images and labels which are collected from a suburb in Perth, Australia.
- Dataset will be made available in the near future.
- SegNet 0: SegNet with 5 encoders and 5 decoders (Original SegNet).
- SegNet 1: SegNet with 4 encoders and 4 decoders.
- SegNet 2: SegNet with 5 encoders and 5 decoders, each encoder is replaced by a ResNet block (Block with 3 convolutional layers).
- SegNet 3: SegNet with 5 encoders and 5 decoders, each encoder is replaced by a ResNet block (Block with dynamic number of convolutional layers).
- Fast SCNN 0: Original Fast SCNN.
- Fast SCNN 1: Fast SCNN with the first two DSConv layers removed, modified Upsample layers.
- Fast SCNN 2: Fast SCNN with the first two DSConv layers replaced with Conv layers, modified Upsample layers.
Model Name | Evaluation IoU |
---|---|
SegNet 0 | 0.8047909 |
SegNet 1 | 0.8196788 |
SegNet 2 | 0.78407985 |
SegNet 3 | 0.7865806 |
Fast SCNN 0 | 0.6196553 |
Fast SCNN 1 | 0.72767824 |
Fast SCNN 2 | 0.82243156 |
- Create "test_images" under the root project folder. Prepare high-resolution aerial/satellite images with arbitrary size. Place these images inside "test_images" folder. A test image example can be downloaded here.
- Create "prediction_images" under the root project folder. The prediction of the model will be saved here.
- Modify "solar_panel_detection.py". In line 16, modify "IMAGE_LIST", put test image names inside.
- Modify "solar_panel_detection.py". In line 118, modify "model_type" (segmentation model), "model_name" (model weights name), "test_image_name", and "saving_image_name" .
- Run the following command to perform solar panel detection on the given test image.
python solar_panel_detection.py
Demo 1
Demo 2