🇬🇧 English · 🇹🇷 Türkçe
Computer engineering student. I build computer-vision and full-stack systems that run in industrial settings — where the interesting problems are rarely the model, and usually everything around it.
Forty working days in the process automation department of an integrated iron and steel plant, on machine-vision systems for the steelmaking and blast furnace areas.
Detects steel ladles on plant CCTV, keeps their identity across frames, and records when each one entered and left a camera's view — replacing a handwritten log.
YOLO11l · ByteTrack · OpenCV · PostgreSQL · Flask · RTSP
The detector reached mAP@0.5 = 0.988 on an 835-image dataset I labelled myself. The part I'd actually point at, though, is the live trial that failed: connected to real streams it produced duplicate records, phantom 5-second entries and timestamps drifting behind the clock. Tracing every bad row back to the footage gave four distinct root causes — ID switching under smoke, unfiltered momentary detections, an unset compute device, and a zone loader picking the oldest file. Fixing those and retraining on the cameras the model had under-seen took a 15-hour recording from 25 records down to 16, matching the count made by hand.
Turned hours of blast furnace tuyere footage into a labelled dataset: 20,169 clips classified as normal / abnormal / uncertain.
FFmpeg · Flask · Python
Splitting used stream copy instead of re-encoding; the annotation UI has keyboard shortcuts so the whole set could be worked through without touching the mouse. The resulting dataset is ~2.7% abnormal — which is itself the most important finding for whoever trains on it.
Replaced a paper ledger with a fully traceable goods-movement system.
Flask · SQLite · Jinja2 · JavaScript
Stock is never stored — it is derived from movements, so a mismatch between the stock figure and the history is structurally impossible. Checks are shelf-level, not item-level.
Six-class defect detection on hot-rolled strip using the public NEU dataset.
YOLOv9 · PyTorch · Gradio
mAP@0.5 = 0.702. The two weak classes look alike at low contrast — a lighting problem more than a model problem.
Beyond the repositories above I have two larger systems in progress — an IoT platform with field hardware, and a multi-tenant live fleet-tracking system. Both are commercially confidential while licensing and incorporation are under way, so the source and architecture are not published. I'm glad to discuss them in more detail in a conversation.
Vision & ML — Ultralytics YOLO (v9, v11), ByteTrack, BoT-SORT, OpenCV, PyTorch, Label Studio Backend — Python, Flask, FastAPI, PostgreSQL, TimescaleDB, SQLite, Redis Frontend — React, TypeScript, Vite, MapLibre GL, Jinja2 Ops — Docker, Docker Compose, Caddy, systemd, FFmpeg, Git
The four internship projects were built inside a working steel plant. All plant footage, camera identifiers, trained weights and zone calibration data are confidential and are not published. What those repositories contain is the code, the architecture and the reasoning behind the decisions — enough to judge the engineering, nothing that identifies the site.