rcg
rcg 是一个基于 PyTorch 的开源图像生成框架,源自 NeurIPS 2024 的口头报告论文。它核心致力于解决长期存在的“无条件图像生成”与“类别条件生成”之间的性能差距问题。传统上,不带类别标签的无条件生成在画质和多样性上往往逊色于有条件生成,而 rcg 通过创新的自监督表示生成方法,在 ImageNet 256x256 分辨率下实现了业界领先(SOTA)的无条件生成效果,让模型无需依赖类别标签也能合成高质量图像。
该工具的独特技术亮点在于其“自条件”(self-conditioned)机制,利用预训练的视觉编码器(如 MoCo v3 ViT)提取特征,并在此基础上训练表示扩散模型(RDM),从而桥接了表征学习与图像生成的鸿沟。项目提供了完整的训练脚本、配置文件以及在 V100 等多卡环境下的运行示例,并支持加载预训练权重进行快速评估或微调。
rcg 主要面向人工智能研究人员、计算机视觉开发者以及对生成式模型底层原理感兴趣的工程师。如果你希望深入研究无条件生成技术、复现前沿论文成果,或探索自监督学习在图像合成中的应用潜力,rcg 将是一个极具价值的参考实现。需要注意的是,使用该工具需要具备一定的深度学习基础及 GPU 计算资源。
使用场景
某计算机视觉团队正在为电商平台的“智能商品图生成”项目构建底层模型,需要在不依赖人工标注类别标签的情况下,训练出能生成高质量、多样化商品背景图的模型。
没有 rcg 时
- 生成质量受限:传统的无条件生成模型(如早期 Diffusion)在 ImageNet 等复杂数据集上,生成的图像模糊或缺乏细节,无法达到商业级清晰度。
- 过度依赖标签:为了获得高质量图像,团队被迫使用“类条件生成”,但这需要昂贵且耗时的人工数据清洗与分类标注工作。
- 表征能力不足:现有的自监督方法难以捕捉图像的高层语义特征,导致生成的商品背景与前景物体风格割裂,缺乏真实感。
- 训练成本高昂:为了弥补性能差距,不得不大幅增加模型参数量和训练时长,导致 GPU 资源消耗巨大且收敛缓慢。
使用 rcg 后
- 画质显著提升:rcg 利用自条件机制,在无条件设置下实现了 SOTA 级别的生成效果,输出的 256x256 图像纹理清晰,直接满足商用需求。
- 免除标注负担:团队不再需要维护庞大的类别标签体系,rcg 通过自监督学习自动提取特征,大幅降低了数据预处理的人力成本。
- 语义一致性增强:基于 Moco v3 ViT 编码器的表征扩散模型,能更好地理解图像全局结构,生成的背景图与商品主体融合自然,逻辑合理。
- 训练效率优化:rcg bridging 了有无条件生成的性能鸿沟,使得团队可以用更小的模型规模和更少的训练轮次(如 400 epochs)获得优异结果,节省了大量算力。
rcg 通过自监督表征生成技术,让团队在零标签成本下获得了媲美甚至超越有监督模型的图像生成能力,极大加速了创意素材的自动化生产流程。
运行环境要求
- Linux
- 必需 NVIDIA GPU
- 训练示例基于 V100,不同模型需求差异大:RDM 需 4 卡,MAGE 需 64 卡,DiT/ADM 需 128 卡
- 显存方面,DiT-XL 在 batch_size=16 时可能溢出,建议调小至 12-14
- 未明确具体 CUDA 版本,但需支持 PyTorch GPU 运行
未说明(鉴于大规模分布式训练需求,建议 64GB+)

快速开始
RCG PyTorch 实现
这是论文《无条件生成的回归:一种自监督表征生成方法》(NeurIPS 2024 口头报告)的 PyTorch/GPU 实现:
@Article{RCG2023,
author = {李天宏、迪娜·卡塔比、何恺明},
journal = {arXiv:2312.03701},
title = {无条件生成的回归:一种自监督表征生成方法},
year = {2023},
}
RCG 是一个自条件化的图像生成框架,在 ImageNet 256x256 数据集上实现了当前最优的无条件图像生成性能,从而弥合了长期以来无条件生成与类别条件生成之间的性能差距。
更新内容
2024年3月
- 更新 FID 评估和结果,以遵循 ADM 套件,通过提供
torch-fidelity中的统计信息。 修改后的torch-fidelity可以通过以下命令安装:
pip install -e git+https://github.com/LTH14/torch-fidelity.git@master#egg=torch-fidelity
为了提供统计信息,请在引擎文件中的 torch_fidelity.calculate_metrics 中将 fid_statistics_file 设置为您的统计文件。
- 更新了一个训练了 400 个 epoch 的 ADM 检查点(与原论文相同)。
- 包含使用 RCG 的 DiT-XL 的训练脚本和预训练检查点(400 个 epoch)。
- 更新 ArXiv。
准备工作
数据集
下载 ImageNet 数据集,并将其放置在您的 IMAGENET_DIR 目录中。准备 ImageNet 验证集,以便与验证集进行 FID 评估:
python prepare_imgnet_val.py --data_path ${IMAGENET_DIR} --output_dir imagenet-val
要对验证集进行 FID 评估,需要运行 pip install torch-fidelity 来安装原始的 torch-fidelity 包。
安装
下载代码
git clone https://github.com/LTH14/rcg.git
cd rcg
可以创建并激活一个名为 rcg 的合适的 conda 环境,命令如下:
conda env create -f environment.yaml
conda activate rcg
使用 此链接
下载预训练的 VQGAN 分词器,命名为 vqgan_jax_strongaug.ckpt。
使用 此链接
下载预训练的 MoCo v3 ViT-B 编码器,并将其命名为 pretrained_enc_ckpts/mocov3/vitb.pth.tar。
使用 此链接
下载预训练的 MoCo v3 ViT-L 编码器,并将其命名为 pretrained_enc_ckpts/mocov3/vitl.pth.tar。
使用方法
RDM
使用 4 张 V100 GPU 训练 MoCo v3 ViT-B 表征扩散模型:
python -m torch.distributed.launch --nproc_per_node=4 --nnodes=1 --node_rank=0 \
main_rdm.py \
--config config/rdm/mocov3vitb_simplemlp_l12_w1536.yaml \
--batch_size 128 --input_size 256 \
--epochs 200 \
--blr 1e-6 --weight_decay 0.01 \
--output_dir ${OUTPUT_DIR} \
--data_path ${IMAGENET_DIR} \
--dist_url tcp://${MASTER_SERVER_ADDRESS}:2214
要继续之前中断的训练会话,需将 --resume 设置为存储有 checkpoint-last.pth 的 OUTPUT_DIR。
下表提供了论文中使用的 MoCo v3 ViT-B/ViT-L RDM 的预训练权重:
| MoCo v3 ViT-B | MoCo v3 ViT-L | |
|---|---|---|
| 无条件 RDM | Google Drive / 配置 | Google Drive / 配置 |
| 类别条件 RDM | Google Drive / 配置 | Google Drive / 配置 |
像素生成器:MAGE
要训练一个基于 Moco v3 ViT-B 表征的 MAGE-B 模型,使用 64 张 V100 GPU 进行 200 个 epoch 的训练:
python -m torch.distributed.launch --nproc_per_node=8 --nnodes=8 --node_rank=0 \
main_mage.py \
--pretrained_enc_arch mocov3_vit_base \
--pretrained_enc_path pretrained_enc_ckpts/mocov3/vitb.pth.tar --rep_drop_prob 0.1 \
--use_rep --rep_dim 256 --pretrained_enc_withproj --pretrained_enc_proj_dim 256 \
--pretrained_rdm_cfg ${RDM_CFG_PATH} --pretrained_rdm_ckpt ${RDM_CKPT_PATH} \
--rdm_steps 250 --eta 1.0 --temp 6.0 --num_iter 20 --num_images 50000 --cfg 0.0 \
--batch_size 64 --input_size 256 \
--model mage_vit_base_patch16 \
--mask_ratio_min 0.5 --mask_ratio_max 1.0 --mask_ratio_mu 0.75 --mask_ratio_std 0.25 \
--epochs 200 \
--warmup_epochs 10 \
--blr 1.5e-4 --weight_decay 0.05 \
--output_dir ${OUTPUT_DIR} \
--data_path ${IMAGENET_DIR} \
--dist_url tcp://${MASTER_SERVER_ADDRESS}:2214
要训练一个基于 Moco v3 ViT-L 表征的 MAGE-L 模型,
请将 RDM_CFG_PATH 和 RDM_CKPT_PATH 更改为 Moco v3 ViT-L RDM 的路径,并修改以下参数:
--pretrained_enc_arch mocov3_vit_large --pretrained_enc_path pretrained_enc_ckpts/mocov3/vitl.pth.tar --temp 11.0 --model mage_vit_large_patch16
恢复训练:将 --resume 设置为存储有 checkpoint-last.pth 的 OUTPUT_DIR。
评估:将 --resume 设置为预训练的 MAGE 检查点,并在上述脚本中加入 --evaluate 标志。
预训练模型:
| 表征条件 MAGE-B | 表征条件 MAGE-L | |
|---|---|---|
| 检查点 | Google Drive | Google Drive |
| 无类别条件生成(无 CFG) | FID=3.98, IS=177.8 | FID=3.44, IS=186.9 |
| 无类别条件生成(有 CFG) | FID=3.19, IS=214.9 (cfg=1.0) | FID=2.15, IS=253.4 (cfg=6.0) |
| 有类别条件生成(无 CFG) | FID=3.50, IS=194.9 | FID=2.99, IS=215.5 |
| 有类别条件生成(有 CFG) | FID=3.18, IS=242.6 (cfg=1.0) | FID=2.25, IS=300.7 (cfg=6.0) |
可视化:使用 viz_rcg.ipynb 可视化生成结果。
无类别条件生成示例:
有类别条件生成示例:
像素生成器:DiT
要训练一个基于 Moco v3 ViT-B 表征的 DiT-L 模型,使用 128 张 V100 GPU 进行 400 个 epoch 的训练:
python -m torch.distributed.launch --nproc_per_node=8 --nnodes=16 --node_rank=0 \
main_dit.py \
--rep_cond --rep_dim 256 \
--pretrained_enc_arch mocov3_vit_base \
--pretrained_enc_path pretrained_enc_ckpts/mocov3/vitb.pth.tar \
--pretrained_rdm_cfg ${RDM_CFG_PATH} \
--pretrained_rdm_ckpt ${RDM_CKPT_PATH} \
--batch_size 16 --image_size 256 --dit_model DiT-L/2 --num-sampling-steps ddim25 \
--epochs 400 \
--lr 1e-4 --weight_decay 0.0 \
--output_dir ${OUTPUT_DIR} \
--data_path ${IMAGENET_DIR} \
--dist_url tcp://${MASTER_SERVER_ADDRESS}:2214
注意:有时 batch_size=16 会导致 DiT-XL 内存不足。将其改为 12 或 14 对性能几乎没有影响。
恢复训练:将 --resume 设置为存储有 checkpoint-last.pth 的 OUTPUT_DIR。
评估:将 --resume 设置为预训练的 DiT 检查点,并在上述脚本中加入 --evaluate 标志。为了获得更好的生成效果,可将 --num-sampling-steps 250。
预训练的 DiT-XL/2(400 个 epoch)基于 Moco v3 ViT-B 表征,可在此下载 这里(FID=4.89, IS=143.2)。
像素生成器:ADM
要训练一个基于 Moco v3 ViT-B 表征的 ADM 模型,使用 128 张 V100 GPU 进行 100 个 epoch 的训练:
python -m torch.distributed.launch --nproc_per_node=8 --nnodes=16 --node_rank=0 \
main_adm.py \
--rep_cond --rep_dim 256 \
--pretrained_enc_arch mocov3_vit_base \
--pretrained_enc_path pretrained_enc_ckpts/mocov3/vitb.pth.tar \
--pretrained_rdm_cfg ${RDM_CFG_PATH} \
--pretrained_rdm_ckpt ${RDM_CKPT_PATH} \
--batch_size 2 --image_size 256 \
--epochs 100 \
--lr 1e-4 --weight_decay 0.0 \
--attention_resolutions 32,16,8 --diffusion_steps 1000 \
--learn_sigma --noise_schedule linear \
--num_channels 256 --num_head_channels 64 --num_res_blocks 2 --resblock_updown \
--use_scale_shift_norm \
--gen_timestep_respacing ddim25 --use_ddim \
--output_dir ${OUTPUT_DIR} \
--data_path ${IMAGENET_DIR} \
--dist_url tcp://${MASTER_SERVER_ADDRESS}:2214
恢复训练:将 --resume 设置为存储有 checkpoint-last.pth 的 OUTPUT_DIR。
评估:将 --resume 设置为预训练的 ADM 检查点,并在上述脚本中加入 --evaluate 标志。为了获得更好的生成效果,可将 --gen_timestep_respacing 250 并禁用 --use_ddim。
预训练的 ADM(400 个 epoch)基于 Moco v3 ViT-B 表征,可在此下载 这里(FID=6.24, IS=136.9)。
像素生成器:LDM
请使用 此链接 下载分词器,并将其命名为 vqgan-ckpts/ldm_vqgan_f8_16384/checkpoints/last.ckpt。
要训练一个基于 Moco v3 ViT-B 表征的 LDM-8 模型,使用 64 张 V100 GPU 进行 40 个 epoch 的训练:
python -m torch.distributed.launch --nproc_per_node=8 --nnodes=8 --node_rank=0 \
main_ldm.py \
--config config/ldm/cin-ldm-vq-f8-repcond.yaml \
--batch_size 4 \
--epochs 40 \
--blr 2.5e-7 --weight_decay 0.01 \
--output_dir ${OUTPUT_DIR} \
--data_path ${IMAGENET_DIR} \
--dist_url tcp://${MASTER_SERVER_ADDRESS}:2214
恢复训练:将 --resume 设置为存储有 checkpoint-last.pth 的 OUTPUT_DIR。
评估:将 --resume 设置为预训练的 LDM 检查点,并在上述脚本中加入 --evaluate 标志。
预训练的 LDM(40 个 epoch)基于 Moco v3 ViT-B 表征,可在此下载 这里(FID=11.30, IS=101.9)。
联系方式
如有任何问题,请随时通过电子邮件(tianhong@mit.edu)与我联系。祝您使用愉快!
常见问题
相似工具推荐
openclaw
OpenClaw 是一款专为个人打造的本地化 AI 助手,旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚,能够直接接入你日常使用的各类通讯渠道,包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息,OpenClaw 都能即时响应,甚至支持在 macOS、iOS 和 Android 设备上进行语音交互,并提供实时的画布渲染功能供你操控。 这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地,用户无需依赖云端服务即可享受快速、私密的智能辅助,真正实现了“你的数据,你做主”。其独特的技术亮点在于强大的网关架构,将控制平面与核心助手分离,确保跨平台通信的流畅性与扩展性。 OpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者,以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力(支持 macOS、Linux 及 Windows WSL2),即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你
n8n
n8n 是一款面向技术团队的公平代码(fair-code)工作流自动化平台,旨在让用户在享受低代码快速构建便利的同时,保留编写自定义代码的灵活性。它主要解决了传统自动化工具要么过于封闭难以扩展、要么完全依赖手写代码效率低下的痛点,帮助用户轻松连接 400 多种应用与服务,实现复杂业务流程的自动化。 n8n 特别适合开发者、工程师以及具备一定技术背景的业务人员使用。其核心亮点在于“按需编码”:既可以通过直观的可视化界面拖拽节点搭建流程,也能随时插入 JavaScript 或 Python 代码、调用 npm 包来处理复杂逻辑。此外,n8n 原生集成了基于 LangChain 的 AI 能力,支持用户利用自有数据和模型构建智能体工作流。在部署方面,n8n 提供极高的自由度,支持完全自托管以保障数据隐私和控制权,也提供云端服务选项。凭借活跃的社区生态和数百个现成模板,n8n 让构建强大且可控的自动化系统变得简单高效。
AutoGPT
AutoGPT 是一个旨在让每个人都能轻松使用和构建 AI 的强大平台,核心功能是帮助用户创建、部署和管理能够自动执行复杂任务的连续型 AI 智能体。它解决了传统 AI 应用中需要频繁人工干预、难以自动化长流程工作的痛点,让用户只需设定目标,AI 即可自主规划步骤、调用工具并持续运行直至完成任务。 无论是开发者、研究人员,还是希望提升工作效率的普通用户,都能从 AutoGPT 中受益。开发者可利用其低代码界面快速定制专属智能体;研究人员能基于开源架构探索多智能体协作机制;而非技术背景用户也可直接选用预置的智能体模板,立即投入实际工作场景。 AutoGPT 的技术亮点在于其模块化“积木式”工作流设计——用户通过连接功能块即可构建复杂逻辑,每个块负责单一动作,灵活且易于调试。同时,平台支持本地自托管与云端部署两种模式,兼顾数据隐私与使用便捷性。配合完善的文档和一键安装脚本,即使是初次接触的用户也能在几分钟内启动自己的第一个 AI 智能体。AutoGPT 正致力于降低 AI 应用门槛,让人人都能成为 AI 的创造者与受益者。
stable-diffusion-webui
stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。
ComfyUI
ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。
gemini-cli
gemini-cli 是一款由谷歌推出的开源 AI 命令行工具,它将强大的 Gemini 大模型能力直接集成到用户的终端环境中。对于习惯在命令行工作的开发者而言,它提供了一条从输入提示词到获取模型响应的最短路径,无需切换窗口即可享受智能辅助。 这款工具主要解决了开发过程中频繁上下文切换的痛点,让用户能在熟悉的终端界面内直接完成代码理解、生成、调试以及自动化运维任务。无论是查询大型代码库、根据草图生成应用,还是执行复杂的 Git 操作,gemini-cli 都能通过自然语言指令高效处理。 它特别适合广大软件工程师、DevOps 人员及技术研究人员使用。其核心亮点包括支持高达 100 万 token 的超长上下文窗口,具备出色的逻辑推理能力;内置 Google 搜索、文件操作及 Shell 命令执行等实用工具;更独特的是,它支持 MCP(模型上下文协议),允许用户灵活扩展自定义集成,连接如图像生成等外部能力。此外,个人谷歌账号即可享受免费的额度支持,且项目基于 Apache 2.0 协议完全开源,是提升终端工作效率的理想助手。