维纳 Vina: MacBook Pro M1 跑通二狗子的黑神话工作流-ComfyUI 新手从0到1系列

维纳 Vina: MacBook Pro M1 跑通二狗子的黑神话工作流-ComfyUI 新手从0到1系列

维纳 Vina: MacBook Pro M1 跑通二狗子的黑神话工作流 ComfyUI 新手从0到1系列 维纳 Vina: MacBook Pro M1 跑通二狗子的黑神话工作流 ComfyUI 新手从0到1系列 Modified October 11, 2024 GroundingDINO SwinT OGC (694MB) GroundingDINO SwinB (938MB) sams模型地址 sam vit h (2.56GB) sam vit l (1.25GB) sam vit b (375MB) sam hq vit h (2.57GB) sam hq vit l (1.25GB) sam hq vit b (379MB) mobile sam(39MB) 安装所有依赖 所有节点文件、模型都下载完以后,就该安装依赖了。 导航到 ComfyUI 目录,以我下载 ComfyUI 的路径为例,在终端中输入 cd Documents/ComfyUI ,然后输入 find . name "requirements.txt" exec pip3 install r {} \;,这个命令会遍历所有子目录的依赖文件进行安装。 等到所有依赖都安装完成,打开 ComfyUI 的浏览器页面,把工作流拖入界面即可。 祝大家玩得开心~ 工作流的报错 InstantID 依赖的 onnxruntime gpu 无法安装 MacBook Pro M1 没有 GPU,所以不能用 onnxruntime gpu 版本,silicon 是适配 M1 的加速版本。 在文件路径 ComfyUI/custom nodes/ComfyUI InstantID 的 requirements.txt 文件中,把 onnxruntime gpu 替换为 onnxruntime silicon 就可以了。双击用文本编辑器打开,替换保存即可。 Import failed:ComfyUI ergouzi nodes 共学群里有大神提出的解决办法,在终端中输入 pip3 install colorama,就可以了。 colorama 是一个用于在命令行界面中生成彩色文本和格式化输出的 Python 库。 Import failed:LayerMask: SegmentAnythingUltra V2 我在 GitHub 上给作者提了 issue,说明我的硬件和软件环境,作者回复让我下载最新的包,果然我重新安装就好了。 windows 系统和 macOS 系统的文件路径分隔符不同 二狗子的工作流 json 文件中,用的文件路径分隔符是反斜杠 \ ,macOS 系统无法识别,需要全部替换为正斜杠 / ,不然无法调用模型。 运行过程中,LayerMask 报错 Error occurred when executing LayerMask: SegmentAnythingUltra V2: PytorchStreamReader failed reading zip archive: failed finding central directory 解决方案就是把 LayerMask 的模型都下载好,具体见本文档的解决方案。 黑神话工作流的原理拆解 此部分尝试拆解一下黑神话悟空换脸工作流的原理,以提高对节点的理解能力,便于以后按需使用各个节点。 抽象流程图 在这个流程图中,抽象出了重要的节点和输入输出,忽略了常用节点,便于理解。 核心节点 Apply InstantID Advanced 这个换脸工作流的核心组件是 Apply InstantID Advanced 节点,这个节点的作用就是将源人脸替换到目标图像中,展开看一下这个节点的模型和参数,就能理解这个节点的工作原理了。 1. instantID: 载入 instantID 模型,instantID 模型擅长提取图片的高层次特征,包括面部的纹理信息、几何结构、风格特征等,在图中例子是 IP Adpater,用于识别和保留目标图像 image kps 的风格并迁移到生成图像中。 2. insightface: 接入 instantID Face Analysis 节点,用于提取人脸五官的特征向量,作用是使生成图像时,人脸的眼睛、鼻子、嘴巴等样子仍然符合源人脸 image 的特征。 3. controlnet: 载入控制模型,controlnet 模型的作用是识别目标图像 image kps 的低层次特征,包括骨架、姿势、边缘、结构。controlnet 模型和 instantID 模型起到不同的控制作用,结合使用可以达到将源人脸的五官替换目标图像中五官的效果。 4. image、image kps: image 源人脸,在本文工作流中,即用户上传的人脸,是提供五官特征向量的图片。 image kps(image key points)目标图像,提供五官对齐的特征点、表情、风格等,以便将源人脸的五官特征替换到目标图像的对应位置。 5. model: checkpoint 的主模型/底模型,用于生成图片的模型。instantID 和 controlnet 都是主模型生成图片时的输入条件,本身并不生成图片。 6. mask: 这个节点也可以直接输入遮罩,不过在本文工作流中没有应用这里的遮罩,而是将遮罩直接输入到了潜空间,用到的节点是 Set Latent Noise Mask。 SegmentAnythingUltra V2 这个节点的作用就是切图,切出需要的部分,并生成遮罩。展开说明一下这个节点用到的模型和参数。 1. sam model: SAM 是 Segment Anything Model 的缩写,它是执行切图的工具。 2. grouding dino model(结合 prompt 使用): 这个模型是通过自然语言识别出图像中的物体,比如在这个节点面板下方的 prompt 中输入 face,grounding dino 模型就能检测出图像中的人脸,sam model 就可以把它切图。你可以输入 hair,跑一下这个节点试试。 3. threshold: 阈值,阈值越高,切图的边缘范围就越大,引入的细节和噪声也越多。可以根据图像调整合适的数值。 4. detail method: 处理细节的方法,可以切换一下,尝试跑一下节点看看输出图像的变化。 5. detail erode: GroundingDINO SwinT OGC (694MB) GroundingDINO SwinB (938MB) sam vit h (2.56GB) sam vit l (1.25GB) sam vit b (375MB) sam hq vit h (2.57GB) sam hq vit l (1.25GB) sam hq vit b (379MB) mobile sam(39MB) issue 解决方案 GroundingDINO SwinT OGC (694MB) GroundingDINO SwinT OGC (694MB) GroundingDINO SwinB (938MB) GroundingDINO SwinB (938MB) sams模型地址 sam vit h (2.56GB) sam vit h (2.56GB) sam vit l (1.25GB) sam vit l (1.25GB) sam vit b (375MB) sam vit b (375MB) sam hq vit h (2.57GB) sam hq vit h (2.57GB) sam hq vit l (1.25GB) sam hq vit l (1.25GB) sam hq vit b (379MB) sam hq vit b (379MB) mobile sam(39MB) mobile sam(39MB) 安装所有依赖 所有节点文件、模型都下载完以后,就该安装依赖了。 导航到 ComfyUI 目录,以我下载 ComfyUI 的路径为例,在终端中输入 cd Documents/ComfyUI ,然后输入 find . name "requirements.txt" exec pip3 install r {} \;,这个命令会遍历所有子目录的依赖文件进行安装。 等到所有依赖都安装完成,打开 ComfyUI 的浏览器页面,把工作流拖入界面即可。 祝大家玩得开心~ 工作流的报错 InstantID 依赖的 onnxruntime gpu 无法安装 MacBook Pro M1 没有 GPU,所以不能用 onnxruntime gpu 版本,silicon 是适配 M1 的加速版本。 在文件路径 ComfyUI/custom nodes/ComfyUI InstantID 的 requirements.txt 文件中,把 onnxruntime gpu 替换为 onnxruntime silicon 就可以了。双击用文本编辑器打开,替换保存即可。 MacBook Pro M1 没有 GPU,所以不能用 onnxruntime gpu 版本,silicon 是适配 M1 的加速版本。 在文件路径 ComfyUI/custom nodes/ComfyUI InstantID 的 requirements.txt 文件中,把 onnxruntime gpu 替换为 onnxruntime silicon 就可以了。双击用文本编辑器打开,替换保存即可。 MacBook Pro M1 没有 GPU,所以不能用 onnxruntime gpu 版本,silicon 是适配 M1 的加速版本。 在文件路径 ComfyUI/custom nodes/ComfyUI InstantID 的 requirements.txt 文件中,把 onnxruntime gpu 替换为 onnxruntime silicon 就可以了。双击用文本编辑器打开,替换保存即可。 Import failed:ComfyUI ergouzi nodes 共学群里有大神提出的解决办法,在终端中输入 pip3 install colorama,就可以了。 colorama 是一个用于在命令行界面中生成彩色文本和格式化输出的 Python 库。 Import failed:LayerMask: SegmentAnythingUltra V2 我在 GitHub 上给作者提了 issue,说明我的硬件和软件环境,作者回复让我下载最新的包,果然我重新安装就好了。 issue windows 系统和 macOS 系统的文件路径分隔符不同 二狗子的工作流 json 文件中,用的文件路径分隔符是反斜杠 \ ,macOS 系统无法识别,需要全部替换为正斜杠 / ,不然无法调用模型。 运行过程中,LayerMask 报错 Error occurred when executing LayerMask: SegmentAnythingUltra V2: PytorchStreamReader failed reading zip archive: failed finding central directory 解决方案就是把 LayerMask 的模型都下载好,具体见本文档的解决方案。 解决方案 黑神话工作流的原理拆解 此部分尝试拆解一下黑神话悟空换脸工作流的原理,以提高对节点的理解能力,便于以后按需使用各个节点。 抽象流程图 在这个流程图中,抽象出了重要的节点和输入输出,忽略了常用节点,便于理解。 核心节点 Apply InstantID Advanced 这个换脸工作流的核心组件是 Apply InstantID Advanced 节点,这个节点的作用就是将源人脸替换到目标图像中,展开看一下这个节点的模型和参数,就能理解这个节点的工作原理了。 1. instantID: 载入 instantID 模型,instantID 模型擅长提取图片的高层次特征,包括面部的纹理信息、几何结构、风格特征等,在图中例子是 IP Adpater,用于识别和保留目标图像 image kps 的风格并迁移到生成图像中。 2. insightface: 接入 instantID Face Analysis 节点,用于提取人脸五官的特征向量,作用是使生成图像时,人脸的眼睛、鼻子、嘴巴等样子仍然符合源人脸 image 的特征。 3. controlnet: 载入控制模型,controlnet 模型的作用是识别目标图像 image kps 的低层次特征,包括骨架、姿势、边缘、结构。controlnet 模型和 instantID 模型起到不同的控制作用,结合使用可以达到将源人脸的五官替换目标图像中五官的效果。 4. image、image kps: image 源人脸,在本文工作流中,即用户上传的人脸,是提供五官特征向量的图片。 image kps(image key points)目标图像,提供五官对齐的特征点、表情、风格等,以便将源人脸的五官特征替换到目标图像的对应位置。 5. model: checkpoint 的主模型/底模型,用于生成图片的模型。instantID 和 controlnet 都是主模型生成图片时的输入条件,本身并不生成图片。 6. mask: 这个节点也可以直接输入遮罩,不过在本文工作流中没有应用这里的遮罩,而是将遮罩直接输入到了潜空间,用到的节点是 Set Latent Noise Mask。 SegmentAnythingUltra V2 这个节点的作用就是切图,切出需要的部分,并生成遮罩。展开说明一下这个节点用到的模型和参数。 1. sam model: SAM 是 Segment Anything Model 的缩写,它是执行切图的工具。 2. grouding dino model(结合 prompt 使用): 这个模型是通过自然语言识别出图像中的物体,比如在这个节点面板下方的 prompt 中输入 face,grounding dino 模型就能检测出图像中的人脸,sam model 就可以把它切图。你可以输入 hair,跑一下这个节点试试。 3. threshold: 阈值,阈值越高,切图的边缘范围就越大,引入的细节和噪声也越多。可以根据图像调整合适的数值。 4. detail method: 处理细节的方法,可以切换一下,尝试跑一下节点看看输出图像的变化。 5. detail erode: 细节腐蚀,数值越大,去掉的图像边缘细节和噪声越多,使切出的图像更加紧凑和准确。 6. detail dilate: 细节膨胀,数值越大,图像边缘越完整,确保切出的图像覆盖识别出的完整目标。这两个数值结合使用。 7. black point: 控制图像较暗区域的亮度值,数值越高,图像较暗区域的亮度越高,可以增强暗部的细节。 8. white point: 控制图像较亮区域的亮度值,数值越低,图像较亮区域的亮度越低,可以保留更多的高光细节。这两个数值都是图像设计领域的术语,结合使用。 9. process detail: 这个参数的意思是,是否要把细节处理掉。true 时,细节会被修掉,false 时,细节会被保留。 10. max megapixels: 处理图像的最大像素数,数值越小,切图的精细度越高,消耗算力资源越多。 其他节点 遮罩区域扩展、图像遮罩区域裁剪、图像裁剪数据拼接、遮罩边缘滑条快速模糊,这些节点都是为了让生成的图像和原图融合更好,有可能是参考了经典的图像处理软件 Adobe Photoshop 中的基本功能。二狗子大神把设计经验,通过节点的方式移植到了 ComfyUI 中,对于学设计的同学是很熟悉的,这里就不展开了。 前言 电脑配置 MacBook Pro,M1 芯片,16G内存,Sonoma 14.6.1 系统版本。 MacBook Pro,M1 芯片,16G内存,Sonoma 14.6.1 系统版本。 MacBook Pro,M1 芯片,16G内存,Sonoma 14.6.1 系统版本。 缘起 我是一名 AI 生图零基础、代码零基础的产品经理,从 8.13 号开始跟着 WaytoAGI 社区的 ComfyUI 共学课学习,刚开始用云平台的应用,对新手来说非常友好,节点、模型都是内置的,打开就能上手。跟着共学课程,我在云平台学习了 ComfyUI 的基础用法。 8.19 号,AJ 在共学群里发了二狗子的黑神话悟空工作流,特别帅,我很想把这个模型跑起来。我在云平台尝试跑这个工作流,要么是环境不匹配,要么是模型太大上传到云很慢,于是我下决心要在本地部署一套 ComfyUI ,在本地跑起来。 二狗子的黑神话悟空工作流 Mac 用 ComfyUI 的难点 我刚开始不明白,为什么 AI 生图领域喂饭的大神没有用 Mac 的,我后来在操作的过程中发现,在 Mac 部署确实有很多不方便的地方: 1. 生图慢,因为 Mac M 只有 CPU,没有 GPU。这可能是大神们不喜欢用 Mac 生图的最大原因。 2. 生图的大模型在 CPU 环境中不一定适配、好用。 3. 用 Mac 生图的人少,能一起讨论的人也少,解决方案也少,需要自己摸索。 4. 大神们在 windows 系统里做的一键包,在 Mac 中不能用。 5. 大神们的工作流也要做适配 Mac 的修改,需要一点点代码阅读和修改的能力。 为什么用 Mac 这么多不方便的地方,那为什么我还要在 Mac 中部署呢?没办法,我只有这一台设备,我暂时不想增加成本,我又想灵活地学习 AI 生图,所以在本地部署是最方便的。 在这篇文章中,我详细记录了在 Mac 上部署 ComfyUI 的步骤和报错解决方案,手把手带你跑通二狗子黑神话工作流,也想在 Mac 上使用 ComfyUI 的新手朋友们,跟着我的教程一起操作吧~ 部署 ComfyUI 善用 ComfyUI Assistant ComfyUI Assistant 是 Zho 制作的基于 GPT4o 能力的问答助手,在部署和使用 ComfyUI 的过程中有任何问题,都可以问它,如果到达了 4o 对话上限,直接问 ChatGPT 也是完全没问题的。 🥛 ComfyUI Assistant 是一个非常有用的帮手,很多问题直接问它都能搞明白。 GPTs:https://chat.openai.com/g/g B3qi2zKGB comfyui assistant ComfyUI Assistant 是一个非常有用的帮手,很多问题直接问它都能搞明白。 GPTs:https://chat.openai.com/g/g B3qi2zKGB comfyui assistant 安装 Xcode Xcode 是苹果公司开发的集成开发环境,接下来的安装过程虽然不会直接用到它,但是依赖于它的环境。 打开终端,在终端中复制输入 xcode select install ,系统会自动更新 Xcode。 安装 Homebrew Homebrew 是一个软件包管理工具,用它可以简化接下来的安装过程。 1. 在终端中输入 /bin/zsh c "$(curl fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)" ,进入 Homebrew 安装程序。 2. 输入 2 ,通过 Gitee 下载 brew。 1. 在终端中输入 /bin/zsh c "$(curl fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)" ,进入 Homebrew 安装程序。 2. 输入 2 ,通过 Gitee 下载 brew。 1. 在终端中输入 /bin/zsh c "$(curl fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)" ,进入 Homebrew 安装程序。 2. 输入 2 ,通过 Gitee 下载 brew。 3. 输入开机密码,终端输入密码时,界面是不显示的,键盘输入完之后直接点击回车就行。 3. 输入开机密码,终端输入密码时,界面是不显示的,键盘输入完之后直接点击回车就行。 3. 输入开机密码,终端输入密码时,界面是不显示的,键盘输入完之后直接点击回车就行。 4. 输入 Y 。接下来根据终端提示进行操作。 4. 输入 Y 。接下来根据终端提示进行操作。 4. 输入 Y 。接下来根据终端提示进行操作。 5. 到这里 Homebrew 就安装成功了。接下来配置国内下载源,我用的是 5 阿里巴巴国内源。 5. 到这里 Homebrew 就安装成功了。接下来配置国内下载源,我用的是 5 阿里巴巴国内源。 5. 到这里 Homebrew 就安装成功了。接下来配置国内下载源,我用的是 5 阿里巴巴国内源。 6. 安装成功,快捷键 control+c 重启终端即可。 6. 安装成功,快捷键 control+c 重启终端即可。 6. 安装成功,快捷键 control+c 重启终端即可。 安装 Python, Git 在终端输入 brew install python3 安装 Python3。 在终端中输入 brew install git 安装 Git。Git 是代码版本管理工具,安装 Git 后就可以使用 git clone 命令从远程仓库(如 GitHub)下载项目到本地了。 在终端中输入 brew install git 安装 Git。Git 是代码版本管理工具,安装 Git 后就可以使用 git clone 命令从远程仓库(如 GitHub)下载项目到本地了。 在终端中输入 brew install git 安装 Git。Git 是代码版本管理工具,安装 Git 后就可以使用 git clone 命令从远程仓库(如 GitHub)下载项目到本地了。 下载 ComfyUI 选择你想下载 ComfyUI 的文件夹,我用的是 Documents,以此为例,在终端输入 cd Documents 导航到此目录下,然后在终端输入 git clone https://github.com/comfyanonymous/ComfyUI ,ComfyUI 就会被下载到 Documents 文件夹。 安装 PyTorch ComfyUI 指定 PyTorch 需要是 nightly 版本,所以这里要先卸载当前的 PyTorch,再安装 nightly 版本。 🏖️ 为了隔离不同项目的依赖关系,建议在虚拟环境中操作。 为了隔离不同项目的依赖关系,建议在虚拟环境中操作。 1. 以我的目录为例,在终端中输入 cd Documents/ComfyUI ,导航到 ComfyUI 目录。 2. 使用以下命令创建并激活 Python 虚拟环境: python3 m venv venv source venv/bin/activate 3. 卸载 PyTorch pip3 uninstall torch torchvision torchaudio 4. 接着安装适配 Mac M1 的 PyTorch nightly 版本: pip3 install pre torch torchvision torchaudio index url https://download.pytorch.org/whl/nightly/cpu 安装依赖 在终端中输入 pip3 install r requirements.txt 用来安装 ComfyUI 的依赖文件。 终端提示,需要特定版本的 numpy,终端询问是否卸载当前版本 numpy,输入 Y 卸载,然后输入 pip3 install numpy==1.26.4 安装此版本的 numpy 。 启动 ComfyUI 在终端中输入 pwd ,查看 ComfyUI 的文件路径,复制文件路径,替换启动命令中的背景色部分,然后将命令复制到终端,即可启动 ComfyUI。 💡 启动 ComfyUI 的命令 启动 ComfyUI 的命令 source cf/bin/activate && cd /Users/vina/Documents/ComfyUI && python main.py auto launch listen dont upcast attention output directory /Desktop 启动成功后,浏览器会自动跳转到一个本地网页,但这个网页地址是不对的,直接在浏览器打开 http://localhost:8188/ 这个地址,就可以使用 ComfyUI 了。 管理器和资源占用插件 官方的 ComfyUI 安装包是不带管理器和资源占用视图的,需要另外再从 GitHub 下载。 推荐安装管理器插件,下载地址。 下载 资源占用视图的插件装不装我觉得都可以,在终端中也可以看到进度,不过资源管理插件看到的更详细,下载地址。 下载 资源占用视图的插件装不装我觉得都可以,在终端中也可以看到进度,不过资源管理插件看到的更详细,下载地址。 下载 资源占用视图的插件装不装我觉得都可以,在终端中也可以看到进度,不过资源管理插件看到的更详细,下载地址。 下载 部署过程中的报错 终端连接不上 GitHub curl: (7) Failed to connect to raw.githubusercontent.com port 443 after 13 ms: Couldn't connect to server raw.githubusercontent.com 要从 GitHub 下载资源,有两个办法: 1. 使用国内镜像,参考本文档中安装 Homebrew 的说明。 安装 Homebrew 2. 直接从 GitHub 网页下载资源,然后放到对应的文件路径。 跑通黑神话工作流的教程 打开二狗子的黑神话工作流的 openart 地址,点击页面右上角的 Download,下载工作流文件。 openart 地址 下载所有插件、依赖、模型 在 openart 页面右侧展开 Node Details,点击每个节点,对应跳转到相应的 GitHub 页面,逐个下载,放到 ComfyUI/custom nodes 文件夹中。 这个工作需要耗费一点时间,但是没有难度,这里不展开了。 单独说明 instantID 节点 🦄 单独说明一下 instantID 的依赖,除了下载 instantID 的节点之外,还需要完成以下操作。 单独说明一下 instantID 的依赖,除了下载 instantID 的节点之外,还需要完成以下操作。 1. 安装 insightface 和 ONNX Runtime 。instantID 是用于检测人脸的模型,依赖于 insightface 和 ONNX Runtime 进行推理,在工作流的作用是将输入照片的人脸提取出来。在终端中分别输入 pip3 install insightface 和 pip3 install onnxruntime 来安装。 2. 下载 antelopev2 模型,放到文件路径 ComfyUI/models/insightface/models/antelopev2 中,没有的文件夹需要自己手动新建一下。下载地址。 下载 3. 下载 instantID 模型,放在文件路径 ComfyUI/models/instantid 中。下载地址。 下载 4. 下载 controlnet 模型,放在文件路径 ComfyUI/models/controlnet 中。下载地址。 下载 单独说明 LayerMask 节点 🎹 单独说明一下 LayerMask 节点的模型文件。 单独说明一下 LayerMask 节点的模型文件。 LayerMask 有两组依赖的模型,一个是 grounding dino,一个是 sams。安装 LayerMask 节点时,模型是没有全部安装的,如果在本地找不到模型,网络又连接不到自动下载模型的地址,就会报错。 解决方案是把所有模型都下载好,然后放到 models 文件夹中的这两个文件夹里。 注意网络连接:grounding dino 模型的 config 文件是从 hugging face 在线读取的,所以使用 LayerMask 时要启动魔法,并且确保网络和 hugging face 是通的。 LayerMask 有两组依赖的模型,一个是 grounding dino,一个是 sams。安装 LayerMask 节点时,模型是没有全部安装的,如果在本地找不到模型,网络

在 小宇宙note 阅读完整内容