ComfyUI - 视觉基础任务 检测(Detection) 和 分割(Segmentation) 的 Impact-Pack 流程 教程

news2024/11/30 20:33:20

欢迎关注我的CSDN:https://spike.blog.csdn.net/
本文地址:https://spike.blog.csdn.net/article/details/141140498

免责声明:本文来源于个人知识与公开资料,仅用于学术交流,欢迎讨论,不支持转载。


SXM

在 ComfyUI 的 Impact-Pack 插件中,检测(Detection) 是 YOLO v8 系列,分割(Segmentation) 是 SAM 的第1个版本,目前不支持最新版本,实现基础的检测与分割任务,实现人物与物体的分割。

ComfyUI:https://github.com/comfyanonymous/ComfyUI


1. 模型准备

Load Image 节点,上传图像位于:

[your folder]/ComfyUI/input

SAM 模型:位于 ComfyUI/models/sams,HuggingFace 的下载路径:

wget https://huggingface.co/segments-arnaud/sam_vit_h/resolve/main/sam_vit_h_4b8939.pth

模型大小:

ComfyUI/models/sams
├── [358M]  sam_vit_b_01ec64.pth
└── [2.4G]  sam_vit_h_4b8939.pth

YOLO 模型位于 ComfyUI/models/ultralytics,即:

ComfyUI/models/ultralytics
├── [4.0K]  bbox
│   ├── [ 50M]  face_yolov8m.pt
│   └── [ 21M]  hand_yolov8s.pt
└── [4.0K]  segm
    ├── [ 23M]  deepfashion2_yolov8s-seg.pt
    ├── [ 52M]  face_yolov8m-seg_60.pt
    ├── [6.5M]  hair_yolov8n-seg_60.pt
    └── [ 52M]  person_yolov8m-seg.pt

下载路径:https://huggingface.co/Bingsu/adetailer/tree/main

2. 任务流程

YOLO 的检测和分割流程:
Det&Seg
YOLO + SAM 的检测和分割流程:

SAM

两类流程的效果对比,左侧是 YOLO 的效果,右侧是使用 SAM 的效果,轮廓更加清晰:

对比

流程 Json:

{
  "last_node_id": 25,
  "last_link_id": 30,
  "nodes": [
    {
      "id": 1,
      "type": "LoadImage",
      "pos": {
        "0": 186,
        "1": 125
      },
      "size": {
        "0": 315,
        "1": 314
      },
      "flags": {},
      "order": 0,
      "mode": 0,
      "inputs": [],
      "outputs": [
        {
          "name": "IMAGE",
          "type": "IMAGE",
          "links": [
            5,
            6,
            16,
            28
          ],
          "slot_index": 0,
          "label": "IMAGE"
        },
        {
          "name": "MASK",
          "type": "MASK",
          "links": null,
          "label": "MASK"
        }
      ],
      "properties": {
        "Node name for S&R": "LoadImage"
      },
      "widgets_values": [
        "咝小喵生日会限定壁纸 (14).jpg",
        "image"
      ]
    },
    {
      "id": 5,
      "type": "BboxDetectorSEGS",
      "pos": {
        "0": 1005,
        "1": 125
      },
      "size": {
        "0": 400,
        "1": 217
      },
      "flags": {},
      "order": 3,
      "mode": 0,
      "inputs": [
        {
          "name": "bbox_detector",
          "type": "BBOX_DETECTOR",
          "link": 3,
          "label": "bbox_detector"
        },
        {
          "name": "image",
          "type": "IMAGE",
          "link": 5,
          "label": "image"
        },
        {
          "name": "detailer_hook",
          "type": "DETAILER_HOOK",
          "link": null,
          "shape": 7,
          "label": "detailer_hook"
        }
      ],
      "outputs": [
        {
          "name": "SEGS",
          "type": "SEGS",
          "links": [
            7,
            12
          ],
          "slot_index": 0,
          "label": "SEGS"
        }
      ],
      "properties": {
        "Node name for S&R": "BboxDetectorSEGS"
      },
      "widgets_values": [
        0.5,
        10,
        3,
        10,
        "all",
        true
      ]
    },
    {
      "id": 7,
      "type": "SEGSPreview",
      "pos": {
        "0": 1493,
        "1": 125
      },
      "size": {
        "0": 315,
        "1": 314
      },
      "flags": {},
      "order": 6,
      "mode": 0,
      "inputs": [
        {
          "name": "segs",
          "type": "SEGS",
          "link": 7,
          "label": "segs"
        },
        {
          "name": "fallback_image_opt",
          "type": "IMAGE",
          "link": null,
          "shape": 7,
          "label": "fallback_image_opt"
        }
      ],
      "outputs": [
        {
          "name": "IMAGE",
          "type": "IMAGE",
          "links": [],
          "slot_index": 0,
          "shape": 6,
          "label": "IMAGE"
        }
      ],
      "properties": {
        "Node name for S&R": "SEGSPreview"
      },
      "widgets_values": [
        true,
        0.2
      ]
    },
    {
      "id": 6,
      "type": "SegmDetectorSEGS",
      "pos": {
        "0": 1005,
        "1": 494
      },
      "size": {
        "0": 400,
        "1": 212
      },
      "flags": {},
      "order": 4,
      "mode": 0,
      "inputs": [
        {
          "name": "segm_detector",
          "type": "SEGM_DETECTOR",
          "link": 4,
          "label": "segm_detector"
        },
        {
          "name": "image",
          "type": "IMAGE",
          "link": 6,
          "label": "image"
        },
        {
          "name": "detailer_hook",
          "type": "DETAILER_HOOK",
          "link": null,
          "shape": 7,
          "label": "detailer_hook"
        }
      ],
      "outputs": [
        {
          "name": "SEGS",
          "type": "SEGS",
          "links": [
            18
          ],
          "slot_index": 0,
          "label": "SEGS"
        }
      ],
      "properties": {
        "Node name for S&R": "SegmDetectorSEGS"
      },
      "widgets_values": [
        0.5,
        10,
        3,
        10,
        "all",
        true
      ]
    },
    {
      "id": 17,
      "type": "SEGSPreview",
      "pos": {
        "0": 1493,
        "1": 494
      },
      "size": {
        "0": 315,
        "1": 314
      },
      "flags": {},
      "order": 8,
      "mode": 0,
      "inputs": [
        {
          "name": "segs",
          "type": "SEGS",
          "link": 18,
          "label": "segs"
        },
        {
          "name": "fallback_image_opt",
          "type": "IMAGE",
          "link": null,
          "shape": 7,
          "label": "fallback_image_opt"
        }
      ],
      "outputs": [
        {
          "name": "IMAGE",
          "type": "IMAGE",
          "links": [],
          "slot_index": 0,
          "shape": 6,
          "label": "IMAGE"
        }
      ],
      "properties": {
        "Node name for S&R": "SEGSPreview"
      },
      "widgets_values": [
        true,
        0.2
      ]
    },
    {
      "id": 3,
      "type": "SAMDetectorSegmented",
      "pos": {
        "0": 564,
        "1": 782
      },
      "size": {
        "0": 315,
        "1": 218
      },
      "flags": {},
      "order": 7,
      "mode": 0,
      "inputs": [
        {
          "name": "sam_model",
          "type": "SAM_MODEL",
          "link": 1,
          "label": "sam_model"
        },
        {
          "name": "segs",
          "type": "SEGS",
          "link": 12,
          "label": "segs"
        },
        {
          "name": "image",
          "type": "IMAGE",
          "link": 16,
          "label": "image"
        }
      ],
      "outputs": [
        {
          "name": "combined_mask",
          "type": "MASK",
          "links": [],
          "slot_index": 0,
          "label": "combined_mask"
        },
        {
          "name": "batch_masks",
          "type": "MASK",
          "links": [
            24
          ],
          "slot_index": 1,
          "label": "batch_masks"
        }
      ],
      "properties": {
        "Node name for S&R": "SAMDetectorSegmented"
      },
      "widgets_values": [
        "center-1",
        0,
        0.93,
        0,
        0.7,
        "False"
      ]
    },
    {
      "id": 23,
      "type": "MaskPreview+",
      "pos": {
        "0": 1263,
        "1": 782
      },
      "size": {
        "0": 210,
        "1": 246
      },
      "flags": {},
      "order": 11,
      "mode": 0,
      "inputs": [
        {
          "name": "mask",
          "type": "MASK",
          "link": 25,
          "label": "mask"
        }
      ],
      "outputs": [],
      "properties": {
        "Node name for S&R": "MaskPreview+"
      },
      "widgets_values": []
    },
    {
      "id": 22,
      "type": "MasksToMaskList",
      "pos": {
        "0": 916,
        "1": 782
      },
      "size": {
        "0": 289.79998779296875,
        "1": 26
      },
      "flags": {},
      "order": 10,
      "mode": 0,
      "inputs": [
        {
          "name": "masks",
          "type": "MASK",
          "link": 24,
          "label": "masks"
        }
      ],
      "outputs": [
        {
          "name": "MASK",
          "type": "MASK",
          "links": [
            25
          ],
          "slot_index": 0,
          "shape": 6,
          "label": "MASK"
        }
      ],
      "properties": {
        "Node name for S&R": "MasksToMaskList"
      },
      "widgets_values": []
    },
    {
      "id": 2,
      "type": "SAMLoader",
      "pos": {
        "0": 192,
        "1": 782
      },
      "size": {
        "0": 315,
        "1": 82
      },
      "flags": {},
      "order": 1,
      "mode": 0,
      "inputs": [],
      "outputs": [
        {
          "name": "SAM_MODEL",
          "type": "SAM_MODEL",
          "links": [
            1,
            29
          ],
          "slot_index": 0,
          "label": "SAM_MODEL"
        }
      ],
      "properties": {
        "Node name for S&R": "SAMLoader"
      },
      "widgets_values": [
        "sam_vit_h_4b8939.pth",
        "AUTO"
      ]
    },
    {
      "id": 24,
      "type": "ImpactSimpleDetectorSEGS",
      "pos": {
        "0": 938,
        "1": 1075
      },
      "size": {
        "0": 315,
        "1": 310
      },
      "flags": {},
      "order": 5,
      "mode": 0,
      "inputs": [
        {
          "name": "bbox_detector",
          "type": "BBOX_DETECTOR",
          "link": 26,
          "label": "bbox_detector"
        },
        {
          "name": "image",
          "type": "IMAGE",
          "link": 28,
          "label": "image"
        },
        {
          "name": "sam_model_opt",
          "type": "SAM_MODEL",
          "link": 29,
          "shape": 7,
          "label": "sam_model_opt"
        },
        {
          "name": "segm_detector_opt",
          "type": "SEGM_DETECTOR",
          "link": 27,
          "shape": 7,
          "label": "segm_detector_opt"
        }
      ],
      "outputs": [
        {
          "name": "SEGS",
          "type": "SEGS",
          "links": [
            30
          ],
          "slot_index": 0,
          "label": "SEGS"
        }
      ],
      "properties": {
        "Node name for S&R": "ImpactSimpleDetectorSEGS"
      },
      "widgets_values": [
        0.5,
        0,
        3,
        10,
        0.5,
        0,
        0,
        0.7,
        0
      ]
    },
    {
      "id": 25,
      "type": "SEGSPreview",
      "pos": {
        "0": 1369,
        "1": 1075
      },
      "size": {
        "0": 315,
        "1": 314
      },
      "flags": {},
      "order": 9,
      "mode": 0,
      "inputs": [
        {
          "name": "segs",
          "type": "SEGS",
          "link": 30,
          "label": "segs"
        },
        {
          "name": "fallback_image_opt",
          "type": "IMAGE",
          "link": null,
          "shape": 7,
          "label": "fallback_image_opt"
        }
      ],
      "outputs": [
        {
          "name": "IMAGE",
          "type": "IMAGE",
          "links": null,
          "shape": 6,
          "label": "IMAGE"
        }
      ],
      "properties": {
        "Node name for S&R": "SEGSPreview"
      },
      "widgets_values": [
        true,
        0.2
      ]
    },
    {
      "id": 4,
      "type": "UltralyticsDetectorProvider",
      "pos": {
        "0": 557,
        "1": 125
      },
      "size": {
        "0": 340.20001220703125,
        "1": 78
      },
      "flags": {},
      "order": 2,
      "mode": 0,
      "inputs": [],
      "outputs": [
        {
          "name": "BBOX_DETECTOR",
          "type": "BBOX_DETECTOR",
          "links": [
            3,
            26
          ],
          "slot_index": 0,
          "label": "BBOX_DETECTOR"
        },
        {
          "name": "SEGM_DETECTOR",
          "type": "SEGM_DETECTOR",
          "links": [
            4,
            27
          ],
          "slot_index": 1,
          "label": "SEGM_DETECTOR"
        }
      ],
      "properties": {
        "Node name for S&R": "UltralyticsDetectorProvider"
      },
      "widgets_values": [
        "segm/person_yolov8m-seg.pt"
      ]
    }
  ],
  "links": [
    [
      1,
      2,
      0,
      3,
      0,
      "SAM_MODEL"
    ],
    [
      3,
      4,
      0,
      5,
      0,
      "BBOX_DETECTOR"
    ],
    [
      4,
      4,
      1,
      6,
      0,
      "SEGM_DETECTOR"
    ],
    [
      5,
      1,
      0,
      5,
      1,
      "IMAGE"
    ],
    [
      6,
      1,
      0,
      6,
      1,
      "IMAGE"
    ],
    [
      7,
      5,
      0,
      7,
      0,
      "SEGS"
    ],
    [
      12,
      5,
      0,
      3,
      1,
      "SEGS"
    ],
    [
      16,
      1,
      0,
      3,
      2,
      "IMAGE"
    ],
    [
      18,
      6,
      0,
      17,
      0,
      "SEGS"
    ],
    [
      24,
      3,
      1,
      22,
      0,
      "MASK"
    ],
    [
      25,
      22,
      0,
      23,
      0,
      "MASK"
    ],
    [
      26,
      4,
      0,
      24,
      0,
      "BBOX_DETECTOR"
    ],
    [
      27,
      4,
      1,
      24,
      3,
      "SEGM_DETECTOR"
    ],
    [
      28,
      1,
      0,
      24,
      1,
      "IMAGE"
    ],
    [
      29,
      2,
      0,
      24,
      2,
      "SAM_MODEL"
    ],
    [
      30,
      24,
      0,
      25,
      0,
      "SEGS"
    ]
  ],
  "groups": [],
  "config": {},
  "extra": {
    "ds": {
      "scale": 0.7513148009015777,
      "offset": [
        -212.86626630100392,
        -176.90870266354517
      ]
    }
  },
  "version": 0.4
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2225789.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【音视频 | ADPCM】音频编码ADPCM详细介绍及例子

😁博客主页😁:🚀https://blog.csdn.net/wkd_007🚀 🤑博客内容🤑:🍭嵌入式开发、Linux、C语言、C、数据结构、音视频🍭 🤣本文内容🤣&a…

租房市场新动力:基于Spring Boot的管理系统

2相关技术 2.1 MYSQL数据库 MySQL是一个真正的多用户、多线程SQL数据库服务器。 是基于SQL的客户/服务器模式的关系数据库管理系统,它的有点有有功能强大、使用简单、管理方便、安全可靠性高、运行速度快、多线程、跨平台性、完全网络化、稳定性等,非常…

深入理解数据链路层:以太网帧格式、MAC地址、交换机、MTU及ARP协议详解与ARP欺骗探究

🍑个人主页:Jupiter. 🚀 所属专栏:Linux从入门到进阶 欢迎大家点赞收藏评论😊 目录 数据链路层 认识以太网以太网帧格式 认识 MAC 地址交换机与碰撞域的划分认识 MTUMTU 对 IP 协议的影响MTU 对 UDP 协议的影响 MTU 对…

SolidWorks 导出 URDF 中的惯性矩阵错误问题

系列文章目录 前言 一、 dsubhasish09于2021年5月23日发表评论 在装配体中定义由多个零件组成的 link 时,单个零件质心处各自的惯性值(在使用相似性变换使其与关节坐标系平行后)会直接相加,从而得到净惯性矩阵,而不是…

使用linuxdeployqt打包Qt程序问题及解决方法

dpkg: 处理归档 libmysqlclient18_5.6.25-0ubuntu1_amd64.deb (--install)时出错: 预依赖问题 - 将不安装libmysqlclient18:amd64 在处理时有错误发生: libmysqlclient18_5.6.25-0ubuntu1_amd64.deb下载libmysqlclient18/5.6.25 libmysqlclient18/5.6.25-0ubuntu1 安装 s…

如何把图片转换成pdf?这几种转换方法看了就能学会!

如何把图片转换成pdf?在当今这个高度数字化的世界里,图片文件和PDF文件无疑是我们日常生活中最常接触到的两种文件格式,它们各自拥有独特的特性和功能,为我们的工作与生活带来了诸多便利,图片文件,以其卓越…

Android Activity SingleTop启动模式使用场景

通知栏 当用户点击通知栏中的通知时,可以使用单顶启动模式来打开对应的活动,并确保只有一个实例存在。 简单集成极光推送 创建应用 获取appkey参数 切换到极光工作台 极光sdk集成 Project 根目录的主 gradle 配置 Module 的 gradle 配置 Jpush依赖配置 配置推送必须…

乐维网管平台(一):如何精准掌控 IP 管理

业网络已成为支撑业务运转的关键基础设施,而在企业网络管理中,IP 管理至关重要,它就像是网络秩序的守护者,确保网络的高效运行、安全可靠。 一、为什么企业要进行 IP 管理 1. 优化资源分配 IP 地址作为网络中的重要资源&#xf…

c++数据结构算法复习基础--7--线性表-队列-常用操作接口-复杂度分析

1、队列 特点:先进先出,后进后出 环形队列(依赖数组实现,单必须实现环形) 链式队列(依赖链表实现) 2、环形队列 理论 常规数组思想随着队列的不断使用,会出现越界 所以要将其…

拍拍贷鸿蒙版H5容器之路

背景介绍 业务背景 2024年1月18日华为宣布:HarmonyOS NEXT 将不再支持 Android系统,基于以上背景及国内信贷业务现状,公司决定启动借款App鸿蒙化项目。 下图是2024年6月华为HDC大会上,华为宣布 HarmonyOS NEXT 将面向开发者和先…

Cisco Packet Tracer 8.0 路由器的基本配置和Telnet设置

文章目录 构建拓扑图配置IP地址配置路由器命令说明测试效果 构建拓扑图 1,添加2811路由器。 2,添加pc0。 3,使用交叉线连接路由器和pc(注意线路端口)。 4,使用配置线连接路由器和pc(注意线路…

IT监控对接华三CAS云管平台监控方案

概述 CAS云管平台是新华三集团自主研发的虚拟化和云计算管理平台,它主要面向数据中心,提供虚拟化和云计算管理,在教育行业、网络安全领域、高性能计算业务、企业IT部门等领域被广泛应用。在信创国产化背景下,以CAS、Fusion等为代…

rtp协议:rtcp包格式和传输间隔

RTP Control Protocol -- RTCP-rtp控制协议 实时传输控制协议(RTCP)基于对会话中的所有参与者定期传输控制包,使用与数据包相同的分发机制。底层协议必须提供数据包和控制包的多路复用,例如使用UDP时使用不同的端口号。RTCP执行四…

LLMs 入门实战系列大全:LLMs应用、领域大模型介绍、大模型常见面经汇总

1. 常见大模型介绍 1.1 ChatGLM-6B 系列 ChatGLM2-6B [【ChatGLM2-6B 入门】清华大学开源中文版 ChatGLM-6B 模型学习与实战] 更强大的性能:基于 ChatGLM 初代模型的开发经验,我们全面升级了 ChatGLM2-6B 的基座模型。ChatGLM2-6B 使用了 GLM 的混合目…

sa-token 所有的异常都是未登录异常的问题

在使用satoken的时候,有这么一个问题,就是不管我是什么错误,都会弹出未登录异常,起初的时候我以为satoken的拦截器会拦截所有的异常,但是今后测试才发现忽略了一点,也是最重要最容易忽视的一点。 如果我现在…

动态规划 —— 路径问题-不同路径

1. 不同路径 题目链接: 62. 不同路径 - 力扣(LeetCode)https://leetcode.cn/problems/unique-paths/description/ 2. 算法原理 1. 状态表示:以莫一个位置为结尾 dp[i]表示:以[i,j]位置为结尾时&#xff0…

新手入门c++(8)

到时候了,是时候给你们讲一下其他的定义形式与格式化输入输出了。 1.长整型变量 长整型变量分为两种: ①long类型 在计算机编程中,long 类型是一个整型数据类型,用于存储较大的整数。它的大小和范围取决于操作系统和编译器的实…

存储引用服务(OSS)Minio 环境搭建

下载Docker desktop 最好进行相关的设置,比如说进行登陆docker账号等等 推荐使用 docker-engine源【目前还能使用下载】 https://ccr.ccs.tencentyun.com 使用docker拉取对应的minio镜像 netstat -aon|findstr "8081" 注意:dockerhub有时…

QT访问数据库:应用提示Driver not loaded

在QT中运行完全正确错误截图 解决办法 我用的是MySQL。我把libmysql.dll复制到应用程序的目录下,即可正常访问数据库。

Hugging Face 使用指南——并行智算云(10s上手版)

1. 在bash中使用 1.1 直接复制命令 echo export HF_ENDPOINT"https://hf-mirror.com" >> ~/.bashrc # 在bashrc文件中设置镜像地址 source ~/.bashrc # 使修改立即生效 echo $HF_ENDPOINT # 查看是否成功红框部分出现就是正确了 1.2 命令详解 命令行echo…