一个基于ComfuUI Api的 AIGC自动绘画实现方案

工作流程图

基本原理已经弄通,下一步要开始编码搬砖了。整个自动绘画的流程如下,暂就不整高深U什么L了,写个简单明了能容易看懂的流程图。UI借用了下墨刀里的AI绘画公开原型

部署节点

整个系统的后端服务典型部署需要3类节点

  • Aigc Server:用于提供针对用户的查询、显示、充值、扣点等服务
  • Aigc Agent:与ComfyUI一一对应,用于获取队列、转发websock通知、返还扣点的业务操作
  • ComfyUI Server:提供ComfyUI服务,需要开启API开发模式

流程说明

接下来我对整个流程进行详细描述:

  1. 为用户建立rabbitmq队列,用于获得进度推送消息。前端界面使用stompjs订阅用户对应的队列;
  2. 绘画前,如果是图生图,上传蒙版等操作,需要在提交前先存储到公用或临时存储(为什么不直接提交COMFYUI?因为多绘画节点时,不确定最终会落到哪个节点);
  3. 用户点击“立即创作”按钮,此时发起绘画请求,发送给Aigc Server检查用户账户是否够用;
  4. 如果账户够用,下一步一次轮询所有的绘画Agent,找到空闲或最小队列的节点(此处可以考虑优化,绘画的推送消息queue_remaining会推送剩余队列长度,可以存储到resis hashmap备查);
  5. 如果节点队列太长,也可以考虑直接返回一个确认消息,提示用户队列过长,可能会等待较长时间,是否确定提交。如果确定提交则继续走1的流程,覆盖一个无需重复询问的参数;提交后提示信息建议用户先操作其它功能,稍后在用户图片查看
  6. 如果有空闲的节点,则执行提交。提交时,先执行账户扣点(还是要先检查一下最新的账户 )。然后异步将OSS(或本地存储)的图片使用/upload/image或/upload/mask推送给ComfyUI节点,并根据流API数据及工作流数据替换参数后推送给COMFYUI
  7. ComfyUI节点此时开始异步的绘图,(Agent节点从启动后需要实现连接COMFYUI的Websocket的保活机制,如果无法连上时要标记Agent不可用)
  8. ComfyUI节点绘图过程会不断通过Websocket推送绘画Agent执行Node和状态信息,对于C端客户,我们不需要提供太复杂的信息,只需要将节点别名(记录在数据库)推送给用户,例如“WD姿态分析中”,对于KSampler的节点则推送进度信息前端展示进度条;
  9. 当出现异常时,系统记录异常,并展示绘画失败的信息通过RabbitMQ推送给用户(这里要推送用户的全局消息),并进行返点(根据任务的点数);
  10. 当ComfyUI给出完成状态消息时(Node==null),通过MQ推送完成的消息。此时如果界面是等待界面则关闭并弹出完成提示;如果用户已经不在等待界面,则推送一个全局消息;

以上是ComfyUI自动绘画核心实现流程,典型的流程例如文生图、图生图、线稿转实景、AI摄影。也可以实现基于ComfyUI的其它流程,例如文本转视频、AI音乐制作等。

如果开发过程出现变化,会同步更新此文档。有任何疑问请留言

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【考研数学】武忠祥「基础篇」如何衔接进入强化?

如果基础篇已经做完,并且讲义上的例题也都做完了, 那下一步就是该做题了 这个时候,不能盲目做题,做什么题很重要!我当初考研之前,基础也很差,所以考研的时候选了错误的题集,做起来就…

ACPWorkbench_for_BP10

一、菜单 文件菜单包含导入导出所有参数,导出flashbin文件和退出操作。文件菜单显示如下: Import Audio Settings:从音频配置文件中导入音频参数。 Export Audio Settings:将音频设置导出为音频配置文件。 Export Flash Binary Fi…

优化|大语言模型中的优化问题(LoRA相关算法)

一、LoRA 在大语言模型中,参数矩阵 W ∈ R d d W\in \mathbb{R}^{d \times d} W∈Rdd的维度往往可以达到百亿甚至千亿,如果从头开始训练将会特别的消耗时间和资源。因此往往大家都会预先训练好一组初始参数 W 0 ∈ R d d W_0\in \mathbb{R}^{d \times…

MQ如何保证可靠性

📝个人主页:五敷有你 🔥系列专栏:MQ ⛺️稳中求进,晒太阳 消息到达MQ以后,如果MQ不能及时保存,也会导致消息丢失,所以MQ的可靠性也非常重要。 2.数据持久化 为了提高性能&a…

在uniapp里面使用 mp-html 并且开启 latex 功能

在uniapp里面使用 mp-html 并且开启 latex 功能 默认情况下 mp-html 是不会开启 latex 功能的, 如果需要开启 latex 功能是需要到代码操作拉取代码自行打包的。 这里说一下 mp-html 里面的 latex 功能是由 https://github.com/rojer95/katex-mini 提供的技术实现,…

与 Apollo 共创生态:Apollo 7 周年大会的启示与心得

文章目录 前言Apollo X 全新征程Application X 企业预制套件总结 前言 在过去的七年中,Apollo 开放平台经历了一段令人瞩目的发展历程。从最初的构想到如今的成熟阶段,Apollo 已经推出了 13 个版本,吸引了来自全球 170 多个国家和地区的 16 …

大数据技术主要学什么,有哪些课程

大数据技术是指在海量数据的环境下,采集、存储、处理、分析和管理数据的一系列技术与方法。随着互联网、物联网以及各种智能设备的普及,数据量呈爆炸性增长,传统数据处理手段已难以应对,因此大数据技术应运而生,旨在从…

[Collection与数据结构] 七大排序算法汇总

🌸个人主页:https://blog.csdn.net/2301_80050796?spm1000.2115.3001.5343 🏵️热门专栏:🍕 Collection与数据结构 (90平均质量分)https://blog.csdn.net/2301_80050796/category_12621348.html?spm1001.2014.3001.5482 🧀Java …

PyTorch中 DataLoader 和 TensorDataset 的详细解析

DataLoader 和 TensorDataset PyTorch DataLoader 和 TensorDataset 的详细解析DataLoader 介绍DataLoader 的核心功能 TensorDataset 介绍TensorDataset 的核心功能 使用 DataLoader 和 TensorDataset 加载数据关键内容解析 结论 PyTorch DataLoader 和 TensorDataset 的详细解…

VTK —— 三、图形格式 - 示例1 - 读取.vtp文件并输出.ply文件(附完整源码)

代码效果:演示程序读取.vtp后输出.ply文件,使用paraview打开该输出的.ply文件 本代码编译运行均在如下链接文章生成的库执行成功,若无VTK库则请先参考如下链接编译vtk源码: VTK —— 一、Windows10下编译VTK源码,并用V…

堡垒机——网络技术手段

目录 一、简介 1.什么是跳板机 2.跳板机缺陷 3.什么是堡垒机 4.为什么要使用堡垒机 4.1堡垒机设计理念 4.2堡垒机的建设目标 4.3堡垒机的价值 4.4总结 5.堡垒机的分类 6.堡垒机的原理 7.堡垒机的身份认证 8.堡垒机的运维方式常见有以下几种 9.堡垒机其他常见功能…

低代码优于无代码?

从1804年打孔式编程出现,编程语言至今已经存在了200多年。而从50年代以来,新的编程语言也不断涌现,现在已经有250多种了。这就意味着,开发人员最需要习惯的事情就是不断改变。 编程界最近的一个变化是集成开发环境(IDE…