UniControl

GitHub
657 34 中等 1 次阅读 3天前Apache-2.0视频语言模型图像音频
AI 解读 由 AI 自动生成,仅供参考

UniControl 是一款统一的视觉生成基础模型,旨在将多种“条件到图像”的控制任务整合到一个框架中。它解决了传统 AI 绘图工具往往只能针对单一控制类型(如仅支持边缘检测或仅支持深度图)的局限,让用户无需切换不同模型,即可通过一张参考图结合文字描述,精准生成符合预期的图像。

无论是需要精确控制物体结构的开发者、探索多模态生成的研究人员,还是追求创意落地的设计师,都能从 UniControl 中受益。普通用户也可通过其在线演示轻松体验强大的可控绘图能力。目前,它已支持包括边缘提取、素描、深度图、法线图、骨架检测、边界框、语义分割,以及图像修复、去模糊和上色等在内的 12 种复杂任务。

其核心技术亮点在于引入了一个“任务感知超网络”(Task-aware HyperNet)。该机制能够动态调节预训练的文本到图像扩散模型,使其在保持对文字提示(负责风格与语境)敏感的同时,让视觉条件(负责结构与布局)发挥像素级的精确控制作用。实验表明,UniControl 在同等参数量下,表现往往优于专用的单任务控制方法,是可控视觉生成领域的重要进展。

使用场景

一位游戏概念设计师需要快速将粗糙的手绘草图转化为多套不同风格(如赛博朋克、奇幻写实)的高精度场景原画,同时必须严格保持原始构图和物体轮廓不变。

没有 UniControl 时

  • 工具切换繁琐:设计师需分别使用 ControlNet 处理线稿、专用模型进行上色、另外的工具完成去模糊或修复,工作流在不同软件间反复横跳。
  • 风格与结构冲突:在调整提示词改变画风时,常导致原本精心设计的建筑轮廓或角色姿态发生扭曲变形,难以兼顾“精准结构”与“自由风格”。
  • 重复劳动成本高:若需尝试多种视觉条件(如从线稿切换到深度图),必须重新训练或加载不同的单任务模型,耗时且占用大量显存资源。
  • 细节一致性差:多步骤生成导致画面光影逻辑不统一,后期需要人工花费大量时间修复合成痕迹。

使用 UniControl 后

  • 一站式全能处理:UniControl 单个模型即可同时支持线稿、深度图、骨架、分割图等 12 种控制条件,设计师在一个界面内即可完成从草图到成图的全流程。
  • 结构与风格解耦:利用其任务感知超网络,视觉条件精准锁定画面结构,而自然语言提示词仅负责引导风格,确保无论怎么改风格,原始草图的像素级细节都毫厘不差。
  • 灵活适配多任务:无需重新加载模型,随时可在“草图转图像”、“局部重绘”或“自动上色”等任务间无缝切换,大幅降低显存占用并提升迭代速度。
  • 生成质量跃升:得益于统一框架的训练优势,生成的图像在复杂光照和纹理细节上往往优于单一任务模型,直接产出可用级素材。

UniControl 通过统一架构打破了控制条件的壁垒,让创作者能以最低的成本实现“结构绝对可控、风格无限自由”的高质量视觉生成。

运行环境要求

操作系统
  • 未说明
GPU

必需 NVIDIA GPU,支持 CUDA 11.0

内存

未说明(提示若遇显存不足 OOM 错误需减少采样数量)

依赖
notes官方明确测试通过的环境为 CUDA 11.0 和 Conda 4.12.0。模型检查点文件较大(约 5.78GB),需手动下载或通过脚本获取。支持 12 种控制任务(如边缘检测、深度图、骨架等)。若遇到显存溢出(OOM),建议将推理参数 '--num_samples' 设置为 1。训练或推理均基于 Stable Diffusion 和 ControlNet 架构。
python未说明(建议使用 Conda 4.12.0 管理环境)
torch (隐含)
gradio
ControlNet (基于)
Stable Diffusion (基于)
UniControl hero image

快速开始

UniControl arXiv webpage HuggingFace space

此仓库用于以下论文:

UniControl:一种用于野外可控视觉生成的统一扩散模型
秦灿 1,2, 张舒1, 于宁1, 冯一昊1, 杨欣怡1, 周英博1, 王欢1, 胡安·卡洛斯·尼布尔斯1, 熊才明1, 西尔维奥·萨瓦雷塞1, 斯特凡诺·埃尔蒙3, 傅云2, 徐然1
1 Salesforce AI 2 东北大学 3 斯坦福大学
该工作完成于秦灿在Salesforce AI Research实习期间。

img

简介

我们提出了UniControl,这是一种新的生成式基础模型,它将广泛的条件到图像(C2I)可控任务整合到一个单一框架中,同时仍支持任意语言提示。UniControl能够实现像素级精确的图像生成,其中视觉条件主要影响生成的结构,而语言提示则指导风格和上下文。为了使UniControl具备处理多样化视觉条件的能力,我们对预训练的文本到图像扩散模型进行了增强,并引入了一个任务感知的HyperNet来调制这些扩散模型,从而使其能够同时适应不同的C2I任务。实验结果表明,UniControl通常优于同等规模的单任务控制方法。这种控制的多样性使UniControl成为可控视觉生成领域的一项重要进展。

img

更新

  • 2023年5月18日UniControl 论文已上传至arXiv。
  • 2023年5月26日UniControl推理代码和检查点向公众开放。
  • 2023年5月28日最新的UniControl模型检查点(1.4B参数,5.78GB)已更新。
  • 2023年6月8日最新的UniControl模型检查点已更新,现支持12项任务(CannyHEDSketchDepthNormalSkeletonBboxSegOutpaintingInpaintingDeblurringColorization)!
  • 2023年6月8日训练数据集(MultiGen-20M)已完全公开。
  • 2023年6月8日训练代码已公开。:blush:
  • 2023年7月6日最新的UniControl模型v1.1 检查点已更新,现支持12项任务(CannyHEDSketchDepthNormalSkeletonBboxSegOutpaintingInpaintingDeblurringColorization)!
  • 2023年7月25日HuggingFace演示API现已可用!HuggingFace space
  • 2023年7月25日Safetensors模型现已可用!检查点
  • 2023年9月21日UniControl已被NeurIPS 2023接收。:blush:

MultiGen-20M 数据集

这里有超过2000万张图像-提示-条件三元组在此,总大小***> 2TB***。它包含了所有12项任务(Canny、HED、Sketch、Depth、Normal、Skeleton、Bbox、Seg、Outpainting、Inpainting、Deblurring、Colorization),均已完全公开。

使用说明

环境准备

首先设置环境(需等待几分钟)。

conda env create -f environment.yaml
conda activate unicontrol

检查点准备

预训练的UniControl模型检查点保存在./ckpts/unicontrol.ckpt

cd ckpts
wget https://storage.googleapis.com/sfr-unicontrol-data-research/unicontrol.ckpt 

你也可以使用最新训练的模型(ckpt和safetensors):

wget https://storage.googleapis.com/sfr-unicontrol-data-research/unicontrol_v1.1.ckpt
wget https://storage.googleapis.com/sfr-unicontrol-data-research/unicontrol_v1.1.st

如果你想从头开始训练,请按照ControlNet的步骤准备检查点初始化。ControlNet提供了一个简单的脚本,方便你完成这一操作。如果你的SD文件名为./ckpts/v1-5-pruned.ckpt,并希望脚本将处理后的模型(SD+ControlNet)保存到./ckpts/control_sd15_ini.ckpt,只需运行:

python tool_add_control.py ./ckpts/v1-5-pruned.ckpt ./ckpts/control_sd15_ini.ckpt

数据准备

请将训练数据集(MultiGen-20M)下载到./multigen20m。请执行:

cd multigen20m
gsutil -m cp -r gs://sfr-unicontrol-data-research/dataset ./

然后解压所有文件。

模型训练(CUDA 11.0和Conda 4.12.0有效)

从零开始训练:

python train_unicontrol.py --ckpt ./ckpts/control_sd15_ini.ckpt --config ./models/cldm_v15_unicontrol_v11.yaml --lr 1e-5

微调模型:

python train_unicontrol.py --ckpt ./ckpts/unicontrol.ckpt  --config ./models/cldm_v15_unicontrol.yaml --lr 1e-7

模型推理(CUDA 11.0 和 Conda 4.12.0 可用)

针对不同任务,请按以下方式运行代码。如果遇到显存不足(OOM)错误,请减少 --num_samples 参数的值。

如果您使用的是 safetensors 格式的模型,可以按照 ./load_model/load_safetensors_model.py 的方法加载模型。

Canny 边缘到图像生成:

python inference_demo.py --ckpt ./ckpts/unicontrol.ckpt --task canny

HED 边缘到图像生成:

python inference_demo.py --ckpt ./ckpts/unicontrol.ckpt --task hed 

类似 HED 的草图到图像生成:

python inference_demo.py --ckpt ./ckpts/unicontrol.ckpt --task hedsketch

深度图到图像生成:

python inference_demo.py --ckpt ./ckpts/unicontrol.ckpt --task depth 

法线表面图到图像生成:

python inference_demo.py --ckpt ./ckpts/unicontrol.ckpt --task normal

分割图到图像生成:

python inference_demo.py --ckpt ./ckpts/unicontrol.ckpt --task seg

人体骨骼关键点到图像生成:

python inference_demo.py --ckpt ./ckpts/unicontrol.ckpt --task openpose

目标边界框到图像生成:

python inference_demo.py --ckpt ./ckpts/unicontrol.ckpt --task bbox

图像外扩填充:

python inference_demo.py --ckpt ./ckpts/unicontrol.ckpt --task outpainting

图像修复填充:

python inference_demo.py --ckpt ./ckpts/unicontrol.ckpt --task inpainting

图像去模糊:

python inference_demo.py --ckpt ./ckpts/unicontrol.ckpt --task blur

图像上色:

python inference_demo.py --ckpt ./ckpts/unicontrol.ckpt --task grayscale

Gradio 演示(应用演示视频,CUDA 11.0 和 Conda 4.12.0 可用)

我们为不同任务提供了 Gradio 演示工具。示例图片保存在 ./test_imgs 目录下。

对于所有任务(Canny、HED、Sketch、Depth、Normal、Human Pose、Seg、Bbox、Outpainting、Colorization、Deblurring、Inpainting),请运行以下代码:

python app/gradio_all_tasks.py

我们支持直接条件输入生成图像(如上所示)。如果您想直接上传条件图像,请在界面中取消勾选“条件提取”选项。


此外,我们还提供了特定任务的 Gradio 演示:

Canny 边缘到图像生成:

python app/gradio_canny2image.py

HED 边缘到图像生成:

python app/gradio_hed2image.py

类似 HED 的草图到图像生成:

python app/gradio_hedsketch2image.py

深度图到图像生成:

python app/gradio_depth2image.py

法线表面图到图像生成:

python app/gradio_normal2image.py

分割图到图像生成:

python app/gradio_seg2image.py

人体骨骼关键点到图像生成:

python app/gradio_pose2image.py

目标边界框到图像生成:

python app/gradio_bbox2image.py

图像外扩填充:

python app/gradio_outpainting.py

图像上色:

python app/gradio_colorization.py

图像去模糊:

python app/gradio_deblur.py

图像修复填充:

python app/gradio_inpainting.py

待办事项

  • 数据准备
  • 预训练任务推理
  • Gradio 演示
  • 模型训练
  • HF Space
  • Colab

小贴士

  • 负面提示词有时非常有用:例如 monochrome, lowres, bad anatomy, worst quality, low quality 等。

  • UniControl 在某些任务(如图像上色和去模糊)上,即使不使用任何文本提示词也能取得良好效果。

  • 如果出现显存不足问题,可以尝试将 --num_samples 设置为 1。

引用

如果您觉得本项目对您的研究有所帮助,请引用我们的论文:

@article{qin2023unicontrol,
  title={UniControl: A Unified Diffusion Model for Controllable Visual Generation In the Wild},
  author={Qin, Can and Zhang, Shu and Yu, Ning and Feng, Yihao and Yang, Xinyi and Zhou, Yingbo and Wang, Huan and Niebles, Juan Carlos and Xiong, Caiming and Savarese, Silvio and others},
  journal={arXiv preprint arXiv:2305.11147},
  year={2023}
}

致谢

本项目建立在 ControlNet 和 Stable Diffusion 这两座巨人的肩膀之上。衷心感谢它们!

Stable Diffusion https://github.com/CompVis/stable-diffusion

ControlNet https://github.com/lllyasviel/ControlNet

StyleGAN3 https://github.com/NVlabs/stylegan3

常见问题

相似工具推荐

openclaw

OpenClaw 是一款专为个人打造的本地化 AI 助手,旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚,能够直接接入你日常使用的各类通讯渠道,包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息,OpenClaw 都能即时响应,甚至支持在 macOS、iOS 和 Android 设备上进行语音交互,并提供实时的画布渲染功能供你操控。 这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地,用户无需依赖云端服务即可享受快速、私密的智能辅助,真正实现了“你的数据,你做主”。其独特的技术亮点在于强大的网关架构,将控制平面与核心助手分离,确保跨平台通信的流畅性与扩展性。 OpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者,以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力(支持 macOS、Linux 及 Windows WSL2),即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你

349.3k|★★★☆☆|1周前
Agent开发框架图像

stable-diffusion-webui

stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。

162.1k|★★★☆☆|2周前
开发框架图像Agent

everything-claude-code

everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上

160.8k|★★☆☆☆|今天
开发框架Agent语言模型

ComfyUI

ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。

109.2k|★★☆☆☆|昨天
开发框架图像Agent

gemini-cli

gemini-cli 是一款由谷歌推出的开源 AI 命令行工具,它将强大的 Gemini 大模型能力直接集成到用户的终端环境中。对于习惯在命令行工作的开发者而言,它提供了一条从输入提示词到获取模型响应的最短路径,无需切换窗口即可享受智能辅助。 这款工具主要解决了开发过程中频繁上下文切换的痛点,让用户能在熟悉的终端界面内直接完成代码理解、生成、调试以及自动化运维任务。无论是查询大型代码库、根据草图生成应用,还是执行复杂的 Git 操作,gemini-cli 都能通过自然语言指令高效处理。 它特别适合广大软件工程师、DevOps 人员及技术研究人员使用。其核心亮点包括支持高达 100 万 token 的超长上下文窗口,具备出色的逻辑推理能力;内置 Google 搜索、文件操作及 Shell 命令执行等实用工具;更独特的是,它支持 MCP(模型上下文协议),允许用户灵活扩展自定义集成,连接如图像生成等外部能力。此外,个人谷歌账号即可享受免费的额度支持,且项目基于 Apache 2.0 协议完全开源,是提升终端工作效率的理想助手。

100.8k|★★☆☆☆|1周前
插件Agent图像

LLMs-from-scratch

LLMs-from-scratch 是一个基于 PyTorch 的开源教育项目,旨在引导用户从零开始一步步构建一个类似 ChatGPT 的大型语言模型(LLM)。它不仅是同名技术著作的官方代码库,更提供了一套完整的实践方案,涵盖模型开发、预训练及微调的全过程。 该项目主要解决了大模型领域“黑盒化”的学习痛点。许多开发者虽能调用现成模型,却难以深入理解其内部架构与训练机制。通过亲手编写每一行核心代码,用户能够透彻掌握 Transformer 架构、注意力机制等关键原理,从而真正理解大模型是如何“思考”的。此外,项目还包含了加载大型预训练权重进行微调的代码,帮助用户将理论知识延伸至实际应用。 LLMs-from-scratch 特别适合希望深入底层原理的 AI 开发者、研究人员以及计算机专业的学生。对于不满足于仅使用 API,而是渴望探究模型构建细节的技术人员而言,这是极佳的学习资源。其独特的技术亮点在于“循序渐进”的教学设计:将复杂的系统工程拆解为清晰的步骤,配合详细的图表与示例,让构建一个虽小但功能完备的大模型变得触手可及。无论你是想夯实理论基础,还是为未来研发更大规模的模型做准备

90.1k|★★★☆☆|1周前
语言模型图像Agent