Skip to content
Nationwide houseshold-level solar panel identification with deep learning
Branch: master
Clone or download
Latest commit 39643e9 Mar 26, 2019
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
slim first commit Jun 25, 2017
.DS_Store first commit Jun 25, 2017
LICENSE
README.md
__init__.py
generate_data_list.py
inception_model.py first commit Jun 25, 2017
requirements.txt Update requirements.txt Mar 26, 2019
test_classification.py modify training and evaluation code Jun 25, 2017
test_segmentation.py
train_classification.py modify pre-trained directory name and add requirements.txt Jun 25, 2017
train_segmentation.py modify training and evaluation code Jun 25, 2017

README.md

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.

You can’t perform that action at this time.