Was macht traffic-ai-system?
Das Verkehrs-KI-System sagt das Verkehrsaufkommen mithilfe von XGBoost voraus und optimiert Routen mit Dijkstras Algorithmus. Es integriert maschinelles Lernen in eine graphentbasierte Routen-Engine mit einem FastAPI-Backend und einer Streamlit-Frontend für Echtzeitvorhersagen und interaktive Kartenvisualisierung und demonstriert Full-Stack-ML- und Systemdesign-Fähigkeiten.
Funktionen
- Verkehrsvorhersage: Verwendet ein vortrainiertes XGBoost-Modell, um die Verkehrsdichte auf Straßenabschnitten basierend auf historischen Daten vorherzusagen.
- Routenoptimierung: Wendet Dijkstras Algorithmus auf den vorhergesagten Verkehrsgraphen an, um die optimale Route mit der geringsten Fahrzeit zu finden.
- Echtzeitschnittstelle: Bietet eine REST-API über FastAPI für Programmierzugriff.
- Interaktive Visualisierung: Streamlit-basierte Frontend zeigt den Verkehrsgraphen, Vorhersagen und optimierte Routen auf einer Karte an.
- Modulares Design: Code ist in Datenerfassung, Modelltraining, API und Frontend getrennt, was die Wartbarkeit und Erweiterbarkeit verbessert.
Architektur
┌─────────────┐ ┌──────────────┐ ┌──────────────┐
│ Streamlit │◄──►│ FastAPI │◄──►│ XGBoost-Modell│
│ Frontend │ │ Backend │ │ & Graph-Daten │
└─────────────┘ └──────────────┘ └──────────────┘
Verwendung
Voraussetzungen
- Python 3.9+
- Virtuelle Umgebung (empfohlen)
Installation
- Repository klonen:
git clone https://github.com/ajay-0010/traffic-ai-system
cd traffic-ai-system
- Abhängigkeiten installieren:
pip install -r requirements.txt
- Modell und Daten vorbereiten (siehe Abschnitt Setup).
Lokales Ausführen
FastAPI-Server starten:
cd backend
uvicorn main:app --reload --host 0.0.0.0 --port 8000
Streamlit-Frontend starten:
cd frontend
streamlit run app.py
Öffnen Sie http://localhost:8501 im Browser, um auf die Benutzeroberfläche zuzugreifen.
API-Endpunkte
GET /predict?lat=<latitude1>&lon=<longitude1>&lat=<latitude2>&lon=<longitude2>- Sagt die Verkehrsdichte für eine gegebene Kante im Graphen voraus.GET /route?start=<node_id>&end=<node_id>- Gibt die optimierte Route zwischen zwei Knoten zurück.GET /health- Zustandsprüfung des Servers.
Beispielworkflow
- Senden Sie eine Route von Knoten A nach Knoten B über den API-Endpunkt
/route. - Das Backend ruft das XGBoost-Modell auf, um die Verkehrsdichte für alle relevanten Kanten vorherzusagen.
- Die Vorhersagen werden verwendet, um die Kantengewichte (Fahrzeit) zu aktualisieren.
- Dijkstras Algorithmus findet den Pfad mit den minimalen Kosten.
- Die optimierte Route wird als JSON an den Client zurückgegeben.
- Das Streamlit-Frontend zeigt die Route auf einer Karte zusammen mit den Vorhersagedetails an.
Anpassung
Sie können das XGBoost-Modell mit Ihren eigenen Daten neu trainieren. Bearbeiten Sie dazu das Notebook notebooks/train_xgboost.ipynb und führen Sie es aus. Ersetzen Sie dann die Datei model/xgboost_traffic_model.pkl durch Ihr trainiertes Modell.
Lizenz
Dieses Projekt ist unter der MIT-Lizenz lizenziert. Siehe die Datei LICENSE für Details.