 rui40000andClaude Opus 5
|
becde22105
|
优化 Unmult 批处理:改 torch 分块运算,124 帧提速 3.8 倍
原实现逐帧 numpy 处理再 torch.stack,124 帧 1024x1024 需 9.98 秒。
瓶颈有二:单帧内近十次中间数组分配(每份 12MB),以及 numpy 绝大多数
算子单线程、多核闲置。
改动:
- 核心运算改用 torch 算子分块处理,走 CPU 多线程;原地运算压掉中间分配
- 结果直写预分配张量,省掉最后那次 stack 大拷贝
- 主体 mask 的 resize 移出循环,不再对同一张 mask 重复缩放 B 次
- 分块而非整批,控制中间量内存峰值
实测 9.98s -> 2.61s(3.82x)。与旧实现 24 组对拍全部逐元素一致,
涵盖黑/白/绿幕/自定义底色、黑白点、mask 的四种形状、主体保护开关、
旧英文参数名、RGBA/单通道输入。
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
|
2026-08-18 17:36:45 +08:00 |
|
 rui40000andClaude Opus 4.8
|
a1f52de801
|
feat: Unmult 增加「主体保护」开关,控制是否采纳 subject_mask
subject_mask 的合并逻辑此前已存在,本次补上开关:
- 启用(默认):alpha 取 max(unmult 结果, subject_mask)
- 关闭:即便上游已连线也完全不采纳,等同纯 Unmult
想对比「有无 AI 介入」的差别时拨开关即可,不必拔线。
兼容旧英文名 use_subject_mask。
顺带把黑点/白点 tooltip 里的「(主体保护)」字样去掉 —— 那是描述
参数作用的措辞,和新开关撞名会让人以为是同一功能。
实测(黑底 + 暗色实体,alpha 真值恒为 1,下半近纯黑):
不接 mask 暗部 alpha 0.080 ← 黑衣黑发被扣穿
接 mask + 保护启用 暗部 alpha 1.000
接 mask + 保护关闭 暗部 alpha 0.080,与不接 mask 逐元素一致
即开关确实起作用,且关闭时行为与纯 Unmult 完全等价。
这同时解掉了上次记录的适用边界:黑底 unmult 本质是拿亮度当不透明度,
对实体不成立;现在接一路语义抠图的 alpha 进 subject_mask 即可破解 ——
语义模型负责「哪里是主体」,Unmult 负责「边缘有多透」。README 已按此改写。
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
2026-08-18 15:44:32 +08:00 |
|
 rui40000andClaude Opus 4.6
|
adb1de6329
|
feat: Unmult 节点新增 AI 主体保护(可选 subject_mask 输入)
接入 FeyNobg/Lucida/BiRefNet 等抠图节点输出的 mask,
执行 max(unmult_α, subject_mask) 合并,
防止主体中与背景色相近的区域被误判为透明。
不连接时行为不变,向后兼容。
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
2026-08-18 12:00:04 +08:00 |
|
 rui40000andClaude Opus 4.8
|
ea632a54d1
|
style: Unmult 的黑点/白点改为中文滑块,与 LayerStyle 观感一致
两项参数加 "display": "slider",界面从带箭头的数字框变成滑块;
参数名直接用中文「黑点」「白点」,这样不依赖 i18n 语言包,
任何语言环境下都显示中文(LayerStyle 显示中文是靠它自带的翻译文件)。
中文名无法作为函数形参,故 unmult() 改用 **kwargs 接收,
同时兼容旧的 alpha_low / alpha_high,早先保存的工作流不会失配。
验证:display=slider 生效、tooltip 保留、取值范围与步进不变;
黑点 0.2 使全透明占比 0.031→0.219,白点 0.7 使全不透明占比
0.016→0.312,参数确实起作用;旧英文名调用照常工作。
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
2026-08-17 14:42:12 +08:00 |
|
 rui40000andClaude Opus 4.8
|
bc433bc24a
|
docs: 核实 Unmult 节点并补充 README(含实测适用边界)
节点为纯数学去底(等效 AE Unmult):纯色底合成图满足
C = aF + (1-a)B,背景色已知即可反解出前景色与 alpha,
无需模型推理,且能真实保留半透明层次。
核实结果:
- 已正确注册进 __init__.py(无外部依赖,裸 import 与仓库惯例一致)
- 4 个参数均带中文 tooltip,符合本仓库的统一规则
- 分类 Rui-Node/抠图 与其余抠图节点一致,支持批量
验证(构造已知合成图反推真值):
- 发光素材在黑底/白底/绿幕下,alpha 与前景色平均误差均为 0.0000,
数学上是精确解
- 黑白点参数、批量输入、RGBA/MASK 双输出均正常
同时测出一条必须写进文档的适用边界:
黑底 unmult 本质是拿亮度当不透明度,这对发光物成立、对实体不成立。
同一实体素材(alpha 真值恒为 1)实测——
黑底:亮部 0.900,暗部仅 0.080(黑头发/深色衣服/鞋会被扣穿)
绿幕:亮部 0.900,暗部 0.940,正常
故黑底的角色素材仍应走 Lucida / FeyNobg 等语义抠图,
unmult 留给光效、火焰、粒子与绿幕素材。README 补了四个抠图节点的选型表。
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
2026-08-17 14:10:04 +08:00 |
|
 rui40000andClaude Opus 4.8
|
cea14ef327
|
feat: 八方向拆分支持锚点对齐——尺寸统一、切换朝向不跳
原来每个方向各按自己的内容裁剪,8 个方向出 8 种尺寸,角色在各自
画面里的位置也不一致,游戏里切换朝向会跳。人工做法是一帧一帧手动
对位置,这里把它自动化。
新增三个参数:
- align_mode 锚点对齐·统一画布(默认)
- anchor_type 脚底中心(默认)/ 包围盒底边中心 / 包围盒中心
- align_scope 逐帧对齐·脚底钉死(默认)/ 按方向统一平移
锚点为什么取「脚底中心」:角色站在地面上,脚底才是它在世界里的位置;
而斗篷、披风、手杖会把包围盒拽向一侧。故 y 取最低的不透明行,
x 取底部窄带的水平质心 —— 那些外挂物基本不会垂到脚底,走路时两脚
一前一后,窄带质心正好落在两脚之间,即人真正站立的点。
画布尺寸由「所有方向、所有帧相对各自锚点的最大延展」求并集得出,
因此既统一又不会切到任何一帧。
实测(97 帧真实素材):
不对齐 8 种尺寸 各方向锚点散布 x 48.9px / y 27px
按方向统一平移 统一267x372 x 7.1px / y 4px,跨帧位移 13~23px(保留摆动)
逐帧对齐 统一284x367 x 0.76px / y 0px,跨帧位移约 1px
默认取逐帧对齐:行走循环本就该原地播放、位移交给游戏代码,sprite
内部不该有整体漂移,而 AI 生成的视频往往有(实测达 22px)。
info 输出新增统一画布尺寸、锚点坐标与 Unity/Godot 归一化 pivot
(左下为原点),照着填进引擎 8 个方向即可共用同一套坐标。
两个示例工作流同步更新 widgets(13→16,不同步会参数错位),
并已校验 widget 数量与结构自洽性。
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
2026-07-30 22:27:41 +08:00 |
|
 rui40000andClaude Opus 4.8
|
5e9e1e6a84
|
feat: 新增角色图→八方向行走动画一体化工作流(打通 VIDEO→IMAGE)
把原来分开的两个工作流合并成一条链:角色图 → 八方向静态图 →
Seedance 循环视频 → 抽帧 → 抠图 → 八方向拆分 → 8 个透明 webm + 8 组序列帧。
断点在于 Seedance 输出的是 ComfyUI 的 VIDEO 类型,而八方向拆分要 IMAGE
帧序列,VHS「Load Video」只能从文件读、接不上 VIDEO。
桥梁用 ComfyUI 原生的 GetVideoComponents(comfy_extras/nodes_video.py,
image/video 分类):输入 VIDEO,输出 images/audio/fps。Holopix 插件的
README 也明确写了可直接连接原生 Get Video Components,且它内部先把视频
下载到本地再包装成 VIDEO,解码没问题。因此没有为此新写任何节点。
帧率处理:Seedance 出 720p/4s/24fps≈97 帧,游戏行走循环 8~12 帧即够,
中间加 VHS Select Every Nth Image 抽帧(间隔 3 → 8fps ≈32 帧),
输出帧率同步设 8。这两个值必须匹配否则播放速度不对,已写进 Note。
另外保留一份 SaveVideo 留存 Seedance 原始视频:生成是付费的,后半段
调参时可用另一个工作流单独重跑,不必重复花钱。⑤ 生成静态图后有预览节点,
布局/朝向不对可在此止损。
抠图沿用用户原有的 LayerMask BiRefNetUltraV2,拆分节点 bg_mode 相应设为
「已带透明通道」——这套提示词要求纯黑背景,颜色阈值法本就不适用。
工作流由脚本循环生成(8 路重复),结构自洽性已逐项校验:
links 与节点 inputs/outputs 双向一致、无越界、无悬空引用、
拆分节点 widget 数 13 与定义相符、8 方向各连出 2 条。
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
2026-07-30 19:04:22 +08:00 |
|
 rui40000andClaude Opus 4.8
|
cc6a6e3400
|
feat: 新增越光 API 连接节点(OpenAI 兼容,25 个模型内置价格)
参照 ZenMux 节点的架构编写,参数、输出与容错行为保持一致,便于互换。
端点 https://llm.ai-nebula.com/v1/chat/completions
与 ZenMux 的三点差异:
- 模型清单内置在 yueguang/model_registry.py,不做在线快照:越光没有
可枚举的模型接口,清单与价格来自官方规范文档。少一个联网环节,
也不会因拉取失败导致下拉变空
- model id 不带厂商前缀(gpt-4o 而非 openai/gpt-4o),下拉靠排序聚类,
搜索时输 gpt/claude/deepseek/kimi 过滤
- 默认 deepseek-v4-flash(全表最便宜 $0.1/$0.3,官方示例也用它),
默认值便宜可避免误触发产生意外费用
25 个模型的价格已按文档录入并逐项校验(标签解析、价格、厂商三项一致性
全部通过)。usage_stats 比 ZenMux 多一行厂商,价格换算经手算对照无误。
沿用的实战经验:base_url 默认值不带 ://(前端会吞协议片段)、
自适应参数重试(弃用 temperature / 需 max_completion_tokens 的模型)、
VALIDATE_INPUTS 宽松放行避免价格变动使旧工作流失效。
所有 19 个参数均带中文 tooltip。
验证:链路已打通(认证被接受、响应能正确解析),但文档提供的 key
余额为 0,返回 403「用户额度不足」,故未取得实际回复内容。
换有额度的 key 即可使用。
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
2026-07-30 18:19:39 +08:00 |
|
 rui40000andClaude Opus 4.8
|
2a6fd42c57
|
fix: 治理抠图白边——推荐改用模型 alpha,新增收边与颜色反溢出
用户反馈边缘一圈白边。诊断:按 alpha 分层统计 RGB 均值,
alpha 0.05~0.3 的边缘像素 RGB 高达 0.989(角色本体只有 0.363),
证实边缘掺了背景白 —— 我只设了 alpha 却没动 RGB。
新增两个参数:
- decontaminate 颜色反溢出,按 观察色=前景×a+白×(1-a) 反解前景色
- edge_shrink 把边缘那圈几乎全是背景的半透明像素收掉
实测白边强度(合成到深绿底,量主体外缘3像素环带比背景亮多少):
都关闭 0.0483 / 只反溢出 0.0466 / 只收边 0.0283 / 两者 0.0261 / 狠收边 0.0164
即:收边是主力(-41%),反溢出单独几乎无效(-3.5%)——因为观察色
本身就太白,反解出来还是白。这点如实写进 tooltip 与 README。
但收边暴露了颜色阈值法的死穴:它按「离白色多远」估 alpha,
白衬衫接近白、alpha 天生偏低,收边会把衬衫啃出破洞(肉眼可见背景
透过衣服)。这不是调参能解决的,故改推荐语义级抠图:
- bg_mode 默认改为「已带透明通道(推荐·上游接抠图节点)」,
选项名直接把取舍写进去,旧选项名保留在 _BG_ALIAS 里做兼容
- edge_shrink 默认 0.2(配模型 alpha 够用;配阈值法需 0.35+)
- 示例工作流插入 Lucida 节点:加载视频 → Lucida → 拆分(masks 输入)
实测 Lucida 一次识别整张雪碧图全部 8 个角色(各格前景占比 0.18~0.24,
中间空格 0.002);同等白边水平下主体被啃面积比阈值法少 35%,白衬衫完好。
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
2026-07-30 10:23:54 +08:00 |
|
 rui40000andClaude Opus 4.8
|
9c674bac42
|
fix: bg_mode=不处理 时角色仍被格线切断(上次修复漏掉了这条路径)
上次加的 expand_beyond_cell 有个致命条件写错:
use_expand = expand_beyond_cell and mode != "none" and _HAS_SCIPY
选「不处理(输出不透明)」时整个修复被跳过,退回严格格线切分,
输出尺寸恒为格子大小(834/3 x 1112/3 = 278x371),角色照样被切。
当初这么写的理由是「不透明模式没有 alpha 可做连通分析」——
但定位和输出是两件事,内部照样可以算一份白底检测只用于圈定范围。
改为:locate_alpha() 专用于定位(三种 bg_mode 都算),
frame_alpha() 才是真正写进输出的。修复后三种模式尺寸完全一致。
连带解决「不处理」模式的一个矛盾:裁剪框为了不切断角色必然框进
邻居的像素,而该模式不做透明处理,邻居就会直接显示出来。
现在把非本角色区域按软 alpha 合成到白底 —— 保住完整角色,
也不会混进旁边那位。
crop_padding 默认 8 → 16:给描边/发光/阴影等后续特效留余量,
也免得内容贴着边看起来像被切。
验证:三种 bg_mode 全部「贴边被切的方向 = 无」。
判据按模式区分——透明模式看输出 alpha 的四边,不处理模式看非白像素的四边。
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
2026-07-30 09:35:42 +08:00 |
|
 rui40000andClaude Opus 4.8
|
5d3834503e
|
fix: 八方向拆分不再切断角色;全仓库参数补齐中文 tooltip
【修复】角色被格线切断(脚、手杖、飘起的斗篷被削掉)
新增 expand_beyond_cell(默认开启):格子只用来判定「这是哪个方向」,
角色的实际范围由它自身的连通区域决定,按质心归属确保邻居不混入。
实测 8/8 方向的裁剪框边缘 alpha 从 1.00(内容顶到边界=被切断)
降到 0.00,S 方向高度 326→356、E 方向宽度 150→188 把缺的部分找了回来。
代价是需要两遍扫描(先求全序列并集框再提取),耗时 4.7s→14.9s。
【规则】每个参数都必须有中文 tooltip,作为以后的统一约定
全仓库 26 个节点 169 个参数,此前缺 115 个,现已 100% 覆盖。
tooltip 写「怎么调」而不只是「是什么」:给取值区间的实际影响、
推荐值与踩坑提示(如 OpenAI/ZenMux 的地址栏不能带 :// ,
素材拆分节点用于动画序列时顺序会漂移等)。
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
2026-07-29 19:07:01 +08:00 |
|
 rui40000andClaude Opus 4.8
|
28fd14aaad
|
feat: 新增八方向序列拆分节点(8方向行走动画管线)
把每帧排布着 8 个朝向的雪碧图序列,一次拆成 8 条独立动画序列,
完成方向编号与分组。整条管线只有这一环缺失,其余复用现成实现:
视频转帧用 VHS 的 force_rate,透明 webm 用 VHS 的
format=video/webm + pix_fmt=yuva420p,序列帧用 SaveImage
(4 通道输入 PIL 会自动存成 RGBA)。
三个关键设计:
- 用固定网格而非连通区域拆分:连通区域按包围盒排序,角色走动时
位置浮动,跨过排序行界方向就错乱,上百帧错一帧整条动画就废;
且各自 bbox 裁剪导致尺寸不一无法合成视频
- 白底转透明用边缘连通性判断:角色常穿白衣服,按亮度一刀切会把
白衬衫掏空,故只把与画面边缘相连的白色判为背景
- 裁剪框取全序列并集:逐帧各自裁剪会尺寸不一且角色帧间跳动
另加碎片清理(按连通块面积比):网格切分会把相邻格探进来的手杖尖
切入本格,既难看又撑大裁剪范围。实测 E 方向 172x370 -> 150x335,
跨帧重心极差 8.0 -> 0.5 px。
实测 97 帧 834x1112 素材:拆分约 4 秒,导出 webm 回读透明像素占比
0.635 与素材一致。注意验证 webm 透明需显式 -c:v libvpx-vp9 解码,
内置 vp9 解码器不处理 alpha 边带,否则会误判为透明丢失。
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
2026-07-29 18:48:50 +08:00 |
|
 rui40000andClaude Opus 4.8
|
b517c5714b
|
feat: 新增像素化节点(面向像素游戏资产,含 AI 伪像素图网格还原)
产出真实小分辨率、颜色数受控、边缘硬朗的 sprite,而非马赛克滤镜。
纯 numpy/PIL 自研实现,无额外依赖、无需模型权重。
三种模式:按目标宽度 / 按像素块大小 / 自动检测网格。第三种专治
AI 生成的伪像素图(看着像素风,实际网格歪斜、边缘抗锯齿、上千颜色)。
选型说明:Pixel Snapper(MIT)解决的是「伪像素图 → 完美像素图」,
而「普通图 → 像素画」是另一个问题,核心在降采样与调色板量化,
故两条路都做进同一节点。
网格检测处理了两类经典误判:
- 谐波(八度)错误:取得最高分后回查真约数(octave killer)
- 内容周期冒充像素周期:把最佳/最差相位的分差并入评分(anti-phase)
评分用单元内方差而非相邻差分——差分对模糊极敏感,实测会把 4 像素
网格判成 24~28;组内方差则天然压制过大的 s。
实测:干净放大图 k=2~16 共 27/27 全对零八度错误;非方形网格与相位
偏移全对;普通插画正确判为未检出;端到端把 32×32 放大 10 倍加模糊
噪点的图还原回 32×32,与真值 MAE 0.0049;整数倍放大为纯复制无插值。
调色板在 CIELAB 空间聚类(RGB 距离与人眼感受相差很远,会丢暗部层次),
降采样默认主导色(均值会造出新颜色并糊边),内置 PICO-8/Game Boy 等
可确认取值的复古调色板。
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
2026-07-29 18:23:43 +08:00 |
|
 rui40000andClaude Opus 4.8
|
d47fd27062
|
feat: 新增 Lucida 抠图节点(BiRefNet_HR 微调,擅长文字/Logo/插画/玻璃)
模型 https://huggingface.co/egeorcun/lucida (MIT),220M 参数、885MB。
作者基准:文字/Logo 0.0091(商业参考 0.0123)、插画 0.0092、
伪装 0.0270、总体 0.0257。
- 模型代码(2250 行)内嵌 lucida/ 子包,不用 trust_remote_code:
那会在运行时拉取并执行远程代码,ComfyUI 场景既不该联网也不该如此;
构造传 bb_pretrained=False,避免联网拉 Swin 预训练权重
- 预处理规格与 BiRefNet 系一致,复用 FeyNobg 那份已验证实现;
输出适配 list 格式(eval 下 forward 返回各尺度预测,取 [-1])
- 权重加载严格校验,除窗口尺寸推出的确定性 buffer 外失配即中止
- 不开放分辨率选项:模型 Config.size=1024 且 decoder 走 patch split
示例工作流把 Lucida 与 FeyNobg 并联便于同图对照。实测两者差异
不是精度高低而是「前景」定义不同:同一张动漫插画上 FeyNobg 只抠人物
(前景占比 0.098),Lucida 还把半透明的云判为前景(0.391),
与其训练透明材质的目标一致,两者互补。
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
2026-07-29 11:08:35 +08:00 |
|
 rui40000andClaude Opus 4.8
|
be93fd36a3
|
feat: FeyNobg 抠图开放半透明控制与长图形变补救参数
针对「主体整片半透明发灰」的实际反馈,模型侧无可调参数
(架构参数训练时已固化),故在后处理层开放:
- alpha_threshold / alpha_softness:以阈值为中心、柔和度为宽度
取一段区间线性拉伸到 [0,1],压掉灰雾同时保留边缘过渡。
默认 (0.5, 1.0) 区间恰为 [0,1],是恒等变换,行为与之前逐位一致;
实测 (0.35, 0.3) 半透明像素占比 1.49% -> 0.31%,主体均值几乎不变
- keep_aspect_ratio:模型固定吃 1024 方图,长图默认被拉伸压扁。
开启后改为等比缩放 + 边缘延展补边(不填黑,避免造出假轮廓),
推理后按有效区域裁掉补边
同步更新示例工作流的 widgets_values(widget 由 5 个增至 8 个,
不同步会导致参数错位)与 Note 说明。
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
2026-07-29 10:10:10 +08:00 |
|
 rui40000andClaude Opus 4.8
|
01a26baea9
|
feat: 为水印与 FeyNobg 抠图节点补充示例工作流
example_workflow/FeyNobg抠图.json:
- 加载图像 → 抠图 → alpha 预览 / cutout 预览 / 透明 RGBA 保存
- 含 InvertMask 环节:JoinImageWithAlpha 内部会做 1-alpha,
不先反相会得到前景透明的反效果
example_workflow/满屏文字水印.json:
- 同一张图并联两组参数(常规白色半透明 vs 高密度黄色宽字距)便于对比
- Note 说明八个参数的调法,含密度与字号联动的换算关系
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
2026-07-29 09:48:03 +08:00 |
|
 rui40000andClaude Opus 4.8
|
1bd90c71b6
|
feat: 新增满屏文字水印与 FeyNobg 抠图两个节点
满屏文字水印(watermark_node.py):
- 文案/字体/字号/旋转角度/密度/字间距/透明度/颜色 八项可调
- 交错网格平铺后整体旋转再从中心裁切,任意角度下四角均无空白
FeyNobg 抠图(feynobg_node.py + feynobg/):
- 内嵌 nobg 推理子集(Apache-2.0),全自动去背景,输出 alpha 与去背景图
- 重写预处理去掉对 transformers>=5.4 的依赖,4.x 环境可直接使用
- 修复权重键名与 transformers 4.x 的 SwinBackbone 命名不兼容:
不处理时 958 个参数仅 405 个对得上,backbone 形同随机初始化,
模型不报错但 alpha 几乎全黑;现按环境自动重映射并严格校验,
除确定性 buffer 外任何失配都直接中止
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
2026-07-29 09:26:05 +08:00 |
|
 rui40000andClaude Fable 5
|
9dd4fbd890
|
fix: ZenMux 节点自适应参数重试,兼容弃用 temperature 等模型
用户实测 anthropic/claude-sonnet-5 报 400:`temperature` is deprecated。
根因:节点无条件把 temperature/top_p/seed/max_tokens 塞进请求体,而 ZenMux
聚合的部分模型弃用/不支持这些采样参数,规则各家不一且随模型迭代变化。
- 新增 _diagnose_param:从 400 错误消息识别是哪个采样参数导致失败
- 请求改为重试循环:命中即剔除该参数(或把 max_tokens 改名为
max_completion_tokens,适配 gpt-5 reasoning 系)后重试
- 只动可选采样参数,绝不触碰 model/messages;非参数类 400 不重试、不死循环
- 正常请求零额外开销;剔除动作打印到控制台,最终仍失败时提示已剔除项
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-07-24 14:30:57 +08:00 |
|
 rui40000andClaude Fable 5
|
eff089c771
|
feat: 新增多行文本框(原样输出)节点,修复 Markdown 标题被上游节点吞掉的问题
用户实测发现标题行缺失,根因并非渲染:WAS Node Suite 的「Text Multiline」
会把 "#" 开头的行当注释删除(WAS_Node_Suite.py text_multiline),Markdown
的 #/## 标题在进入本套件节点前就已被丢弃。
- 新增 RuiTextBox 节点:多行文本一字不动透传,关闭 dynamicPrompts,
专门配合 Markdown转图片 使用
- README 在 Markdown 节点文档加警示,说明勿用 WAS Text Multiline 喂 Markdown
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-07-24 13:54:08 +08:00 |
|
 rui40000andClaude Fable 5
|
d419f9262c
|
feat: 新增 Markdown 转图片节点(阅读器级排版渲染)
- 纯 PIL 自研排版引擎(mdimg/ 子包:解析器+字体管理+渲染器),零新增依赖
- 视觉对标 GitHub/Typora:标题层级字号与 h1/h2 底线、引用左竖条、
代码块圆角底色+等宽字体+语言标签、表格圆角外框/表头底色/斑马纹/
列对齐/超宽自动压缩换行、任务清单勾选框、列表三级项目符号
- 彩色 Emoji(系统 seguiemj,正文与表格内均可);代码中的中文自动回退正文字体
- 尺寸:9 种常用预设快选 + custom 精确宽高;浅色/深色/米色三主题
- 各级字号(正文+H1~H6)、字间距、行间距、单行字数上限均支持 auto/手动,
auto 字号二分搜索恰好优雅填满画布,超高裁剪并控制台提示
- 字体下拉扫描 font/ 目录,粗体真字重自动配对(msyh->msyhbd),
空目录回退系统字体;字体二进制因版权与体积不入库(见 font/README.md)
- 修复解析器对单列表格的死循环,14 例边角输入鲁棒性测试通过
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-07-24 13:03:46 +08:00 |
|
 rui40000andClaude Fable 5
|
e09930ea45
|
feat: usage_stats 增加输出文字数量统计
统计模型返回文本的字符数(含标点),插入为第二行:
token消耗,输入:XXX,输出:XXX
输出文字数量:XXX
模型类型:...
价格换算,美元:XXX,人民币:XXX
请求失败或无正文时记 0。
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-07-24 12:06:32 +08:00 |
|
 rui40000andClaude Fable 5
|
0a87ba7813
|
feat: ZenMux 节点新增 usage_stats 输出,统计单次运行 token 消耗与费用
- 第三输出 usage_stats(STRING),三行格式:
token消耗,输入:XXX,输出:XXX
模型类型:openai/gpt-5.4-nano [入$0.2/M 出$1.25/M]
价格换算,美元:XXX,人民币:XXX
- 费用 = 响应 usage 的 token 数 × 快照单价(USD/百万token)
- 新增可选参数 usd_to_cny(默认 7.2)供人民币换算,可按当日牌价调整
- 请求失败记 0 消耗;usage 缺失或单价未知的项显示 "?"
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-07-24 10:23:07 +08:00 |
|
 rui40000andClaude Fable 5
|
cc5852dc18
|
refactor: ZenMux 节点移除 vendor 参数,模型下拉直接全量选择
- 模型列表本身按厂商排序聚类,配合 ComfyUI 下拉搜索(输入 "qwen/" 等
前缀过滤)已能满足筛选需求,vendor 下拉冗余
- 一并移除只为级联服务的前端脚本 web/zenmux_cascade.js 与 WEB_DIRECTORY
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-07-21 13:33:42 +08:00 |
|
 rui40000andClaude Fable 5
|
c8c546a873
|
fix: ZenMux 节点导入加保护,异常时不连累其余节点加载
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-07-21 12:22:29 +08:00 |
|
 rui40000andClaude Fable 5
|
ca61c48dbd
|
feat: 新增 ZenMux API 连接节点(厂商→模型级联选择,选项含价格标注)
- 一个节点调用 ZenMux 聚合平台全部文本类模型(20 厂商 / 138 模型)
- vendor→model 二级下拉:前端 web/zenmux_cascade.js 按厂商实时收窄模型列表
- 模型选项后缀标注输入/输出价格(USD/百万token),如 [入$0.2/M 出$1.25/M]
- 默认模型 openai/gpt-5.4-nano;具备 api_key/system/user prompt/seed/
temperature/top_p/max_tokens/多模态图像×6/detail/base_url/proxy 等完整参数
- 模型清单随包分发(models_snapshot.json),离线可列出;
build_snapshot.py 可随时重拉最新价格
- VALIDATE_INPUTS 宽松校验:价格快照更新后旧工作流的模型标签仍可解析执行
- base_url 默认值沿用仓库约定不含 "://",规避 ComfyUI 前端吞协议片段的老问题
- 导出 WEB_DIRECTORY 以装载前端级联脚本
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-07-21 11:37:00 +08:00 |
|
rui40000
|
a826b42576
|
feat: 增加 SDMatte 示例工作流
包含 BiRefNet 出粗遮罩 -> SDMatte 精细化 -> 合成透明背景 RGBA 的完整链路,
并附 Note 节点说明易踩的坑:
- is_transparent:抠玻璃/水/纱/烟雾必须打开。实测关闭时 84.8% 的像素落在
半灰区间(背景浮灰雾),打开后降到 27.7%
- image 直接接 LoadImage 原图,而非 BiRefNet 的 image 输出(后者为 RGBA,
虽经通道收敛后等价,但直连原图的数据流更清晰)
- InvertMask 不可省:JoinImageWithAlpha 内部会做 alpha = 1 - alpha
- BiRefNet 的 process_detail 保持关闭:SDMatte 只取其外接框,细化是浪费
|
2026-07-16 12:01:16 +08:00 |
|
rui40000
|
aebbe87c16
|
docs: 标注 caption 与 point_mask 的权重差异,并加运行时警告
实测发现 SDMatte 与 SDMatte*(plus) 两个权重能力不同,根源是官方 README
所载的训练集差异:前者含 RefMatte(指代表达式抠图,点/文本提示的来源),
后者用 COCO-Matte 替换了它。
实测(官方效果图羊驼,MAD 越低越好):
- point_mask:SDMatte 正常(0.0135);SDMatte_plus 输出全黑(max 仅 0.079)
- caption :SDMatte 上语义有效,'alpaca' 0.01072 优于留空 0.01120、'tree' 0.01111;
SDMatte_plus 上语义失效甚至反向,'alpaca' 0.01160 反差于 'tree' 0.01119,
即仅为 cross-attention 的噪声扰动
据此:
- 补全 caption / point_radius / prompt_type 的 tooltip,写明各自的适用权重与含义
- README 增列两个权重的能力对照表与 caption 实测数据
- point_mask 输出接近全黑时打印警告 —— 该情形不报错,只会悄悄给出空结果
|
2026-07-16 11:48:35 +08:00 |
|
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 |
|
rui40000
|
1e42521fec
|
refactor: Align UTF8ConverterNode logic with fix_encoding.py for robust cleaning
|
2026-04-08 16:14:18 +08:00 |
|
rui40000
|
ac8c6eb58d
|
feat: Add LoadImageWithName node to output filename without extension
|
2026-04-08 14:11:17 +08:00 |
|
rui40000
|
8382783022
|
feat: Add seed parameter to Sprite Splitter nodes to force execution on cloud platforms
|
2026-04-08 11:09:26 +08:00 |
|
 rui40000andClaude Opus 4.6
|
4254f1d887
|
fix: 彻底重写OpenAI节点,根除URL被ComfyUI前端吞掉的问题
核心问题:ComfyUI的前端会将STRING/下拉框中的 :// 及后续内容
当作注释吞掉,导致URL丢失主机名。之前两次修复都没解决,因为
下拉框值 "https://" 本身也含有 :// 。
彻底重写方案 —— 所有控件值中不出现 :// :
- protocol下拉框: ["https", "http"] 纯单词,不含任何特殊字符
- api_url默认值: "api.openai.com/v1/chat/completions" 不含协议
- proxy_url: 用户只需填 IP:端口,代码自动补协议
- _build_full_url() 在纯Python中拼接 "://" ,唯一产生此字符串的位置
- _sanitize_url() 清理各种可能的协议残留碎片
- _build_proxy_url() 智能处理代理地址格式
其他改进:
- 无图像时正常调用API进行纯文本对话
- 细分异常类型:连接失败/超时/HTTP错误分别提示
- 超时时间从60s提升到120s
- 清理 __pycache__ 确保新代码生效
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
2026-04-01 15:14:38 +08:00 |
|
 rui40000andClaude Opus 4.6
|
830e829108
|
fix: 彻底解决OpenAI节点URL被ComfyUI前端吞掉的问题
根因:ComfyUI的动态提示系统或第三方扩展(如cg-use-everywhere)
会将STRING控件中的'//'视为注释语法,导致'://'及其后的
主机名+路径被彻底丢弃,仅靠补回'//'无法恢复已丢失的内容。
解决方案:
- 将原来的单个api_url输入拆分为protocol下拉框 + 地址字符串
- protocol下拉框提供 https:// 和 http:// 选项(下拉框不受文本处理影响)
- api_url默认值不再包含'://',从根源避免被吞
- 新增_build_url()函数智能拼接URL,兼容多种用户输入格式
- 即使地址被完全清空也会回退到OpenAI默认地址
- 添加控制台日志输出实际请求地址,便于调试
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
2026-04-01 14:06:30 +08:00 |
|
 rui40000andClaude Opus 4.6
|
4b61f92262
|
fix: OpenAI节点URL被截断报错及无图像时不调用API的问题
1. 修复ComfyUI前端吞掉URL中'//'导致 Invalid URL 'https:' 报错
- 新增 _fix_url() 函数,在请求前自动补回被吞的'//'
2. 修复无图像输入时节点直接返回user_prompt而不调用API的问题
- 有图像时:多模态格式(image_url+text)发送请求
- 无图像+有prompt时:纯文本模式正常调用API对话
- 无图像+无prompt时:返回明确的中文错误提示
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
2026-04-01 13:53:53 +08:00 |
|
rui40000
|
a62c731252
|
Remove compiled cache file from repository
|
2026-04-01 13:40:38 +08:00 |
|
rui40000
|
4e30f26112
|
Fix OpenAI multi-image node to process mixed image sizes independently
|
2026-04-01 13:40:05 +08:00 |
|
rui40000
|
d5abaddd3a
|
Remove compiled cache files from repository
|
2026-04-01 13:25:23 +08:00 |
|
rui40000
|
4ec1ad1fea
|
Update OpenAI node docs for multi-image input and remove Xmiles-nanobanana node
|
2026-04-01 13:24:54 +08:00 |
|
rui40000
|
387b1b1616
|
Sync: enhance logs with uniqueId_sent; retain queued passthrough behavior
|
2026-03-31 09:56:57 +08:00 |
|
rui40000
|
0b36551043
|
Xmiles-nanobanana: add on_queued behavior (passthrough/empty, default passthrough) + generic Poller node for async completion
|
2026-03-31 09:41:31 +08:00 |
|
rui40000
|
7445eddd64
|
OSS upload: normalize https endpoint, optional proxy for oss2, CNAME fallback via oss_url_prefix
|
2026-03-31 09:27:02 +08:00 |
|
rui40000
|
36b7266dc9
|
Xmiles-nanobanana: add OSS upload path + inputs; switch inlineData to URL when use_oss=true; add oss2 dep
|
2026-03-31 09:18:39 +08:00 |
|
rui40000
|
d7b2dc5d4f
|
Add verbose runtime logging to Xmiles-nanobanana nodes
|
2026-03-27 14:00:53 +08:00 |
|
rui40000
|
9cd61aa63f
|
update
|
2026-03-27 11:58:27 +08:00 |
|
rui40000
|
5585ecbff2
|
Remove local test artifacts (test_binary_null.txt) and clean cached files
|
2026-03-27 11:25:07 +08:00 |
|
rui40000
|
3188ddb9aa
|
update
|
2026-03-27 10:54:04 +08:00 |
|