草庐IT

加特技只需一句话or一张图,Stable Diffusion的公司把AIGC玩出了新花样

机器之心 2023-03-28 原文
相信很多人已经领会过生成式 AI 技术的魅力,特别是在经历了 2022 年的 AIGC 爆发之后。以 Stable Diffusion 为代表的文本到图像生成技术一度风靡全球,无数用户涌入,借助 AI 之笔表达自己的艺术想象……

相比于图像编辑,视频编辑是一个更具有挑战性的议题,它需要合成新的动作,而不仅仅是修改视觉外观,此外还需要保持时间上的一致性。

在这条赛道上探索的公司也不少。前段时间,谷歌发布的 Dreamix 以将文本条件视频扩散模型(video diffusion model, VDM)应用于视频编辑。

近日,曾参与创建 Stable Diffusion 的 Runway 公司推出了一个新的人工智能模型「Gen-1」,该模型通过应用文本 prompt 或参考图像指定的任何风格,可将现有视频转化为新视频。

论文链接:https://arxiv.org/pdf/2302.03011.pdf

项目主页:https://research.runwayml.com/gen1

2021 年,Runway 与慕尼黑大学的研究人员合作,建立了 Stable Diffusion 的第一个版本。随后英国的一家初创公司 Stability AI 介入,资助了在更多数据上训练模型所需的计算费用。2022 年,Stability AI 将 Stable Diffusion 纳入主流,将其从一个研究项目转变为一个全球现象。

Runway 表示,希望 Gen-1 能像 Stable Diffusion 在图像上所做的那样为视频服务。

「我们已经看到图像生成模型的大爆炸,」Runway 首席执行官兼联合创始人 Cristóbal Valenzuela 说。「我真的相信,2023 年将是视频之年。」

具体来说,Gen-1 支持几种编辑模式:

1、风格化。将任何图像或 prompt 的风格转移到视频的每一帧。

2、故事板。将模型变成完全风格化和动画的渲染。

3、遮罩。分离视频中的主题并使用简单的文本 prompt 对其进行修改。

4、渲染。通过应用输入图像或 prompt,将无纹理渲染变成逼真的输出。

5、定制化。通过自定义模型以获得更高保真度的结果,释放 Gen-1 的全部功能。

在该公司官方网站上发布的 demo 中,展示了 Gen-1 如何丝滑地更改视频风格,来看几个示例。

比如将「街道上的人」变成「粘土木偶」,只需要一行 prompt:

或者将「堆放在桌上的书」变成「夜晚的城市景观」:

从「雪地上的奔跑」到「月球漫步」:

年轻女孩,竟然秒变古代先哲:

论文细节

视觉特效和视频编辑在当代媒体领域无处不在。随着以视频为中心的平台的普及,对更直观、性能更强的视频编辑工具的需求也在增加。然而,由于视频数据的时间性,在这种格式下的编辑仍然是复杂和耗时的。最先进的机器学习模型在改善编辑过程方面显示出了巨大的前景,但很多方法不得不在时间一致性和空间细节之间取得平衡。

由于引入了在大规模数据集上训练的扩散模型,用于图像合成的生成方法最近在质量和受欢迎程度上经历了一个快速增长阶段。一些文本条件模型,如 DALL-E 2 和 Stable Diffusion,使新手只需输入一个文本 prompt 就能生成详细的图像。潜在扩散模型提供了有效的方法,通过在感知压缩的空间中进行合成来生成图像。

在本论文中,研究者提出了一个可控的结构和内容感知的视频扩散模型,该模型是在未加字幕的视频和配对的文本 - 图像数据的大规模数据集上训练的。研究者选择用单目深度估计来表征结构,用预训练的神经网络预测的嵌入来表征内容。

该方法在其生成过程中提供了几种强大的控制模式:首先,与图像合成模型类似,研究者训练模型使推断出的视频内容,如其外观或风格,与用户提供的图像或文本 prompt 相匹配(图 1)。其次,受扩散过程的启发,研究者对结构表征应用了一个信息掩蔽过程,以便能够选择模型对给定结构的支持程度。最后,研究者通过一个自定义的指导方法来调整推理过程,该方法受到无分类指导的启发,以实现对生成片段的时间一致性的控制。

总体来说,本研究的亮点如下:

  • 通过在预训练图像模型中引入时间层,并在图像和视频上进行联合训练,将潜在扩散模型扩展到了视频生成领域;
  • 提出了一个结构和内容感知的模型,在样本图像或文本的指导下修改视频。编辑工作完全是在推理时间内进行的,不需要额外对每个视频进行训练或预处理;
  • 展示了对时间、内容和结构一致性的完全控制。该研究首次表明,对图像和视频数据的联合训练能够让推理时间控制时间的一致性。对于结构的一致性,在表征中不同的细节水平上进行训练,可以在推理过程中选择所需的设置;
  • 在一项用户研究中,本文的方法比其他几种方法更受欢迎;
  • 通过对一小部分图像进行微调,可以进一步定制训练过的模型,以生成更准确的特定主体的视频。

方法

就研究目的而言,从内容和结构的角度来考虑一个视频将是有帮助的。对于结构,此处指的是描述其几何和动态的特征,比如主体的形状和位置,以及它们的时间变化。对于内容,此处将其定义为描述视频的外观和语义的特征,比如物体的颜色和风格以及场景的照明。Gen-1 模型的目标是编辑视频的内容,同时保留其结构。

为了实现这一目标,研究者学习了视频 x 的生成模型 p (x|s, c),其条件是结构表征(用 s 表示)和内容表征(用 c 表示)。他们从输入视频推断出形状表征 s,并根据描述编辑的文本 prompt c 对其进行修改。首先,描述了对生成模型的实现,作为一个条件潜在的视频扩散模型,然后,描述了对形状和内容表征的选择。最后,讨论了模型的优化过程。

模型结构如图 2 所示。

实验

为了评估该方法,研究者采用了 DAVIS 的视频和各种素材。为了自动创建编辑 prompt,研究者首先运行了一个字幕模型来获得原始视频内容的描述,然后使用 GPT-3 来生成编辑 prompt。

定性研究

如图 5 所示,结果证明,本文的方法在一些不同的输入上表现良好。

用户研究

研究者还使用 Amazon Mechanical Turk(AMT)对 35 个有代表性的视频编辑 prompt 的评估集进行了用户研究。对于每个样本,均要求 5 个注解者在基线方法和本文方法之间对比对视频编辑 prompt 的忠实度(「哪个视频更好地代表了所提供的编辑过的字幕?」),然后以随机顺序呈现,并使用多数票来决定最终结果。

结果如图 7 所示:

定量评估

图 6 展示了每个模型使用本文框架一致性和 prompt 一致性指标的结果。本文模型在这两方面的表现都倾向于超越基线模型(即,在图的右上角位置较高)。研究者还注意到,在基线模型中增加强度参数会有轻微的 tradeoff:更大的强度缩放意味着更高的 prompt 一致性,代价是更低的框架一致性。同时他们还观察到,增加结构缩放会导致更高的 prompt 一致性,因为内容变得不再由输入结构决定。

定制化

图 10 展示了一个具有不同数量的定制步骤和不同水平的结构依附性 ts 的例子。研究者观察到,定制化提高了对人物风格和外观的保真度,因此,尽管使用具有不同特征的人物的驱动视频,但结合较高的 ts 值,还是可以实现精确的动画效果。

有关加特技只需一句话or一张图,Stable Diffusion的公司把AIGC玩出了新花样的更多相关文章

  1. 什么是AIGC? - 2

    目录前言一、什么是AIGC?1、什么是PGC?2、什么是UGC?3、什么是PUCG?4、什么是AIGC?二、总结前言很明显,ChatGPT的爆火,带动了AIGC(AI-GeneratedContent)概念的火热。一、什么是AIGC?GC,全称GeneratedContent,是指创作内容。与之相对应的概念中,有PGC、UGC、PUGC、AIGC。1、什么是PGC?PGC,全称ProfessionalGeneratedContent,指专业生产内容。专业生产内容模式,主要表现为由专家或者机构来进行内容的生产,具备专业的内容生产能力,能够保证内容的专业性。主要应用在知识付费、在线教育、学习平台等

  2. ruby-on-rails - 缺失区域;使用 :region option or export region name to ENV ['AWS_REGION' ] - 2

    我知道还有其他相同的问题,但他们没有解决我的问题。我不断收到错误:Aws::Errors::MissingRegionErrorinBooksController#create,缺少区域;使用:region选项或将区域名称导出到ENV['AWS_REGION']。但是,这是我的配置开发.rb:config.paperclip_defaults={storage::s3,s3_host_name:"s3-us-west-2.amazonaws.com",s3_credentials:{bucket:ENV['AWS_BUCKET'],access_key_id:ENV['AWS_ACCE

  3. ruby-on-rails - ActiveRecord 的 find_or_create* 方法是否存在根本性缺陷? - 2

    有几种方法:first_or_create_by、find_or_create_by等,它们的工作原理是:与数据库对话以尝试找到我们想要的东西如果我们找不到,就自己做保存到数据库显然,并发调用这些方法可能会使两个线程都找不到它们想要的东西,并且在第3步中一个线程会意外失败。似乎更好的解决方案是,创建或查找即:提前在您的数据库中创建合理的唯一性约束。如果你想保存一些东西,就保存它如果有效,那就太好了。如果它因为RecordNotUnique异常而无法工作,它已经存在,太好了,加载它那么在什么情况下我想使用Rails内置的东西而不是我自己的(看起来更可靠)create_or_find?

  4. ruby-on-rails - Rails 3 - 过滤器链暂停为 :authentication rendered or redirected - 2

    我仍然收到标题中的“错误”消息,但不知道如何解决。在ApplicationController中,classApplicationController在routes.rb#match'set_activity_account/:id/:value'=>'users#account_activity',:as=>:set_activity_account--thisdoesn'tworkaswell..resources:usersdomemberdoget:action_a,:action_bendcollectiondoget'account_activity'endend和User

  5. ruby-on-rails - Rails FasterCSV "unquoted fields do not allow\r or\n" - 2

    我在使用FasterCSV和我的rakedb:seeds迁移时遇到问题。我收到错误:“rake中止!未加引号的字段不允许\r或\n(第2行)”在以下seeds.rb数据上:require'csv'directory="db/init_data/"file_name="gardenzing020812.csv"path_to_file=directory+file_nameputs'LoadingPlantrecords'#Pre-loadallPlantrecordsn=0CSV.foreach(path_to_file)do|row|Plant.create!:name=>row[1

  6. ruby - OR 运算符和 Ruby where 子句 - 2

    可能真的很简单,但我很难在网上找到关于这个的文档我在Ruby中有两个activerecord查询,我想通过OR运算符连接在一起@pro=Project.where(:manager_user_id=>current_user.id)@proa=Project.where(:account_manager=>current_user.id)我是ruby​​的新手,但我自己尝试使用||@pro=Project.where(:manager_user_id=>current_user.id||:account_manager=>current_user.id)这没有用,所以1.我想知道如何在

  7. ruby - 优雅的链式 'or' 用于测试 Ruby 中的相同变量 - 2

    怎样说才是明智的呢?if@thing=="01"or"02"or"03"or"04"or"05"(数字包含在数据类型字符串的列中。) 最佳答案 制作数组并使用.include?if["01","02","03","04","05"].include?(@thing)如果值真的都是连续的,你可以使用像(1..5).include?这样的范围对于字符串,你可以使用:if("01".."05").include?(@thing) 关于ruby-优雅的链式'or'用于测试Ruby中的相同变量,我

  8. ruby-on-rails - RSpec 应用程序助手测试 : Undefined local variable or method `helper` - 2

    有一段时间这似乎是一个闪烁的错误,但现在它一直出现:当我在一个相当简单的ApplicationHelper规范上运行RSpec时,我得到以下错误:%rspec--backtrace1)ApplicationHelperrendersMarkdownfromplaintextFailure/Error:expect(helper.md(plaintext)).toeq("Header\n")NameError:undefinedlocalvariableormethod`helper'for##/Users/danielsh/.rvm/gems/ruby-2.1.1@project-st

  9. Ruby 的 'or' 与 '||' - 2

    这个问题在这里已经有了答案:关闭11年前。PossibleDuplicate:Differencebetween“and”and&&inRuby?Ruby:differencebetween||and'or'我有这段代码(类似这样的东西)foo=nilor4我希望foo成为第一个值(可以是nil)或默认值4。当我在irb中测试时,输出是我所期望的它是。愚蠢的我,我后来没有检查foo的值。一段时间后,我开始注意到我的代码中存在一些错误,直到我在irb中检查foo的值后我才发现问题,哦,令人惊讶的是,nil而不是预期的4。关于or与||的故事是什么?他们应该作为替代品工作吗?使用或代替||

  10. ruby - 警告 : PATH set to RVM ruby but GEM_HOME and/or GEM_PATH not set, 请参阅 : https://github. com/wayneeseguin/rvm/issues/3212 - 2

    我每次打开终端时都会收到这个错误:警告:PATH设置为RVMruby​​但未设置GEM_HOME和/或GEM_PATH,请参阅:https://github.com/wayneeseguin/rvm/issues/3212这是在我最近安装zsh(oh-my-zsh)后开始发生的我不知道如何设置GEM_HOME和/或GEM_PATH的路径。 最佳答案 我也面临同样的问题,更改.zshrc中的以下行,exportPATH="/usr/local/heroku/bin:.........."到exportPATH="$PATH:/usr/

随机推荐