Computer Vision Engineer · AI Researcher
Seoul, South Korea
Quy Nhon, Vietnam
I am a computer vision engineer with 7+ years of experience connecting academic research with practical engineering applications. I specialize in developing computer vision systems for automotive safety and smart surveillance, covering from deep learning model optimization and algorithm design to edge device deployment. Furthermore, I have published research articles in IEEE, MDPI, and CVPR workshops.
My applied automotive computer vision work is the springboard: these are the directions I'm actively pushing toward — extending edge-deployed perception into visual SLAM, 3D vision, and robotics for resource-constrained, real-world systems.
Led a Research & Development team building an In-Cabin Monitoring System (ICMS) compliant with Euro NCAP standards — owning technical roadmap definition, task allocation, weekly progress reviews, milestone management, and partner/client demonstrations for an 8-model real-time pipeline (object detection, 2D/3D keypoints, facial landmarks, gaze estimation) running at 14 FPS on TI SK-TDA4VM/TDA4AEN and Samsung Exynos V920 SoCs. Delivered 4 PoC projects for 2 major Korean automotive vendors.
Worked on multi-camera stitching, railway worker localization, pseudo-LiDAR generation, and real-time depth estimation.
Developed vision-based smart surveillance system using multiple CCTV cameras.
Researched and prototyped Optical Character Recognition (OCR) solutions for truck and container monitoring.
Conducted research on vehicular Optical Camera Communication and stereo-vision-based nighttime vehicle positioning, resulting in multiple peer-reviewed publications.
Trained in enterprise software development practices with a focus on C/C++ applications.
Thesis: LED Taillight Matching in Nighttime Vehicle Positioning (Supervisor: Prof. Myungsik Yoo).
View thesis record →Coursework project portfolio:
View project files →Core stack I build and ship production code with daily, plus a broader toolkit I'm familiar with.
End-to-end in-cabin monitoring system built on a single NIR fisheye camera, compliant with Euro NCAP standards, and complemented with proprietary advanced features. Integrates up to eight deep learning computer vision models (object detection, image classification, 2D/3D body keypoints, facial landmarks, gaze estimation) into a C/C++ pipeline deployed on System-on-Chip devices (Texas Instruments SK-TDA4VM/TDA4AEN, Samsung Exynos V920). As Team Lead, owned the technical roadmap, task allocation, milestone tracking, and client demonstrations.
Demo confidential under client NDA — figures above are approved for public disclosure.
Real-time head pose estimation pipeline using classical computer vision (PnP solver, ZYX Euler angles). Recovers full rotation matrix and translation vector for pitch, yaw, and roll from monocular images, driven by a custom 2D facial-landmark model and stabilized with an Extended Kalman Filter to smooth motion and handle occlusion.
Read case study →
Camera-based LiDAR replacement using absolute depth estimation and camera calibration to generate pseudo point clouds from image pixels. Rendered in real-time 3D using OpenGL and Open3D. Designed a lightweight YOLOv8-based encoder-decoder depth model with accuracy competitive against SOTA methods (NeWCRFs, PixelFormer) at a fraction of the parameter count.
Read case study →
Detect and estimate worker positions using a single thermal (Boson LWIR) camera. Combined YOLOv5 object detection with NeWCRFs monocular depth estimation. As the first developer on the project, built the full calibration pipeline: camera calibration, data collection, and Camera-LiDAR calibration using an Ouster OS0 LiDAR. The resulting dataset and depth model were submitted as Team DepthSquad to CVPRW 2023's Second Monocular Depth Estimation Challenge — 1 of 8 submissions worldwide (out of 28 total) accepted for outperforming the SOTA baseline, beating it on image-based accuracy metrics (MAE, RMSE, AbsRel).
Read case study →
Proof-of-concept multi-camera real-time stitching system for ADAS, built as sole end-to-end developer. Implemented two stitching algorithms (simple and advanced) covering input streaming, cache-parameter registration, and panorama composition. Requires ≥ 30% FoV IoU overlap between each camera pair for reliable feature matching.
Read case study →
Detects whether a driver is looking at their phone by combining an object detection model with a gaze estimation model. Uses a cone-based FOV intersection algorithm with configurable confidence and count thresholds. The underlying intersection geometry has since been generalized into a standalone toolkit (linked).
Read case study →Official implementation of the stereo-vision nighttime vehicle-to-vehicle positioning algorithm from my MDPI publication: gradient-boosted stereo matching for taillight-region correspondence, paired with a neural-network-based matching stage to associate left/right taillights under urban traffic conditions.
See publication →From-scratch simulations spanning the recursive-vs-batch spectrum of robotics state estimation on the SO(3)/SE(3) manifolds: IMU integration/pre-integration, point-cloud pose tracking (EKF vs. Invariant EKF vs. batch Gauss-Newton), pose-graph optimization with loop closure, and full bundle adjustment (joint camera-pose + landmark refinement, Umeyama-aligned to ground truth). Every method implemented twice — hand-rolled NumPy Lie-algebra math, and via the manif Lie-theory library — backed by a growing set of written theory notes.
A curated collection of pre-trained vision encoders (backbones) from various detection and classification models, ready to use as feature extractors for downstream tasks such as classification, detection, keypoint estimation, segmentation, and depth estimation.
A growing personal toolkit reused across multiple detection and calibration projects: fisheye camera calibration and undistortion, chessboard corner detection, YOLO↔Pascal VOC label conversion, and video frame extraction for dataset preparation.
A Python/OpenCV toolkit for estimating camera intrinsics and removing lens distortion, supporting both fisheye and pinhole models across RGB and thermal sensors. Handles checkerboard detection from live streams or batch images, with configurable quality thresholds and reprojection-error reporting.
A collection of PyTorch, TensorFlow, and R tutorial notebooks plus CSC321 (Univ. of Toronto) coursework, covering model building and training, transfer learning, RNNs/LSTMs, autograd, and deploying models via a REST API.
A face detection and blurring tool for video files. C++ backend (FFMPEG + inference) with a C# WinForms UI supporting drag-and-drop input.
A five-step pipeline for detecting ego-vehicle lanes from LiDAR point clouds: ground point extraction, intensity histogram peak detection, sliding-window lane search, and polynomial curve fitting to output left/right lane coefficients.
A C++ point cloud registration solution that aligns and merges multiple 3D point clouds to a master reference via notch region detection and correspondence matching, through preprocessing, detection, registration, and merging stages.
A GPS-calibrated framework detecting and tracking railroad workers in IR images, estimating their absolute distance from the camera.
Co-authored results paper documenting submissions to CVPR's second Monocular Depth Estimation Challenge on the diverse SYNS-Patches dataset.
Stereo-vision V2V nighttime positioning using gradient-boosted stereo matching and a neural-network taillight pairing method for urban traffic conditions.
OCC-based nighttime vehicle positioning that detects and locates taillight LEDs from high-speed camera images to estimate the position of front vehicles.
Separates overlapping LED signals in vehicular VLC using an improved Canny edge detector and a generalized Hough transform to reduce data loss and bit-error-rate.
An in-depth exploration of knowledge distillation — when to train teacher and student models in parallel, standard two-stage pipelines, and when parallel training makes sense.
Computer VisionMathematical reference for common 2D vision operations: ellipse parametric equations, rotated ellipse general form, and point rotation formulas with Python implementations.
Depth EstimationA curated benchmark and personal notes on monocular depth estimation — tracking SOTA models, prominent works like Depth Anything V2 and PromptDA, and insights for real-world deployment.
Depth EstimationAn exploration of monocular depth estimation approaches — absolute vs relative depth — and how to reconstruct pseudo-LiDAR point clouds from camera images using depth maps and camera intrinsics.
Computer VisionA concise comparison of two fundamental geometric transformations: the perspective (homography) transform that maps between planes with 8 DoF, and the affine transformation that preserves parallelism.
Computer VisionA naive algorithm to detect if a person is looking at their phone, combining an object detection model and a gaze estimation model with a cone-based FOV intersection approach.
Object DetectionAdapting SAHI's slicing idea from inference-time to dataset preprocessing, to improve recall on small, distant objects for YOLOv8-p2/YOLOv9n while keeping inference a single full-image pass.