Two ways in: run the full detection pipeline yourself, or use pypvroof standalone on masks or outlines you already have.
Clone the repository and install the dependencies. DeepPVMapper needs GDAL and a CUDA-capable GPU (8 GB+ VRAM) to run classification and segmentation at scale.
git clone https://github.com/gabrielkasmi/deeppvmapper.git
cd deeppvmapper
pip install -r requirements.txt
# Run the pipeline for a single département
python main.py --dpt 06
Already have segmentation masks or array outlines? pypvroof turns them into surface, tilt, orientation, and installed-capacity estimates on its own — no need to run the full pipeline.
pip install pypvroof
import geojson
from pypvroof import MetadataExtraction
arrays = geojson.load(open("path/to/arrays.geojson"))
params = {
"azimuth-method": "bounding-box",
"tilt-method": "lut",
"regression-type": "linear",
}
extractor = MetadataExtraction(p=params)
characteristics = extractor.extract_all_characteristics(arrays["features"][0])
A standalone Python package that extracts rooftop PV system characteristics — surface, tilt, orientation, and installed capacity — from segmentation masks and building footprints. Used internally by DeepPVMapper, and usable on its own on any rooftop PV detection dataset.
View on PyPI →The Bayesian bias-correction methodology behind the Registry Audit, extracted as a standalone, domain-agnostic package: turns imperfect detector counts — given a validated precision/recall sample — into posterior credible intervals, then checks whether a registry's reported values fall inside them.
View on PyPI →Trained weights for the classification (Inception v3) and segmentation (DeepLab v3) models behind DeepPVMapper — ready to drop into the pipeline, or to fine-tune on your own imagery.
View on HuggingFace →The annotated aerial-imagery dataset used to train DeepPVMapper's models — PV array outlines and installation metadata over a sample of French rooftops.
View on HuggingFace →An early Hugging Face Space let you run DeepPVMapper on a sample image directly in the browser. It's kept online for reference, but it isn't actively maintained — expect it to be slow to wake up, and possibly out of sync with the current pipeline and models.
Looking for the actual detections? Browse the registry on Data. Want to run the detection algorithm yourself? Grab the source code above.
Want the detailed architecture, training setup, and methodology behind the pipeline?
Read the full pipeline presentation →