Hi everyone! I’ve been trying to get a handle on which photorealistic SD model is actually worth the time and VRAM for my use case (product mockups and some portrait work). The descriptions are all so… hype-y, you know? “Ultra realistic,” “best ever,” etc. 😅
So I decided to run the same exact prompt, same seed, same basic settings (Euler a, 20 steps, 512x768) through five popular models I’ve collected: Realistic Vision, DreamShaper, Deliberate, RealESRGAN, and ChilloutMix. I just wanted to see the difference side-by-side without any fancy LoRAs or inpainting.
The prompt was: “professional headshot of a woman with curly brown hair, wearing a black sweater, soft studio lighting, sharp focus.”
Here’s what jumped out at me:
- Realistic Vision gave the most “polished” and immediately usable result, but the face felt a bit generic.
- DreamShaper had nicer skin texture but the lighting was less natural.
- Deliberate gave her a slightly surprised expression on every seed I tried—weird!
- RealESRGAN was surprisingly soft and painterly, not what I expected from the name.
- ChilloutMix was… well, let’s just say it went in a very non-professional direction despite the prompt. Not what I needed!
It’s fascinating how much the “base personality” of each model changes everything, even with a simple prompt. I’m now wondering if I should just stick with one and learn to push it, or keep switching based on the project. How do you all decide which model to start with for a photorealistic job? Do you have a favorite that’s consistently reliable?
New here!
Just my two cents.
That's a super useful comparison! Your point about DreamShaper having nicer skin texture but less natural lighting really resonates. I've found that model can be a bit "over-sharpened" in the shadows sometimes, almost like it's applying a subtle clarity slider in post. Great for detail, but it can make the light feel synthetic.
The Deliberate "surprised expression" quirk is hilarious and weirdly consistent, I've noticed it defaults to very open, wide eyes on portraits unless you really hammer the prompt. Makes me wonder what's in its training data that biases it that way.
Have you tried running the same test but with a different sampler, like DPM++ 2M Karras? I've seen Euler a be a bit more "creative" with expressions, while some of the others stick closer to the prompt's mood. Might tame Deliberate's surprise a bit!
editor is my home
Ha, you're spot on about the lighting feeling synthetic in DreamShaper. It's that over-processed look, like it came straight out of a camera with the in-camera "vivid" profile cranked. I've found it actually works for some product shots because of that hyper-crispness, but for a human face it can feel a bit cold.
The sampler suggestion is a great call. I stuck with Euler a for a baseline, but you're right, DPM++ 2M Karras can really reign in some of that weird expressiveness. I had a similar thing happen with Deliberate on a "serious businessman" prompt - every Euler a render gave me a guy who looked mildly alarmed. Switched to DPM++ and finally got the stern look I was after. Makes me think the model's "default" expression is way more pronounced with certain samplers. Anyone else notice that?
Interesting methodology. Holding the seed constant is a great way to isolate the model's inherent bias. I'd be curious to see the impact of VRAM allocation and batch size on the consistency of those results. A smaller batch might let you run a larger model, but could that affect the "generic face" feeling you got with Realistic Vision?
sub-100ms or bust
You're absolutely right about the sampler's influence on that "default" expression bias. I've run similar tests comparing samplers across these photorealistic models, and the difference with Deliberate can be quite stark. While DPM++ 2M Karras does rein it in, I've found that DDIM can sometimes overcorrect, leading to an oddly blank or emotionless face instead.
This makes me think the issue is less about the training data bias in isolation, and more about how that bias interacts with the sampler's noise scheduling and path. Euler a's more stochastic nature seems to amplify any latent tendency in the model's checkpoint. For a truly controlled test of the model's core bias, you might need to run multiple seeds with each sampler and average the results, which gets computationally heavy quickly.
Have you observed if this expression taming with DPM++ also applies to other "mood" words in prompts, like "thoughtful" or "tired," or is it specifically effective at neutralizing an overly alert default?
That's a great point about DreamShaper's crispness working better for products. I've never thought to use it for that.
I'm really new to this and I've only been using Euler a. Does switching to DPM++ 2M Karras change the lighting much, or is it mostly for fixing the expressions like you saw?
Good call on product shots! That synthetic crispness is basically built-in HDR. I've had the same success using it for tech gadgets where you want that glossy, sharp edge detail.
About your Deliberate example, I've seen that "alarmed" default too. I wonder if it's less about the sampler and more about how the model interprets certain keywords. Like "serious" might sit too close to "surprised" in its latent space. Switching samplers just nudges it down a different path. Have you tried adding a negative prompt like "surprised, alarmed" with Euler a to see if that tames it?
measure twice, ship once
Totally agree on the sampler-bias interaction, it's like the model's base personality getting filtered through different lenses.
I've found that DPM++ 2M Karras is generally good at toning down extremes, not just expressions. With "thoughtful" in Deliberate, it gives a more subtle, pensive look instead of the overly dramatic, soulful gaze Euler a sometimes produces. "Tired" actually works better for me with Euler a though, it leans into the droopy eyes and slack posture more. So it's not a universal fix, it depends on the mood you're pushing for.
The multi-seed average idea is the gold standard, but man, the render time. I sometimes do a quick compromise and run two very different seeds per sampler to see the spread.
measure twice, ship once
Nice, that's a solid approach for cutting through the marketing noise. The "generic face" note on Realistic Vision is exactly why I moved away from it for portraits - it's consistent, but the lack of character can be a problem.
Your point about ChilloutMix is key for anyone new. It's a great example of why you can't judge a model by its name or even its category. The underlying training data has a huge influence that bleeds through, and it often overpowers even a straightforward prompt. Always worth checking what the base model actually was before merging.
Sleep is for the weak
Spot on about the name not matching the output. It's the same reason "EpicRealism" often churns out faces that look like they've been airbrushed by a glossy magazine from 2003 - you can feel the legacy of its source data.
That "generic face" problem with Realistic Vision is its biggest curse and its only blessing. Need a nondescript person in the background of a scene to fill a composition? It's perfect. But trying to get a portrait with any soul feels like you're battling the model's own desire to revert to its bland, averaged mean.
Always check the lineage. It's like looking under the hood of a used car.
Demos are just theater. Show me the real workflow.
Your point about the "legacy of its source data" is exactly why I stopped treating these models as black boxes. It's not just training data, it's the entire data pipeline - the curation, the tagging, the pre-processing filters. That 2003 airbrushed look in EpicRealism? It screams of a dataset that was aggressively cleaned for "aesthetic" quality, stripping out texture and imperfection at the source.
Checking the lineage isn't just looking at merges. You need to trace the parent models back to their original published datasets if you can. I've found models that perform poorly on certain ethnicities because their root dataset's "realism" filter had a cultural bias baked in. The generic face is the statistical average the model converges to when the prompt lacks enough signal to pull it away from that baked-in centroid. It's a failure of diversity in the latent space, not just a stylistic choice.
Boring is beautiful
Your results with ChilloutMix are exactly why we have a rule about content warnings for certain model checkpoints. It's notoriously bad at following basic prompt safety and will ignore professional context if it's been trained on data that biases it otherwise.
Did you happen to check the model's version or variant? Some of the older ones are worse than others, but none are suitable for professional work without extensive negative prompting and even then it's a gamble. For product mockups, you're better off striking it from your list entirely.
—AF
That's an excellent way to cut through the hype and get practical data for your own workflow. Your note about Realistic Vision feeling generic is something I've heard from other portrait artists. For product mockups, though, that consistency can actually be a benefit when you need a predictable, clean background element.
On user1000's point about ChilloutMix, I've had to enforce that content warning rule several times. It's a textbook case of why we urge members to always check model cards and community notes before downloading. The underlying data bias is so strong it overrides even very clear, professional prompts, making it a liability for any work you'd show a client.
Your Deliberate finding is interesting. The "surprised expression" is a known quirk with certain samplers like Euler a. Have you tried the same seed with DPM++ 2M Karras to see if it's a model issue or a sampler interaction? That could tell you if the model itself is worth keeping for your portrait work.
You've zeroed in on the exact compromise with Realistic Vision. Its predictability is its only real asset, but it's a double-edged sword. For a background figure in a product scene, that blandness is perfect. It won't draw the eye. But the moment you need that figure to be the subject, you're fighting an uphill battle to inject any distinguishing character.
On the sampler point, I did test that specific interaction. Running the same seed across Euler a and DPM++ 2M Karras with Deliberate showed a clear shift. The "alarmed" look was significantly reduced with DPM++, leaning more toward a neutral or mildly concerned expression. That tells me the bias is in the model's response curve, but the sampler acts as a filter for that bias. It's enough of a correction that I wouldn't write off Deliberate for portraits, but it does mean locking in DPM++ as my default sampler for it, which isn't ideal for all styles.
It reinforces that a model's personality is never a single variable. It's the base training data bias multiplied by the sampler's characteristic denoising path.
The sampler-as-filter analogy is good. I've seen the same effect with clip skip values. Lower values (like 1) tend to amplify a model's default bias, while higher values (2+) can sometimes suppress quirks like the "alarmed" look, giving you more prompt control.
Locking into DPM++ 2M Karras for Deliberate isn't so bad. I treat it like a required parameter for that model, same as using a specific VAE. The real friction comes when you need a different sampler's look, like DDIM for a particular texture, and have to fight the base bias all over again.
—cp