Captioning->BLIP Captioning。","marks":[]}]}],"state":{}},{"type":"block","id":"onWy-1683511139531","name":"image","data":{"version":1,"url":"https://note.youdao.com/yws/res/8/WEBRESOURCE75006f8148460b6973edf38aeb515ec8","width":2535,"height":1283},"nodes":[],"state":{"renderSource":"https://note.youdao.com/yws/res/8/WEBRESOURCE75006f8148460b6973edf38aeb515ec8","initialSize":{"width":2535,"height":1283},"loading":false}},{"type":"block","id":"Mpl8-1683511138189","name":"paragraph","data":{},"nodes":[{"type":"text","id":"xcxC-1683511138188","leaves":[{"text":"这里只要设置两个选项。","marks":[]}]}],"state":{}},{"type":"block","id":"ZXx2-1683520034935","name":"paragraph","data":{},"nodes":[{"type":"text","id":"5Fkn-1683520034934","leaves":[{"text":"Image folder to caption : 图片文件夹所在路径。","marks":[]}]}],"state":{}},{"type":"block","id":"nWvz-1683520068172","name":"paragraph","data":{},"nodes":[{"type":"text","id":"kIPz-1683520068170","leaves":[{"text":"Prefix to add to BLIP caption : 生成提示词的前缀,训练完成之后可以用在提示词中,唤醒或者加强人物特征。","marks":[]}]}],"state":{}},{"type":"block","id":"Dc4P-1683520216580","name":"paragraph","data":{},"nodes":[{"type":"text","id":"8nYo-1683520216578","leaves":[{"text":"","marks":[]}]}],"state":{}},{"type":"block","id":"T6PE-1683520216732","name":"paragraph","data":{},"nodes":[{"type":"text","id":"hzSz-1683520216731","leaves":[{"text":"设置完成之后点击Caption images 开始处理。第一次处理应该是需要在线下载一些模型,稍微等待一下。点击按钮之后,界面上没有任何提示,但是在命令行窗口中会有具体的显示。","marks":[]}]}],"state":{}},{"type":"block","id":"PdDM-1683520295177","name":"paragraph","data":{},"nodes":[{"type":"text","id":"5TcB-1683520295176","leaves":[{"text":"","marks":[]}]}],"state":{}},{"type":"block","id":"iNUo-1683520295359","name":"paragraph","data":{},"nodes":[{"type":"text","id":"FQ15-1683520295357","leaves":[{"text":"处理完成之后,在图片文件里面,会多出同名的txt文件。","marks":[]}]}],"state":{}},{"type":"block","id":"eAVS-1683511147825","name":"image","data":{"version":1,"url":"https://note.youdao.com/yws/res/9/WEBRESOURCEa5b6569f2e7bac8d48e1589580524699","width":420,"height":942},"nodes":[],"state":{"renderSource":"https://note.youdao.com/yws/res/9/WEBRESOURCEa5b6569f2e7bac8d48e1589580524699","initialSize":{"width":420,"height":942},"loading":false}},{"type":"block","id":"mWcW-1683511138354","name":"paragraph","data":{},"nodes":[{"type":"text","id":"rRlF-1683511138353","leaves":[{"text":"打开文件之后,可以看到类似的文字描述dilireba a woman in a black dress with a red lipstick。作为简单的练手,我们不需要修改任何东西。如果你要提升效果,可以手动加入更加详细,更加精准的描述。","marks":[]}]}],"state":{}},{"type":"block","id":"p2xs-1683520320739","name":"paragraph","data":{},"nodes":[{"type":"text","id":"IXRM-1683520320737","leaves":[{"text":"","marks":[]}]}],"state":{}},{"type":"block","id":"dka1-1683520321751","name":"paragraph","data":{},"nodes":[{"type":"text","id":"Jn49-1683520321749","leaves":[{"text":"","marks":[]}]}],"state":{}},{"type":"block","id":"XDgg-1683273403252","name":"paragraph","data":{},"nodes":[{"type":"text","id":"nlNE-1683273403251","leaves":[{"text":"3.模型参数设置和训练","marks":[{"type":"bold"},{"type":"fontSize","value":22}]}]}],"state":{}},{"type":"block","id":"KBIz-1683520562156","name":"paragraph","data":{},"nodes":[{"type":"text","id":"aEaW-1683520562154","leaves":[{"text":"","marks":[]}]}],"state":{}},{"type":"block","id":"6Ig7-1683523117815","name":"paragraph","data":{},"nodes":[{"type":"text","id":"kdOj-1683523117813","leaves":[{"text":"经过上面的处理,素材已经搞定了。接下来就是设置训练参数。如果你已经有参数配置文件,可以直接通过点击Open按钮来导入。","marks":[]}]}],"state":{}},{"type":"block","id":"mbl2-1683529726947","name":"paragraph","data":{},"nodes":[{"type":"text","id":"2ZIT-1683529726945","leaves":[{"text":"","marks":[]}]}],"state":{}},{"type":"block","id":"gRBr-1683600650816","name":"paragraph","data":{},"nodes":[{"type":"text","id":"qHdg-1683600650815","leaves":[{"text":"参数设置主要分成了3部分。","marks":[]}]}],"state":{}},{"type":"block","id":"kJ8Z-1683600653266","name":"paragraph","data":{},"nodes":[{"type":"text","id":"0as0-1683600653264","leaves":[{"text":"","marks":[]}]}],"state":{}},{"type":"block","id":"qZmk-1683530266591","name":"paragraph","data":{},"nodes":[{"type":"text","id":"f0JC-1683530266590","leaves":[{"text":"第一部分是:预训练模型设置。","marks":[{"type":"bold"}]}]}],"state":{}},{"type":"block","id":"oBX1-1683511101656","name":"image","data":{"version":1,"url":"https://note.youdao.com/yws/res/b/WEBRESOURCE1da4a4e2423f70414144bd969e8065fb","width":2548,"height":1313},"nodes":[],"state":{"renderSource":"https://note.youdao.com/yws/res/b/WEBRESOURCE1da4a4e2423f70414144bd969e8065fb","initialSize":{"width":2548,"height":1313},"loading":false}},{"type":"block","id":"kcOT-1683273685379","name":"paragraph","data":{},"nodes":[{"type":"text","id":"VaUo-1683273685377","leaves":[{"text":"Lora的训练需要基于标准的SDW模型(Checkpoint),点击Source model选项卡之后就可以进行设置。","marks":[]}]}],"state":{}},{"type":"block","id":"dVqz-1683530249691","name":"paragraph","data":{},"nodes":[{"type":"text","id":"RMcy-1683530249690","leaves":[{"text":"","marks":[]}]}],"state":{}},{"type":"block","id":"9B3c-1683529974396","name":"paragraph","data":{},"nodes":[{"type":"text","id":"OOAc-1683529974395","leaves":[{"text":"先将④处的模型快速选择(Model Quick Pick)设置成自定义(Custom),这里也可以用预设的V1.5,V2.1。但是使用这些预设模型,会需要很长的时间在线下载,而且会占据巨大的C盘空间,不是很推荐。","marks":[]}]}],"state":{}},{"type":"block","id":"3qXx-1683530115352","name":"paragraph","data":{},"nodes":[{"type":"text","id":"62Ek-1683530115351","leaves":[{"text":"","marks":[]}]}],"state":{}},{"type":"block","id":"YZF2-1683530246994","name":"paragraph","data":{},"nodes":[{"type":"text","id":"maDl-1683530246993","leaves":[{"text":"然后在左边③这里选择具体的本地模型,我这里用的是适合亚洲人的chilloutmix模型。通过点击输入框后面的文件图标,找到具体的模型文件就可以了。","marks":[]}]}],"state":{}},{"type":"block","id":"W4L6-1683530245278","name":"paragraph","data":{},"nodes":[{"type":"text","id":"gNUD-1683530245277","leaves":[{"text":"","marks":[]}]}],"state":{}},{"type":"block","id":"dR9K-1683529977197","name":"paragraph","data":{},"nodes":[{"type":"text","id":"fweO-1683529977196","leaves":[{"text":"然后右边⑤处的模型保存格式选择safetensors。","marks":[]}]}],"state":{}},{"type":"block","id":"toWv-1683530252717","name":"paragraph","data":{},"nodes":[{"type":"text","id":"luMk-1683530252716","leaves":[{"text":"","marks":[]}]}],"state":{}},{"type":"block","id":"ILbc-1683530252881","name":"paragraph","data":{},"nodes":[{"type":"text","id":"w7WB-1683530252880","leaves":[{"text":"第二部分是:文件夹设置。","marks":[{"type":"bold"}]}]}],"state":{}},{"type":"block","id":"p6KA-1683600790035","name":"paragraph","data":{},"nodes":[{"type":"text","id":"hzXV-1683600790034","leaves":[{"text":"","marks":[]}]}],"state":{}},{"type":"block","id":"Juxf-1683531047605","name":"image","data":{"version":1,"url":"https://note.youdao.com/yws/res/4/WEBRESOURCEd9e8cf63441263a3e1aef69deb10e2b4","width":1965,"height":804},"nodes":[],"state":{"loading":false,"renderSource":"https://note.youdao.com/yws/res/4/WEBRESOURCEd9e8cf63441263a3e1aef69deb10e2b4","initialSize":{"width":1965,"height":804}}},{"type":"block","id":"7qiP-1683531045559","name":"paragraph","data":{},"nodes":[{"type":"text","id":"XWjM-1683531045560","leaves":[{"text":"","marks":[]}]}],"state":{}},{"type":"block","id":"2vpe-1683511110236","name":"paragraph","data":{},"nodes":[{"type":"text","id":"i6vE-1683511110235","leaves":[{"text":"在素材处理的步骤中,我们已经创建好了具体的文件。这里只需要通过右边的文件夹小图标,选中具体的文件夹就好了。","marks":[]}]}],"state":{}},{"type":"block","id":"ZDJc-1683530348923","name":"paragraph","data":{},"nodes":[{"type":"text","id":"lSLU-1683530348921","leaves":[{"text":"①Image folder 选择 image 文件夹","marks":[]}]}],"state":{}},{"type":"block","id":"DGph-1683530373539","name":"paragraph","data":{},"nodes":[{"type":"text","id":"daEA-1683530373538","leaves":[{"text":"②Output folder 选择 model 文件夹","marks":[]}]}],"state":{}},{"type":"block","id":"WlD3-1683530394306","name":"paragraph","data":{},"nodes":[{"type":"text","id":"9Pcw-1683530394304","leaves":[{"text":"③Logging folder 选择 log 文件夹","marks":[]}]}],"state":{}},{"type":"block","id":"kf42-1683530288124","name":"paragraph","data":{},"nodes":[{"type":"text","id":"0T7Y-1683530288123","leaves":[{"text":"④Model output name ,输入一个便于记忆的英文名字,这个名字就是最终生成的模型的名字。我习惯用主体+版本+迭代次数来命名。","marks":[]}]}],"state":{}},{"type":"block","id":"Ul2Z-1683530288291","name":"paragraph","data":{},"nodes":[{"type":"text","id":"KAFf-1683530288289","leaves":[{"text":"","marks":[{"type":"bold"}]}]}],"state":{}},{"type":"block","id":"Uwxz-1683530500234","name":"paragraph","data":{},"nodes":[{"type":"text","id":"emd1-1683530500233","leaves":[{"text":"","marks":[{"type":"bold"}]}]}],"state":{}},{"type":"block","id":"ztGx-1683530500468","name":"paragraph","data":{},"nodes":[{"type":"text","id":"d5O4-1683530500467","leaves":[{"text":"第三部分是:训练参数设置。","marks":[{"type":"bold"}]}]}],"state":{}},{"type":"block","id":"88iQ-1683530522114","name":"paragraph","data":{},"nodes":[{"type":"text","id":"g91H-1683530522113","leaves":[{"text":"","marks":[]}]}],"state":{}},{"type":"block","id":"gzHJ-1683530526513","name":"paragraph","data":{},"nodes":[{"type":"text","id":"sZUb-1683530526512","leaves":[{"text":"这里的参数非常多,一般对于这种情况,我们都遵循一个基本原则:对于新手来说,默认设置就是最佳设置。","marks":[]}]}],"state":{}},{"type":"block","id":"zTeq-1683600874026","name":"paragraph","data":{},"nodes":[{"type":"text","id":"DTDI-1683600874025","leaves":[{"text":"你可以完全不做任何设置,就开始训练了。","marks":[]}]}],"state":{}},{"type":"block","id":"CSdJ-1683511120798","name":"image","data":{"version":1,"url":"https://note.youdao.com/yws/res/4/WEBRESOURCEe8567d54002ed32af7e61d229cd7e9c4","width":2487,"height":1593},"nodes":[],"state":{"renderSource":"https://note.youdao.com/yws/res/4/WEBRESOURCEe8567d54002ed32af7e61d229cd7e9c4","initialSize":{"width":2487,"height":1593},"loading":false}},{"type":"block","id":"izuA-1683511511871","name":"paragraph","data":{},"nodes":[{"type":"text","id":"zHKq-1683511511872","leaves":[{"text":"我的部分参数设置如上图。","marks":[]}]}],"state":{}},{"type":"block","id":"VYQJ-1683530832000","name":"paragraph","data":{},"nodes":[{"type":"text","id":"Um69-1683530831999","leaves":[{"text":"","marks":[]}]}],"state":{}},{"type":"block","id":"YZKy-1683530673650","name":"paragraph","data":{},"nodes":[{"type":"text","id":"Os03-1683530673649","leaves":[{"text":"网上普遍的教程都是把批量大小(Train batch size)改成了2 。","marks":[]}]}],"state":{}},{"type":"block","id":"GNSj-1683530675132","name":"paragraph","data":{},"nodes":[{"type":"text","id":"hp6F-1683530675131","leaves":[{"text":"设置一个种子(Seed)比如1234。","marks":[]}]}],"state":{}},{"type":"block","id":"Ayi5-1683530678935","name":"paragraph","data":{},"nodes":[{"type":"text","id":"yDrF-1683530678934","leaves":[{"text":"学习率(Learning rate)0.0001","marks":[]}]}],"state":{}},{"type":"block","id":"2FLa-1683530743886","name":"paragraph","data":{},"nodes":[{"type":"text","id":"j12l-1683530743884","leaves":[{"text":"Text Encoder学习率 5e-5","marks":[]}]}],"state":{}},{"type":"block","id":"C3mC-1683530770053","name":"paragraph","data":{},"nodes":[{"type":"text","id":"xN3U-1683530770051","leaves":[{"text":"Unet学习率 0.0001","marks":[]}]}],"state":{}},{"type":"block","id":"B9xb-1683530718394","name":"paragraph","data":{},"nodes":[{"type":"text","id":"iIMo-1683530718393","leaves":[{"text":"Network : 128和128","marks":[]}]}],"state":{}},{"type":"block","id":"n2Bn-1683600908843","name":"paragraph","data":{},"nodes":[{"type":"text","id":"oERf-1683600908841","leaves":[{"text":"模型像素:512x512","marks":[]}]}],"state":{}},{"type":"block","id":"jLzM-1683530920431","name":"image","data":{"version":1,"url":"https://note.youdao.com/yws/res/c/WEBRESOURCE711c10acc976153d3bcff2d7169457bc","width":1971,"height":280},"nodes":[],"state":{"loading":false,"renderSource":"https://note.youdao.com/yws/res/c/WEBRESOURCE711c10acc976153d3bcff2d7169457bc","initialSize":{"width":1971,"height":280}}},{"type":"block","id":"kKv0-1683530576744","name":"paragraph","data":{},"nodes":[{"type":"text","id":"ZY0L-1683530576743","leaves":[{"text":"","marks":[]}]}],"state":{}},{"type":"block","id":"7bae-1683531132010","name":"paragraph","data":{},"nodes":[{"type":"text","id":"cu6P-1683531132009","leaves":[{"text":"参数设置完成之,点击底部的训练按钮①就可以开始训练了。","marks":[]}]}],"state":{}},{"type":"block","id":"Z0JI-1683531133228","name":"paragraph","data":{},"nodes":[{"type":"text","id":"XMkD-1683531133227","leaves":[{"text":"点击训练按钮之后,界面上没有任何变化,来到命令行窗口会看到一长串命令。","marks":[]}]}],"state":{}},{"type":"block","id":"R7IT-1683531128145","name":"image","data":{"version":1,"url":"https://note.youdao.com/yws/res/6/WEBRESOURCE2b62621247427131e5ddde19165ad896","width":1971,"height":942},"nodes":[],"state":{"loading":false,"renderSource":"https://note.youdao.com/yws/res/6/WEBRESOURCE2b62621247427131e5ddde19165ad896","initialSize":{"width":1971,"height":942}}},{"type":"block","id":"xWVW-1683530931966","name":"paragraph","data":{},"nodes":[{"type":"text","id":"3fjg-1683530931964","leaves":[{"text":"这个界面会卡一段时间,然后跳出很多英文,最后停留在下面的界面。","marks":[]}]}],"state":{}},{"type":"block","id":"UNnO-1683532420615","name":"image","data":{"version":1,"url":"https://note.youdao.com/yws/res/f/WEBRESOURCE838a588362ac432020bb74d764ce28af","width":2345,"height":1575},"nodes":[],"state":{"loading":false,"renderSource":"https://note.youdao.com/yws/res/f/WEBRESOURCE838a588362ac432020bb74d764ce28af","initialSize":{"width":2345,"height":1575}}},{"type":"block","id":"Z6hz-1683511488758","name":"paragraph","data":{},"nodes":[{"type":"text","id":"dP7f-1683511488756","leaves":[{"text":"这里会显示最终需要训练的步数(Step)。 Step的值等于图片数量乘以文件中设置的数字,然后除以2 。 训练的长短主要却决于单步的时间和总的步数。","marks":[]}]}],"state":{}},{"type":"block","id":"qDrR-1683532643777","name":"paragraph","data":{},"nodes":[{"type":"text","id":"SMDB-1683532643776","leaves":[{"text":"","marks":[]}]}],"state":{}},{"type":"block","id":"Kg7y-1683532643957","name":"paragraph","data":{},"nodes":[{"type":"text","id":"d7C7-1683532643956","leaves":[{"text":"关于多少步才比较好的问题,官方教程演示的时候是用了800。但是这个这个数值仅供参考。不同的数据会有不同,比如我后来整理一个图片比较多的数据集,跑了几万步,好像也还有提升的空间。","marks":[]}]}],"state":{}},{"type":"block","id":"0v69-1683532770600","name":"paragraph","data":{},"nodes":[{"type":"text","id":"fdl3-1683532770598","leaves":[{"text":"","marks":[]}]}],"state":{}},{"type":"block","id":"SbIp-1683533095256","name":"paragraph","data":{},"nodes":[{"type":"text","id":"bRFz-1683533095254","leaves":[{"text":"具体的训练情况,可以通过log来查看。点击上面②处的Start TensorBoard 可以启动一个服务。","marks":[]}]}],"state":{}},{"type":"block","id":"NQI7-1683533086005","name":"image","data":{"version":1,"url":"https://note.youdao.com/yws/res/c/WEBRESOURCE3aeed8d28bdede85daa30cb66621cfcc","width":2293,"height":1540},"nodes":[],"state":{"loading":false,"renderSource":"https://note.youdao.com/yws/res/c/WEBRESOURCE3aeed8d28bdede85daa30cb66621cfcc","initialSize":{"width":2293,"height":1540}}},{"type":"block","id":"uAQT-1683532765392","name":"paragraph","data":{},"nodes":[{"type":"text","id":"UfQr-1683532765390","leaves":[{"text":"","marks":[]}]}],"state":{}},{"type":"block","id":"uYCe-1683532765555","name":"paragraph","data":{},"nodes":[{"type":"text","id":"vpVY-1683532765553","leaves":[{"text":"打开后可以看到具体的Loss变化情况。简单的来说loss慢慢降低就是对的。如果Loss基本没啥变化,训练下去也没太大意义了。","marks":[]}]}],"state":{}},{"type":"block","id":"FTao-1683601055758","name":"paragraph","data":{},"nodes":[{"type":"text","id":"lp0R-1683601055756","leaves":[{"text":"","marks":[]}]}],"state":{}},{"type":"block","id":"2M2d-1683273425628","name":"paragraph","data":{},"nodes":[{"type":"text","id":"QV3I-1683273425627","leaves":[{"text":"4.模型应用","marks":[{"type":"bold"},{"type":"fontSize","value":22}]}]}],"state":{}},{"type":"block","id":"Xeft-1683524620531","name":"paragraph","data":{"style":null},"nodes":[{"type":"text","id":"oKaA-1683524620530","leaves":[{"text":"","marks":[]}]}],"state":{}},{"type":"block","id":"zTgA-1683601141060","name":"paragraph","data":{"style":null},"nodes":[{"type":"text","id":"2jWu-1683601141058","leaves":[{"text":"搞了那么久终于可以用了。","marks":[]}]}],"state":{}},{"type":"block","id":"uX1Q-1683601141821","name":"paragraph","data":{"style":null},"nodes":[{"type":"text","id":"DOS1-1683601141819","leaves":[{"text":"","marks":[]}]}],"state":{}},{"type":"block","id":"JX0T-1683533259440","name":"paragraph","data":{"style":null},"nodes":[{"type":"text","id":"bfak-1683533259439","leaves":[{"text":"lora模型的使用,我们之前的文章里面已经有详细的介绍了,这里就简单的演示一下。当lora训练结束之后,会在对应的model文件下面生成模型文件。","marks":[]}]}],"state":{}},{"type":"block","id":"Zs9D-1683601167661","name":"paragraph","data":{"style":null},"nodes":[{"type":"text","id":"PH9M-1683601167660","leaves":[{"text":"","marks":[]}]}],"state":{}},{"type":"block","id":"zAlH-1683533321804","name":"paragraph","data":{"style":null},"nodes":[{"type":"text","id":"v9PM-1683533321802","leaves":[{"text":"比如下图:","marks":[]}]}],"state":{}},{"type":"block","id":"A6EH-1683511513611","name":"image","data":{"version":1,"url":"https://note.youdao.com/yws/res/8/WEBRESOURCE1bd918dd865cec83cbdc740c489475f8","width":571,"height":376},"nodes":[],"state":{"renderSource":"https://note.youdao.com/yws/res/8/WEBRESOURCE1bd918dd865cec83cbdc740c489475f8","initialSize":{"width":571,"height":376},"loading":false}},{"type":"block","id":"uBqt-1683511513615","name":"paragraph","data":{},"nodes":[{"type":"text","id":"tiOf-1683511513614","leaves":[{"text":"","marks":[{"type":"bold"},{"type":"fontSize","value":22}]}]}],"state":{}},{"type":"block","id":"t7WQ-1683533331812","name":"paragraph","data":{"style":null},"nodes":[{"type":"text","id":"nhS7-1683533331810","leaves":[{"text":"将图中的Lora模型文件拷贝到Stable-Diffusion-WebUI的对应路路径下。","marks":[]}]}],"state":{}},{"type":"block","id":"AP03-1683511596022","name":"image","data":{"version":1,"url":"https://note.youdao.com/yws/res/3/WEBRESOURCE540676dc40d4ef1a324118f9d289e823","width":606,"height":1044},"nodes":[],"state":{"renderSource":"https://note.youdao.com/yws/res/3/WEBRESOURCE540676dc40d4ef1a324118f9d289e823","initialSize":{"width":606,"height":1044},"loading":false}},{"type":"block","id":"BxyN-1683511596025","name":"paragraph","data":{},"nodes":[{"type":"text","id":"W7zi-1683511596024","leaves":[{"text":"","marks":[{"type":"bold"},{"type":"fontSize","value":22}]}]}],"state":{}},{"type":"block","id":"TgJu-1683533404357","name":"paragraph","data":{"style":null},"nodes":[{"type":"text","id":"eALA-1683533404355","leaves":[{"text":"然后启动AI绘画软件webui 。","marks":[]}]}],"state":{}},{"type":"block","id":"WJfz-1683533404539","name":"paragraph","data":{},"nodes":[{"type":"text","id":"i1JU-1683533404538","leaves":[{"text":"","marks":[{"type":"bold"},{"type":"fontSize","value":22}]}]}],"state":{}},{"type":"block","id":"hEbb-1683511651267","name":"image","data":{"version":1,"url":"https://note.youdao.com/yws/res/5/WEBRESOURCE5a945d80ff322cfec9d18cbf4880f0d5","width":445,"height":270},"nodes":[],"state":{"renderSource":"https://note.youdao.com/yws/res/5/WEBRESOURCE5a945d80ff322cfec9d18cbf4880f0d5","initialSize":{"width":445,"height":270},"loading":false}},{"type":"block","id":"YmCy-1683511651270","name":"paragraph","data":{},"nodes":[{"type":"text","id":"08BS-1683511651269","leaves":[{"text":"","marks":[{"type":"bold"},{"type":"fontSize","value":22}]}]}],"state":{}},{"type":"block","id":"L4cr-1683524542064","name":"paragraph","data":{"style":null},"nodes":[{"type":"text","id":"ahPi-1683524542063","leaves":[{"text":"然后选择好模型,输入关键词,选择对应的lora,然后点击生成即可。","marks":[]}]}],"state":{}},{"type":"block","id":"0MxY-1683534821346","name":"image","data":{"version":1,"url":"https://note.youdao.com/yws/res/a/WEBRESOURCE5a5da4f1106d0e0f7e4e8bb8e7fad5ca","width":2385,"height":1632},"nodes":[],"state":{"loading":false,"renderSource":"https://note.youdao.com/yws/res/a/WEBRESOURCE5a5da4f1106d0e0f7e4e8bb8e7fad5ca","initialSize":{"width":2385,"height":1632}}},{"type":"block","id":"BwIL-1683514241733","name":"paragraph","data":{},"nodes":[{"type":"text","id":"SPyQ-1683514241732","leaves":[{"text":"","marks":[]}]}],"state":{}},{"type":"block","id":"FGkJ-1683534832062","name":"paragraph","data":{},"nodes":[{"type":"text","id":"zJ6v-1683534832060","leaves":[{"text":"刚开始不要加任何复杂的关键词,只用最基础的,比如 \"a woman dilireba\" 然后加上我们自己训练lora。关于Lora字符串,你可以直接输入,也可以通过图中圆圈处找到对应的Lora点击一下导入。导入的时候最右侧的参数默认为1,需要修改一下,改成0.7或者0.8。","marks":[]}]}],"state":{}},{"type":"block","id":"V9TJ-1683535108352","name":"paragraph","data":{},"nodes":[{"type":"text","id":"RGis-1683535108351","leaves":[{"text":"","marks":[]}]}],"state":{}},{"type":"block","id":"urkm-1683535109086","name":"paragraph","data":{},"nodes":[{"type":"text","id":"QFp8-1683535109085","leaves":[{"text":"如果Lora练的还可以,这个时候出来的图片应该是相识度比较高的。然后就可以在这个基础词语上做一些变化了,比如加一个wearing a suit (穿着西装)就可以得到下面的图片了。","marks":[]}]}],"state":{}},{"type":"block","id":"jZde-1683535245696","name":"image","data":{"version":1,"url":"https://note.youdao.com/yws/res/3/WEBRESOURCE489dab1e445d77fbec945b08f25e8693","width":512,"height":768},"nodes":[],"state":{"loading":false,"renderSource":"https://note.youdao.com/yws/res/3/WEBRESOURCE489dab1e445d77fbec945b08f25e8693","initialSize":{"width":512,"height":768}}},{"type":"block","id":"IKn2-1683534851934","name":"paragraph","data":{},"nodes":[{"type":"text","id":"A3Xn-1683534851932","leaves":[{"text":"如果出图俯角符合预期,这个Lora训练也就算是成功了。如果不满意,就要回过头去调整素材和参数了。目前的AI绘画,并不是每次出图都完美的,需要多少刷几次,多试几个关键词才能找到比较满意的效果。","marks":[]}]}],"state":{}},{"type":"block","id":"gpQv-1683535500487","name":"paragraph","data":{},"nodes":[{"type":"text","id":"FmUb-1683535500486","leaves":[{"text":"","marks":[]}]}],"state":{}},{"type":"block","id":"vIOk-1683535500679","name":"paragraph","data":{},"nodes":[{"type":"text","id":"KSVu-1683535500677","leaves":[{"text":"到这里Lora部分的内容就全部写完了,拖拖拉拉拖了好久了,终于了了一个事儿。基于Lora这种特性,可以自己玩,也可以做成在线产品。比如之前说过的达芬奇网站就是把这个过程给集成和简化了。","marks":[]}]}],"state":{}},{"type":"block","id":"FFxF-1683535326093","name":"paragraph","data":{},"nodes":[{"type":"text","id":"3lIW-1683535326092","leaves":[{"text":"","marks":[]}]}],"state":{}},{"type":"block","id":"Z36K-1683534852201","name":"paragraph","data":{},"nodes":[{"type":"text","id":"l3Pu-1683534852200","leaves":[{"text":"虽然我已经尽量把过程都写出来了,但是不同的基础的人接受程度肯定不一样。厉害的人觉得太简单,对这个不太熟悉的可能觉得有点复杂。","marks":[]}]}],"state":{}},{"type":"block","id":"jQua-1683601582242","name":"paragraph","data":{},"nodes":[{"type":"text","id":"8DyC-1683601582240","leaves":[{"text":"","marks":[]}]}],"state":{}},{"type":"block","id":"dKJU-1683535907782","name":"paragraph","data":{},"nodes":[{"type":"text","id":"jPae-1683535907781","leaves":[{"text":"确实,从零开始话,这里面还是有挺多东西的。","marks":[]}]}],"state":{}},{"type":"block","id":"JS7b-1683535929227","name":"paragraph","data":{},"nodes":[{"type":"text","id":"A7yM-1683535929225","leaves":[{"text":"","marks":[]}]}],"state":{}},{"type":"block","id":"f42b-1683535807579","name":"paragraph","data":{},"nodes":[{"type":"text","id":"5yPC-1683535807577","leaves":[{"text":"整个流程也还有无数的细节可以优化:","marks":[]}]}],"state":{}},{"type":"block","id":"yvmC-1683601610774","name":"paragraph","data":{},"nodes":[{"type":"text","id":"fScP-1683601610773","leaves":[{"text":"","marks":[]}]}],"state":{}},{"type":"block","id":"SNQz-1683516498846","name":"paragraph","data":{},"nodes":[{"type":"text","id":"3C49-1683516498845","leaves":[{"text":"比如 具体的安装过程,异常排除。","marks":[]}]}],"state":{}},{"type":"block","id":"jv6x-1683515062086","name":"paragraph","data":{},"nodes":[{"type":"text","id":"PrG5-1683515062085","leaves":[{"text":"比如 图片筛选,裁剪,修复。","marks":[]}]}],"state":{}},{"type":"block","id":"w3Ua-1683515079910","name":"paragraph","data":{},"nodes":[{"type":"text","id":"lGyS-1683515079909","leaves":[{"text":"比如 关键词生成的多种方式和优化方法。","marks":[]}]}],"state":{}},{"type":"block","id":"Ksko-1683515062280","name":"paragraph","data":{},"nodes":[{"type":"text","id":"k27r-1683515062278","leaves":[{"text":"比如 模型训练参数的调整。","marks":[]}]}],"state":{}},{"type":"block","id":"bdR2-1683601660801","name":"paragraph","data":{},"nodes":[{"type":"text","id":"sbAZ-1683601660800","leaves":[{"text":"","marks":[]}]}],"state":{}},{"type":"block","id":"0jKL-1683517517172","name":"paragraph","data":{},"nodes":[{"type":"text","id":"z5ba-1683517517171","leaves":[{"text":"考虑到这些细致的问题专业性比较强,研究需要时间,写起来非常麻烦,写了也不会有多少阅读量,我就不在公开渠道发布了。我会慢慢更新在我的","marks":[]},{"text":"知识星球Tonyhub","marks":[{"type":"bold"}]},{"text":"里面。今天用的素材,参数配置文件,最终Lora模型也会整理好发在里面。","marks":[]}]}],"state":{}},{"type":"block","id":"ZxTB-1683523775359","name":"image","data":{"version":1,"url":"https://note.youdao.com/yws/res/2/WEBRESOURCE7518433c5375ae665bd7b1d5874cec82","width":1024,"height":1024},"nodes":[],"state":{"loading":false,"renderSource":"https://note.youdao.com/yws/res/2/WEBRESOURCE7518433c5375ae665bd7b1d5874cec82","initialSize":{"width":1024,"height":1024}}},{"type":"block","id":"bFwp-1683523639543","name":"paragraph","data":{},"nodes":[{"type":"text","id":"9Mim-1683523639541","leaves":[{"text":"热爱研究的朋友,也完全可以自己去查资料研究,加入交流群交流。我把相关的连接全部放在下面了。","marks":[]}]}],"state":{}},{"type":"block","id":"CFxG-1683524553276","name":"paragraph","data":{},"nodes":[{"type":"text","id":"YZ10-1683524553275","leaves":[{"text":"","marks":[]}]}],"state":{}},{"type":"block","id":"AOLl-1683524549400","name":"paragraph","data":{},"nodes":[{"type":"text","id":"eY0x-1683524549399","leaves":[{"text":"相关连接","marks":[{"type":"bold"}]}]}],"state":{}},{"type":"block","id":"dCzN-1683524562663","name":"paragraph","data":{},"nodes":[{"type":"text","id":"5XXB-1683524562661","leaves":[{"text":"","marks":[]}]}],"state":{}},{"type":"block","id":"ASKa-1683512529794","name":"paragraph","data":{},"nodes":[{"type":"text","id":"tZpu-1683512529793","leaves":[{"text":"LoRA训练的开源项目:","marks":[]}]}],"state":{}},{"type":"block","id":"vZ2M-1683512588170","name":"paragraph","data":{},"nodes":[{"type":"text","id":"K8FP-1683512588169","leaves":[{"text":"","marks":[]}]},{"type":"inline","id":"x2CD-1683512605322","name":"link","data":{"href":"https://github.com/bmaltais/kohya_ss"},"nodes":[{"type":"text","id":"q0dK-1683512605321","leaves":[{"text":"https://github.com/bmaltais/kohya_ss","marks":[]}]}]},{"type":"text","id":"WJIR-1683512605323","leaves":[{"text":"","marks":[{"type":"bold"},{"type":"fontSize","value":22}]}]}],"state":{}},{"type":"block","id":"4AEr-1683532902639","name":"paragraph","data":{"style":null},"nodes":[{"type":"text","id":"qUwR-1683532902637","leaves":[{"text":"图片截取:","marks":[]}]}],"state":{}},{"type":"block","id":"axMd-1683532931052","name":"paragraph","data":{"style":null},"nodes":[{"type":"text","id":"EGTE-1683532931051","leaves":[{"text":"","marks":[]}]},{"type":"inline","id":"jVYV-1683532909588","name":"link","data":{"href":"https://www.birme.net/"},"nodes":[{"type":"text","id":"TzZS-1683532909587","leaves":[{"text":"https://www.birme.net/","marks":[]}]}]},{"type":"text","id":"JEUJ-1683532909589","leaves":[{"text":"","marks":[{"type":"bold"},{"type":"fontSize","value":22}]}]}],"state":{}},{"type":"block","id":"quIC-1683512529990","name":"paragraph","data":{},"nodes":[{"type":"text","id":"ef1w-1683512529988","leaves":[{"text":"replicate关于Lora的介绍:","marks":[]}]}],"state":{}},{"type":"block","id":"I0uh-1683512530103","name":"paragraph","data":{},"nodes":[{"type":"text","id":"8PHy-1683512530101","leaves":[{"text":"","marks":[]}]},{"type":"inline","id":"MLmv-1683512530554","name":"link","data":{"href":"https://replicate.com/blog/lora-faster-fine-tuning-of-stable-diffusion"},"nodes":[{"type":"text","id":"Ho4a-1683512530553","leaves":[{"text":"https://replicate.com/blog/lora-faster-fine-tuning-of-stable-diffusion","marks":[]}]}]},{"type":"text","id":"DH74-1683512530556","leaves":[{"text":"","marks":[{"type":"bold"},{"type":"fontSize","value":22}]}]}],"state":{}},{"type":"block","id":"1q2u-1683512551722","name":"paragraph","data":{},"nodes":[{"type":"text","id":"L7NE-1683512551721","leaves":[{"text":"LoRA开源项目地址:","marks":[]}]}],"state":{}},{"type":"block","id":"Z29J-1683512584105","name":"paragraph","data":{},"nodes":[{"type":"text","id":"qm0o-1683512584104","leaves":[{"text":"","marks":[]}]},{"type":"inline","id":"tX79-1683512584608","name":"link","data":{"href":"https://github.com/cloneofsimo/lora"},"nodes":[{"type":"text","id":"RrS2-1683512584607","leaves":[{"text":"https://github.com/cloneofsimo/lora","marks":[]}]}]},{"type":"text","id":"dQ1U-1683512584609","leaves":[{"text":"","marks":[]}]}],"state":{}},{"type":"block","id":"x3fN-1683512585345","name":"paragraph","data":{},"nodes":[{"type":"text","id":"UCJw-1683512585343","leaves":[{"text":"LoRA论文地址:","marks":[]}]}],"state":{}},{"type":"block","id":"wiZr-1683512732922","name":"paragraph","data":{},"nodes":[{"type":"text","id":"3CAT-1683512732920","leaves":[{"text":"","marks":[]}]},{"type":"inline","id":"C7xg-1683512733164","name":"link","data":{"href":"https://arxiv.org/abs/2106.09685"},"nodes":[{"type":"text","id":"jrz1-1683512733163","leaves":[{"text":"https://arxiv.org/abs/2106.09685","marks":[]}]}]},{"type":"text","id":"SMPF-1683512733165","leaves":[{"text":"","marks":[]}]}],"state":{}}]" style="visibility: visible;">关于AI绘画(基于Stable Diffusion Webui),我之前已经写过三篇文章,分别是软件安装,基本的使用方法,微调模型LoRA的使用。
整体来说还是比简单的,搞个别人的模型,搞个提示词就出图了。今天来一个有些难度的,自己训练一个LoRA微调模型。

0. LoRA微调模型是什么?
LoRA的全称是Low-Rank Adaptation of Large Language Models,有专门的论文和开源项目。它主要解决大模型太大,一般人玩不转的问题。
比如GPT-3 175B的参数,有几个人跑得起来呢?Stable Diffusion V1版模型用了150000 个A100 GPU Hour,也不是个人玩得起的。
把LoRA应用到AI绘画之后,我们就可以用普通的消费级显卡来微调官方的模型了。

微调的意思,就是原先模型的基础上夹带私货。最常见的就是,让模型学习指定的风格或者人物。风格这种可能还是有点抽象,而人物这个就比较直观了。比如默认情况下,AI绘画软件无法画出指定的人物,而通过Lora模型就可以做到这一点。

这样一来,你就可以把自己或者你的宠物或者你的女神投射到AI绘画的模型中,然后通过描述词,让这个人物千变万化。

关于LoRA大概就说这些,更多专业的内容,可以看文末。
下面就开始介绍Lora的具体的训练方法了。开始之前简单说一下我的环境:
Lora的训练流程,我尽量做到简单又清晰,聊太多概念和用太多工具很容易把人绕晕。
1.软件安装
训练Lora的方法不止一种,我这里选择的是一个叫kohya_ss的项目。这个项目比较独立,整个设计逻辑比较清晰,可以用可视化的方式配置参数,也提供了一些辅助工具,官方提供了详细的视频教程(英文)。
下面就来说一下如何安装。
安装基础软件:
因为这是基于Python的开源项目,所以Python和git是必备软件。我的公众号里有单独介绍这些软件安装配置的文章,可以翻一翻。
Visual Studio XXX redistributable是一款简易实用,功能全面的全新系统运行库。它是Windows系统装机必备组件,包含:C Runtime (CRT),Standard C++,MFC,C++ AMP,OpenMP等,提供了强大而灵活的开发环境支持,让电脑内没有任何无用垃圾程序,同时它还能够解决各种软件运行不了的问题。(摘抄自网络)。
基础环境安装完成之后就可以开始安装和配置kohya_ss了。
克隆项目然后运行安装脚本
git clone https://github.com/bmaltais/kohya_ss.git
cd kohya_ss
.\setup.bat
脚本会自动安装依赖,安装完成后会有一些配置选项,不确定就不要启动。启动了后面会出现很多问题,导致整个流程卡住了。因为这里用到了git和github,所以需要你本地环境能访问国际互联网。或者租一个通外网的GPU服务器。
安装CUDNN 8.6 (可选)
安装CUDNN的目的是提升运算速度。
先通过下面的地址下载Cudnn文件。
https://b1.thefileditch.ch/mwxKTEtelILoIbMbruuM.zip
然后放到kohya_ss项目的根目录下,然后运行下面的脚本。
.\venv\Scripts\activate
python .\tools\cudann_1.8_install.py
启动软件
配置完成之后,就可以启动软件了,输入命令:
gui.bat --listen 127.0.0.1 --server_port 7860 --inbrowser --share
或者到文件夹里找到gui.bat 双击启动。


把URL复制到浏览器,就可以看到界面了。
2.素材准备和预处理
所有的模型训练都遵循一个最基本的道理:好进好出。喂得素材好,训练的模型自然好。喂的是垃圾,出来的必然也是垃圾。所以第一步,就是把素材整好了。
素材处理呢,其实也分三个小步骤。
a.找素材
b.切素材
c.生成对应的关键词
素材可以通过不同渠道获取,比如最简单粗暴的方式就是直接在百度图片里面搜索。然后选择高清,或者大尺寸,特大尺寸。点进去之后看看有没有套图。
也可以直接去一些壁纸网站或者专门晒图的网站。比如糖堆,花瓣,Pinterest, Instagram...

图片的最基本要求是,清晰,清晰,清晰。其次,不要太单一。
图片比例,并没有强制要求。建议用1:1或者其他固定的比例去切。
图片数量方面,一般来说是准备个几十张的样子。太多了整理起来就比较费时间,训练时长也会边长长,训练不充分可能就没那么像。太少就会过拟合,不容易产生变化,描述词一改可能就不像了。

从经验来看,聚焦半身或者头部更容易训练,更容易出稳定的效果,除了主体之外,背景尽量简单,减少干扰。

同一个明星的照片其实也是千差万别,有时候甚至P的都不像了一个人了,最好是能找到样貌比较稳定连续的素材。
找到素材之后,你可以用专业的工具进行裁剪。也可以直接用QQ的截图功能。
比如用Birme来处理:

我这里就遵循能简单就简单的原则,直接用QQ截图,也没有严格1:1 。就是切了个大概,把主体切出来。
图片预处理完成之后,需要创建一个专门的训练文件夹。我是在kohya_ss的根目录创建一个名叫train的文件,然后在这个文件下面又创建一个叫Dilireba的文件夹。

里面又分别创建了如下的文件夹:
image : 图片放在这里。
log:训练记录
model:模型保存路径
dilireba.json:配置文件。
image文件夹里面不是直接放图片,而是还有一个子文件夹,名称大概是这样100_dilireba。所有图片这放在这个子文件里面。这里的100不是随便写的,会直接影响训练的步数和效果。
创建好文件,将处理好的图片放在100_dilireba里面,然后就要做关键词生成了。
在网页上找到Utilities->Captioning->BLIP Captioning。

这里只要设置两个选项。
Image folder to caption : 图片文件夹所在路径。
Prefix to add to BLIP caption : 生成提示词的前缀,训练完成之后可以用在提示词中,唤醒或者加强人物特征。
设置完成之后点击Caption images 开始处理。第一次处理应该是需要在线下载一些模型,稍微等待一下。点击按钮之后,界面上没有任何提示,但是在命令行窗口中会有具体的显示。
处理完成之后,在图片文件里面,会多出同名的txt文件。

打开文件之后,可以看到类似的文字描述dilireba a woman in a black dress with a red lipstick。作为简单的练手,我们不需要修改任何东西。如果你要提升效果,可以手动加入更加详细,更加精准的描述。
3.模型参数设置和训练
经过上面的处理,素材已经搞定了。接下来就是设置训练参数。如果你已经有参数配置文件,可以直接通过点击Open按钮来导入。
参数设置主要分成了3部分。
第一部分是:预训练模型设置。

Lora的训练需要基于标准的SDW模型(Checkpoint),点击Source model选项卡之后就可以进行设置。
先将④处的模型快速选择(Model Quick Pick)设置成自定义(Custom),这里也可以用预设的V1.5,V2.1。但是使用这些预设模型,会需要很长的时间在线下载,而且会占据巨大的C盘空间,不是很推荐。
然后在左边③这里选择具体的本地模型,我这里用的是适合亚洲人的chilloutmix模型。通过点击输入框后面的文件图标,找到具体的模型文件就可以了。
然后右边⑤处的模型保存格式选择safetensors。
第二部分是:文件夹设置。

在素材处理的步骤中,我们已经创建好了具体的文件。这里只需要通过右边的文件夹小图标,选中具体的文件夹就好了。
①Image folder 选择 image 文件夹
②Output folder 选择 model 文件夹
③Logging folder 选择 log 文件夹
④Model output name ,输入一个便于记忆的英文名字,这个名字就是最终生成的模型的名字。我习惯用主体+版本+迭代次数来命名。
第三部分是:训练参数设置。
这里的参数非常多,一般对于这种情况,我们都遵循一个基本原则:对于新手来说,默认设置就是最佳设置。
你可以完全不做任何设置,就开始训练了。

我的部分参数设置如上图。
网上普遍的教程都是把批量大小(Train batch size)改成了2 。
设置一个种子(Seed)比如1234。
学习率(Learning rate)0.0001
Text Encoder学习率 5e-5
Unet学习率 0.0001
Network : 128和128
模型像素:512x512

参数设置完成之,点击底部的训练按钮①就可以开始训练了。
点击训练按钮之后,界面上没有任何变化,来到命令行窗口会看到一长串命令。

这个界面会卡一段时间,然后跳出很多英文,最后停留在下面的界面。

这里会显示最终需要训练的步数(Step)。Step的值等于图片数量乘以文件中设置的数字,然后除以2 。训练的长短主要却决于单步的时间和总的步数。
关于多少步才比较好的问题,官方教程演示的时候是用了800。但是这个这个数值仅供参考。不同的数据会有不同,比如我后来整理一个图片比较多的数据集,跑了几万步,好像也还有提升的空间。
具体的训练情况,可以通过log来查看。点击上面②处的Start TensorBoard 可以启动一个服务。

打开后可以看到具体的Loss变化情况。简单的来说loss慢慢降低就是对的。如果Loss基本没啥变化,训练下去也没太大意义了。
4.模型应用
搞了那么久终于可以用了。
lora模型的使用,我们之前的文章里面已经有详细的介绍了,这里就简单的演示一下。当lora训练结束之后,会在对应的model文件下面生成模型文件。
比如下图:

将图中的Lora模型文件拷贝到Stable-Diffusion-WebUI的对应路路径下。

然后启动AI绘画软件webui 。

然后选择好模型,输入关键词,选择对应的lora,然后点击生成即可。

刚开始不要加任何复杂的关键词,只用最基础的,比如 "a woman dilireba" 然后加上我们自己训练lora。关于Lora字符串,你可以直接输入,也可以通过图中圆圈处找到对应的Lora点击一下导入。导入的时候最右侧的参数默认为1,需要修改一下,改成0.7或者0.8。
如果Lora练的还可以,这个时候出来的图片应该是相识度比较高的。然后就可以在这个基础词语上做一些变化了,比如加一个wearing a suit (穿着西装)就可以得到下面的图片了。

如果出图俯角符合预期,这个Lora训练也就算是成功了。如果不满意,就要回过头去调整素材和参数了。目前的AI绘画,并不是每次出图都完美的,需要多少刷几次,多试几个关键词才能找到比较满意的效果。
到这里Lora部分的内容就全部写完了,拖拖拉拉拖了好久了,终于了了一个事儿。基于Lora这种特性,可以自己玩,也可以做成在线产品。比如之前说过的达芬奇网站就是把这个过程给集成和简化了。
虽然我已经尽量把过程都写出来了,但是不同的基础的人接受程度肯定不一样。厉害的人觉得太简单,对这个不太熟悉的可能觉得有点复杂。
确实,从零开始话,这里面还是有挺多东西的。
整个流程也还有无数的细节可以优化:
比如 具体的安装过程,异常排除。
比如 图片筛选,裁剪,修复。
比如 关键词生成的多种方式和优化方法。
比如 模型训练参数的调整。
考虑到这些细致的问题专业性比较强,研究需要时间,写起来非常麻烦,写了也不会有多少阅读量,我就不在公开渠道发布了。我会慢慢更新在我的知识星球Tonyhub里面。今天用的素材,参数配置文件,最终Lora模型也会整理好发在里面。

热爱研究的朋友,也完全可以自己去查资料研究,加入交流群交流。我把相关的连接全部放在下面了。
花了3天时间,写了4000多个字,我发现一个密码:点赞不花钱哦!
相关连接
LoRA训练的开源项目:
https://github.com/bmaltais/kohya_ss
图片截取:
https://birme.net/
replicate关于Lora的介绍:
https://replicate.com/blog/lora-faster-fine-tuning-of-stable-diffusion
LoRA开源项目地址:
https://github.com/cloneofsimo/lora
LoRA论文地址:
https://arxiv.org/abs/2106.09685