InceptionResNetV2-UNet: Dubai Satellite Semantic Segmentation & Edge Optimization

This repository hosts a production-grade, edge-optimized deep learning model designed for multi-class land-cover semantic segmentation from high-resolution satellite imagery (Dubai Satellite Imagery Dataset).

This work explores the accuracy vs. model footprint trade-offs for deploying aerial and satellite segmentation models to edge and on-orbit compute platforms. image

image


πŸ“Œ Architecture & Model Overview

  • Architecture: U-Net with an InceptionResNetV2 feature extraction encoder
  • Total Parameters: 36,793,414 (~36.79M)
  • Trainable Parameters: 36,752,390 (~36.75M)
  • Non-trainable Parameters: 41,024 (~160 KB)
  • Input Resolution: 512 Γ— 512 Γ— 3 (RGB, normalized to [0, 1])
  • Output Resolution: 512 Γ— 512 Γ— 6 (6-class probability distribution)
  • Quantization: Dynamic Range Post-Training Quantization (PTQ) via TensorFlow Lite / LiteRT

βš™οΈ Training Specifications & Hyperparameters

  • Dataset Split: 504 augmented training tiles, 64 validation tiles ($512 \times 512$)
  • Batch Size: 4
  • Steps per Epoch: 126
  • Epochs Trained: 33 (converged via EarlyStopping)
  • Optimizer: Adam
  • Initial Learning Rate: 0.0001 with Exponential Decay Scheduling
  • Loss Function: categorical_crossentropy
  • Evaluation Metrics: dice_coef, categorical_accuracy
  • Peak Validation Performance:
    • Validation Accuracy: 86.24%
    • Validation Dice Coefficient: 81.72% (Peak: 81.89%)

image

πŸ“Š Quantization & Deployment Benchmarks

We evaluated the performance, storage, and latency trade-offs between standard floating-point precision (FP32) and dynamic 8-bit integer quantization (INT8):

Model Format Precision Disk Size Size Reduction Overall mIoU 5-Class Terrain mIoU CPU Latency GPU Latency Throughput
Keras (.keras) FP32 423.14 MB Baseline (1.0x) 59.09% 70.34% 4,693.27 ms 638.39 ms 1.57 FPS (GPU)
TFLite (.tflite) FP32 140.36 MB ~3.0x smaller 59.09% 70.34% ~4,200 ms β€” 0.24 FPS (CPU)
TFLite INT8 (.tflite) Dynamic INT8 35.89 MB 11.8x smaller (-91.5%) 51.08% 60.28% 15,911.85 ms β€” 0.06 FPS (CPU)

Key Finding: Dynamic INT8 quantization slashes memory storage by 91.5% (saving 387.25 MB of storage), while retaining 60.28% 5-class terrain mIoU.


πŸ” Per-Class Evaluation Breakdown

Detailed analysis of class preservation between baseline FP32 and dynamic INT8:

Class RGB Color Baseline IoU (FP32) INT8 IoU (Quantized) Change (Delta IoU) Status
🌊 Water (226, 169, 41) 0.9015 0.8849 -0.0166 (-1.7%) 🟒 Preserved almost perfectly
🌿 Vegetation (254, 221, 58) 0.6163 0.6190 +0.0027 (+0.3%) 🟒 Completely preserved
🏜️ Land (132, 41, 246) 0.8083 0.7761 -0.0322 (-3.2%) 🟒 Very stable
πŸ›£οΈ Road (110, 193, 228) 0.5105 0.3327 -0.1778 (-17.8%) 🟑 Moderate drop
🏒 Building (60, 16, 152) 0.6806 0.4012 -0.2794 (-27.9%) πŸ”΄ Major drop
❓ Unlabeled (155, 155, 155) 0.0282 0.0509 +0.0227 β€”
Overall mIoU β€” 59.09% 51.08% -8.01%
5-Class Terrain mIoU β€” 70.34% 60.28% -10.06%

πŸ“Š Model Performance: Baseline (FP32) vs. Quantized (INT8)

Class Baseline IoU (FP32) INT8 IoU (PTQ) Baseline Dice / F1 INT8 Dice / F1 Baseline Precision INT8 Precision Baseline Recall INT8 Recall
🌊 Water 0.9015 0.8849 0.9482 0.9390 0.9429 0.9123 0.9536 0.9672
🏜️ Land 0.8083 0.7761 0.8940 0.8740 0.8733 0.8101 0.9157 0.9488
🏒 Building 0.6806 0.4012 0.8099 0.5727 0.7799 0.9023 0.8423 0.4195
🌿 Vegetation 0.6163 0.6190 0.7626 0.7647 0.8441 0.7270 0.6954 0.8065
πŸ›£οΈ Road 0.5105 0.3327 0.6759 0.4993 0.6999 0.3820 0.6535 0.7203
❓ Unlabeled 0.0282 0.0509 0.0548 0.0968 0.3341 0.3701 0.0298 0.0557
Mean (Overall) 0.5909 0.5108 0.6909 0.6244 0.7457 0.6840 0.6817 0.6530
5-Class Terrain 0.7034 0.6028 0.8181 0.7299 0.8280 0.7467 0.8121 0.7725

Error Maps

image

πŸ“‚ Repository File Manifest

  • InceptionResNetV2-UNet.keras: Native Keras 3 format containing architecture, weights, and optimizer state.
  • InceptionResNetV2-UNet.h5: Keras HDF5 format for backward compatibility with legacy pipelines.
  • InceptionResNetV2-UNet.weights.h5: Checkpoint containing only trained layer weights.
  • InceptionResNetV2-UNet_fp32.tflite: Standalone TensorFlow Lite FP32 model for mobile and edge runtime.
  • InceptionResNetV2-UNet_int8.tflite: Dynamically quantized 8-bit model optimized for ultra-low memory footprints (35.89 MB).

πŸ’» Quickstart Inference Guide

1. Keras Full Precision Model (FP32)

import tensorflow as tf
from huggingface_hub import hf_hub_download
model_path = hf_hub_download(
    repo_id="iamabhayaditya/InceptionResNetV2-UNet-MBRSC",
    filename="InceptionResNetV2-UNet.keras"
)
model = tf.keras.models.load_model(model_path, compile=False)

2. Edge / CPU Inference with Quantized TFLite (INT8)

import numpy as np
import tensorflow as tf
from huggingface_hub import hf_hub_download
tflite_path = hf_hub_download(
    repo_id="iamabhayaditya/InceptionResNetV2-UNet-MBRSC",
    filename="InceptionResNetV2-UNet_int8.tflite"
)
interpreter = tf.lite.Interpreter(model_path=tflite_path)
interpreter.allocate_tensors()
input_details = interpreter.get_input_details()
output_details = interpreter.get_output_details()
# Input image shape: (1, 512, 512, 3), float32 normalized to [0, 1]
interpreter.set_tensor(input_details[0]['index'], input_image)
interpreter.invoke()
# Output shape: (1, 512, 512, 6)
predictions = interpreter.get_tensor(output_details[0]['index'])
pred_mask = np.argmax(predictions[0], axis=-1)

πŸ“œ Lineage & Attribution

This project is derived from the open-source implementation by Ayush Dabra licensed under GNU General Public License v3.0 (GPL-3.0). Modifications & Modernization:

  • Manually documented and commented every pipeline component, training routine, and utility function to ensure strict reproducibility and clean code standards.
  • Engineered diagnostic visualization routinesβ€”including error heatmaps, class activation visualizations, and confusion matricesβ€”to isolate edge-case failures (e.g., small building boundaries vs. narrow asphalt roads).
  • Achieved superior convergence, lifting validation performance to ~86.24% categorical accuracy and an ~81.72% Dice coefficient (peak: 81.89%).
  • Upgraded deprecated dependencies to modern TensorFlow 2.x / Keras 3.
  • Engineered dynamic Post-Training Quantization (PTQ) routines for TensorFlow Lite / LiteRT deployment.
  • Established edge deployment benchmarking suites (measuring GPU vs. CPU latency, memory footprints, and per-class quantization degradation).
Downloads last month
-
Inference Providers NEW
This model isn't deployed by any Inference Provider. πŸ™‹ Ask for provider support

Space using iamabhayaditya/InceptionResNetV2-UNet-MBRSC 1