LTDK
Résumé
TLDR: shorter version
Experiences
Now
I’m a Senior Machine Learning Engineer at Visenze, where I focus on making product search better:
-
Re-designed Multisearch—crafting new search logic and developing features to enhance end-user experiences: rerank & recommendation services, natural filtering, boosting mechanisms, adaptive threshold, and autocompletion. I also lead the effort to improve search quality, spanning from implementing algorithm codebases, experimenting with and finetuning text embeddings, to designing virtual agents for annotation tasks.
-
Vector search engine: conducted experiments on vector search algorithms, benchmarked search quality of SIMD-based vector calculation[1], and tuned optimal HNSW with replication settings.
-
Object Detection: overhauled annotation guidelines, upgraded the training framework from Detectron to PyTorch[2], and developed and released multiple detection models across all Visenze solutions (search, tagging, recommendation).
I also spent approximately two years at Visenze developing on-device ML solutions:
- Built a 3D object labelling solution comprising: (1) an AR mobile app for capturing objects and collecting 3D data, (2) a Unity tool for importing and refining raw data, and (3) a 3D object detection codebase for training, evaluation, and visualization.
- Delivered virtual try-on (a sneak peek), object tracking, and hand gesture recognition solutions on mobile devices. I developed DL models designed for low memory usage and fast inference to maintain a 30 FPS constraint, and integrated them into existing Unity games via native plugins. The game has achieved over 10M downloads on Play Store (Android) and ranks among the top 30 Education apps on iOS Store.
Other projects I was involved in:
- Re-designed the sequential recommendation algorithm.
- Improved exact product search via new re-rank logic & advanced data augmentations[3].
Past
Before joining Visenze, I spent 2.5 years as a research assistant in Professor Ngai-Man Cheung’s lab at SUTD, focusing on:
- Hashing-based image retrieval: We were among the first to jointly learn hashing and vector embedding in an end-to-end manner for retrieval tasks. I implemented most of the proposed methods on Caffe and Torch (not PyTorch)[4] and contributed to 10 publications.
- Vision-based localization: We built a 3D model of Singapore from Google Maps to infer user location based on building photos. I was responsible for re-implementing the inference framework (originally in MATLAB) for Android devices. The most challenging task was implementing fast SIFT features on Android using shader programs while maintaining accuracy.
Education
Now
Since 2023, I have been pursuing Master of Computing (Artificial Intelligence Specialisation) (part-time coursework) at NUS. This program allows me to delve into AI topics that I don’t encounter in my daily work. I’ve completed several projects:
- Menu Recommendation using Deep Learning Critic-Actor Framework [Github, Report]: Thanks to a team member, we had access to order history of an F&B franchise in Singapore. I led implementation and model training. This project made me realize that training an RL model is painful.
- Predicting HDB Rental Price in Singapore [Github, Report]: We studied rental price increases in Singapore using 2021 – 2023 HDB data and developed several prediction models, achieving #1 on the private leaderboard.
- Blood Cell Identification: I proposed a U-Net variant that utilizes segmentation masks to classify five leukocyte types. It achieves 92.59% accuracy[5] on the CAM16 dataset.
- LightningCat [Report]: A cloud-based SaaS platform providing real-time updates on Singapore’s sporting facilities, including operational status, capacity, weather-related closures, and booking slots through an intuitive map interface to optimize facility usage and foster community engagement.
- TemporalLens [Github, Report]: An AI-driven pipeline that tracks emerging topics, constructs event timelines and knowledge graphs, and analyzes sentiment shifts.
- PQ-GCN2: Modernized the PQ-GCN codebase to PyTorch Geometric and explored various GCN variants for large-scale node classification.
Past
I completed my undergraduate degree at HCMUS, where I had the opportunity to engage in several internships:
- I have 1 paper at ICIP on compact PCA component[6].
- At JAIST, I conducted research on background subtraction methods.
- At University of Saskatchewan, I derived a new method for white cell counting problem.
My Interests
- Information Retrieval & Recommendations.
- Data structures & Algorithms.
- Computer Vision.
- Computer Graphics.
- Game Development.
Skills
Programming Languages
- Professions: Python, Go, C++, Java, C#.
- Hobbies: Julia, D, Crystal, Raku, Clojure.
Tools
- Professions: PyTorch, HuggingFace, Mediapipe, OpenCV, Sklearn, Unity, Docker, Latex, XGBoost.
- Hobbies: Raylib, ImGui.
Misc
- A collection of my favorite books.
Build Status
Changing the default quantized vector quantization from SDC to ADC. It seems deceptively simple, but it was a considerable pain since the engine API always assumes that both query vectors and index vectors are quantized ↩︎
Ah, the sweet ancient days of DL ↩︎
While working on this, I participated in Meta’s competition and secured #12 on the leaderboard ↩︎
The good old days when DL engineers coded models in Lua ↩︎
Honestly, the dataset seems too easy. ↩︎
My first paper ever. ↩︎