Computer Vision & Perception Engineer

Mo Avazpour

Real-time perception that runs on the edge.

I build perception systems that run in real time on edge hardware: object detection and tracking, OCR, and 3D perception from LiDAR and cameras, for traffic and automated driving. Below are my projects, each with a demo video and the code or write-up on GitHub.

Greater Munich Metropolitan Area

01

Technical focus

What the projects below have in common: perception that has to work in the field, on limited hardware, with real data.

Real-time detection & tracking

Training and deploying YOLO models, multi-object tracking, OCR post-processing and best-frame selection.

Edge deployment

TensorRT FP16 on NVIDIA Jetson, CUDA OpenCV DNN, and multithreaded C++ pipelines for CPU-only industrial PCs.

3D perception

LiDAR point clouds, CenterPoint and keypoint-based 3D boxes, camera–LiDAR calibration and SUMO–CARLA co-simulation.

Data & foundation models

Merging and validating large multi-source datasets, and FastSAM and DINOv2 for pipelines that need no labels.

02

Projects

Each project has a demo video and a GitHub repository with the details.

ANPR demo: live camera feed next to the detection result with plates read
Production system · 2022–2025

Automatic Number Plate Recognition at the Edge

An edge ANPR engine for access control and parking, rolled out from an 8-camera pilot to 74 cameras. Frames come in over RTSP or from Basler industrial cameras; detection, OCR, tracking and best-frame selection run on the device, and results go to MySQL and to the server over REST (HTTPS/TLS).

  • Moved the hot path from Python to multithreaded C++: RTSP ingestion, YOLO inference, OCR post-processing, storage and camera reconnection.
  • YOLOv4-tiny with TensorRT FP16 at ~25 FPS on Jetson Nano, serving up to 4 cameras per device.
  • Motion gating, direction of travel, tracking and best-frame selection per vehicle. On a CPU-only Intel Atom site, a motion-gated ROI buffer raised vehicle capture from under 30% to ~70%.

ResultField test with 1,200 vehicles over 24 h: none missed, 99.4% of plates read exactly right.

  • C++17
  • Python
  • YOLOv4
  • TensorRT
  • CUDA
  • OpenCV
  • GStreamer
  • Basler Pylon
Showcase on GitHubproduction code is proprietary
3D bounding boxes on road users seen from a roadside camera on a highway
University team project · 2026

Universal Roadside 3D Object Detector

One roadside 3D detection model trained on seven merged roadside and vehicle-side datasets, planned for integration at the HD Testfeld intersections in Ingolstadt. I coordinated the project and led the data pipeline.

  • Unified label schema, keypoint ordering, class taxonomy and splits across LUMPI, RoScenes, TUMTraf, V2X-Radar, V2X-Seq, ZOD and DAIR-V2X: 1.7M+ labeled objects.
  • Validation tooling found that about 20% of the labels were corrupted, which was the main reason for the model's low confidence.
  • Sampling and augmentation tuned for class imbalance and small objects; inference on images, video and live camera streams.

ResultPose mAP50 up from 0.44 to 0.86.

  • PyTorch
  • MMDetection
  • YOLO Pose
  • CenterPoint
  • LiDAR
  • Open3D
  • PCL
  • CUDA
Showcase on GitHub
Lane-level regions of interest marking lanes as occupied or empty at an intersection
Production pilot · 2021

Adaptive Intersection Controller

Camera-based vehicle-presence detection for an adaptive traffic-signal pilot at 3 intersections with 12 cameras. Each lane becomes a virtual inductive loop that sends a 0/1 presence signal over RS-485 to the controller, which sizes each green phase from it. My part was the detection module.

  • Classical computer vision on Raspberry-Pi-class hardware, with no GPU and no neural network: adaptive background subtraction, Canny edges and lane-level ROIs.
  • Wet asphalt caused false positives with raw edge counting; adaptive background subtraction removed them.
  • Recovered and analysed 371,000 signal phases from a controller log corrupted by SPI noise.

ResultTeam result: average cycle 12% shorter than the fixed-time plan, 92.5% adaptive-mode availability in heat up to 45 °C.

  • Python
  • OpenCV
  • Background subtraction
  • Canny
  • RS-485
  • pandas
Showcase on GitHubproduction code is proprietary
Traffic signs detected and classified in a rainy driving video
Seminar project · 2026

Traffic Sign Recognition & EU ISA

A real-time, two-stage traffic sign pipeline, analysed against the EU requirements for Intelligent Speed Assistance (ISA).

  • Stage 1: a YOLO detector trained on GTSDB finds signs in the full frame. Stage 2: a second YOLO detector trained on GTSRB classifies the crops into 43 sign types.
  • Stress-tested in rain, glare, night and fog; documented false positives and cross-lane attribution.
  • Demo with two-frame temporal confirmation, a fixed ROI band with a size filter, and a speed-limit HUD.

ResultmAP50 0.970 for localisation and 0.950 across 43 classes, 5.7 ms inference on an NVIDIA A100.

  • Python
  • YOLO26
  • PyTorch
  • OpenCV
  • CUDA
Code on GitHub
Baked goods segmented, tracked and counted on a moving conveyor belt
Independent project · 2026

Detection, Tracking & Classification on a Conveyor

Segments, tracks, counts and classifies baked goods on a moving conveyor belt without a single labeled training image.

  • FastSAM masks with ROI-relative area filtering to separate touching and overlapping objects.
  • Hungarian data association with velocity-based prediction bridges short dropouts; a four-stage line-crossing state machine with hysteresis counts each track once.
  • Online classification with DINOv2 embeddings and incremental clustering; noise goes to an "unclear" class.

ResultAn annotated video, JSON/CSV export and a sorted image archive, from the CLI or a Gradio web demo.

  • Python
  • FastSAM
  • DINOv2
  • OpenCV
  • Hungarian algorithm
  • Gradio
Code on GitHub