{"course":{"slug":"ai-images","title":"Image Generation, in Practice","url":"https://addaly.com/learn/ai-images","level":"beginner","track":"create"},"lesson":{"slug":"the-finishing-pass","title":"Nothing goes to a client straight from the model","url":"https://addaly.com/learn/ai-images/the-finishing-pass","position":62,"of":69,"minutes":8,"answer":"Curves for contrast, a colour pass to match the set, fine grain to fake a sensor, and real type over any generated words: that is the ten minutes that separates output from a deliverable.","keyIdea":"Curves for contrast, a colour pass to match the set, fine grain to fake a sensor, and real type over any generated words: that is the ten minutes that separates output from a deliverable."},"body":{"format":"markdown","text":"## The tell is not six fingers\n\nYou can spot a raw generation across a room, and it is rarely because of an anatomical error. It is because of five specific, fixable things, and fixing them takes about ten minutes in a free editor.\n\n## What is actually wrong with a raw generation\n\n**The tone curve is mushy.** Generated images tend to sit in the midtones with weak blacks and no clean white. Open Curves, pull the bottom-left point right until the darkest shadow is black, and pull the top-right point left until something in the frame is white. Then put a gentle S in the middle. Twenty seconds, and it is the single largest improvement available.\n\nNot Brightness/Contrast: that shifts everything uniformly and crushes both ends. Curves, because you are choosing which tones move.\n\n**Everything is equally sharp.** A real lens is sharp at the focal plane and falls off. A generated image is often uniformly crisp from foreground to horizon, which the eye reads as artificial without knowing why. Select the far background, add a small Gaussian blur (one or two pixels at 1024 wide) and the frame acquires depth.\n\n**There is no grain.** Every photograph ever taken has sensor noise or film grain. Generated images have none, and the absence is conspicuous. Add a fine, uniform monochrome noise across the whole image at low opacity. This is the cheapest single move that makes an image read as photographic.\n\n**The colour is model colour.** Every model has a cast. Put two generations side by side and they will not match, which is why a set of six looks like a stock-photo bundle rather than a campaign. Pick one image as the reference, then colour-balance the other five to it: usually a small shift in the shadows and highlights, per image.\n\n**Inpainted regions have soft seams.** A pass with the clone or heal tool along the boundary, at low opacity.\n\n> Figure: Ten minutes in a free editor, in this order. Steps: 1. Curves (A true black, a true white, then a gentle S.); 2. Depth (One or two pixels of blur on the far background.); 3. Grain (Fine monochrome noise, low opacity, over everything.); 4. Colour (Balance the set to one chosen reference frame.); 5. Seams (Clone or heal along every repaired boundary.). Not Brightness and Contrast, which shifts everything uniformly and crushes both ends. Curves, because you are choosing which tones move, and it is the single largest improvement available.\n\n## Text: always replace it\n\nIf there is a word in your image, replace it with real type. Always, even from a model that renders text well.\n\nThree reasons. Generated letterforms are subtly wrong at large size: spacing that no typeface would use, an inconsistent stroke weight on one letter. The text is not editable, so a client's copy change means regenerating the whole image. And the kerning and alignment are the parts a designer is paid for. Set the type in Photopea, GIMP, Inkscape or Canva over the generated plate. [Design foundations](/learn/design-foundations) covers how to set it well.\n\n## The free stack, and the phone\n\n**Photopea** runs in a browser, opens and saves PSD files, has Curves, layers, masks and healing, and costs nothing. It is the answer for anyone on a Chromebook, a school computer or a machine that cannot install software. It works in a phone browser too, though it is a fight.\n\n**GIMP** and **Krita** are free desktop applications; Krita is more comfortable for painting and masking, GIMP for general retouching. **darktable** and **RawTherapee** do the tone and colour pass better than either.\n\nOn a phone: **Snapseed** has a proper curves tool and a grain control, both free. That is enough for the tone, colour and grain pass described above. Do it on the phone, and the image will already be ahead of most raw output.\n\nThe full technique for all of this is [image editing](/learn/image-editing). This lesson is about knowing that you have to.\n\n## Work non-destructively, because the note is coming\n\nKeep the generation on its own layer. Do the tone pass as an adjustment layer above it, the grain as a separate layer, the type as live text. Export flattened, keep the layered file.\n\nThe client will ask for one change. If you baked everything into the pixels, one change is a regeneration. If you worked in layers, it is a click.\n\nName your files with something you will understand in six months, deliver flattened PNG or JPEG at the size actually needed, and keep the working file and the original generation, seed included.\n\nToday: take your best generated image, open Photopea, apply Curves and add fine grain. Put the before and after side by side. Ten minutes."},"check":{"question":"Six generated images for one brand page each look fine alone, but together they look like an assortment from a stock library rather than one campaign. What is the most effective fix?","options":[{"text":"The prompts were not consistent enough across the six and should be standardised.","correct":false,"tempting":"Expects prompt wording to control the tonal and colour response, which is decided after generation."},{"text":"They were generated on different seeds, which is why the look drifts between them.","correct":false,"tempting":"Treats the seed as a style control rather than as the starting noise for one specific image."},{"text":"They need a style LoRA trained on the brand's existing photography before regenerating the set.","correct":false,"tempting":"Reaches for training when a per-image tone and colour pass would resolve it in minutes."},{"text":"Every generation carries its own contrast and colour cast, so the set only reads as a set after a per-image curves and colour-balance pass matched to one chosen reference image.","correct":true}]},"prev":{"slug":"upscaling-and-invention","title":"Upscaling either restores detail or invents it","url":"https://addaly.com/learn/ai-images/upscaling-and-invention"},"next":{"slug":"resolution-you-actually-need","title":"300 dpi is one number applied to everything","url":"https://addaly.com/learn/ai-images/resolution-you-actually-need"},"authorship":"Founder and series editor: Dr Mustafa Mun. Written by AI models to a written standard. Exam keys checked blind by a second model: 3,665 of 3,666 agreed. Academic review invited.","review":{"status":"Draft, open for academic review"},"cite":"Addaly (2026) 'Nothing goes to a client straight from the model', in Image Generation, in Practice. Edited by M. Mun. Addaly. Available at: https://addaly.com/learn/ai-images/the-finishing-pass (Accessed: 31 October 2026).","licence":{"name":"CC BY-NC-SA 4.0","url":"https://creativecommons.org/licenses/by-nc-sa/4.0/"},"reader":{"schema":1,"title":"Nothing goes to a client straight from the model","courseTitle":"Image Generation, in Practice","module":{"index":7,"slug":"finishing","title":"Finishing and handing over"},"answer":null,"keyIdea":"Curves for contrast, a colour pass to match the set, fine grain to fake a sensor, and real type over any generated words: that is the ten minutes that separates output from a deliverable.","hero":{"kind":"figure","figure":{"t":"figure","label":"Figure","figure":{"type":"flow","steps":[{"label":"Curves","detail":"A true black, a true white, then a gentle S."},{"label":"Depth","detail":"One or two pixels of blur on the far background."},{"label":"Grain","detail":"Fine monochrome noise, low opacity, over everything."},{"label":"Colour","detail":"Balance the set to one chosen reference frame."},{"label":"Seams","detail":"Clone or heal along every repaired boundary."}],"title":"Ten minutes in a free editor, in this order","caption":"Not Brightness and Contrast, which shifts everything uniformly and crushes both ends. Curves, because you are choosing which tones move, and it is the single largest improvement available."},"alt":"Figure: Ten minutes in a free editor, in this order. Steps: 1. Curves (A true black, a true white, then a gentle S.); 2. Depth (One or two pixels of blur on the far background.); 3. Grain (Fine monochrome noise, low opacity, over everything.); 4. Colour (Balance the set to one chosen reference frame.); 5. Seams (Clone or heal along every repaired boundary.). Not Brightness and Contrast, which shifts everything uniformly and crushes both ends. Curves, because you are choosing which tones move, and it is the single largest improvement available."}},"blocks":[{"t":"h2","id":"the-tell-is-not-six-fingers","runs":[{"text":"The tell is not six fingers"}]},{"t":"p","runs":[{"text":"You can spot a raw generation across a room, and it is rarely because of an anatomical error. It is because of five specific, fixable things, and fixing them takes about ten minutes in a free editor."}]},{"t":"h2","id":"what-is-actually-wrong-with-a-raw-generation","runs":[{"text":"What is actually wrong with a raw generation"}]},{"t":"p","runs":[{"text":"The tone curve is mushy.","b":true},{"text":" Generated images tend to sit in the midtones with weak blacks and no clean white. Open Curves, pull the bottom-left point right until the darkest shadow is black, and pull the top-right point left until something in the frame is white. Then put a gentle S in the middle. Twenty seconds, and it is the single largest improvement available."}]},{"t":"p","runs":[{"text":"Not Brightness/Contrast: that shifts everything uniformly and crushes both ends. Curves, because you are choosing which tones move."}]},{"t":"p","runs":[{"text":"Everything is equally sharp.","b":true},{"text":" A real lens is sharp at the focal plane and falls off. A generated image is often uniformly crisp from foreground to horizon, which the eye reads as artificial without knowing why. Select the far background, add a small Gaussian blur (one or two pixels at 1024 wide) and the frame acquires depth."}]},{"t":"p","runs":[{"text":"There is no grain.","b":true},{"text":" Every photograph ever taken has sensor noise or film grain. Generated images have none, and the absence is conspicuous. Add a fine, uniform monochrome noise across the whole image at low opacity. This is the cheapest single move that makes an image read as photographic."}]},{"t":"p","runs":[{"text":"The colour is model colour.","b":true},{"text":" Every model has a cast. Put two generations side by side and they will not match, which is why a set of six looks like a stock-photo bundle rather than a campaign. Pick one image as the reference, then colour-balance the other five to it: usually a small shift in the shadows and highlights, per image."}]},{"t":"p","runs":[{"text":"Inpainted regions have soft seams.","b":true},{"text":" A pass with the clone or heal tool along the boundary, at low opacity."}]},{"t":"h2","id":"text-always-replace-it","runs":[{"text":"Text: always replace it"}]},{"t":"p","runs":[{"text":"If there is a word in your image, replace it with real type. Always, even from a model that renders text well."}]},{"t":"p","runs":[{"text":"Three reasons. Generated letterforms are subtly wrong at large size: spacing that no typeface would use, an inconsistent stroke weight on one letter. The text is not editable, so a client’s copy change means regenerating the whole image. And the kerning and alignment are the parts a designer is paid for. Set the type in Photopea, GIMP, Inkscape or Canva over the generated plate. "},{"text":"Design foundations","href":"https://addaly.com/learn/design-foundations"},{"text":" covers how to set it well."}]},{"t":"h2","id":"the-free-stack-and-the-phone","runs":[{"text":"The free stack, and the phone"}]},{"t":"p","runs":[{"text":"Photopea","b":true},{"text":" runs in a browser, opens and saves PSD files, has Curves, layers, masks and healing, and costs nothing. It is the answer for anyone on a Chromebook, a school computer or a machine that cannot install software. It works in a phone browser too, though it is a fight."}]},{"t":"p","runs":[{"text":"GIMP","b":true},{"text":" and "},{"text":"Krita","b":true},{"text":" are free desktop applications; Krita is more comfortable for painting and masking, GIMP for general retouching. "},{"text":"darktable","b":true},{"text":" and "},{"text":"RawTherapee","b":true},{"text":" do the tone and colour pass better than either."}]},{"t":"p","runs":[{"text":"On a phone: "},{"text":"Snapseed","b":true},{"text":" has a proper curves tool and a grain control, both free. That is enough for the tone, colour and grain pass described above. Do it on the phone, and the image will already be ahead of most raw output."}]},{"t":"p","runs":[{"text":"The full technique for all of this is "},{"text":"image editing","href":"https://addaly.com/learn/image-editing"},{"text":". This lesson is about knowing that you have to."}]},{"t":"h2","id":"work-non-destructively-because-the-note-is-coming","runs":[{"text":"Work non-destructively, because the note is coming"}]},{"t":"p","runs":[{"text":"Keep the generation on its own layer. Do the tone pass as an adjustment layer above it, the grain as a separate layer, the type as live text. Export flattened, keep the layered file."}]},{"t":"p","runs":[{"text":"The client will ask for one change. If you baked everything into the pixels, one change is a regeneration. If you worked in layers, it is a click."}]},{"t":"p","runs":[{"text":"Name your files with something you will understand in six months, deliver flattened PNG or JPEG at the size actually needed, and keep the working file and the original generation, seed included."}]},{"t":"p","runs":[{"text":"Today: take your best generated image, open Photopea, apply Curves and add fine grain. Put the before and after side by side. Ten minutes."}]}],"check":{"question":[{"text":"Six generated images for one brand page each look fine alone, but together they look like an assortment from a stock library rather than one campaign. What is the most effective fix?"}],"options":[{"text":[{"text":"The prompts were not consistent enough across the six and should be standardised."}],"correct":false,"tempting":[{"text":"Expects prompt wording to control the tonal and colour response, which is decided after generation."}]},{"text":[{"text":"They were generated on different seeds, which is why the look drifts between them."}],"correct":false,"tempting":[{"text":"Treats the seed as a style control rather than as the starting noise for one specific image."}]},{"text":[{"text":"They need a style LoRA trained on the brand’s existing photography before regenerating the set."}],"correct":false,"tempting":[{"text":"Reaches for training when a per-image tone and colour pass would resolve it in minutes."}]},{"text":[{"text":"Every generation carries its own contrast and colour cast, so the set only reads as a set after a per-image curves and colour-balance pass matched to one chosen reference image."}],"correct":true,"tempting":null}],"order":[1,2,3,0],"why":null},"prev":{"slug":"upscaling-and-invention","title":"Upscaling either restores detail or invents it","minutes":8},"next":{"slug":"resolution-you-actually-need","title":"300 dpi is one number applied to everything","minutes":8}}}