Spaces:
Running
Running
| title: DeepPVMapper | |
| emoji: 🗺️ | |
| colorFrom: blue | |
| colorTo: indigo | |
| sdk: gradio | |
| sdk_version: "6.17.3" | |
| app_file: app.py | |
| pinned: false | |
| license: cc-by-4.0 | |
| # DeepPVMapper — interactive demo | |
| Detect and characterize rooftop solar (PV) installations anywhere in France, directly from [IGN aerial imagery](https://geoservices.ign.fr/bdortho) (20 cm resolution). | |
| ## What it does | |
| Search a city or click the map to select a zone (100 m to 1 km wide), then press **Detect**. The app fetches the orthophotos for the zone, runs a classification model to find patches containing PV panels, segments the panels in those patches, and merges the resulting polygons into individual installations. For each installation it estimates the surface (m²), the installed capacity (kWp) and the azimuth. Detected polygons are displayed on the map (click them for details) and the full result can be downloaded as GeoJSON. | |
| Detection runs on CPU — expect roughly a minute for a full 1 km² zone. | |
| ## Models & method | |
| The classification and segmentation models are trained on the [BDAPPV dataset](https://huggingface.co/datasets/gabrielkasmi/bdappv) and available at [gabrielkasmi/bdappv-models](https://huggingface.co/gabrielkasmi/bdappv-models). Installation characteristics (surface, capacity, azimuth) are estimated with the methods of [pypvroof](https://github.com/gabrielkasmi/pypvroof), using constant tilt (20°), bounding-box azimuth and a constant capacity coefficient (no DEM). Estimates on individual installations are therefore approximate; they are most meaningful aggregated over a zone. | |
| ## Mapping larger areas | |
| This Space is a demonstrator, capped at ~1 km² per run. To map a city, a department or more, use [DeepPVMapper](https://github.com/gabrielkasmi/deeppvmapper) directly — it is the full pipeline this demo showcases, designed for large-scale runs (GPU support, tiled processing, registry construction). | |
| ## Troubleshooting | |
| - **"Detection failed: 502 / 400 ... data.geopf.fr"** — the public IGN Géoplateforme imagery service occasionally fails under load. The app retries automatically; if a run still fails, just press Detect again, it is transient and nothing is wrong on your side. | |
| - **No installation detected** — zones with no rooftop PV are common; try a commercial area, a recent housing development, or a solar farm. | |
| - **Layout looks broken** — best viewed on a desktop browser; the floating panels are not designed for mobile screens. | |
| ## Links | |
| - Large-scale pipeline: [DeepPVMapper](https://github.com/gabrielkasmi/deeppvmapper) | |
| - Models: [gabrielkasmi/bdappv-models](https://huggingface.co/gabrielkasmi/bdappv-models) | |
| - Dataset: [gabrielkasmi/bdappv](https://huggingface.co/datasets/gabrielkasmi/bdappv) ([paper](https://doi.org/10.1038/s41597-023-01951-4)) | |
| - PhD thesis: [pastel.hal.science/tel-04909303](https://pastel.hal.science/tel-04909303) | |