← Ankit Raj

Computer Vision · 2025

Satellite Imagery-Based Property Valuation

Fusing satellite imagery with tabular property data to predict real estate prices, with a real ablation study.

EfficientNet-B0CatBoostXGBoostMultimodal

The problem

Standard property valuation models work off tabular data (square footage, bedroom count, zip code) and throw away everything a satellite photo of the property actually shows: lot shape, surrounding density, proximity to green space, the neighbourhood itself. This project predicts price using both at once, combining a satellite image of each property with its structural and historical data rather than treating them as separate problems.

Data

Each property record carries its coordinates, structural attributes, and historical sale price. Those coordinates are used to pull a matching satellite image for every property from the Google Maps Static API, roughly 21,000 images in total, one per training example.

Architecture

Three inputs are converted into vectors and combined before the final prediction: an EfficientNet-B0 CNN reads the satellite photo into a 1,280-dimensional feature vector, 22 structural and historical features are used as-is, and each zip code gets its own learned 8-dimensional embedding so the model can pick up on geographic pricing patterns automatically. All three are concatenated into a 1,310-dimensional vector, which a CatBoost model turns into the final price prediction.

  • KNN-based neighbourhood features (the average price and average size of each property’s 10 nearest neighbours) make the "what are similar houses nearby actually worth" comparison an explicit input.
  • Grad-CAM visualizations highlight which parts of each satellite image the CNN weighted most heavily, checking against the model learning something spurious.

Results

Rather than jumping straight to the full model, each component was added one at a time and measured: a tabular-only baseline (R² = −18.96, worse than predicting the average price every time), then satellite imagery via CNN + MLP (R² = 0.7844), then gradient boosting (R² = 0.8774), then the full model with CatBoost and neighbour features (R² = 0.9073, RMSE ≈ $106K). Each addition’s contribution is measured, not assumed.

The project ranked in the top 2 in my college.