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
- ✅ 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
Below are some screenshots from the app showcasing detections and GeoJSON output:
🎥 Watch the demo video on YouTube: ![YouTube Demo]
- Clone the repository
git clone https://github.com/ahmedshehta/street-object-detection.git
cd street-object-detection
- Install required packages
pip install -r requirements.txt
- 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
- Run the app
streamlit run app.py
- Upload your panoramic images via the web interface
Then download the generated GeoJSON files for GIS use.
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
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.
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.
Ahmed Shehta 📧 Email: [email protected] 🔗 LinkedIn 🔗 Website
This project is licensed under the MIT License — see the LICENSE file for details.