Edge & embedded AI
Nvidia Jetson (Nano, NX), DeepStream, TensorRT, ONNX, INT8 quantisation, MobileNet v1–v3, ARM NEON SIMD, C++ deployment modules.
Edge AI & Computer Vision Engineer · Dublin, Ireland
Eight years owning the full path from training pipeline to deployed device — quantisation, compression, and inference under hard latency and cost budgets. Shipped in airport security screening, construction-site safety and platform risk control. Comfortable well below the application layer: I run my own production estate, from the network up.
Nvidia Jetson (Nano, NX), DeepStream, TensorRT, ONNX, INT8 quantisation, MobileNet v1–v3, ARM NEON SIMD, C++ deployment modules.
Object detection (YOLO family, SSD, Faster R-CNN), human pose and keypoint estimation, OCR and ALPR, image denoising, GANs. PyTorch, TensorFlow, OpenCV.
RAG pipeline design (LlamaIndex, Elasticsearch as vector store), multi-agent architectures (LangChain, LangGraph, function calling), LoRA / QLoRA fine-tuning, AWQ & GPTQ quantisation.
Linux administration, Proxmox VE, Docker / LXC, ZFS, NFS, Elasticsearch / ELK, PostgreSQL, Kafka, Redis, Node.js APIs, Vue.js.
Five things that show what I actually ship, rather than what I can list.
Millimetre-wave and terahertz body scanners at civil airports have to flag concealed items between one passenger and the next. The human-keypoint model that fed that pipeline started at over 70 MB — too large for the deployment target.
I rebuilt it around MobileNet backbones with squeeze-and-excitation modules and quantisation, bringing it to 2.6 MB while improving accuracy and holding millisecond-level inference. Separately, I reformulated keypoint localisation as a regression problem, which cut localisation error substantially and removed the need to maintain separate gender-specific models.
0.86 is the classifier’s confidence, and the label
翻墙 reads “climbing the fence”. Burned-in text is the
camera’s own timestamp and position.
A bounding box tells you a person is near a fence. It doesn’t tell you whether they are walking past it or going over it. I built the intrusion alert on human keypoint estimation instead, so the decision rests on limb geometry — the pose of someone scaling a railing is separable from the pose of someone standing beside one.
The system localises the event, captures the frame and dispatches the alarm automatically, replacing a person watching a wall of CCTV feeds.
Counting people is easy. Deciding that a crowd has formed is a spatial question — it depends on local density, not headcount. Detections are clustered per-region and scored against a threshold tuned on site, so a queue at a bus stop doesn’t trigger and a genuine gathering does.
This ran as part of an end-to-end worker-safety stack on Nvidia Jetson with DeepStream: fall detection, PPE compliance (hard hat, hi-vis), smoking detection and virtual geofencing. I owned it from data collection and annotation strategy through training, on-device optimisation, field deployment and false-positive tuning under real site conditions — lighting, occlusion, camera angle, weather.
30 s · screen recording · Chinese UI
A WeChat mini-program where you describe what you want done to a file and an LLM agent system does it. In the clip, the user uploads a photograph of a room and types, in Chinese, “replace the blue sofa in that PNG with a vintage brown leather one” — the agent selects the right tool, performs the edit and returns a new file.
I built and ran the whole thing alone: Vue.js / uni-app front end, Node.js API, deployed on self-managed Proxmox VE bare metal. Rebuilding the assistant from a single agent to a multi-agent architecture fixed tool-selection degradation and hallucination at scale, and cut token consumption per task by roughly 80%. A RAG pipeline over a 100,000-word bilingual knowledge base (LlamaIndex, Elasticsearch as vector store) is exposed to the agent layer as a first-class tool; Kafka and Redis carry event-stream tracing and response caching, with ELK observability over agent execution traces.
Proxmox VE on bare metal, services in LXC containers, behind an OpenWrt gateway with dynamic DNS. My residential ISP blocks ports 80 and 443, so public traffic enters through a minimal cloud VPS and is tunnelled back to the gateway; Nginx Proxy Manager centralises reverse proxying and TLS, and a WireGuard overlay carries routed access between Ireland and China. The same hybrid-ingress pattern cut hosting cost for my company’s services to a fraction of an equivalent all-cloud deployment.
On top of it: Elasticsearch as event store and security telemetry (above), paperless-ngx with bilingual OCR, Trilium, AFFiNE, Memos, Kavita and Jellyfin — and a self-hosted mail server that stays deliverable, which is its own discipline.
Both documents are in Chinese and predate the CV work — they are where the measurement and model-calibration habits come from. Readable in full below, no download required.
Peer-reviewed · first author
Zhang Y., Wang C., Fan M., Cai W., Shao X.
Spectroscopy and Spectral Analysis, 36(12), 4100–4104, 2016
DOI: 10.3964/j.issn.1000-0593(2016)12-4100-05
Multivariate calibration on near-infrared diffuse-reflectance spectra to quantify Ni²⁺ and Cu²⁺ simultaneously in dilute solution. Benchmarked pre-processing pipelines (continuous wavelet transform, MSC, SNV, Savitzky–Golay derivatives), selected latent-factor count by leave-one-out cross-validation, and confirmed generalisation on a held-out set — r = 0.98 and 0.97, down to 3.0 mg·L⁻¹.
MEng thesis · Nankai University
Materials Engineering, Research Center for Analytical Sciences,
College of Chemistry, Nankai University · May 2016
Supervisor: Prof. Cai Wensheng
The instrument-software side of the same research programme: acquisition, spectral pre-processing and the quantitative and discriminant modelling built on top of it.
Nov 2023 – Jan 2026
Bootstrapped a product venture around File IO, an LLM-agent-backed file assistant. Product, architecture, full stack and infrastructure, solo. Benchmarked LoRA vs. P-Tuning v2 on ChatGLM2 and Llama 2; fine-tuned Whisper-large-v2 with LoRA for domain speech.
May 2022 – Nov 2023
Real-time construction-site worker safety on Jetson + DeepStream — falls, PPE compliance, smoking, geofencing, pose-based perimeter intrusion. Also authored the technical proposals that turned this capability into public-sector smart-city tenders.
Mar 2020 – Nov 2021
Multimodal fraud detection across vision and speech. Built an ALPR system from detection + OCR that outperformed Tencent, Alibaba and Megvii on the internal benchmark; a face-embedding search index over a large identity database; and edge detection models for in-vehicle IoT devices.
May 2018 – Feb 2020
One-stage detection for prohibited items on millimetre-wave and terahertz scanners at civil airports. Model compression from 70+ MB to 2.6 MB; keypoint localisation reformulated as regression.
Jul 2016 – May 2018
Palmprint recognition on low-power embedded devices in C++ — hand-designed Gabor filter banks, bitwise matching. Restructured and parallelised the Gaussian filter pipeline with ARM NEON SIMD for a material latency reduction.
MSc, Computer Science — Interactive Digital Media · Griffith College Dublin · Jan 2026 – 2027 (expected)
MEng, Materials Engineering · Nankai University · 2013 – 2016
BSc, Safety Science and Engineering · China University of Labour Relations · 2009 – 2013
Mandarin Chinese (native) · English (professional working) · Japanese (N5)
Open to Edge AI, computer vision and applied-ML roles in Ireland and the EU.
Based in
Dublin, Ireland
Work authorisation
Stamp 2 now — 20 h/week in term, 40 h in holidays.
Eligible for Stamp 1G on completion of the MSc: full labour-market access,
no employment permit required.
1 / 1
PDF ↓