Hi, I'm Hugo Huang 👋

Research engineer @ Huawei R&D UK, big fan of Doom

Featured Project

std-raytracer

A comprehensive C++ raytracer built from scratch using only the standard library. Features include Blinn-Phong shading, shadows, reflections, refractions, textures, and tone mapping. Advanced features include BVH (Bounding Volume Hierarchy) for performance, antialiasing sampling, aperture sampling for depth of field, BRDF materials, area light sampling, and multi-bounce path tracing for photorealistic rendering.

About Me

NLP research engineer at Huawei R&D UK with a passion for Artificial Intelligence, Reinforcement Learning, Natural Language Processing and Computer Vision.

I hold an MSc in Artificial Intelligence from the University of Edinburgh and a BSc in Computer Science from Cardiff University.

My interest is not limited to NLP, CV or RL tho. Like any gamer, I love all visual stuffs!

  • Reinforcement Learning
  • Computer Vision
  • LLM Agents
  • Computer Graphics
Playing Doom with Semantic Segmentation

Playing Doom with Semantic Segmentation

Contribution to Open Source Projects

ViZDoom

Contributer

Contributed to ViZDoom, a platform for AI research on the classic video game of Doom. Proposed & implemented the Python typing support, enabling IDEs to recognize & provide hinting for ViZDoom classes, methods, enums, etc. Tool is available as both utility script and part of build process.

RL CV Python C++ CMake Doom

sb3-extra-buffers

Maintainer

Created sb3-extra-buffers, a library that adds compressed rollout/replay buffers to Stable Baselines3. Featured in the official SB3 documentation, it provides 90%+ memory savings for image-based observations using compression algorithms like ZStandard, gzip, LZ4, and RLE.

Memory Optimization Python PyTorch NumPy
View All Projects

Latest Blog Posts

View All Posts →

RAM expansions are overrated, just compress your observations!

I’m excited to share that my project sb3-extra-buffers has been featured in the official Stable Baselines3 documentation! This small but powerful library addresses a common pain point in Reinforcement Learning: the massive memory consumption of replay and rollout buffers when working with image-based observations.

Banner Image

The Problem: Memory-Hungry RL Buffers

Reinforcement learning is often considered memory-hungry due to the enormous amount of RAM required to store replay and rollout buffers. When you read a cool RL paper and try to reproduce their results, you might find yourself needing to store millions of observations in memory. This becomes especially problematic when working with: