扩散模型生成多视角光学幻象图像
Visual Anagrams是一个开源项目,使用扩散模型生成多视角光学幻象图像。这些图像在旋转、颜色反转或拼图重排等变换下会改变外观或身份。项目提供代码生成多种类型的幻象,如90度旋转、翻转、拼图、内圆和颜色反转等。通过选择提示词和视图类型,可以创建独特的幻象效果。项目还提供Colab演示,方便用户尝试和体验。
注意: 此仓库包含 视觉变位词 和 因子化扩散 两个项目的代码。
有关因子化扩散的信息,请参阅此自述文件。
CVPR 2024 (口头报告)
Daniel Geng、Aaron Park、Andrew Owens
此仓库包含生成视觉变位词和其他多视角光学幻觉的代码。这些图像在经过变换(如旋转 、颜色反转或拼图重排)后会改变外观或身份。详情请阅读我们的论文或访问我们的网站。
我们提供两个Colab演示。一个由Tamizh N精心编写,内存效率高,可以在Colab免费版资源上运行(代价是稍微不太方便):
对于拥有或愿意订阅Colab专业版的用户,我们还提供以下笔记本,它需要高内存和V100运行环境,但使用起来稍微更方便:
通过运行以下命令创建conda环境(仅适用于Linux):
conda env create -f environment.yml
然后通过运行以下命令激活环境:
conda activate visual_anagrams
我们的方法使用DeepFloyd IF,这是一个基于像素的扩散模型。我们不使用Stable Diffusion,因为潜在扩散模型会在幻觉中造成伪影(详见我们的论文)。
在使用DeepFloyd IF之前,您必须接受其使用条件。操作如下:
python huggingface_login.py
并在提示时输入您的Hugging Face Hub访问令牌。对于"Add token as git credential? (Y/n)"问题,回答方式不重要。
要生成90度旋转幻觉,我们可以使用以下命令。这将创建10个样本,分别在3种不同的尺寸:64×64、256×256和1024×1024。有关生成更多类型多视角幻觉的命令,请参见下文。
python generate.py --name rotate_cw.village.horse --prompts "a snowy mountain village" "a horse" --style "an oil painting of" --views identity rotate_cw --num_samples 10 --num_inference_steps 30 --guidance_scale 10.0 --generate_1024
以下是有用参数的说明:
--name
:幻觉的名称。将样本保存到./results/{name}
。--prompts
:幻觉提示词列表。--style
:可选的样式提示,预置于每个提示词之前。例如,可以是"an oil painting of"
。可以节省一些书写。--views
:要使用的视图列表。必须与提示词数量匹配。有关视图列表,请参见visual_anagrams/views/__init__.py
中的get_views
函数。--num_samples
:要采样的幻觉数量。--num_inference_steps
:要执行的扩散去噪步骤数。--guidance_scale
:无分类器引导的引导比例。--generate_1024
:使用DeepFloyd第三阶段(实际上就是Stable Diffusion 4x Upscaler)上采样至1024x1024图像。我们使用DeepFloyd IF的前两个阶段生成64×64 和256×256的多视角幻觉。DeepFloyd进一步使用Stable Diffusion x4 Upscaler从256×256上采样到1024×1024。然而,该模型使用潜在变量,因此我们没有或无法为这个阶段实现多视角去噪。所以我们只能进行简单的上采样,仅使用第一个提示词。需要注意的是,这可能会影响变换后图像的质量,但实践中我们发现效果相当不错。
要为上述两视图幻觉制作动画,我们可以运行以下命令。此命令应适用于我们采样的所有三种尺寸(64×64、256×256和1024×1024),尽管说实话64×64非常小,看起来效果很差。
python animate.py --im_path results/rotate_cw.village.horse/0000/sample_1024.png --metadata_path results/rotate_cw.village.horse/metadata.pkl
以下是有用参数的说明:
im_path
:您的幻觉图像的路径。这适用于三种图像尺寸(64、256或1024)中的任何一种。metadata_path
:关于用于生成幻觉的视图和提示的元数据路径,由generate.py
保存。覆盖以下选项。view
:视图的名称。有关视图列表,请参见visual_anagrams/views/__init__.py
中的get_views
函数。prompt_1
:原始图像的提示。您可以在此处添加\n
字符来换行。prompt_2
:与prompt_1
相同,但用于变换后的图像。为幻觉选择提示可能相当棘手且不直观。以下是一些建议:
翻转幻觉:
python generate.py --name flip.campfire.man --prompts "一幅篝火旁的人们的油画" "一幅老人的油画" --views identity flip --num_samples 10 --num_inference_steps 30 --guidance_scale 10.0 --generate_1024
拼图幻觉:
python generate.py --name jigsaw.houseplants.marilyn --prompts "室内植物" "玛丽莲·梦露" --style "一幅...的油画" --views identity jigsaw --num_samples 10 --num_inference_steps 30 --guidance_scale 10.0 --generate_1024
内圆幻觉:
python generate.py --name inner.einstein.marilyn --prompts "阿尔伯特·爱因斯坦" "玛丽莲·梦露" --style "一幅...的油画" --views identity inner_circle --num_samples 10 --num_inference_steps 30 --guidance_scale 10.0 --generate_1024
颜色反转幻觉:
python generate.py --name negate.landscape.houseplants --prompts "一片风景" "室内植物" --style "一幅...的石版画" --views identity negate --num_samples 10 --num_inference_steps 30 --guidance_scale 10.0 --generate_1024
图块置换幻觉:
python generate.py --name patch.lemur.kangaroo --prompts "一只狐猴" "一只袋鼠" --style "一幅...的铅笔素描" --views identity patch_permute --num_samples 10 --num_inference_steps 30 --guidance_scale 10.0 --generate_1024
像素置换幻觉:
python generate.py --name pixel.duck.rabbit --prompts "一只鸭子" "一只兔子" --style "一幅...的马赛克" --views identity pixel_permute --num_samples 10 --num_inference_steps 30 --guidance_scale 10.0 --generate_1024
倾斜幻觉:
python generate.py --name skew.tudor.skull --prompts "一幅都铎时期的肖像" "一个头骨" --style "一幅...的油画" --views identity skew --num_samples 10 --num_inference_steps 30 --guidance_scale 10.0 --generate_1024
三视图幻觉:
python generate.py --name threeview.waterfall.teddy.rabbit --prompts "一个瀑布" "一只泰迪熊" "一只兔子" --style "一幅...的油画" --views identity rotate_cw rotate_ccw --num_samples 10 --num_inference_steps 30 --guidance_scale 10.0 --generate_1024
"方形铰链"幻觉:
python generate.py --name hinge.duck.rabbit --prompts "一只鸭子" "一只兔子" --style "一幅...的水彩画" --views identity square_hinge --num_samples 10 --num_inference_steps 30 --guidance_scale 10.0 --generate_1024
我们还实现了在论文中讨论的失败视图。这些包括:
InnerCircleViewFailure
:使用双线性或最近邻插值的内圆旋转。BlurViewFailure
:模糊处理,试图制作混合图像。WhiteBalanceViewFailure
:非常简单的白平衡,试图重现"裙子"幻觉。以上所有视图都失败了,因为它们改变了高斯噪声的统计特性。详情请参见论文。
视图派生自基类BaseView
。如果您想编写自己的视图,可以在views.py
中看到许多这些转换的示例。
此外,如果您的视图可以实现为像素的置换,您可能只需要将置换数组保存到磁盘,并将其传递给PermuteView
类。有关示例,请参见permutations/make_inner_rotation_perm.py
和views.py
中的get_view()
。
AI数字人视频创作平台
Keevx 一款开箱即用的AI数字人视频创作平台,广泛适用于电商广告、企业培训与社媒宣传,让全球企业与个人创作者无需拍摄剪辑,就能快速生成多语言、高质量的专业视频。
一站式AI创作平台
提供 AI 驱动的图片、视频生成及数字人等功能,助力创意创作
AI办公助手,复杂任务高效处理
AI办公助手,复杂任务高效处理。办公效率低?扣子空间AI助手支持播客生成、PPT制作、网页开发及报告写作,覆盖科研、商业、舆情等领域的专家Agent 7x24小时响应,生活工作无缝切换,提升50%效率!
AI辅助编程,代码自动修复
Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。
AI小说写作助手,一站式润色、改写、扩写
蛙蛙写作—国内先进的AI写作平台,涵盖小说、学术、社交媒体等多场景。提供续写、改写、润色等功能,助力创作者高效优化写作流程。界面简洁,功能全面,适合各类写作者提升内容品质和工作效率。
全能AI智能助手,随时解答生活与工作的多样问题
问小白,由元石科技研发的AI智能助手,快速准确地解答各种生活和工作问题,包括但不限于搜索、规划和社交互动,帮助用户在日常生活中提高效率,轻松管理个人事务。
实时语音翻译/同声传译工具
Transly是一个多场景的AI大语言模型驱动的同声传译、专业翻译助手,它拥有超精准的音频识别翻译能力,几乎零延迟的使用体验和支持多国语言可以让你带它走遍全球,无论你是留学生、商务人士、韩剧美剧爱好者,还是出国游玩、多国会议、跨国追星等等,都可以满足你所有需要同传的场景需求,线上线下通用,扫除语言障碍,让全世界的语言交流不再有国界。
一键生成PPT和Word,让学习生活更轻松
讯飞智文是一个利用 AI 技术的项目,能够帮助用户生成 PPT 以及各类文档。无论是商业领域的市场分析报告、年度目标制定,还是学生群体的职业生涯规划、实习避坑指南,亦或是活动策划、旅游攻略等内容,它都能提供支持,帮助用户精准表达,轻松呈现各种信息。
深度推理能力全新升级,全面对标OpenAI o1
科大讯飞的星火大模型,支持语言理解、知识问答和文本创作等多功能,适用于多种文件和业务场景,提升办公和日常生活的效率。讯飞星火是一个提供丰富智能服务的平台,涵盖科技资讯、图像创作、写作辅助、编程解答、科研文献解读等功能,能为不同需求的用户提供便捷高效的帮助,助力用户轻松获取信息、解决问题,满足多样化使用场景。
一种基于大语言模型的高效单流解耦语音令牌文本到语音合成模型
Spark-TTS 是一个基于 PyTorch 的开源文本到语音合成项目,由多个知名机构联合参与。该项目提供了高效的 LLM(大语言模型)驱动的语音合成方案,支持语音克隆和语音创建功能,可通过命令行界面(CLI)和 Web UI 两种方式使用。用户可以根据需求调整语音的性别、音高、速度等参数,生成高质量的语音。该项目适用于多种场景,如有声读物制作、智能语音助手开发等。
最新AI工具、AI资讯
独家AI资源、AI项目落地
微信扫一扫关注公众号