资讯动态

风格LoRA训练全流程:数据准备决定成败

发布时间:2026/10/23 5:20:38 来源:尧图企业网站定制
很多朋友第一次训练风格LoRA跑完几千步兴奋地出图结果发现风格影子都摸不着画面该什么样还是什么样。问题多半不在参数上而在喂给训练器的数据上。风格LoRA的数据准备流程本质上决定了模型能学到什么、学得有多像这一步偷懒后面所有调参都是在补救。这篇内容我分六个环节讲透从动手前的风格定位、素材采集到清洗、打标、裁切最后到验证集划分和训练后的数据复盘。我用自己的实测项目当例子把每个环节为什么要这么做、踩过什么坑、还能怎么补救都说清楚打算训练风格LoRA的朋友可以直接照着走一遍。1. 开始准备前先想明白你要训练的是什么风格1.1 风格LoRA和角色/物体LoRA的本质差异风格LoRA和平时用的角色LoRA、物体LoRA训练逻辑有很大不同。角色LoRA学的是这个人的脸、身材、服装特征数据里人物的姿态和表情哪怕乱一些只要脸一致模型照样能抓住。风格LoRA学的却是画笔的笔触、色彩的调性、构图的习惯、光影的处理方式这些信息分布在一张图的每一个像素里数据里任何一张图假如风格不对齐模型就会被往反方向拽一下。我常打的一个比方是角色LoRA像记人你记住一个人的五官就够了他在不同场合穿什么衣服、摆什么姿势不关键风格LoRA像学写字你得看一个人写过的很多张字条从每一笔里猜他的运笔习惯如果几张字条根本不是他写的你学出来的就是四不像。所以风格数据准备的第一件事是明确风格定义。请你用文字描述一下你想学的风格是厚涂油画的笔触感还是赛璐璐的平涂感是高饱和对比强烈的配色还是低饱和柔和的莫兰迪色系是强调线稿的轮廓还是强调光影的体块是偏写实的比例还是偏Q版夸张的比例我把这个叫风格四要素线条、色彩、光影、构图。训练之前你至少要能说清楚自己在哪个要素上要强、哪个要素上可以弱。拿我自己举例我训练过一个老式蜡笔儿童绘本风格的数据集风格定义就是线条粗糙有飞白、色彩饱和但略带脏感、光影几乎平涂、构图大量留白。这个定义后来直接决定了我的打标策略和裁切方式。1.2 样本量、风格纯度与训练目标的匹配风格LoRA理论上最少多少张图能起步我实测下来的经验是20张高质量、风格高度统一的图就可以练出一个有明显风格的LoRA30到50张是舒服区间50到100张风格会更稳定、泛化更好。低于15张出来的LoRA大概率只是把训练图里的底色学走换到新提示词上就原形毕露。但这个数字有个前提——风格纯度要高。你的样本里如果混了三种画风哪怕总数有100张有效数据可能只有30张。我见过有朋友把同一个IP的官方图、同人图、Q版图混在一起训风格LoRA结果出来的风格不伦不类个别图还出现了不同画风拼贴的怪效果。所以风格纯度比样本数重要得多宁可30张清一色不要100张大杂烩。还要考虑你的训练目标是什么。你是想练把任意内容转换成某种画风的万能风格LoRA还是想练某位画师或某个作品集的特定风格前者的数据要广场景、物体、构图越多样越好模型才能学会转换而不是复读后者的数据要窄最好集中在同一时间段、同一种完成度的作品里模型才能学到真正的风格指纹。这个决定会影响你后续所有的数据筛选标准。2. 素材从哪里来、怎么定数量——采集阶段容易犯的错2.1 采集渠道选择与质量把关风格LoRA的素材来源一般有这几种自己用AI生成的图、网络收集的图、自己手绘或扫描的图、从高清视频里抽帧的图。各有各的坑。AI生成的图当训练集需要注意自噬问题。如果这些图本身就是别的模型生成的那你的LoRA学到的可能是那个模型的风格平均值而不是你想要的目标风格。我自己测试过用十几张某种画风很强的AI图训练出的LoRA出图确实有那个画风但细看笔触全是原模型的味道和有原作授权的数据训练出来的效果差距明显。所以用AI图当素材至少要做一次手工筛选把风格最正、细节最好的挑出来别拿批量脚本跑完就直接丢给训练器。网络收集的图优先找大图。很多网站对图片做了压缩细节丢失严重训练出来的LoRA会有一种脏脏的模糊感。我一般要求原始分辨率不低于1500像素而且不能是二次压缩过的WebP小图。图片的JPG压缩痕迹也要注意噪点太重的话模型会把压缩伪影当风格学走出图全是噪点。自己扫描的手绘稿或者老照片翻拍要先做矫正。扫描件常见的问题是底色偏黄、纸纹太重、对比度不足翻拍图则有透视畸变。预处理不到位LoRA学到的是纸的颜色你的纸是米黄色的出的图就永远是米黄色底。2.2 多样性设计别让模型只会背题数据采集的数量定下来之后接着要考虑的是分布问题。一张图包含的信息远不止画风还有内容、构图、景别、色彩倾向。你希望这个风格LoRA将来能套在不同内容上数据里就要有一定分布多样性。我一般会给每批训练数据做一张多样性自查表构图既有大特写头像/物件细节也有中景还要有少量全景景别牙齿、手部特写、半身、全身、多人场景每种至少2-3张色彩倾向如果风格本身是低饱和的也要尽量覆盖不同主色别全图都偏一种色调光照侧光、顶光、逆光、阴天漫射光尽量都有风格LoRA才不会被特定光照条件绑架材质皮肤、布料、金属、植物、水能覆盖就覆盖不然你想让它输出这种画风的雨天街道它只能掏出训练集里最像的材质来应付这一步容易被忽略但直接影响LoRA的泛化能力。我见过一个只拿人物半身像训练的绘本风格LoRA一到多人场景就直接崩坏人物比例、构图全部乱套。后来补了10张多人场景和全身图进去效果立刻正常。多样性不是追求多而是追求覆盖。你的数据分布决定了你的LoRA能在什么范围内迁移。2.3 版权、隐私与素材使用的基本线这部分单独提出来是因为它极易被忽略但影响很大。训练素材建议使用你自己有权使用的图自己画的、自己约稿并按约定能用于训练的、开源的、明确标注可再创作的数据集都算稳妥。从网络随手抓来的图尤其带有明确版权声明或者个人画师风格的慎用。风格模仿和个人学习之间界限模糊我不做法律判断只提醒一句发布模型时注明素材来源和数据范围既是尊重也是给自己减少麻烦。涉及人像的素材也要处理。真实人物的脸、可辨识的环境信息训练前建议做虚化或裁剪涉及未成年人的图数据准备时直接排除不做讨论。风格LoRA训练的数据里如果含有人脸尽量使用非真实人物或已脱敏的形象。这不仅是安全要求也是训练效果的要求——真实人脸的风格拟合往往会让模型出现某个具体的人是谁的泄漏出图时人脸会偏向数据集里的个别人偏离你对画风的需求。3. 清洗、去重、统一格式把素材变成能喂给训练器的样子3.1 三查模糊图、重复图、异常图素材采回来以后第一个动作不是打标是清洗。我管这一步叫三查。一查模糊。训练集里混进一张模糊图模型会把模糊当成风格的一部分学走。怎么查不要纯靠肉眼至少用脚本把每张图的解析度、文件大小、清晰度量化指标打印出来排序。清晰度我常用Laplacian方差这一个简单指标来做初筛虽然粗糙但能快速挑出明显模糊的图。后面第5节我会给一个完整的筛选脚本。二查重复。包括完全相同的重复图、同一张图的不同裁剪版本、画风相同且构图几乎相同的系列图。重复图会导致LoRA对某些构图过拟合损失数据的多样性。去重我一般用感知哈希pHash脚本批量跑一遍把相似度超过阈值比如汉明距离小于10的图挑出来人工确认。别手动一张张搜几十张图你还能忍几百张图真的会看到眼瞎。三查异常。常见异常有几类带水印或文字的图模型会把水印当纹理学走、有严重崩坏部位的图手指扭曲、五官错位、画面内容过度叠加的图比如两张半透明图叠在一起扫描出来的。这些图不是你目标风格的组成部分属于噪声直接删。尤其是带文字的图——LoRA对高频细节的拟合能力很强它真的会把©这种小水印字形学进风格的纹理里出图时画面角落莫名其妙多出几个谁也看不懂的字符。3.2 格式、色彩空间与批量预处理脚本清洗完之后所有图要统一成训练器友好的格式。我在第1节提过格式不一带来的问题这里说具体操作统一用PNG或高质量JPG不要混用。PNG文件大但无损适合细节丰富的图JPG质量参数建议不低于90训练图总量大时可以用JPG控制体积色彩空间统一为sRGB。如果素材里有Adobe RGB或P3色域的图训练时颜色会被错误映射出图整体偏灰偏暗这就是很多人训练完觉得颜色脏了的原因之一位深8位足够不用强行转16位。训练器内部处理时基本都是8位通道精度转16位只是徒增体积EXIF信息最好清掉。某些批处理脚本会读取EXIF的拍摄参数虽然不影响训练本身但留着可能干扰某些数据集管理工具的分类逻辑这里给一个我常用的批量预处理脚本基于Python和Pillow做四件事统一图片最大边长、统一格式、转sRGB、清EXIF。你可以根据自己的需求改参数。# coding: utf-8 训练集预处理统一尺寸、格式、色彩空间、清除EXIF from PIL import Image, ImageCms from pathlib import Path import os SRC_DIR Path(./raw) DST_DIR Path(./processed) MAX_SIDE 2048 # 最大边长超过则等比例缩放 IMG_QUALITY 95 # JPG质量 # 常用sRGB Profile SRGB_PROFILE ImageCms.createProfile(sRGB) DST_DIR.mkdir(exist_okTrue, parentsTrue) for img_path in SRC_DIR.glob(*): if img_path.suffix.lower() not in (.png, .jpg, .jpeg, .webp): continue try: img Image.open(img_path) # 1. 转sRGB处理CMYK、P3等色彩空间 if img.mode ! RGB: img img.convert(RGB) profile img.info.get(icc_profile) if profile: img ImageCms.profileToProfile( img, ImageCms.ImageCmsProfile(io.BytesIO(profile)), SRGB_PROFILE, outputModeRGB, ) # 2. 等比例缩放到最大边长以内 w, h img.size max_side max(w, h) if max_side MAX_SIDE: ratio MAX_SIDE / max_side img img.resize( (int(w * ratio), int(h * ratio)), Image.LANCZOS, # 高质量缩放下采样 ) # 3. 保存为统一格式建议用JPG画质95 out_path DST_DIR / f{img_path.stem}.jpg img.save(out_path, JPEG, qualityIMG_QUALITY, icc_profileNone) print(fOK: {img_path.name} - {out_path.name}) except Exception as e: print(fERROR: {img_path.name}: {e})跑完这个脚本以后建议把整批图按文件大小排一次序肉眼快速过一遍。文件大小异常的图比如特别大或特别小十有八九是分辨率或者压缩质量出了问题优先检查。4. 打标策略风格LoRA的tag写法跟你想的不一样4.1 该打什么tag不该打什么tag角色LoRA打标时要写清楚眼睛颜色、头发颜色、服装特征因为模型要认的是人。风格LoRA府反着来——你要让模型把风格当成背景底色来学打标时写画面内容把风格本身留给模型自己总结。这些tag模型会根据图片内容自己形成词与特征的关联你强行打上美丽的画风独特的风格这种词只会得到一堆无意义的稀疏标记浪费训练容量。拿我的蜡笔绘本风格数据集举例每张图的tag大概是这样的crayon texture, children book illustration, a teddy bear sitting on a wooden chair, soft daylight, plain background注意我没有写rough lineshigh saturation这类描述风格的词。为什么因为风格信息如果被tag显式标记训练器会把风格归因到这些词上推理时你必须添加这些tag才能触发风格而如果不写风格会隐式附着在所有图对应的children book illustration等主题词上触发更稳定自然。反过来有些tag是必须写的主体内容a dog、a castle、构图类型portrait、full body、材质纹理watercolor paper、canvas、光照条件soft lighting、golden hour。这些是模型迁移风格时需要用到的内容锚点写清楚模型才知道什么内容上要套什么纹理。4.2 触发词设计与tag顺序的细节风格LoRA需要一个触发词建议别用art stylepainting style这种通用词组做触发词。倒不是说一定不行而是这个词组太常见LoRA权重会被其他大模型的既有概念稀释触发强度打折。我习惯用一段无意义的符号组合或者生僻的组合词来做触发词比如trg_xxx_style或者直接用一组罕见的字母组合。它的作用是在你的训练数据里作为统一标记出现训练器会把风格特征集中挂在这个词上推理时放进提示词即触发。触发词建议放在每个样本tag列表的开头比如trg_xxx_style, a teddy bear sitting on a wooden chair, soft daylight, plain backgroundtag顺序有实际影响。训练器中标签序列靠前的tag会获得更高的注意力权重触发词放前面能让风格信息学得更充分。如果是用SD WebUI或者某个国产整合包训练这一条同样适用不需要改配置。打标工具我推荐先用WD1.4 tagger这类自动打标脚本跑完再人工校对。校对重点看三件事有没有跟目标风格无关的tag残留自动打标容易带上一堆画师名、平台名主体内容tag是否准确触发词是否统一加到了第一位置。校对的优先级不用太极端——数据量大时主体内容偶尔错一两个问题不大但触发词位置和无关风格词这两个绝不能放水。5. 裁切、缩放与清晰度筛选——预处理阶段的最后一道关5.1 统一画面比例的现实做法训练分辨率通常取512或768而你的素材比例可能是3:2、4:3、16:9各种都有。直接用不同比例的图喂进训练器训练器内部会做拉伸挤压导致画面失真风格特征跟着变形。我踩过这个坑有一批16:9的高清风景图直接丢进512分辨率的训练出来的风格LoRA画的物体全部偏胖人物脸都宽了一圈。处理方式没有花哨办法统一按目标分辨率比例裁切。比如你设训练分辨率是768x768那所有样本都按1:1比例居中裁切然后再缩放到768x768。裁切时要注意别把风格的关键识别区域切掉——绘本风格的特色是留白和边缘的笔触我裁切时会保留一部分边缘当作风格特征而不是死板地把主体怼到正中间。如果你的训练分辨率不打算统一也可以按比例分组比如一部分裁成1:1一部分裁成2:3同比例组内再用各自的目标尺寸训练。现在一些训练脚本支持比例桶bucket功能会自动把同比例的图分桶训练。这个功能值得用但注意桶的数量别开太多否则每个桶里的样本量太少模型在桶之间来回横跳风格反而学不稳定。5.2 自动筛选模糊图的脚本思路第3节说过用Laplacian方差初筛模糊图这里给一个实际可跑的脚本。它的原理很简单对图像求二阶导Laplacian算子然后计算方差——方差越大说明边缘越锐利图像越清晰方差越小说明边缘越模糊图像越糊。# coding: utf-8 用Laplacian方差筛模糊图阈值需要根据自己数据标定 import cv2 import numpy as np from pathlib import Path SRC_DIR Path(./processed) THRESHOLD 80 # 小于这个值判定为模糊可调 for img_path in sorted(SRC_DIR.glob(*.jpg)): img cv2.imread(str(img_path), cv2.IMREAD_GRAYSCALE) if img is None: print(fERROR: cant read {img_path.name}) continue # Laplacian方差越大 - 越清晰 variance cv2.Laplacian(img, cv2.CV_64F).var() flag BLUR if variance THRESHOLD else OK print(f{flag}: {img_path.name}: {variance:.2f})阈值怎么标定先跑一遍把全部图的方差值打印出来看看分布。我用一个大概300张图的数据集跑过清晰图的方差普遍在120到350之间真空旷的图方差不到40。你把这个值在80到120之间多试几次找出你数据集里清晰和模糊的断裂带再用那个值筛。这个脚本也比肉眼更靠谱——人眼看小图很容易忽略轻微模糊尤其是大幅缩略图下看着还行、放大后全是糊的那种。过曝和欠曝的图我习惯在清洗阶段就直接删掉不要拖到裁切之后。过曝图的细节全被白场吞掉模型会学到高光区域一片死白的画法欠曝图则会让LoRA出图整体发暗发脏。如果素材里这种图数量不多直接删除最省事如果删完样本量实在不够可以用色彩调整脚本把曝光拉回来一些但训练效果多少会打折扣我不推荐作为默认方案。6. 训练集/验证集划分与训练后的数据复盘6.1 验证集怎么分、分多少很多人训练LoRA从头到尾只用一套数据集训练完直接出图看效果不做验证集划分。这里强烈建议从主数据集里抽一小部分做验证集。它的作用是帮你判断训练过程中模型有没有过拟合以及在哪一步开始过拟合——风格LoRA最容易出现的情况是训练步数一多模型把训练集里的具体内容背下来风格没学好反而学会了复读某张图。验证集的比例不用大。样本量20到30张时抽3到5张作验证样本量50张以上抽10张作验证。抽的时候有个原则相似内容不要跨集。比如你收集了一个角色在不同画风下的5张变体这5张要么全在训练集要么全在验证集绝对不能5张里3张训练2张验证——否则验证集和训练集内容太相似验证结果虚高你根本判断不出模型到底有没有过拟合。我建议自己动手挑验证集别用随机抽样脚本因为随机抽样很容易把相似变体拆散。验证集不参与训练但你可以用验证集做两件事一是拿它跑一次很短的低步数训练比如300步看训练集loss和验证集loss的曲线走势两者差距开始拉大的地方就是过拟合的起点二是训练完成后用验证集里每张图的tag重新出图和原图做风格对比。这个对比比一张张单独出图更准——同样是a teddy bear sitting on a wooden chair验证集原图和LoRA出图放在一起看风格像不像一目了然。6.2 训练效果失真的数据侧排查训练完发现效果不理想大部分时候是数据的问题而不是参数的问题。我把常见的失真现象和数据侧原因列了个对照表方便排查训练后出图的异常表现最可能的数据侧原因排查方向出图风格很淡几乎看不出数据量不足或风格纯度不够检查样本是否低于15张是否混入多种画风出图泛白、像蒙了一层雾色彩空间不统一或JPG压缩质量过低检查是否有Adobe RGB/P3素材漏网JPG质量是否低于90出图模糊、有廉价噪点感训练集里混了模糊图或者压缩伪影重的图用Laplacian方差脚本重新筛一遍全部素材内容容易跑偏出现训练集里没有的奇怪元素tag打得太少模型没学会内容锚点复查打标主体内容tag有没有写全画面比例怪异、物体变形训练图比例不统一训练器拉伸过图检查裁切是否全部统一到目标分辨率比例触发词需要加很高权重才有效触发词位置放太后或训练集里触发词没写全检查tag列表触发词是否都在第一位置是否存在漏写样本颜色发脏、饱和度不对素材本身色彩管理混乱或混了偏色图逐张检查色温偏黄、偏青、偏洋红的异常图这里每一条我都实际踩过。印象最深的一次我拿一批扫描绘本图训练出来的LoRA颜色总是泛着一股灰绿色百思不得其解。后来回头查数据发现扫描件里有三张是在黄光灯下拍的白平衡没校准整个数据集的色彩平均值被那三张图的偏色拉歪了。删掉重新训颜色立刻干净。6.3 复盘迭代风格LoRA的数据优化闭环最后强调一件事数据准备不是一锤子买卖它和训练出图是循环迭代的关系。我现在的流程是训完第一版LoRA出几张验证图看风格还原度再回到数据层面做定向调整。风格不够浓优先考虑增加样本量或提高样本分辨率风格够了但内容容易崩考虑裁切更保守一点、保留更多构图信息色彩脏回到清洗阶段筛偏色图泛化差补充不同景别、不同材质的样本。如果你不确定改数据是否有效我推荐一个小技巧每次只改一个变量比如这轮只删模糊图其它不动训完对比上一版再下一轮只加多样性样本其它不动。这样你才知道是哪个数据操作产生了实际收益而不是感觉改了一堆效果还是老样子。风格LoRA的成败七分在数据三分在参数。把上面这套流程走扎实同一个底模型、同一组训练参数出来的模型质感和之前会是两个层次。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑