Runner-up

Viettel AI Race — 3D Gaussian Splatting

Rendering views no camera took, with 3D Gaussian Splatting.

  • 3D Gaussian Splatting
  • Computer vision
  • Competition
Three members of team Zillexa holding their award at the Viettel AI Race 2026 final
Team Zillexa at the final
Client
Viettel Group
Timeline
Jul – Sep 2026
Role
Team Zillexa (3 people)
Outcome
Runner-up (top 4) of 1,628 teams

About the project

Novel view synthesis for the Viettel AI Race 2026: from photos with known camera positions, render what a camera would see from places it never visited. The qualifying rounds covered seven scenes, two objects and five aerial captures over Ho Chi Minh City; the final was one large urban scene scored on image quality, with inference time measured on an H200. Our three-person team, Zillexa, finished runner-up (top 4) out of 1,628 teams.

The problem

Viettel AI Race 2026 gave every team photos of real places, each with a known camera position, and asked for the pictures a camera would take from positions it never visited. That is novel view synthesis, the core of any digital twin you can fly through. A submission was 386 rendered images, scored per scene and averaged:

score = 0.4 × (1 − LPIPS) + 0.3 × SSIM + 0.3 × min(PSNR / 50, 1)

Teams had fifteen submissions a day.

What I built

I competed in Zillexa, a three-person team, with a 3D Gaussian Splatting pipeline and a written log of every experiment, dead ends included.

  • Read the metric scene by scene — the aerial scenes already had low LPIPS, so PSNR was the term left to move; on the two objects LPIPS was the lever.
  • Fix the geometry first — the aerial cameras had radial lens distortion, and so did the test images. We undistorted the training photos, trained a pinhole model, rendered the test views and re-applied the exact distortion with cubic resampling. On the first version of the task, this alone took the score from 65 to 77.
  • Capacity where it was missing — raising the cap from 12 to 16 million Gaussians helped four of the five aerial scenes by filling in far-field detail.
  • Fusion and sharding — the biggest jumps came from averaging the renders of several independently trained models pixel by pixel. Models too large for one GPU were trained across four and merged.

How it works

What did not help mattered as much. Higher spherical-harmonics degree and penalties on scale and opacity made novel views worse, refining camera poses cost almost two points, and diffusion enhancers gave nothing back because our test views sat between training views. Our held-out split also lied: it said one change was worth +0.16 when the official score said −0.08, so every object experiment had to prove itself on the leaderboard.

The final was one large urban scene scored against sharp full-resolution images, with inference time measured on an H200. There, post-processing that had been useless against the softer qualifying images paid off: MCMC densification up to 14 million Gaussians, weight-decay regularisation, multi-view accumulation in training, and a SCUNet restoration model fine-tuned on our own renders.

Outcome

Zillexa reached the final as one of twelve teams and finished runner-up (top 4) out of 1,628. We kept the pipeline, the experiment log and the list of dead ends.

Stack

  • 3D Gaussian Splatting (gsplat, MCMC densification)
  • PyTorch, multi-GPU training with model sharding
  • SCUNet restoration fine-tuned on our renders

Photos

All Viettel AI Race 2026 finalists on stage under a screen reading 1628 teams, 12 finalists

1,628 teams, 12 finalists

Team Zillexa working on laptops during the Viettel AI Race 2026 final

Heads down during the final

Finalists comparing results on their laptops at the Viettel AI Race 2026

Checking renders between rounds

The Viettel AI Race 2026 awards stage

The awards night

Stack & links

STACK

  • 3D Gaussian Splatting
  • PyTorch
  • gsplat
  • Multi-GPU
  • SCUNet

DOMAIN

Computer vision

IMPACT

Runner-up of 1,628 teams

NEXT PROJECTSiz — AI Commerce Gateway (MCP)

Let's talk

I usually reply within 1–2 days (GMT+7).

Topic (optional)

At least 10 characters.

or email me at [email protected]