Need help with DeepSolar?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

wangzhecheng
191 Stars 62 Forks MIT License 16 Commits 13 Opened issues

Description

Nationwide houseshold-level solar panel identification with deep learning

Services available

!
?

Need anything else?

Contributors list

# 317,846
Python
14 commits
# 478,527
Go
Shell
HTML
scraper...
1 commit

DeepSolar

Nationwide houseshold-level solar panel identification with deep learning. See details from our project website. We used Inception-v3 as the basic framework for image-level classification and developed greedy layerwise training for segmentation and localization. CNN model was developed with TensorFlow.

slim
package is credited to Google.
train_classification.py
and
train_segmentation.py
were developed with reference to inception. The inception library should be downloaded from this source. The model was developed with Python 2.7.

Usage Instructions:

git clone https://github.com/wangzhecheng/DeepSolar.git
cd DeepSolar

The model is fine-tuned based on the pre-trained model. The pre-trained model was trained on ImageNet 2012 Challenge training set. It can be downloaded as follows:

mkdir ckpt
cd ckpt
curl -O http://download.tensorflow.org/models/image/imagenet/inception-v3-2016-03-01.tar.gz
tar xzf inception-v3-2016-03-01.tar.gz
Then download pre-trained classification model and segmentation model for solar panel identification task.
curl -O https://s3-us-west-1.amazonaws.com/roofsolar/inception_classification.tar.gz
tar xzf inception_classification.tar.gz
curl -O https://s3-us-west-1.amazonaws.com/roofsolar/inception_segmentation.tar.gz
tar xzf inception_segmentation.tar.gz
Because the restriction of data sources, we are sorry that we cannot make the training and test set publicly available currently.

Install the required packages:

pip install -r requirements.txt
Firstly, you should generate data file path lists for training and evaluation. Here is the example:
python generate_data_list.py
Then you can train the CNN model for classification. You can start from ImageNet model:
python train_classification.py --fine_tune=False
or start from our well-trained model:
python train_classification.py --fine_tune=True
After training is done, test the model:
python test_classification.py
Our model can achieved overall recall 88.9% and overall precision 93.2% on test set. For training the segmentation branch, you should firstly train the first layer:
python train_segmentation.py --two_layers=False
Then train the second layer.
python train_segmentation.py --two_layers=True
After training is done, you can test the average absolute area error rate:
python test_segmentation.py
Our well-trained model can reach 27.3% for residential area and 18.8% for commercial area.

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.