comfyui_region_uv_metadata
Nodes for identifying target regions in images, extracting UV vertices, and writing metadata with preview generation. (Description by CC)
ComfyUI Region UV Metadata Nodes
把输入图片里的指定目标区域识别出来,提取 UV 顶点,写进输出图片的 metadata,并额外输出一张带标注的预览图。
同时提供一个读取节点,用来检查 PNG 或 WEBP 里有没有这个 metadata;如果有,就输出一张带区域标识的预览图。
现在也提供一个专门的保存节点,可以直接保存成 PNG 或 WEBP,并把 metadata 一起写进去。
功能
- 输入一张
IMAGE - 输入多个待识别目标
- 支持英文逗号、中文逗号、顿号、分号、换行分隔
- 输出标注识别区域的预览图
IMAGE - 输出 metadata 的 JSON 字符串
- 输出一个只能连接到专用保存节点的
metadata_image - 在保存 PNG 或 WEBP 时把目标区域的 UV 顶点写进对应图片格式的扩展字段
- 提供一个 PNG / WEBP metadata 读取预览节点
- 提供一个 PNG / WEBP 提示词与工作流读取节点
- 提供一个 PNG / WEBP 专用保存节点
- 首次自动下载模型时,节点会显示执行进度
默认写入结构如下:
{
"region_uv_vertices": {
"person": [
{
"score": 0.93,
"polygon_uv": [[0.12, 0.18], [0.45, 0.17], [0.48, 0.79], [0.11, 0.81]]
},
{
"score": 0.81,
"polygon_uv": [[0.52, 0.20], [0.70, 0.19], [0.73, 0.76], [0.50, 0.77]]
}
],
"car": []
}
}
安装
把整个目录复制到:
ComfyUI/custom_nodes/comfyui_region_uv_metadata
然后在 ComfyUI 的 Python 环境里安装依赖:
pip install -r ComfyUI/custom_nodes/comfyui_region_uv_metadata/requirements.txt
重启 ComfyUI。
节点
1. Detect Region UV + Build Metadata Image
分类:
Image/Metadata
输入:
image: ComfyUI 图片输入targets_json: 要识别的内容 作用:可以写单个目标、逗号分隔、多行,或者 JSON 数组metadata_field: 写入图片 metadata 的字段名,默认region_uv_vertices作用:决定最终在 PNG / WEBP 里保存时使用哪个字段名box_threshold: Grounding DINO 检测阈值 作用:越高越严格,检测框更少;越低越容易多检text_threshold: Grounding DINO 文本匹配阈值 作用:越高越要求文字和区域更匹配;越低更宽松max_detections_per_target: 同一个识别内容最多保留几个结果 作用:限制单个目标标签最多输出多少个区域polygon_simplify: 多边形简化强度 作用:越大顶点越少、轮廓越粗;越小越贴边但点更多min_area_ratio: 过滤小噪点轮廓 作用:按整张图面积比例过滤太小的 mask 区域line_thickness: 预览标线粗细 作用:只影响preview_image上的描边显示font_scale: 预览文字大小 作用:只影响preview_image上的标签文字显示
输出:
metadata_image: 专用图片输出,只能连接Save Metadata Image As PNG/WEBPpreview_image: 带区域标注的预览图metadata_json: 当前写入内容的 JSON 字符串
建议:
- 如果你只想识别一个大主体,可以先把
box_threshold提高一点 - 如果你发现轮廓点太多,可以把
polygon_simplify调大一点 - 如果你发现把小装饰也识别进来了,可以把
min_area_ratio调大一点
targets_json 现在支持这些写法:
person, dog, car
人,狗,车
person
dog
car
["person", "dog", "car"]
2. Read Region UV Metadata From Image
这个节点会直接读取 PNG 或 WEBP 文件里的 metadata,所以它的输入是上传/选择图片文件,不是普通的 IMAGE 张量。
输入:
image: 选择一张 PNG 或 WEBP 图片metadata_field: 要读取的字段名,默认region_uv_vertices作用:决定去图片里读取哪个 metadata 字段line_thickness: 预览标线粗细 作用:只影响读取后生成的预览图描边粗细font_scale: 预览文字大小 作用:只影响读取后生成的预览图文字大小
输出:
image: 读取到的原图preview_image: 如果找到 metadata,就在图上标出区域metadata_json: 读取到的 JSON 字符串has_metadata: 是否找到对应 metadata
3. Save Metadata Image As PNG/WEBP
这个节点是专门的输出保存节点,用来把上游图片直接保存成 png 或 webp。
如果你想输出 .webp,不要接内置 Save Image,而是接这个节点。
输入:
metadata_image: 从Detect Region UV + Build Metadata Image输出的专用图片filename_prefix: 输出文件名前缀 作用:决定保存文件名开头image_format: 选择png或webp,默认webp作用:决定最终保存格式webp_quality: WEBP 有损质量 作用:数值越高画质越好、文件通常越大webp_lossless: 是否使用 WEBP 无损保存 作用:开启后优先保真,文件通常会更大
说明:
- 保存
png时,会把 metadata 写进 PNG 文本字段 - 保存
webp时,会把 metadata 写进 WEBP 的 EXIF 字段 - 读取节点会同时兼容这两种写法
建议:
- 日常默认直接用
webp + 95 - 如果你更在意体积,可以关心
webp_quality - 如果你更在意像素完全不损失,可以打开
webp_lossless
4. Read Comfy Prompt/Workflow From Image
这个节点用来读取图片里内嵌的 ComfyUI prompt 和 workflow。
适合场景:
- 你把
.webp或.png拖回 ComfyUI 时,前端没有自动恢复工作流 - 你想手动检查图片里到底有没有写入 prompt / workflow
输入:
image: 选择一张 PNG 或 WEBP 图片 作用:从图片里读取内嵌的 ComfyUIprompt和workflow
输出:
prompt_json: 读取到的 prompt JSONworkflow_json: 读取到的 workflow JSONhas_prompt: 是否找到 prompthas_workflow: 是否找到 workflow
模型策略
当前实现按下面顺序查找模型:
- 环境变量
COMFY_REGION_GROUNDING_MODEL/COMFY_REGION_SAM2_MODEL - 当前节点目录下的本地模型目录:
models/grounding-dino-tinymodels/sam2.1-hiera-small
- Hugging Face 自动下载到上面的本地目录
也就是说,如果你不手动放模型,首次运行时会自动从 Hugging Face 下载,并尽量在节点执行时显示进度。
本地模型目录与下载链接
如果你想手动下载模型,请把目录放成这样:
ComfyUI/custom_nodes/comfyui_region_uv_metadata/
models/
grounding-dino-tiny/
config.json
model.safetensors
preprocessor_config.json
tokenizer.json
tokenizer_config.json
special_tokens_map.json
vocab.txt
sam2.1-hiera-small/
config.json
model.safetensors
preprocessor_config.json
下载页面:
- Grounding DINO Tiny: IDEA-Research/grounding-dino-tiny
- SAM 2.1 Hiera Small: facebook/sam2.1-hiera-small
最简单的做法是打开上面的 Hugging Face 页面,下载整个仓库文件,然后分别放进:
ComfyUI/custom_nodes/comfyui_region_uv_metadata/models/grounding-dino-tinyComfyUI/custom_nodes/comfyui_region_uv_metadata/models/sam2.1-hiera-small
如果目录里文件齐全,节点就会优先使用本地模型,不再走自动下载。
输出与保存
节点真正写 metadata 的时机,还是你后面接保存节点的时候。
推荐:
- 默认直接接这个插件的
Save Metadata Image As PNG/WEBP - 保存节点默认就是
webp + 95 - 如果你想要
.png,再把保存节点切到png
注意:
- 保存成
.png时,会写进 PNG 对应的 metadata 字段 - 保存成
.webp时,会写进 WEBP 对应的 metadata 字段 - 如果 ComfyUI 启动时禁用了 metadata,这个字段不会落盘
- 结构保持一致,不区分图片格式
- 单张图时写入结构是:
{
"你的字段名": {
"目标1": [
{
"score": 0.93,
"polygon_uv": [[u, v], [u, v]]
}
],
"目标2": []
}
}
- 批量图片输入时,同一个字段会写成按
batch_index分组的列表
识别逻辑
- 用 Grounding DINO 做文本目标检测
- 每个目标默认保留多个高分检测框
- 再用 SAM2 根据框生成分割 mask
- 最后把 mask 转为 UV 多边形顶点
可选本地模型目录
如果你希望随插件一起分发模型,可以手动创建:
comfyui_region_uv_metadata/
models/
grounding-dino-tiny/
sam2.1-hiera-small/
这两个目录里放 Hugging Face 对应模型仓库下载下来的文件即可。