rui40000
|
c6acb9f7d4
|
fix: 修复 RGBA 输入导致的通道数报错
抠图类节点(BiRefNet Ultra V2、RMBG 等)的 image 输出为 4 通道 RGBA,
此前节点直接把它喂给 VAE 编码器,触发:
Given groups=1, weight of size [128, 3, 3, 3],
expected input[1, 4, 1024, 1024] to have 3 channels, but got 4 channels instead
现按 ComfyUI 惯例收敛输入通道:RGBA 丢弃 alpha、灰度扩成三通道、
其余通道数给出可读报错而非让 VAE 抛形状错误。
BiRefNetUltraV2 的 image 输出由 RGB2RGBA(原图, mask) 合成,RGB 三通道
未被 premultiply,因此丢弃 alpha 后即还原原图 —— 实测 RGBA 与 RGB 输入
的输出逐像素完全一致(最大差异 0.00000000),该接法无需调整工作流。
|
2026-07-16 11:26:09 +08:00 |
|
 rui40000andClaude Opus 4.8
|
e1a575fcda
|
feat: 新增 SDMatte 精细抠图节点,实测复现官方效果
基于 SDMatte(vivo 相机研究院,ICCV 2025)的交互式抠图节点,
擅长发丝、绒毛、玻璃、烟雾等常规抠图模型处理不好的边缘。
实现要点:
- 严格照搬官方 configs/SDMatte.py 的推理配置(bbox 视觉提示、fp32、1024 分辨率),
不做任何启发式后处理,输出即模型原始 alpha
- 内置官方 LongfeiHuang/SDMatte 的配置文件,无需下载 SD 2.1 权重,也无需联网。
官方 load_weight=False 只用 config 搭骨架,全部权重由 checkpoint 覆盖;
原版 SD 2.1 的 config 缺 bbox_time_embed_dim 等三个专有字段,缺字段时直接报错而非猜测
- 同时支持官方 .pth(12.1GB)与社区 .safetensors(5.19GB)。两者模型权重实测
逐像素完全相同,pth 多出的 6.5GB 是 detectron2 的优化器状态;读 pth 时以受限
Unpickler 只解析 model 段,内存占用与 safetensors 相当
- 自动适配 transformers 5.x 移除 text_model 包装层导致的键名漂移,
避免 text_encoder 的 372 个权重被静默丢弃
- 加载后校验 1316 个张量全部对齐,有任何未覆盖/未使用的权重即中止报错
- 默认开启注意力分片,1024 下显存峰值由约 15.5GB 降至 9.1GB,速度反而略快
实测(官方效果图中的羊驼,对比官方公布 alpha):MAD=0.0113。
同图同权重下 ComfyUI-SDMatte 为 MAD=0.0884,相差 7.8 倍,主因是其
aux_input="trimap" —— 官方 aux_input_list 只含 point_mask/bbox_mask/mask,
trimap 从未作为视觉提示参与训练,且该分支坐标恒为 [0,0,1,1]、定位信息丢失。
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
2026-07-16 11:16:36 +08:00 |
|