参数名称 | 说明 |
---|---|
brushnet | 返回的是一个可直接参与推理的模型对象(不是路径,也不是 embedding)。你不需要也不能手动访问这个模型的 .forward(),而是通过后续如 add_brushnet_patch、brushnet_inference 等函数接入到 UNet 的 forward 过程。 |
BrushNet Loader
节点功能:这个节点用来加载对应的BrushNet模型,建议按照安装方法来进行模型放置,这样有利于后续管理和理解模型的对应关系。注意:建议设置dtype为float32进行运行,假如这是为float16,那么当CUDA显存不足时会将一部分的数据放入CPU执行模型计算,但是CPU不支持float16精度的数据,会产生报错信息。
输出参数
控件参数
参数名称 | 说明 |
---|---|
brushnet | 是一个 .safetensors 或 .pt 文件,表示预训练后的 BrushNet 或 PowerPaint 模型,存放在 models/inpaint/ 路径下。容易误解为普通 ControlNet 模型,但它其实是配合特定 inpaint 推理方式使用的结构补丁模型。 |
dtype | 模型加载时所使用的精度类型。推荐使用 float16 或 bfloat16 以节省显存并提高推理速度。其他精度如 float64 通常用于调试,较为少见。 |
该节点目前有三种模型提供加载,第一种是PowerPaint模型:如下图所示,我们使用PowerPaint模型必须使用1.5的sd大模型,对应需要加载PowerPaint需要的Clip模型,下图功能为图像中去除蒙版区域内容。
第二种是BrushNet用到的random_mask模型,这里我使用SDXL大模型进行实验,下图中使用random_mask模型进行局部修复,从图中可以看出最终修复后的图像并没有严格按照蒙版内容进行填充,比如瓶子明显的低于蒙版的大小,所以该模型主要用于随机选择蒙版进行修复。
第三种是BrushNet用到的segmention模型,从图中可以看出,最终生成的图像严格按照蒙版的区域进行绘制,瓶子完全按照蒙版的大小进行生成,在BrushNet原论文中有提到"segmention模型在插值操作方面可能会引入潜在的不准确性,因为将遮罩调整大小以匹配潜在空间的操作可能会导致潜在的不准确性",也就是说当把蒙版信息通过VAE编码后在潜空间中可能造成蒙版区域并不完美匹配编码前的蒙版,所以可能产生误差。