在DCC软件中使用ComfyUI

前段时间接到个需求,希望能在nuke里使用comfyui,比如文生图,替换人脸等。
后来在网上搜到了ComfyUINuke,就想了想能不能把它用在maya或者houdini里。
扒了扒comfyui和上面说到的项目,分享一些心得。

省流结论: ComfyUI提供了REST API,我们可以在dcc软件中写一个图形界面,通过API提交命令给ComfyUI。这样制作人员可以在Maya,Houdini,Nuke中来调用comfyui工作流。

ComfyUI介绍

项目地址: https://github.com/magnoborgo/ComfyUINuke

ComfyUI是一个基于节点式的stable diffusion绘图工具WebUI。
对于想玩玩AI图像生成(测测家里显卡性能)的小伙伴可以试试。

  • 本地计算,无需网络
  • 开源免费

基本工作流:文生图

图生图

肖像生成

等等网上能找到很多别人搭建的工作流,可以直接导入到自己的工程中

ComfyUI安装

如果你是n卡且是windows系统,可以直接下载官方打包好的便携版。
https://github.com/comfyanonymous/ComfyUI/releases/tag/latest

双击运行bat文件即可启动服务。(注意看一下README文件,要下载大模型)

image.png

或者可以使用pinokio一键安装(推荐),上面还有很多AI相关的应用可以体验。
具体安装方法可以网上搜搜,安装时对于网络有一定要求,不然安装过程会很慢。

image.png

如何API调用

其实看官方参考就好
https://github.com/comfyanonymous/ComfyUI/blob/master/script_examples/basic_api_example.py

我自己是看的ComfyUINuke这个项目,然后扒了一下核心的代码。

首先找到要使用的工作流文件(json格式),以最简单的basic_workflow.json为例。
(太长这里截一部分)
ComfyUI的每个参数设置,都以字典的形式存在这个文件里。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
"6": {
"inputs": {
"text": "beautiful scenery nature glass bottle landscape...",
"clip": [
"4",
1
]
},
"class_type": "CLIPTextEncode",
"_meta": {
"title": "CLIP Text Encode (Prompt)"
}
},
"7": {
"inputs": {
"text": "text, watermark",
"clip": [
"4",
1
]
},
"class_type": "CLIPTextEncode",
"_meta": {
"title": "CLIP Text Encode (Prompt)"
}

在python中读取这个文件,然后修改里面的某些参数,比如提示词,长度宽度,采样等。

1
2
3
4
prompt['3']['inputs']['seed'] = seed  
prompt['6']['inputs']['text'] = prompt_positive
prompt['5']['inputs']['width'] = width
prompt['5']['inputs']['height'] = height

最后交给comfyui服务去计算

1
2
3
4
5
p = {'prompt': prompt}
data = json.dumps(p).encode('utf-8')

req = request.Request('http://127.0.0.1:8188/prompt', data=data)
response = request.urlopen(req, timeout=10)

内容差不多就这些,写到一半不想写了,天气太热,吃个西瓜。