অধ্যায়Phase 8 · রিয়েল-ওয়ার্ল্ড প্রজেক্ট
8.6 18 মিনিট পড়া

AI Surveillance System

Multi-camera analytics।

🎬 গল্প দিয়ে শুরু
শেষ প্রজেক্ট — সবকিছুর সমন্বয়। ৩২+ ক্যামেরার multi-site AI surveillance platform — detection, tracking, re-identification, search, alert, dashboard। Production-grade systems আসলে যেভাবে বানানো হয়।

High-level architecture

text
┌──────────── Edge Nodes (Jetson / GPU server) ────────────┐
│ Camera → Decode (NVDEC) → Detect (YOLO TRT) → Track      │
│ → Embedding (OSNet ReID) → Event JSON + thumbnail        │
└──────────────────────────┬───────────────────────────────┘
                           │ MQTT / Kafka
┌──────────────────────────▼───────────────────────────────┐
│ Central Backend                                          │
│ ├ Kafka → Stream Processor (Flink / Faust)               │
│ ├ Postgres + TimescaleDB (events)                        │
│ ├ Qdrant / Milvus (ReID embedding vector search)         │
│ ├ MinIO (clips, thumbnails)                              │
│ ├ Redis (live presence, cache)                           │
│ └ FastAPI + WebSocket (UI API)                           │
└──────────────────────────┬───────────────────────────────┘
                           │
                   React / Next.js Dashboard
                   (live tiles, search, alerts)

Core capability — Person Re-Identification

Camera-A তে দেখা ব্যক্তি Camera-B তে আবার এলে চেনা — face না দেখেই (পোশাক, গঠন থেকে embedding)। OSNet বা TransReID model use করা হয়।

bash
pip install torchreid
python
import torchreid, torch
from torchvision import transforms
from PIL import Image

extractor = torchreid.utils.FeatureExtractor(
    model_name="osnet_x1_0",
    model_path="osnet_x1_0_market.pth",
    device="cuda")

def embed_person(crop_bgr):
    img = Image.fromarray(crop_bgr[:,:,::-1])
    return extractor([img])[0].cpu().numpy()   # (512,) float32

Cross-camera tracking flow

python
# প্রতি new track-এ embedding compute → Qdrant search
def on_new_track(cam_id, tid, crop, ts):
    vec = embed_person(crop)
    hits = qdrant.search("persons", vec, limit=1,
                         score_threshold=0.75)
    if hits:
        global_id = hits[0].payload["gid"]    # পুরনো ব্যক্তি
    else:
        global_id = str(uuid4())               # নতুন
        qdrant.upsert("persons", [vec], [{"gid": global_id}])
    pg.insert_event(global_id, cam_id, tid, ts)
Global ID
এক ব্যক্তি ৫টি ক্যামেরায় ১০ বার দেখা গেলেও database-এ একটি global ID — journey reconstruct করা যায়।

Search — লাল শার্ট পরা লোকটিকে খুঁজুন

  • Image query — sample crop দিয়ে similar embedding খুঁজুন।
  • Text query (CLIP, Phase 6.4) — প্রাকৃতিক ভাষায়।
  • Time + camera filter — "3-5 PM, gate camera"।
  • Path tracing — global ID-এর কোন cam কখন দেখা গেছে।

Event taxonomy

python
EVENTS = {
    "intrusion":       "ROI ∩ person ∩ restricted_time",
    "loitering":       "track in ROI > 60s, low motion",
    "crowd":           "person_count > N in ROI",
    "abandoned_obj":   "static object detected > 5min",
    "ppe_violation":   "person without helmet/vest",
    "fight":           "rapid motion + multi-person overlap",
    "vehicle_wrongway":"track direction ≠ allowed",
    "license_plate":   "ANPR hit on watchlist",
}

Scaling tips

  • Decode + inference একই GPU-তে (NVDEC + CUDA)।
  • DeepStream/Triton — ৩০+ stream/Jetson।
  • Kafka partition by camera_id — parallel consumer।
  • TimescaleDB hypertable — billions of event row।
  • Cold storage — old clip MinIO Glacier tier-এ।
  • Horizontal scale — stateless workers + queue।

Privacy ও compliance

  • Face blur (default) — opt-in identification।
  • GDPR — data retention policy, right-to-erasure।
  • Audit log — কে কখন কী dashboard দেখেছে।
  • End-to-end encryption — RTSP-over-TLS, mTLS internal।
  • Watchlist consent — legal review।

Phase 8 শেষ — কী বানালেন?

  • Face Recognition Attendance system।
  • Smart CCTV (intrusion + clip + alert)।
  • Traffic Monitoring (count + speed + class)।
  • OCR Scanner (Bangla + searchable PDF)।
  • Industrial Defect Detection (supervised + anomaly)।
  • Multi-camera AI Surveillance (ReID + global track + search)।
পরবর্তী — Phase 9: Career & Research
সব technical দক্ষতা তৈরি। এবার freelance, job, portfolio, research ও startup — কীভাবে এই দক্ষতা income ও impact-এ পরিণত করবেন।
প্র্যাকটিস টাস্ক
  1. ২টি webcam নিয়ে OSNet ReID দিয়ে cross-camera tracking demo বানান।
  2. Qdrant-এ embedding store করে image-query search endpoint যোগ করুন।
  3. Loitering + intrusion event Kafka-তে publish করে dashboard live-এ দেখান।