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

191 Stars 62 Forks MIT License 16 Commits 13 Opened issues


Nationwide houseshold-level solar panel identification with deep learning

Services available


Need anything else?

Contributors list

# 317,846
14 commits
# 478,527
1 commit


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.