{"course":{"slug":"ai-video","title":"Video with AI","url":"https://addaly.com/learn/ai-video","level":"intermediate","track":"create"},"lesson":{"slug":"training-a-character-model","title":"When a LoRA is worth the afternoon","url":"https://addaly.com/learn/ai-video/training-a-character-model","position":33,"of":66,"minutes":10,"answer":"Training a small adapter on twenty images teaches the base model one specific identity as a real concept.","keyIdea":"Training a small adapter on twenty images teaches the base model one specific identity as a real concept, which is the strongest consistency tool available and only worth it when the character will appear across enough shots to repay a fixed setup cost."},"body":{"format":"markdown","text":"## What a LoRA is, in one paragraph\n\nA LoRA (low-rank adaptation) is a small set of extra weights trained on top of a frozen base model. Instead of retraining billions of parameters, you train a few million that nudge the model's behaviour toward one concept. The file is typically tens to a few hundred megabytes and loads alongside the base model at generation time.\n\nFor identity, this is the difference in kind. A reference *points toward* a region. A LoRA *teaches* the model a concept, which then behaves like every other concept it knows: it can be posed, lit, dressed, put at a different angle, and it stays itself.\n\n## The dataset, which is where the quality comes from\n\nFifteen to thirty images is the usual range. More is not automatically better; varied and clean beats numerous.\n\nWhat the set needs:\n\n- **Varied angles.** Frontal, three-quarter both sides, profile, slightly above, slightly below.\n- **Varied expressions.** Neutral, speaking, a small smile. A set of thirty neutral frontals produces a model that can only do one face.\n- **Varied framing.** Close-ups and at least a few full-body shots, or the model will not know what the body looks like.\n- **Varied backgrounds and light.** This is the opposite of the character sheet rule and it is deliberate. If every training image has the same background, the model learns the background as part of the identity. Variety is what teaches it which parts are the person.\n- **Consistent identity.** Every image must be the same person. One wrong face poisons the set.\n\nCaptions matter. Caption what varies and not what is constant. If every image is your character, do not describe her face in every caption: describe the angle, the setting, the clothing. What you leave undescribed is what the trigger word absorbs.\n\n## The training run\n\nOn video models, the practical route today is usually to train the identity on the *image* side and use those images as first frames, or to train a LoRA for an open-weights video model where adapter support exists.\n\nRough shape for an image LoRA, which is the accessible case:\n\n- 20 images, 1500 to 3000 training steps, a learning rate around 1e-4, rank 16 to 32.\n- Twenty to sixty minutes on a mid-range GPU.\n- Free on Colab or Kaggle for smaller models; several Hugging Face Spaces offer one-click training.\n- Tools: `kohya_ss`, `diffusers` training scripts, or a ComfyUI trainer node.\n\nOvertraining is the common failure and it has a recognisable signature: the character appears in the right pose and the right clothes in every image, because the model memorised the training photographs rather than the person. If your outputs all look like your dataset, train fewer steps or gather more varied images.\n\n## When it is worth it\n\nHonest arithmetic. A LoRA costs you: gathering a dataset, a training run, and the local setup. Call it half a day the first time and an hour once you have done it before.\n\nIt repays when:\n\n- The character appears in more than roughly ten shots.\n- The face is visible and close in several of them.\n- The project will have revisions, so shots must be rebuildable months later.\n- You will reuse the character across multiple projects: a brand mascot, a recurring presenter, a series.\n\nIt does not repay for a three-shot social clip, a background character, or anything where a reference feature already gets you close enough.\n\n## The part that is not technical\n\nIf the character is based on a real person, you need their written permission, specific to this use, before you build a dataset of their face. A trained model of somebody's likeness is a more consequential object than a single generated image: it is a reusable capability to produce new pictures of them indefinitely.\n\nTreat it accordingly. Say what it will be used for, for how long, and what happens to the file afterwards. \"We will delete the model at the end of the campaign\" is a commitment you can make and should keep.\n\nThis is dealt with properly in the module on law and disclosure. It is raised here because the technical lesson is where the temptation arrives.\n\n## The free path\n\nGenuinely complete. Open base models, free training scripts, free GPU sessions on Colab and Kaggle, and Hugging Face Spaces that will train a small LoRA from an upload. The binding constraint is a session that does not disconnect, which is the usual cost of free compute.\n\nMore general ground in [fine-tuning](/learn/fine-tuning) and [running-models-yourself](/learn/running-models-yourself).\n\n---\n\nToday: count how many shots in your project show one character's face at medium or closer. If the number is above ten, you have your answer about whether to train."},"check":{"question":"A LoRA trained on thirty photographs of a character produces images that always show her in the same jacket, in front of the same bookshelf, in one of three poses. What went wrong?","options":[{"text":"The rank was set too low, so the adapter lacked the capacity to separate identity from context and collapsed onto the most frequent configuration.","correct":false,"tempting":"Low rank limits expressiveness but produces a weak, vague identity rather than memorised training scenes."},{"text":"The captions described the character's face in every image, so the trigger word absorbed the pose and setting instead of the identity.","correct":false,"tempting":"Half right about captioning: describing the constant is the error, but it leaves identity vague rather than producing memorised scenes."},{"text":"The dataset lacked variation in setting and pose, and the model learned those as part of the identity rather than as incidental context.","correct":true},{"text":"The learning rate was too high for the number of steps, which drove the adapter into a sharp minimum that reproduces the training distribution exactly rather than generalising from it.","correct":false,"tempting":"Describes overtraining in plausible terms, and overtraining on a varied dataset still yields varied output: the constraint here is what the data contained."}]},"prev":{"slug":"reference-and-element-conditioning","title":"What a reference image is actually doing","url":"https://addaly.com/learn/ai-video/reference-and-element-conditioning"},"next":{"slug":"location-and-set-continuity","title":"Building a room that stays the same room","url":"https://addaly.com/learn/ai-video/location-and-set-continuity"},"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) 'When a LoRA is worth the afternoon', in Video with AI. Edited by M. Mun. Addaly. Available at: https://addaly.com/learn/ai-video/training-a-character-model (Accessed: 13 October 2026).","licence":{"name":"CC BY-NC-SA 4.0","url":"https://creativecommons.org/licenses/by-nc-sa/4.0/"},"reader":{"schema":1,"title":"When a LoRA is worth the afternoon","courseTitle":"Video with AI","module":{"index":4,"slug":"continuity-and-character","title":"Making separate shots belong to each other"},"answer":null,"keyIdea":"Training a small adapter on twenty images teaches the base model one specific identity as a real concept, which is the strongest consistency tool available and only worth it when the character will appear across enough shots to repay a fixed setup cost.","hero":{"kind":"plate","image":null,"alt":null,"caption":null},"blocks":[{"t":"h2","id":"what-a-lora-is-in-one-paragraph","runs":[{"text":"What a LoRA is, in one paragraph"}]},{"t":"p","runs":[{"text":"A LoRA (low-rank adaptation) is a small set of extra weights trained on top of a frozen base model. Instead of retraining billions of parameters, you train a few million that nudge the model’s behaviour toward one concept. The file is typically tens to a few hundred megabytes and loads alongside the base model at generation time."}]},{"t":"p","runs":[{"text":"For identity, this is the difference in kind. A reference "},{"text":"points toward","i":true},{"text":" a region. A LoRA "},{"text":"teaches","i":true},{"text":" the model a concept, which then behaves like every other concept it knows: it can be posed, lit, dressed, put at a different angle, and it stays itself."}]},{"t":"h2","id":"the-dataset-which-is-where-the-quality-comes-from","runs":[{"text":"The dataset, which is where the quality comes from"}]},{"t":"p","runs":[{"text":"Fifteen to thirty images is the usual range. More is not automatically better; varied and clean beats numerous."}]},{"t":"p","runs":[{"text":"What the set needs:"}]},{"t":"ul","items":[[{"text":"Varied angles.","b":true},{"text":" Frontal, three-quarter both sides, profile, slightly above, slightly below."}],[{"text":"Varied expressions.","b":true},{"text":" Neutral, speaking, a small smile. A set of thirty neutral frontals produces a model that can only do one face."}],[{"text":"Varied framing.","b":true},{"text":" Close-ups and at least a few full-body shots, or the model will not know what the body looks like."}],[{"text":"Varied backgrounds and light.","b":true},{"text":" This is the opposite of the character sheet rule and it is deliberate. If every training image has the same background, the model learns the background as part of the identity. Variety is what teaches it which parts are the person."}],[{"text":"Consistent identity.","b":true},{"text":" Every image must be the same person. One wrong face poisons the set."}]]},{"t":"p","runs":[{"text":"Captions matter. Caption what varies and not what is constant. If every image is your character, do not describe her face in every caption: describe the angle, the setting, the clothing. What you leave undescribed is what the trigger word absorbs."}]},{"t":"h2","id":"the-training-run","runs":[{"text":"The training run"}]},{"t":"p","runs":[{"text":"On video models, the practical route today is usually to train the identity on the "},{"text":"image","i":true},{"text":" side and use those images as first frames, or to train a LoRA for an open-weights video model where adapter support exists."}]},{"t":"p","runs":[{"text":"Rough shape for an image LoRA, which is the accessible case:"}]},{"t":"ul","items":[[{"text":"20 images, 1500 to 3000 training steps, a learning rate around 1e-4, rank 16 to 32."}],[{"text":"Twenty to sixty minutes on a mid-range GPU."}],[{"text":"Free on Colab or Kaggle for smaller models; several Hugging Face Spaces offer one-click training."}],[{"text":"Tools: "},{"text":"kohya_ss","code":true},{"text":", "},{"text":"diffusers","code":true},{"text":" training scripts, or a ComfyUI trainer node."}]]},{"t":"p","runs":[{"text":"Overtraining is the common failure and it has a recognisable signature: the character appears in the right pose and the right clothes in every image, because the model memorised the training photographs rather than the person. If your outputs all look like your dataset, train fewer steps or gather more varied images."}]},{"t":"h2","id":"when-it-is-worth-it","runs":[{"text":"When it is worth it"}]},{"t":"p","runs":[{"text":"Honest arithmetic. A LoRA costs you: gathering a dataset, a training run, and the local setup. Call it half a day the first time and an hour once you have done it before."}]},{"t":"p","runs":[{"text":"It repays when:"}]},{"t":"ul","items":[[{"text":"The character appears in more than roughly ten shots."}],[{"text":"The face is visible and close in several of them."}],[{"text":"The project will have revisions, so shots must be rebuildable months later."}],[{"text":"You will reuse the character across multiple projects: a brand mascot, a recurring presenter, a series."}]]},{"t":"p","runs":[{"text":"It does not repay for a three-shot social clip, a background character, or anything where a reference feature already gets you close enough."}]},{"t":"h2","id":"the-part-that-is-not-technical","runs":[{"text":"The part that is not technical"}]},{"t":"p","runs":[{"text":"If the character is based on a real person, you need their written permission, specific to this use, before you build a dataset of their face. A trained model of somebody’s likeness is a more consequential object than a single generated image: it is a reusable capability to produce new pictures of them indefinitely."}]},{"t":"p","runs":[{"text":"Treat it accordingly. Say what it will be used for, for how long, and what happens to the file afterwards. “We will delete the model at the end of the campaign” is a commitment you can make and should keep."}]},{"t":"p","runs":[{"text":"This is dealt with properly in the module on law and disclosure. It is raised here because the technical lesson is where the temptation arrives."}]},{"t":"h2","id":"the-free-path","runs":[{"text":"The free path"}],"role":"free"},{"t":"p","runs":[{"text":"Genuinely complete. Open base models, free training scripts, free GPU sessions on Colab and Kaggle, and Hugging Face Spaces that will train a small LoRA from an upload. The binding constraint is a session that does not disconnect, which is the usual cost of free compute."}]},{"t":"p","runs":[{"text":"More general ground in "},{"text":"fine-tuning","href":"https://addaly.com/learn/fine-tuning"},{"text":" and "},{"text":"running-models-yourself","href":"https://addaly.com/learn/running-models-yourself"},{"text":"."}]},{"t":"rule"},{"t":"p","runs":[{"text":"Today: count how many shots in your project show one character’s face at medium or closer. If the number is above ten, you have your answer about whether to train."}]}],"check":{"question":[{"text":"A LoRA trained on thirty photographs of a character produces images that always show her in the same jacket, in front of the same bookshelf, in one of three poses. What went wrong?"}],"options":[{"text":[{"text":"The rank was set too low, so the adapter lacked the capacity to separate identity from context and collapsed onto the most frequent configuration."}],"correct":false,"tempting":[{"text":"Low rank limits expressiveness but produces a weak, vague identity rather than memorised training scenes."}]},{"text":[{"text":"The captions described the character’s face in every image, so the trigger word absorbed the pose and setting instead of the identity."}],"correct":false,"tempting":[{"text":"Half right about captioning: describing the constant is the error, but it leaves identity vague rather than producing memorised scenes."}]},{"text":[{"text":"The dataset lacked variation in setting and pose, and the model learned those as part of the identity rather than as incidental context."}],"correct":true,"tempting":null},{"text":[{"text":"The learning rate was too high for the number of steps, which drove the adapter into a sharp minimum that reproduces the training distribution exactly rather than generalising from it."}],"correct":false,"tempting":[{"text":"Describes overtraining in plausible terms, and overtraining on a varied dataset still yields varied output: the constraint here is what the data contained."}]}],"order":[0,3,1,2],"why":null},"prev":{"slug":"reference-and-element-conditioning","title":"What a reference image is actually doing","minutes":9},"next":{"slug":"location-and-set-continuity","title":"Building a room that stays the same room","minutes":9}}}