DEV Community

Cover image for Solved: Realistic AI headshots without the wax-museum look any non-tech wins?
Darian Vance
Darian Vance

Posted on • Originally published at wp.me

Solved: Realistic AI headshots without the wax-museum look any non-tech wins?

🚀 Executive Summary

TL;DR: AI-generated headshots often look artificial due to model oversmoothing; achieve realism by employing advanced prompt engineering with specific positive and negative prompts, fine-tuning models via LoRA with personal photos, and utilizing hybrid workflows for final touches.

🎯 Key Takeaways

  • Counteracting Model Oversmoothing: Explicitly include “skin texture” and “pores” in positive prompts and use weighted negative prompts like “(plastic, doll, smooth skin, airbrushed:1.3)” to combat the generic, smoothed-out appearance from base diffusion models.
  • Personalized Realism with LoRA: Train a Low-Rank Adaptation (LoRA) model using 15-20 varied personal photos to embed specific facial structures into the AI, enabling consistent and highly realistic generations that generic prompts cannot achieve.
  • Optimizing Sampler Settings: Fine-tune CFG Scale (e.g., 6.5 for naturalness) and Denoising Strength (e.g., 0.4-0.6 for img2img) to control the AI’s adherence to the prompt and preserve subtle textures, preventing the “denoising trap” that removes realism.

Tired of AI-generated headshots looking like plastic dolls? Learn how to inject realism by fine-tuning models with your own photos (LoRA) and mastering advanced prompting techniques for truly lifelike results.

I See Your AI Headshot and Raise You One Uncanny Valley: Escaping the Wax Museum

I still remember the Slack message from Marketing. “Hey Darian, can you spin up that ‘AI thing’ and get us new headshots for the exec team? We need them for the new ‘About Us’ page by Friday.” Simple enough, I thought. I grabbed a few of the CEO’s approved photos from our press kit, fired up a Stable Diffusion instance, and ran a basic prompt. The result? A perfectly coiffed, wrinkle-free, soulless mannequin that looked like our CEO had a horrifying accident at a candle-making factory. It was technically him, but it had zero life. That’s when I knew we had to go deeper than just a simple text prompt.

So, Why Does This Keep Happening? The Root of the Plastic Look

Before we jump into the fixes, you need to understand why this happens. It’s not just “bad AI.” It’s a combination of a few things:

  • Model Oversmoothing: Base diffusion models are trained on millions of images. To create a “general” human face, they average out features. This process naturally smooths out imperfections—pores, fine lines, asymmetrical features—which are the very things that make a face look real.
  • The Denoising Trap: The core process of diffusion is starting with noise and “denoising” it into an image based on your prompt. If the denoising strength is too high, it wipes away subtle textures, resulting in that glossy, airbrushed finish.
  • Lack of Specificity: A prompt like “photo of a man in a suit” is asking the model to pull from its vast, generic knowledge. It doesn’t know *your* face, it knows the *idea* of a face.

The goal isn’t to just make a picture; it’s to guide the model away from its generic defaults and force it to add back the chaos of reality. Here’s how we do it in the trenches.

Solution 1: The Quick Fix (Prompt Engineering & Sampler Fu)

This is your first line of defense. It’s fast, requires no custom models, and can often get you 80% of the way there. It’s all about telling the model what to add and, more importantly, what to avoid.

The Prompt Breakdown

Instead of a simple prompt, we get hyper-specific and use negative prompts to fight the “wax museum” effect. Let’s assume you’re using a tool like Automatic1111 or any other standard UI.

Positive Prompt:
(photograph of a 40-year-old man), professional headshot, sharp focus, (skin texture:1.2), pores, detailed skin, slight smile, soft studio lighting, Canon EOS 5D Mark IV, 85mm f/1.8 lens

Negative Prompt:
(plastic, doll, cartoon, 3d, render:1.3), painting, art, blurry, oversaturated, smooth skin, airbrushed, unnatural
Enter fullscreen mode Exit fullscreen mode

Notice the key elements: We’re explicitly asking for “skin texture” and “pores” and using weights (word:1.2) to increase their importance. In the negative prompt, we’re actively telling it to avoid the things that make images look fake. This is the equivalent of putting guardrails on the generation process.

Tweak Your Sampler Settings

Don’t just hit “Generate.” Play with these two settings:

Setting What it Does & Why You Should Care
CFG Scale How strictly the AI follows your prompt. A low value (e.g., 4-6) gives it more creative freedom, which can feel more natural. A high value (e.g., 7-10) sticks closer to your prompt but can feel rigid. Start around 6.5.
Denoising Strength (for img2img) If you’re using an existing photo as a base (img2img), this is critical. A value of 0.4-0.6 will change the style and lighting while preserving the facial structure. Go higher, and you start getting a different person.

Solution 2: The Permanent Fix (Train a LoRA On Yourself)

This is the real deal. When prompt engineering isn’t enough, you need to teach the model exactly what you look like. We do this by training a LoRA (Low-Rank Adaptation). Think of it as a small, lightweight “plugin” for the main model that contains information about a specific person or style.

This is where my DevOps hat comes on. You don’t need a massive GPU farm for this. You can rent a GPU instance (like an A100 on GCP or AWS) for an hour or use a cloud service that automates it.

The High-Level Workflow:

  1. Gather Your Data: Collect 15-20 high-quality, varied photos of yourself. Different angles, different lighting, different expressions. No sunglasses, no hats.
  2. Prepare & Tag: Use a tool (like the automated taggers in Kohya_ss) to caption each image. This tells the training process what’s in the picture (e.g., “a photo of dvance_man”). The unique keyword dvance\_man is what you’ll use to call yourself in the prompt.
  3. Train the LoRA: Load your images and captions into a training UI like Kohya_ss. You’ll set parameters like learning rate and number of epochs. This process usually takes 20-40 minutes on a decent GPU. It spits out a small file (e.g., dvance\_man.safetensors, maybe 100MB).
  4. Generate with Your LoRA: Now, you use a special prompt that includes your LoRA.
Positive Prompt:
professional headshot of <lora:dvance_man:0.8>, sharp focus, detailed skin, corporate office background

// The <lora:lora_name:weight> syntax tells the generator to apply your trained LoRA.
// The weight (0.8 here) controls its intensity.
Enter fullscreen mode Exit fullscreen mode

The result is night and day. Because the model now has specific data about your facial structure, it can generate you realistically in any context you ask for. This is how you get consistency and realism that prompting alone can’t achieve.

A Word of Warning: Be mindful of where you upload your photos. Using a local setup or a trusted, private cloud instance (like a Jupyter Notebook on Vertex AI) gives you full control. I’m hesitant to use free online services where I don’t know how my training data is being stored or used.

Solution 3: The ‘Hybrid’ Option (AI Base, Photoshop Finish)

Sometimes you get an image that’s 95% perfect. The composition is great, the lighting is on point, but the eyes look a little… off. Or the skin is just a bit too smooth. This is when you stop fighting the model and bring in other tools.

This is a hacky but incredibly effective workflow we’ve used for one-off images:

  1. Generate the Base: Use Solution 1 or 2 to get a strong base image. The overall structure should be good.
  2. Inpaint the Problem Areas: In your image generator’s UI, use the “Inpaint” feature. Mask just the skin on the face, leaving the eyes, hair, and clothes alone.
  3. Run a Detail Pass: Use a prompt like “ultra-detailed skin texture, pores, imperfections” with a very low denoising strength (0.2-0.35). The AI will only re-generate the masked area, adding the texture you asked for without changing the face.
  4. Final Touches Elsewhere: If that fails, don’t be afraid to take the image into Photoshop, GIMP, or Krita. Use frequency separation to add texture, or use the liquify tool to fix a slightly wonky eye. Combining the creative power of the AI with the precision of manual editing is often the fastest path to a perfect result.

At the end of the day, these tools are just that—tools. Getting a great result isn’t about finding a magic prompt. It’s about understanding the “why” behind the waxy faces and using a combination of prompting, data, and workflow to force the machine to bend to reality, not the other way around.


Darian Vance

👉 Read the original article on TechResolve.blog


☕ Support my work

If this article helped you, you can buy me a coffee:

👉 https://buymeacoffee.com/darianvance

Top comments (0)