Introduction
So I made a LoRA — only my second one ever, so be nice — in an attempt to duplicate the vintage look and feel of Real Photo Postcards (RPPCs, for short). You can see generated examples or read more about their history in the description on the LoRA page.
When I first got into playing with AI, I'd been able to reproduce other forms of antique photography, like tintypes or daguerreotypes, just by adding the term to my prompts. But RPPCs have sort of a niche style that's hard to describe, or even replicate by prompting alone.
Some actual RPPCs:
The thing is, flaws in antique imagery are one of its defining qualities. A lot of what cancels out the look and feel of an RPPC is the same stuff that we tend to insert into our prompts without thinking, because in general they tend to produce beautiful images: Things like ultra detailed, 8k high definition, or masterpiece.
Conversely, we try to prevent things like blurry, undersaturated, or bad photography. But these things (the negs), or the lack of them (in the main prompt), make RPPCs and other forms of antique photography what they are.
Deconstructing an existing prompt to test the applied LoRA
I decided to take my Real Photo Postcard LoRA and apply it to a well-made, already existing prompt. Then I slowly deconstructed the prompt, removing terms that I suspected might affect the LoRA, recording each change in numbered steps, and saving the resulting image with a corresponding number.
Prompting, we all know, is an art in and of itself. We can poop out a bunch of terms in no particular order, mash in a ton of parentheses, and cross our fingers, OR we can educate ourselves about formatting prompts so that they're structured, organized, and well thought-out.
I've done a little bit of both.
I'm no master, though, so I borrowed a prompt from KandooAI, responsible for (among other things) the model Juggernaut and its various iterations. Here's the original image and prompt.
At first, I ran this entire experiment using the JuggernautXL model. The results were interesting — the good kind of interesting — but thinking about it afterward, I realized that the model is itself a merge of other models, and that if I wanted to be a better researcher, I'd use SDXL1.0 — The model I'd trained my LoRA on in the first place.
So I reran the entire thing, in two different versions:
Version 1: Initial edits to the main prompt, then the negs
Version 2: Initial edits to the negs, then the main prompt
If you don't feel like scrolling down through the step-by-step, here's the gist for both tests
Original prompt, no edits:
RAW Photo, close up, beautiful young girl, sexy, 34C breast, perfect body, detailed gorgeous face, freckled skin, pale skin, long hair, (((thick ginger fishtail braids))), green eyes, wearing deep v white sports bra, detailed and intricate, cinematic lighting, ultra detailed, sharp focus, 8k high definition, nice bokeh, Leica 35mm F2.8, poster
Negative prompt:
(worst quality, low quality, normal quality, lowres, low details, oversaturated, undersaturated, overexposed, underexposed, grayscale, bw, bad photo, bad photography, bad art:1.4), (watermark, signature, text font, username, error, logo, words, letters, digits, autograph, trademark, name:1.2), (blur, blurry, grainy), morbid, ugly, asymmetrical, mutated malformed, mutilated, poorly lit, bad shadow, draft, cropped, out of frame, cut off, censored, jpeg artifacts, out of focus, glitch, duplicate, (airbrushed, cartoon, anime, semi-realistic, cgi, render, blender, digital art, manga, amateur:1.3), (3D ,3D Game, 3D Game Scene, 3D Character:1.1), (bad hands, bad anatomy, bad body, bad face, bad teeth, bad arms, bad legs, deformities:1.3)
My generation data (consistent throughout):
Steps: 30, Sampler: DPM++ 2M Karras, CFG scale: 7, Seed: 3912608572, Size: 784x1168, Model hash: df64bcef34, Model: sd_xl_base_1.0, Version: v1.6.0
Images 01 and 02 stayed the same for both tests:
1. Original prompt, no edits, no LoRA
2. Original prompt, no edits, applied Real Photo Postcard SDXL LoRA
Version 1: Editing the main prompt first, then the negs
3. Removed most specific camera terms from prompt:
Leica 35mm F2.8
All removed terms are now cumulative
4. Removed most specific resolution terms:
RAW Photo
8k high definition
5. Removed:
sharp focus
nice bokeh
6. Removed:
The word "detailed" from "detailed gorgeous face"
detailed and intricate
ultra detailed
7. Removed all color words (Big change! The LoRA is starts to really come through):
"ginger" from "(((thick ginger fishtail braids)))"
green eyes
8. Just to see, removed "poster" from prompt (turns out it's a powerful word in prompting):
9. Replaced "poster," removed "cinematic lighting" (another powerful word! What's up with that orange ear, though?)
Version 1: Main prompt edited, now editing the negs
10. Removed terms that most describe the LoRA (the RPPC effect is really starting to come through):
grayscale
bw
undersaturated
(blur, blurry, grainy)
out of focus
11. Removed more specific terms that might describe the LoRA:
low details
oversaturated
overexposed
underexposed
bad photo
bad photography
poorly lit
bad shadow
12. Removed:
(worst quality, low quality, normal quality, lowres, bad art:1.4)
13. Removed:
jpeg artifacts, glitch
Ooo, I don't like that googly eye. I think after step 10 or 11, the edits started to become unnecessary, but I wanted to really whittle it down as much as possible.
Ok, ready for Version 2?
Version 2: Editing the negs first, then the main prompt
Again, the initial prompt, as well as images 1 and 2, are the same as the first version.
Editing the negs:
3. Removed terms that most describe the LoRA:
grayscale
bw
undersaturated
(blur, blurry, grainy)
out of focus
All removed terms are now cumulative
4. Removed more specific terms that might describe the LoRA:
low details
oversaturated
overexposed
underexposed
bad photo
bad photography
poorly lit
bad shadow
5. Removed:
(worst quality, low quality, normal quality, lowres, bad art:1.4)
6. Removed:
jpeg artifacts, glitch
(Almost no change whatsoever)
Version 2: Negs edited, now editing the main prompt
7. Removed most specific camera terms from prompt:
Leica 35mm F2.8
8. Removed most specific resolution terms:
RAW Photo
8k high definition
Big change: image is brighter and more saturated now.
9. Removed:
sharp focus
nice bokeh
10. Removed:
the word "detailed" from "detailed gorgeous face"
detailed and intricate
ultra detailed
11. Removed all color words:
"ginger" from "(((thick ginger fishtail braids)))"
green eyes
Huge change, finally the LoRA starts to work:
12. Just to see, removed "poster" from prompt (big change again):
13. Replaced "poster," removed "cinematic lighting"
And here we are, back with Miss Googly Eye, which makes sense, since the final edited prompts were the same in both versions.
Conclusion/ TL;DR
If you're using an antique or vintage-inspired LoRA, or trying to generate an antique or vintage-looking image, think about how the terms in your prompt are going to affect it. Using terms like "ultra detailed" or "8k high definition" are going to dampen the effect of the model.
Color words make a huge difference, as do
Lighting terms
Camera names
And apparently the word "poster"
Have fun!
If you got this far and want to donate (ie help out a quirky nerd researching niche things like antique photography AI) here's a Ko-Fi link.