DEV Community

Aurora Capital
Aurora Capital

Posted on

I Built an AI Upscaler with 6 Specialist Models — Here's What I Learned

Why one model isn't enough

When I started building an AI upscaling service, I thought I'd just wrap Real-ESRGAN and call it done. Wrong.

A model trained on photographs produces blurry edges on digital art. A model trained on anime smears skin textures in portraits. And video? Completely different challenge.

After testing dozens of models, I picked 6 that each excel at a specific image type:

Model Best for Why
Flare Photos Natural textures, minimal artifacts
Prism AI art Preserves synthetic textures from SD/DALL-E
Lumen Portraits Skin tones, fine hair detail
Mirage Illustrations Clean edges, flat colors
Motion Video Frame interpolation, temporal consistency
Motion X Video (enhanced) Higher quality, slower

The architecture

UpRes runs on a single API endpoint. You submit a job with an image URL, pick a model and scale factor, and poll for the result:

curl -X POST https://api.upres.ai/v1/jobs \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -d '{"image_url":"https://example.com/photo.jpg","model":"flare","scale":4}'
Enter fullscreen mode Exit fullscreen mode

The backend queues the job, runs it on GPU, and returns the output URL when done. Most jobs finish in 15-25 seconds.

What I learned

  1. Model selection matters more than scale factor. A 2x upscale with the right model beats a 4x with the wrong one.

  2. Free tier converts. People who try the free tier and see good results upgrade. Watermarks kill conversion.

  3. Video is 10x harder than images. Temporal consistency across frames is the hardest engineering problem. Motion X took 3 months to get right.

  4. MCP is a sleeper feature. Being able to say "Claude, upscale this image" and have it just work is magical for developers.

Try it

I'd love to hear what you're upscaling and which models work best for your use case.

Top comments (0)