源于AI绘画的爆火,尝试做了一个工具网站

news2024/9/23 20:54:18

这两天做了一个 网页 Demo,实现了一些 AI 图像处理功能,前端用的是 React,后端用的是 Django

现在 ,Demo 中已经实现的功能有两个:

  • 1,人像分割:从图像中把人物分割出来,用一个透明底背景或纯色背景代替,用户可以指定背景颜色

在这里插入图片描述

  • 2,扩图:将图像向四边进行扩展,每边扩展256px,扩展后的区域与原图风格一致,不会产生明显违和割裂
    在这里插入图片描述

做这个 Demo 的动机起源于 SD 开源后,在去年做过一个类似的 【文生图】网站,接口沿用的是 stable-diffusion-webui 里 api 接口,功能为文本生图、 ControlNet 风格控制、图片 prompt 信息copy 存储等
在这里插入图片描述

当时由于一些其它原因,被搁置没再继续开发下去

近一年伴随 ComfyUi 、SD2、SD3、Flux、Fooocus等开源框架或模型的发布,AI绘画的热度在高地之间不断徘徊

现在,得益于开源贡献者以及各企业的开源模型代码,使得生成的图像在维持内容无限创意同时,可控性也越来越强;如 只需输入指令,自动分割或消除图片中的某个区域、提供人物模特与服饰,实现智能穿衣;在保留人物基础形象同时对图像进行风格迁移

ComfyUI 项目的出现加快了这种趋势的形成,workflow(工作流)是项目的核心概念,为了实现某个功能/图像操作,需要借助多模型/多步骤操作,在 worflow 会把每个步骤视为一个节点,例如加载图像,通过连线的方式将节点间串联起来,一个节点的输出对应另一个节点的输入,最后,一个workflow 是由 N 个点 和 M 条线组成

视觉模型一般只针对于单一领域,不具有泛化能力,而在日常中我们修改图像的诉求一般较为复杂,若要实现需要多个模型介入,例如,实现 消除图片中的某个物体 功能,需要:1,需要 image captioning 模型 将 图像转坏为 txt;2,用分割模型将 image 中目标分割生成 mask;3,用 inpainting + diffusion模型将空白 mask 在进行填补,可能的话还需要再加一步,用detail 相关模型将生成图片再细化输出

因此,目前几乎每个 workflow 都会有多模型组成的痕迹,有的是纯cv 模型,有的可能 CV + LLM 相结合,也就是某种意义上的多模态

虽然 近几个月 text-to-video 也比较火,如runaway、kling、openai、pika等,开源的有 Stable Video Diffusion;但现有模型依旧还不成熟,并且对于个人开发者来说,玩耍这类模型所需GPU代价对个人开发者是难以承受的

而 继续开发这方面 Demo 的想法 ,也是在以上背景下又浮现出来;目前 ComfyUI 上手门槛不算很高,但对于一些电脑小白来说,除了面对最基础的Python环境外,还需要针对各种工作流安装对应所需model、插件,有时还会遇到一些插件所用 python库版本不兼容等疑难杂症

demo 目前方向就是为了缓解这个问题,将大部分比较通用,比较火的图片处理工作流作为功能继承在项目中,致力于一键式处理,免去不必要的额外操作

完善demo的周期预计会比较厂, 因为除了一些已有的工作流外,还需要针对特殊业务场景开发一些自定义插件或节点,除了一些基础CRUD外,还需要对 Diffusion模型的运行原理以及代码实现有所掌握

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

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

相关文章

Vue与React的Diff算法

虚拟DOM 定义 虚拟DOM是一种用于在前端开发中模拟真实DOM的技术。它是一种抽象的数据结构(简单来说就是一个Javascript对象),用于描述HTML或XML文档的结构和内容。通过将页面的状态和结构保存在内存中,而不是直接操作真实的DOM&am…

C++·io流

本节主要是了解为主,需要具体使用时可以查看文档。 io流操作指的是对各种流的操作,我们经常使用的cin和cout是对标准流的操作,实际上它还可以对文件流操作。 官网资料:Input/Output - C Reference 流输入和流提取功能的实现中有着…

鸿蒙交互事件开发04——手势事件

1 概 述 手势事件是移动应用开发中最常见的事件之一,鸿蒙提供了一些方法来绑定手势事件。通过给各个组件绑定不同的手势事件,并设计事件的响应方式,当手势识别成功时,ArkUI框架将通过事件回调通知组件手势识别的结果。 …

记录一款人气领先的开源国产 ERP 系统

推荐一款人气领先的国产ERP系统,目前在Gitee上有12.3k star,在github上面也有1.2k 管伊佳ERP(原名华夏ERP)基于SpringBoot框架和SaaS模式,立志为中小企业提供开源好用的ERP软件,目前仅支持进销存财务生产功…

2025年第八届计算机图形和虚拟国际会议(ICCGV 2025)即将召开!

2025年第八届计算机图形和虚拟国际会议(ICCGV 2025)将于2025年2月21-23日在中国成都举行。随着信息技术的飞速发展,计算机图形学与虚拟现实技术正以前所未有的速度重塑着我们的认知世界与交互体验。从沉浸式游戏到精准医疗模拟,从…

气压测试实验(用IIC)

I2C: 如果没有I2c这类总线,连接方法可能会如下图: 单片机所有的通讯协议,无非是建立在引脚(高低电平的变换高低电平持续的时间)这二者的组合上,i2c 多了一个clock线,负责为数据传输打节拍。 (i2…

Unity3d中制作触发区域为圆形的按钮

一、常规矩形的Button制作 设置Highlighed Color为绿色。 此时当鼠标在button上方时会显示绿色: 二、圆形Button制作 在Button的Image中选择Source Image为Knob。 程序运行时,鼠标在矩形和圆形之间的区域,button还是会变成绿色。 所以&…

【时时三省】(C语言基础)指针进阶 例题5

山不在高,有仙则名。水不在深,有龙则灵。 ----CSDN 时时三省 abcdef是个常量字符串 把首地址a放在了p里面 第一个p 算的是指针变量的大小 它打印就是4或者8 第二个p1 p本来是a的地址 1就是b的地址 是地址就是打印四或者八 …

chapter14-集合——(List-LikedHashSet)——day18

目录 528-LikedHashSet介绍 529-LikedHashSet源码介绍 528-LikedHashSet课堂练习 528-LikedHashSet介绍 529-LikedHashSet源码介绍 528-LikedHashSet课堂练习

【计网】从零开始认识网络socket

优于别人,并不高贵, 真正的高贵应该是优于过去的自己。 --- 海明威 --- 从零开始认识网络socket 1 网络通信流程2 IP地址 VS MAC地址3 网络socket3.1 理解源 IP 地址和目的 IP 地址3.2 传输层的典型代表3.3 网络字节序3.4 socket编程基础 1 网络通信流…

高压直流接触器及使用注意事项

高压直流接触器及使用注意事项 1.概述2.接触器和继电器有什么区别3.节能线圈4.安装位置5.直流继电器线圈抑制6.高压继电器和接触器有哪些应用?7.线圈效率的决定因素是什么?对线圈驱动器有什么要求?8.负载极性对接触器的影响9.触点参数注意事项10.线圈供电要求1.概述 航空接…

基于单片机实现的的多点分布室内环境监测系统

基于STM32单片机为基础设计的一款室内环境监测系统程序源码 程序分为接收端和采集端两部分 接收端与采集端均以STM32单片机作为控制核心,两者通过ZigBee无线通信技术进行连接。接收端主要用于接收数据并将其实时显示以及报警。 采集端主要用于监测室内环境的各类数…

【Python工具】Python 装饰器实现统计函数执行时长

文章目录 1、背景2、轮子 1、背景 业务基本代码堆积完毕了,部分流程需要调优,想着在几个关键执行路径上进行时间记录,类似 SQL 慢日志一样的方法,方便进行性能问题发现。 了解了下,应该是采用装饰器实现是代码侵入最…

林草湿地址、导出echart为word

2.导出 // 导出exportDoc () {this.loading truelet arrRefs [this.$refs.endChart, this.$refs.processChart, this.$refs.officeEndChart]setTimeout(() > {Promise.all(arrRefs.map((canvasDom) > {return this.html2canvasHandle(canvasDom)})).then(res > {let…

如何让潜意识帮你实现你的目标

潜意识的力量是意识的3万倍以上 如果你有一个宏大的目标,怎么借助潜意识实现你的目标呢 比如,我的目标是:帮助100万人颠覆潜意识,实现人生蜕变,并且培养一万名潜意识开发导师 这么宏大的一个目标,怎么让…

B-树底层原理

一、B-树介绍 定义: B-树(B-Tree)是一种自平衡的树形数据结构,广泛应用于数据库和操作系统中。它的设计目标是减少搜索、顺序访问、插入和删除操作中比较次数和移动次数,特别适合于磁盘中数据的存储和检索。 性质&a…

运维团队日志管理策略参考

在运维工作中,日志管理是一项至关重要的任务。有效的日志管理不仅能够帮助运维团队实时监控系统状态、发现潜在问题,还能为故障排查和系统性能优化提供宝贵的数据支持。本文结合运维行业的实际需求,介绍了一套全面的日志管理策略,…

AutoDroid: LLM-powered Task Automation inAndroid论文学习

光看题目怎么和上一篇差不多?又是纯用LLM的? 当然还是有一点不一样的: 这里的最大特点是加上了UI领域知识,可以大幅增强LLM在处理UI方面的知识的能力。根据文章的说法,使用了这招他们的LLM可以吊打GPT4V,准…

node.js 完全卸载和下载配置

一、介绍 (1)node.js Node.js发布于2009年5月,由Ryan Dahl开发,是一个基于ChromeV8引擎的JavaScript运行环境,使用了一个事件驱动、非阻塞式I/O模型, [1]让JavaScript 运行在服务端的开发平台&#xff0c…

Linux开发工具的使用

文章目录 vim的使用基本模式介绍光标当前行操作光标快速定位(命令行模式):插入模式的三种方式(命令行模式):vim基本操作(命令行模式)底行模式的操作 Linux编译器 - gcc/g的使用Linux…