Remote sensing / Computer vision
Spacement PVExtent
Segmentation of rooftop photovoltaic arrays from aerial orthophotos, with polygon extraction and experimental analysis of module layout, roof geometry and change over time.
A standalone research package developed and maintained by Valeford under the Spacement brand.
- Maintainer
- Valeford
- Results recorded
- 22–23 October 2026
- Code license
- Apache-2.0
01 / Evaluation
Results across two imagery sources
Performance on the earlier PV4GER imagery does not transfer directly to current Geobasis NRW orthophotos. The two evaluations are reported separately.
Current NRW imagery
321 roof crops from ten districts, including 42 crops with PV. The sample contains 318 randomly selected buildings and three buildings selected through OpenStreetMap solar tags. Labels were drawn by one human annotator without model predictions.
| Model | Pixel IoU95% CI | Precision | PV crops found | False alarms95% CI |
|---|---|---|---|---|
| Fjell / V7 | 54.1%[42.4–63.3] | 74.8% | 27 / 42 | 6.5%[3.9–9.4] |
| Tinden / V5 + V6 | 53.3%[42.5–61.8] | 65.9% | 34 / 42 | 16.5%[12–21.1] |
| Vidda / V5 | 44.1%[33.3–52.5] | 49.2% | 35 / 42 | 33.7%[28.4–38.9] |
IoU measures overlap between predicted and reference PV pixels. Brackets show 95% bootstrap intervals over crops. A PV crop is found when a prediction overlaps its reference; a false alarm is a predicted component of at least 1 m² on a PV-free crop.
Fjell raises fewer false alarms but misses 15 of the 42 PV crops. Its IoU difference from Tinden is not distinguishable in the paired bootstrap comparison. The label audit found that constructed NRW training labels omit substantial parts of real arrays.
This evaluation uses one annotator and provides no inter-annotator agreement. The building-footprint filter under-represents commercial roofs larger than approximately 650 m².
A later V8 experiment detects 31 of 42 PV crops, with 48.3% IoU and an 8.6% false-alarm rate. It recovers some recall but increases boundary errors. V8 is documented as an experiment, separate from the three release profiles.
PV4GER benchmark
421 reserved RGB crops at 10 cm per pixel, totalling 43,110,400 pixels. The project creates geographic splits from the 4,027-crop PV4GER-SEG dataset using 10 km blocks and a 1 km centre buffer.
| Model | Pixel IoU | Precision | Recall |
|---|---|---|---|
| Fjell / V7 | 88.83% | 94.46% | 93.71% |
| Tinden / V5 + V6 | 89.15% | 93.61% | 94.93% |
| Vidda / V5 | 88.16% | 93.89% | 93.53% |
These are results on this imagery and partition. They do not establish performance across other regions, acquisition dates or sensors. The NRW evaluation above measures a separate transfer problem.
02 / Visual evidence
Predictions and observed errors
Figures show actual Vidda / V5 output. Selection rules, input imagery and the checkpoint hash are recorded with the source figures.

PV4GER examples selected at the 90th, 50th and 10th percentiles of per-crop IoU, among 418 test crops with at least 500 PV pixels. IoU is 97.4%, 91.3% and 64.6%. The lowest example includes merged module rows and a skylight false positive.
View full-size figure
All three PV crops from an earlier, separate NRW holdout. Vidda finds 86% of reviewed PV pixels on one building and misses the other two arrays. This small pilot is separate from the 321-crop NRW test set.
View full-size figureImagery: GeoBasis NRW/openNRW, including the PV4GER-derived crops. Datenlizenz Deutschland Zero 2.0.
Figure provenance03 / Method & outputs
From image pixels to array geometry
The package separates data preparation, model training, inference and evaluation. Recorded configurations define each named release profile.
- Segmentation
- Vidda and Fjell use DeepLabV3+ with a ResNet50 encoder. Fjell adds reviewed NRW hard negatives to the Vidda training recipe. Tinden averages V5 and V6 predictions with eight-orientation test-time augmentation and temperature calibration.
- Tiled inference
- Release profiles use 400-pixel tiles with overlap and Hann blending. Vidda uses 25% overlap; Fjell and Tinden use 50%. Probability thresholds and other inference settings are recorded in the repository.
- Geometry and derived estimates
- Predicted masks can be converted to polygons, optionally regularized, and exported as GeoJSON. Further modules estimate module placement, fit roof planes from a digital surface model, and match arrays between survey dates.

Polygon extraction and fitted 400 W module grids on the same PV4GER examples. Without a digital surface model, the roof is treated as flat. In the rightmost crop, the skylight is incorrectly counted as a 4.8 kWp array.
View full-size figureModule counts, capacity and yield are estimates that inherit segmentation and geometry errors. Roof-plane fitting requires a digital surface model; spectral analysis requires a real near-infrared band. The RGB fallback does not produce physically meaningful NDVI. Outputs require site-specific verification.
04 / Reproducibility
Source and research record
The repository contains code, a dependency lockfile, training and release configurations, dataset import procedures, evaluation scripts and research audits. Python 3.11 or later is required; inference supports CPU, Apple Silicon MPS and NVIDIA CUDA.
Trained checkpoints, imagery, dataset labels and experiment outputs are kept outside Git. The published profile commands expect local checkpoints under runs/. A fresh clone alone is therefore insufficient to reproduce model inference or regenerate the figures.
This page describes the research record at repository commit 5b8c100. Follow the repository for subsequent changes.
Research sources
- NRW sampling and annotation protocol
- NRW training results and label audit
- Geographic split method
- PV4GER import and dataset provenance
- Release profile configurations
- Figure provenance
- Apache-2.0 license and third-party notices
Original project code is copyright 2026 Valeford and licensed under Apache-2.0. Dataset and pretrained-weight terms are documented separately. Software and outputs are provided as is; estimates do not replace structural, electrical or permitting assessments.