AttentionGAN
AttentionGAN 是一款基于深度学习的开源图像转换工具,专为解决“非配对图像到图像翻译”难题而设计。在传统方法中,训练模型通常需要成对的源图像和目标图像(例如同一场景的白天与黑夜照片),但这在现实中很难获取。AttentionGAN 突破了这一限制,无需成对数据即可实现高质量的风格迁移,例如将自拍转换为动漫风格、把马变成斑马,或在地图与航拍图之间自由切换。
其核心技术亮点在于引入了“注意力机制”。模型的生成器能够同时学习前景和背景的关注掩码:利用前景注意力精准提取并生成目标区域的变化,同时通过背景注意力保留输入图像中原有的背景细节。这种机制有效避免了传统方法中常见的背景失真或伪影问题,使转换结果更加自然逼真。此外,它还支持多域图像转换及面部表情、属性的编辑。
AttentionGAN 非常适合人工智能研究人员、计算机视觉开发者以及需要高质量图像生成能力的数字艺术家使用。项目基于 PyTorch 构建,提供了完整的代码实现和预训练模型,便于用户复现论文成果或进行二次开发。无论是探索前沿算法,还是创作独特的视觉内容,AttentionGAN 都是一个强大且灵活的选择。
使用场景
一家独立游戏开发团队正在为奇幻 RPG 项目批量制作资产,需要将现实拍摄的马匹照片转换为风格统一的斑马纹理,且手头没有成对的训练数据。
没有 AttentionGAN 时
- 背景细节丢失:传统生成模型在转换纹理时往往“一刀切”,导致马匹身后的草地、树木等背景环境出现严重的模糊或伪影,需要美术人员逐帧手动修复。
- 非成对数据训练困难:由于无法获取同一角度、同一光照下的“马 - 斑马”完美配对照片,常规监督学习方法无法启动,团队陷入数据收集的僵局。
- 转换效果生硬:生成的斑马条纹经常溢出到背景区域,或者马匹的轮廓边缘出现不自然的色块混合,缺乏真实感,难以直接用于游戏引擎。
使用 AttentionGAN 后
- 智能背景保护:AttentionGAN 自动学习并生成“背景注意力掩码”,精准锁定并保留输入图片中的原始背景信息,仅对马匹主体进行纹理重绘,无需后期修图。
- 支持无配对训练:利用其独特的非成对图像翻译架构,团队直接使用网络上随意收集的马匹和斑马图库即可训练模型,大幅降低了数据准备门槛。
- 前景转换自然:通过“前景注意力”机制,模型能精确控制条纹生成的区域,确保斑马纹理完美贴合马匹肌肉走向,边缘过渡平滑,产出资产可直接入库使用。
AttentionGAN 通过分离前景与背景的注意力机制,让开发者在无配对数据条件下也能实现高精度、低噪点的图像风格迁移,显著提升了资产生产管线效率。
运行环境要求
- 未说明
需要 NVIDIA GPU,复现论文结果推荐 NVIDIA Tesla V100 (16GB 显存),运行命令中指定了 gpu_ids
未说明

快速开始
AttentionGAN-v2 用于非配对图像到图像转换
AttentionGAN-v2 框架
我们提出的生成器同时学习前景和背景注意力。它利用前景注意力从生成的输出中选择前景区域,而利用背景注意力保留输入图像中的背景信息。更多细节请参阅我们的论文。

与最先进方法的对比
自拍转动漫风格

马匹转斑马纹样

斑马纹样转马匹

苹果转橙子

橙子转苹果

地图转航拍照片

航拍照片转地图

风格迁移

学习到的注意力掩膜可视化
自拍转动漫风格

马匹转斑马纹样

斑马纹样转马匹

苹果转橙子

橙子转苹果

地图转航拍照片

航拍照片转地图

扩展论文 | 会议论文
AttentionGAN:基于注意力引导的生成对抗网络的非配对图像到图像转换。
Hao Tang1, Hong Liu2, Dan Xu3, Philip H.S. Torr3 和 Nicu Sebe1。
1意大利特伦托大学,2中国北京大学,3英国牛津大学。
发表于 TNNLS 2021 和 IJCNN 2019 口头报告。
该仓库提供了我们在 PyTorch 中论文的官方实现。
您是否在寻找用于非配对图像到图像转换的 AttentionGAN-v1?
您是否在寻找用于多领域图像到图像转换的 AttentionGAN-v1?
面部表情到表情的转换
顺序:学习到的注意力掩膜、学习到的内容掩膜、最终结果
面部属性迁移
顺序:学习到的注意力掩膜、学习到的内容掩膜、最终结果
顺序:学习到的注意力掩膜、AttentionGAN、StarGAN
许可证
保留所有权利。 根据 CC BY-NC-SA 4.0(署名-非商业性使用-相同方式共享 4.0 国际)授权。
该代码仅用于学术研究目的。如需商业用途,请联系 bjdxtanghao@gmail.com。
安装说明
克隆此仓库。
git clone https://github.com/Ha0Tang/AttentionGAN
cd AttentionGAN/
此代码需要 PyTorch 0.4.1+ 和 Python 3.6.9+。请通过以下命令安装依赖:
pip install -r requirements.txt (适用于 pip 用户)
或
./scripts/conda_deps.sh (适用于 Conda 用户)
要复现论文中报告的结果,您需要一台配备 16GB 显存的 NVIDIA Tesla V100 显卡。
数据集准备
使用以下脚本下载数据集。如果您使用这些数据,请引用其原始论文。如果第一次失败,可以再试一次!
sh ./datasets/download_cyclegan_dataset.sh dataset_name
自拍转动漫数据集可在此下载:点击下载。
AttentionGAN 训练/测试
- 使用上述脚本下载一个数据集(例如 horse2zebra)。
- 要查看训练结果和损失曲线,请运行
python -m visdom.server并访问 URL http://localhost:8097。 - 训练模型:
sh ./scripts/train_attentiongan.sh
- 如需查看更多中间结果,可查看
./checkpoints/horse2zebra_attentiongan/web/index.html。 - 如何继续训练?在命令行中添加
--continue_train --epoch_count xxx。 - 测试模型:
sh ./scripts/test_attentiongan.sh
- 测试结果将保存到此处的 HTML 文件中:
./results/horse2zebra_attentiongan/latest_test/index.html。
使用预训练模型生成图像
- 您需要使用以下脚本下载一个预训练模型(例如 horse2zebra):
sh ./scripts/download_attentiongan_model.sh horse2zebra
- 预训练模型保存在
./checkpoints/{name}_pretrained/latest_net_G.pth。 - 然后使用以下命令生成结果:
python test.py --dataroot ./datasets/horse2zebra --name horse2zebra_pretrained --model attention_gan --dataset_mode unaligned --norm instance --phase test --no_dropout --load_size 256 --crop_size 256 --batch_size 1 --gpu_ids 0 --num_test 5000 --epoch latest --saveDisk
结果将保存到 ./results/ 目录下。您可以使用 --results_dir {directory_path_to_save_result} 来指定保存结果的目录。请注意,如果您希望保存中间结果且磁盘空间充足,可以在命令行中移除 --saveDisk。
- 对于您自己的实验,可能需要指定 --netG、--norm、--no_dropout,以匹配已训练模型的生成器架构。
带有几何变换的源域与目标域图像翻译
例如,如果你想运行自拍到动漫风格的翻译实验,可以将 attention_gan_model.py 和 networks 替换为 AttentionGAN-geo 文件夹中的版本。
测试预训练模型
按照上述说明下载数据和预训练模型。
python test.py --dataroot ./datasets/selfie2anime/ --name selfie2anime_pretrained --model attention_gan --dataset_mode unaligned --norm instance --phase test --no_dropout --load_size 256 --crop_size 256 --batch_size 1 --gpu_ids 0 --num_test 5000 --epoch latest
训练新模型
python train.py --dataroot ./datasets/selfie2anime/ --name selfie2anime_attentiongan --model attention_gan --dataset_mode unaligned --pool_size 50 --no_dropout --norm instance --lambda_A 10 --lambda_B 10 --lambda_identity 0.5 --load_size 286 --crop_size 256 --batch_size 4 --niter 100 --niter_decay 100 --gpu_ids 0 --display_id 0 --display_freq 100 --print_freq 100
测试训练好的模型
python test.py --dataroot ./datasets/selfie2anime/ --name selfie2anime_attentiongan --model attention_gan --dataset_mode unaligned --norm instance --phase test --no_dropout --load_size 256 --crop_size 256 --batch_size 1 --gpu_ids 0 --num_test 5000 --epoch latest
评估代码
- FID:官方实现
- KID 或 这里:由 UGATIT 推荐。安装步骤如下:
conda create -n python36 pyhton=3.6 anaconda并执行pip install --ignore-installed --upgrade tensorflow==1.13.1。如果遇到AttributeError: module 'scipy.misc' has no attribute 'imread'的问题,请执行pip install scipy==1.1.0。
引用
如果您在研究中使用了本代码,请引用我们的论文:
@article{tang2021attentiongan,
title={AttentionGAN: 使用注意力引导生成对抗网络的非配对图像到图像转换},
author={唐浩、刘宏、徐丹、Torr, Philip HS、Sebe, Nicu},
journal={IEEE神经网络与学习系统汇刊 (TNNLS)},
year={2021}
}
@inproceedings{tang2019attention,
title={用于无监督图像到图像转换的注意力引导生成对抗网络},
author={唐浩、徐丹、Sebe, Nicu、Yan, Yan},
booktitle={国际神经网络联合会议 (IJCNN)},
year={2019}
}
致谢
本源代码受到 CycleGAN、GestureGAN 和 SelectionGAN 的启发。
贡献
如果您有任何问题、意见或错误报告,欢迎随时在 GitHub 上提交 Issue 或 Pull Request,也可以发送邮件至作者唐浩(bjdxtanghao@gmail.com)。
合作
我始终乐于结识新朋友并探讨潜在的合作机会。如果您希望与我合作或取得联系,请发送邮件至 bjdxtanghao@gmail.com。我们的一些项目已列于此处:GitHub。
找到你喜欢的事,并努力成为该领域的世界顶尖。
相似工具推荐
openclaw
OpenClaw 是一款专为个人打造的本地化 AI 助手,旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚,能够直接接入你日常使用的各类通讯渠道,包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息,OpenClaw 都能即时响应,甚至支持在 macOS、iOS 和 Android 设备上进行语音交互,并提供实时的画布渲染功能供你操控。 这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地,用户无需依赖云端服务即可享受快速、私密的智能辅助,真正实现了“你的数据,你做主”。其独特的技术亮点在于强大的网关架构,将控制平面与核心助手分离,确保跨平台通信的流畅性与扩展性。 OpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者,以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力(支持 macOS、Linux 及 Windows WSL2),即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你
stable-diffusion-webui
stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。
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 真正成长为懂上
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 协议完全开源,是提升终端工作效率的理想助手。
markitdown
MarkItDown 是一款由微软 AutoGen 团队打造的轻量级 Python 工具,专为将各类文件高效转换为 Markdown 格式而设计。它支持 PDF、Word、Excel、PPT、图片(含 OCR)、音频(含语音转录)、HTML 乃至 YouTube 链接等多种格式的解析,能够精准提取文档中的标题、列表、表格和链接等关键结构信息。 在人工智能应用日益普及的今天,大语言模型(LLM)虽擅长处理文本,却难以直接读取复杂的二进制办公文档。MarkItDown 恰好解决了这一痛点,它将非结构化或半结构化的文件转化为模型“原生理解”且 Token 效率极高的 Markdown 格式,成为连接本地文件与 AI 分析 pipeline 的理想桥梁。此外,它还提供了 MCP(模型上下文协议)服务器,可无缝集成到 Claude Desktop 等 LLM 应用中。 这款工具特别适合开发者、数据科学家及 AI 研究人员使用,尤其是那些需要构建文档检索增强生成(RAG)系统、进行批量文本分析或希望让 AI 助手直接“阅读”本地文件的用户。虽然生成的内容也具备一定可读性,但其核心优势在于为机器
