Skip to content

This app detects buildings, windows, and doors from street images and maps them using geospatial metadata. I used Roboflow for object detection, Streamlit for the interface, and GeoPandas to export accurate building positions as GeoJSON for mapping.

Notifications You must be signed in to change notification settings

ashehta700/street-object-detection

Repository files navigation

🌉 Street Object Detection and GeoMapping App

This project is a smart object detection system that identifies buildings, doors, and windows from panoramic street images and maps them to accurate real-world coordinates using camera metadata.

Built with:

  • 🧠 Roboflow for object detection
  • 🖥️ Streamlit for the web interface
  • 🌍 GeoPandas for exporting GeoJSON
  • 📷 Camera metadata (pitch, heading, GPS) to calculate real UTM positions

🚀 Features

  • ✅ Detects buildings, doors, windows from street view images
  • ✅ Displays bounding boxes with confidence scores
  • ✅ Calculates approximate real-world locations (UTM projection)
  • ✅ Exports results as downloadable GeoJSON
  • ✅ Supports multiple detection models (e.g., precision 60%+ version)
  • ✅ Visual and interactive web interface with Streamlit

📷 Demo & Screenshots

Below are some screenshots from the app showcasing detections and GeoJSON output:

Main Detection Interface

Detection Interface

Output of Model Detection on Building and Select the version of Model and Download the geojson file

Download & Model Selection

GeoJSON Export Example in QGIS

GeoJSON in QGIS


🎥 Watch the demo video on YouTube: ![YouTube Demo]


🛠️ How to Run

  1. Clone the repository
git clone https://github.com/ahmedshehta/street-object-detection.git
cd street-object-detection
  1. Install required packages
pip install -r requirements.txt
  1. Place your camera metadata CSV

Create a file named image_metadata.csv with the following format:

image_name,timestamp,cam_x,cam_y,cam_z,heading,pitch,roll
Image001.jpg,1746800048,234528.817,2016450.6,2266.498,-103.176,-86.824,-18.445
  1. Run the app
streamlit run app.py
  1. Upload your panoramic images via the web interface

Then download the generated GeoJSON files for GIS use.


📁 Project Structure

street-object-detection/
│
├── app.py                  # Main Streamlit app code
├── image_metadata.csv      # Camera metadata CSV file (must be added by user)
├── requirements.txt        # Python dependencies
├── README.md               # Project documentation
├── LICENSE                 # MIT License file
└── screenshots/            # Folder for screenshot images

🧠 Models

Two Roboflow models are supported:

  • Model 1: x1-ve1ly-d7yt7/3 (default)
  • Model 2: x1-ve1ly-d7yt7/4 (higher precision)

You can switch between models in the UI or change the model ID in the code to compare performance.


🗚️ Output Example

Each detected building is exported as a polygon with attributes like:

  • Confidence
  • Number of windows
  • Number of doors

The output is in GeoJSON format, and can be opened in GIS tools like QGIS, Mapbox, or Leaflet.


📢 Contact

Ahmed Shehta 📧 Email: [email protected] 🔗 LinkedIn 🔗 Website


📄 License

This project is licensed under the MIT License — see the LICENSE file for details.

About

This app detects buildings, windows, and doors from street images and maps them using geospatial metadata. I used Roboflow for object detection, Streamlit for the interface, and GeoPandas to export accurate building positions as GeoJSON for mapping.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages