by wangzhecheng

wangzhecheng / DeepSolar

Nationwide houseshold-level solar panel identification with deep learning

142 Stars 55 Forks Last release: Not found MIT License 16 Commits 0 Releases

Available items

No Items, yet!

The developer of this repository has not created any items for sale yet. Need a bug fixed? Help with integration? A different license? Create a request here:


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.

package is credited to Google.
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
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
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
tar xzf inception_classification.tar.gz
curl -O
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:
Then you can train the CNN model for classification. You can start from ImageNet model:
python --fine_tune=False
or start from our well-trained model:
python --fine_tune=True
After training is done, test the model:
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 --two_layers=False
Then train the second layer.
python --two_layers=True
After training is done, you can test the average absolute area error rate:
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.