Skip to content

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

Sistemi i Monitorimit te Trafikut

Nje sistem Computer Vision qe perdor YOLO v8 per detektimin ne kohe reale te automjeteve, gjurmimin dhe analizen e fluksit te trafikut ne kryqezime rrugore.


Permbajtja


Veçorite

  • Detektimi i Automjeteve ne Kohe Reale duke perdorur YOLO v8
  • Klasifikimi Multi-klase: Makina, autobuse, kamione, motoçikleta
  • Gjurmimi i Automjeteve neper frame te videos duke perdorur algoritmin SORT
  • Analiza e Fluksit te Trafikut me numerim direksional
  • REST API per aksesimin e te dhenave ne kohe reale
  • Panel Kontrolli Interaktiv (Dashboard) me statistika dhe grafike live
  • Procesimi i Videos (perpunim ne grup dhe stream ne kohe reale)
  • Vendosje me Docker (Deployment) e gatshme
  • Mbeshtetje WebSocket per perditesime ne kohe reale

Teknologjite

  • Computer Vision: OpenCV, YOLO v8 (Ultralytics)
  • Deep Learning: PyTorch
  • Gjurmimi: Algoritmi SORT me Kalman Filter
  • Backend: FastAPI, Uvicorn
  • Frontend: HTML5, CSS3, JavaScript, Chart.js
  • Deployment: Docker, Docker Compose
  • Te Dhenat: COCO Dataset, dataset lokal i trafikut te Tiranes

Instalimi

Kushtet

  • Python 3.10+
  • GPU e afte per CUDA (rekomandohet) ose CPU
  • Docker (opsionale, per deployment te kontainerizuar)

Instalimi Lokal

  1. Klononi repository-n:
git clone https://github.com/ekipi-juaj/Monitorimi_trafikut_Gr6.git
cd Monitorimi_trafikut_Gr6
  1. Krijoni mjedisin virtual (virtual environment):
python -m venv venv
source venv/bin/activate  # Ne Windows: venv\Scripts\activate
  1. Instaloni varesite (dependencies):
pip install -r requirements.txt
  1. Shkarkoni modelin YOLO: Modeli YOLO v8 do te shkarkohet automatikisht ne ekzekutimin e pare. Per modele te trajnuara me porosi (custom), vendosini ato ne direktorine models/.

Fillimi i Shpejte

Opsioni 1: Ekzekutoni Skriptin Demo

python demo.py

Kjo do te procesoje nje video demo ose do te perdore kameren tuaj nese nuk gjendet video.

Opsioni 2: Startoni Serverin API

# Startoni serverin API
python -m uvicorn src.api:app --reload

# Hapni panelin e kontrollit ne shfletues
# Shkoni tek: frontend/index.html (ose sherbejeni me nje server lokal)

Opsioni 3: Deployment me Docker

# Ndertoni dhe ekzekutoni me Docker Compose
docker-compose up --build

# Aksesoni API ne: http://localhost:8000
# Aksesoni panelin ne: http://localhost:80

Perdorimi

Procesimi i nje Skedari Video

from src.detector import VehicleDetector
from src.tracker import VehicleTracker
from src.counter import VehicleCounter
from src.utils.video_processor import VideoProcessor

# Inicializoni komponentet
detector = VehicleDetector()
tracker = VehicleTracker()
counter = VehicleCounter(line_position=0.5)
processor = VideoProcessor(detector, tracker, counter)

# Procesoni videon
stats = processor.process_video(
    "path/to/video.mp4",
    output_path="path/to/output.mp4",
    display=True
)

print(f"Totali i automjeteve: {stats['counts']['total_vehicles']}")

Perdorimi i REST API

import requests

# Merrni statistikat aktuale te trafikut
response = requests.get("http://localhost:8000/api/traffic/current")
data = response.json()
print(data)

# Procesoni nje video permes API
files = {"file": open("video.mp4", "rb")}
response = requests.post("http://localhost:8000/api/video/process", files=files)
print(response.json())

Procesimi i Stream-it ne Kohe Reale

# Procesoni stream-in e kameras ose IP kameras
processor.process_stream(source=0)  # 0 per kameren e kompjuterit
# Ose perdorni RTSP URL per kamerat IP
processor.process_stream(source="rtsp://camera-ip/stream")

📡 Dokumentacioni i API

Endpoints

GET /api/status

Merr statusin e sistemit

Pergjigja:

{
  "status": "running",
  "is_processing": false,
  "detector": "YOLO v8",
  "tracker": "SORT",
  "timestamp": "2026-01-19T17:30:00"
}

GET /api/traffic/current

Merr statistikat aktuale te trafikut

Pergjigja:

{
  "timestamp": "2026-01-19T17:30:00",
  "vehicle_counts": {
    "total_vehicles": 45,
    "total": {"car": 30, "bus": 5, "truck": 8, "motorcycle": 2},
    "up": {"car": 15, "bus": 2},
    "down": {"car": 15, "truck": 8}
  }
}

POST /api/video/process

Ngarko dhe proceso nje skedar video

Parametrat:

  • file: Skedar video (multipart/form-data)

Pergjigja:

{
  "message": "Video u procesua me sukses",
  "input_file": "traffic.mp4",
  "output_file": "processed_traffic.mp4",
  "statistics": {...}
}

WebSocket /ws/traffic

Perditesime te trafikut ne kohe reale permes WebSocket

Formati i mesazhit:

{
  "timestamp": "2026-01-19T17:30:00",
  "counts": {...},
  "is_processing": true
}

Per dokumentacion te plote te API, vizitoni /docs kur serveri eshte duke punuar (dokumentacion i gjeneruar automatikisht nga FastAPI).


Struktura e Projektit

Monitorimi_trafikut_Gr6/
├── README.md                 # Ky skedar
├── requirements.txt          # Varesite Python
├── Dockerfile               # Konfigurimi i container-it Docker
├── docker-compose.yml       # Konfigurimi Docker compose
├── demo.py                  # Skripti Demo
├── data/                    # Direktoria e te dhenave
│   ├── raw/                 # Datasetet bruto
│   ├── processed/           # Te dhena te procesuara
│   └── annotations/         # Skedaret e anotimit
├── src/                     # Kodi burimor (Source code)
│   ├── detector.py          # Detektori i automjeteve YOLO v8
│   ├── tracker.py           # Gjurmuesi SORT
│   ├── counter.py           # Numeruesi i automjeteve
│   ├── api.py              # REST API
│   └── utils/              # Mjete ndihmese (Utilities)
│       ├── config.py        # Konfigurimi
│       └── video_processor.py  # Procesimi i videos
├── models/                  # Modele te trajnuara
├── notebooks/               # Jupyter notebooks
├── tests/                   # Unit tests
├── docs/                    # Dokumentacion
├── demo/                    # Materiale Demo
└── frontend/                # Paneli (Dashboard)
    ├── index.html
    ├── style.css
    └── app.js

Performanca e Modelit

Metrikat Aktuale (YOLO v8 Pre-trained)

  • mAP@0.5: ~90% ne datasetin COCO
  • FPS i Detektimit: 20-30 FPS (GPU), 5-10 FPS (CPU)
  • Saktesia e Gjurmimit: ~85%
  • Klasat e Mbeshtetura: makine, motoçiklete, autobus, kamion

Performanca e Synuar

  • Saktesia: >85% ne datasetin e Tiranes
  • Preçizioni (Precision): >85%
  • Mbulimi (Recall): >80%
  • FPS ne Kohe Reale: >20

Testimi

Ekzekutoni testet unitare (unit tests):

pytest tests/ -v

Ekzekutoni me mbulim kodi (coverage):

pytest tests/ --cov=src --cov-report=html

Dokumentacioni

Dokumentacion shtese eshte i disponueshem ne folderin docs/:


Licenca

Ky projekt eshte zhvilluar per qellime edukative.


About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages