Computer vision & ML engineer · 20 merged pull requests in Hugging Face, MONAI, Kornia and Roboflow
BS Computer Science, AWKUM (2022–2026) · Mardan, Pakistan · muhammadtalha223@gmail.com
I build computer vision and ML systems, and I fix the bugs I run into in the libraries underneath them. My thesis was an end-to-end license plate recognition system for Pakistani plates that runs on a Raspberry Pi and is deployed entirely on free-tier services. Most of my open-source work is correctness fixes in PyTorch-ecosystem libraries: numerical edge cases, ONNX export, metric definitions, and security hardening.
Currently looking for: graduate research opportunities (MS/PhD) in computer vision and medical imaging.
20 merged PRs across 5 projects, plus 2 open, verified on 24 October 2026. Browse my contributions.
| Project | Merged | Areas |
|---|---|---|
| kornia/kornia | 13 | geometry, filters, augmentation, ONNX export, integer-input numerics |
| Project-MONAI/MONAI | 4 | security hardening, SegResNetDS docs and tests |
| huggingface/transformers | 1 | MoE config bug |
| roboflow/supervision | 1 | COCO-compliant mAR metric |
| future-agi/future-agi | 1 | API gateway warnings |
Selected fixes
- supervision #2701:
MeanAverageRecallcapped detections across all classes, which pushed recall below what COCO'spycocotoolsreports. It now appliesmaxDetsper image and per class. - kornia #5702:
euler_from_quaternionreturned wrong rotations at pitch = ±π/2 (gimbal lock). Added the standard special case. - kornia #5710: Canny's hysteresis loop lost its data dependence under
torch.jit.trace. - kornia #5407, #5417: integer inputs overflowed or produced NaN/inf in
normalize,denormalizeandmean_iou_bbox. They are now promoted to float32. - MONAI #9179: the MMAR format carried a security advisory (unsafe dynamic imports and TorchScript loading). Deprecated the APIs and disabled
load_from_mmar. - MONAI #8797, #9128, #9131:
SegResNetDSdocumented only the isotropic input-shape rule. I tracedshape_factor()andis_valid_shape()through the source, documented the anisotropic case, and added edge-case tests. - transformers #49416:
Inkling-Smallresolvedmoe_intermediate_sizeto 3072 instead of 2048 because the dense MLP width overwrote the expert width, breaking weight loading.
In review: huggingface/trl #7540 (report true epoch progress in AsyncGRPOTrainer and AsyncDistillationTrainer) · MONAI #8795 (package install hint in ImageWriter backend errors)
All 20 merged PRs
| Repo | PR | Title |
|---|---|---|
| kornia/kornia | #6184 | Fix BoxFiltering class-list device mismatch in forward |
| kornia/kornia | #6139 | feat(onnx): add force_download to refresh cached models |
| kornia/kornia | #6138 | fix(augmentation): repeat CutMix parameters across video frames |
| kornia/kornia | #6132 | fix(augmentation): allow mix augmentations in PatchSequential with random_apply |
| kornia/kornia | #6086 | fix(onnx): fix BoxFiltering batch size for per-image outputs |
| kornia/kornia | #5859 | fix(feature): accept device=None in OnnxLightGlue |
| kornia/kornia | #5710 | fix(filters): keep Canny's hysteresis loop data-dependent under torch.jit.trace |
| kornia/kornia | #5702 | fix(geometry): handle gimbal lock in euler_from_quaternion |
| kornia/kornia | #5618 | fix(augmentation): broadcast single mask over a batched image in AugmentationSequential |
| kornia/kornia | #5616 | fix(augmentation): ignore a hand-made batch_prob consistently at static p=1.0 |
| kornia/kornia | #5432 | fix(filters): check the sigma_color and sigma_space batch in the bilateral blurs |
| kornia/kornia | #5417 | fix: compute integer and bool boxes in float32 in mean_iou_bbox |
| kornia/kornia | #5407 | fix(enhance): promote integer input to float in normalize/denormalize |
| Project-MONAI/MONAI | #9179 | Deprecate MMAR APIs and disable load_from_mmar |
| Project-MONAI/MONAI | #9131 | docs: add missing upsample_mode parameter documentation to SegResNetDS and SegResNetDS2 |
| Project-MONAI/MONAI | #9128 | Add anisotropic edge-case tests for SegResNetDS shape validation |
| Project-MONAI/MONAI | #8797 | Docs: add spatial shape constraints to SegResNetDS docstring |
| huggingface/transformers | #49416 | Fix Inkling moe_intermediate_size when dense_intermediate_size is present |
| roboflow/supervision | #2701 | fix(metrics): limit MeanAverageRecall detections per image and class |
| future-agi/future-agi | #3544 | fix(gateway): flag and warn on unpriced models |
Live demo · webcam → YOLOv11 Nano plate detector → OCR → Node.js/WebSocket backend → Next.js dashboard
A parking prototype for Pakistani cities that needs no per-bay sensors, built under real budget limits (Colab free GPU, Render, Vercel, MongoDB Atlas free tiers).
- Built and annotated a 694-image Pakistani plate dataset (Kaggle, YouTube frames, simulation). The first run scored 48.4% mAP@50; the confusion matrix showed that mixing close-up plates with full road scenes was the cause. I cleaned the data and retrained.
- PaddleOCR crashed with a segmentation fault on the Raspberry Pi's ARM CPU, so the Pi build uses EasyOCR.
- CLAHE preprocessing, 10-frame majority voting per tracked vehicle, and position-aware character correction (0/O, 1/I, 5/S, 8/B).
- Real-time slot updates over WebSocket, JWT + Google/GitHub OAuth, and automatic billing.
| Metric | Result |
|---|---|
| Local YOLOv11 Nano (Colab) | ~65% mAP@50 |
| Roboflow cloud run, same data | 93.5% mAP@50 (benchmark only; weights not exportable on the free plan) |
| End-to-end exact plate match | >85% on controlled test clips |
| Detection to logged plate | ~1.3 s |
| WebSocket slot update / API p95 | 43 ms / 320 ms |
| Project | What it shows |
|---|---|
| MediBot | PDF-based RAG with source passages: Groq + Streamlit UI, Hugging Face terminal client, FAISS index, setup guide, and presentation |
| NYC Airbnb 2024: exploratory analysis | Separate analysis of 20,770 listings: data cleaning, price distributions, room types, availability, and geographic patterns |
| NYC Airbnb: cleaning, EDA & modeling | Found that price in the dataset is synthetic and caught a leaking feature (service_fee is exactly 20% of price); no model beats R² ≈ 0.08 |
| Telco churn prediction | SMOTEENN applied to the training split only, six models compared on a stratified held-out set (ROC-AUC 0.80–0.83) |
| Zomato data analysis | Restaurant types, ratings, cost for two, and online/offline ordering patterns |
| Eid sales analysis | Sales exploration by demographics, location, occupation, and product category |
| Ola SQL and analysis index | 10 reusable MySQL views on ride bookings, cancellations, ratings, and revenue |
| Computer vision | YOLOv11 (Ultralytics), OpenCV, EasyOCR, PaddleOCR, ONNX, CLAHE, multi-object tracking |
| Deep learning | PyTorch, MONAI, Kornia |
| ML & data | scikit-learn, imbalanced-learn, pandas, NumPy, SciPy, matplotlib, seaborn, Plotly |
| LLM / RAG | LangChain, FAISS, sentence-transformers, Groq, Hugging Face, Streamlit |
| Web & backend | Node.js, Express, WebSocket, MongoDB, Next.js, React, Tailwind |
| Languages & tools | Python, JavaScript, SQL (MySQL), C++ (basic), Git, Raspberry Pi, Google Colab, Roboflow |


