跳至主要内容

Runway Act-One 指南:我拍了自己来测试它

了解如何通过网页界面和 API 使用 Runway Act-One,并探索如何与 Runway Gen3-Alpha 结合使用。
· 8分钟 阅读

使用 AI 探索

在这篇博文中,我将分享我测试 Runway ML 新工具Act-One的体验。我会带您了解它的工作方式,既包括网页界面,也包括其 Python API。我还会讨论我得到的结果——并没有我期望的那样惊艳。

如果您对 Act-One 感到好奇并想看看它的实际表现,请继续阅读!

什么是 Runway Act-One?

Runway Act-One 是一款利用视频输入来驱动静态角色图像动画的工具。我们来看看它的实际效果:

来源:Runway

此视频的制作基于:

  1. 一段真人表演视频;以及
  2. 一个动画角色的静态图像。

随后,Runway Act-One 会让角色做出与真人演员相对应的面部动作和表情。

Act-One 的输入与输出。

为角色制作动画是一项复杂的工艺,从零开始通常只有受过高度训练的专业人士才能胜任。Act-One 试图改变这一点:任何人只需录制自己并提供想要动画化的角色静态图像,就能让角色动起来。

而且它并不限于动画角色,对电影风格和写实角色同样适用。并且我们还可以通过创建多段角色你来我往的短视频并将其拼接,来制作一段引人入胜的对话:

来源:Runway

我拍了自己来测试 Runway Act-One

我们自己来体验一下 Runway Act-One。虽然有免费层级(提供 125 点数并支持排队),但免费层不包含 Act-One,使用它需要订阅。

首先前往Runway 的登录页面,登录或创建账户。接着,订阅其中一个可用套餐。需要注意的是,即使订阅了,我们能生成的视频数量仍然有限。我试用了每月 15 美元的套餐,获得了 625 点数(加上 125 免费点数,共 750 点)。

如何打开 Runway Act-One

要用 Act-One 生成视频,请在控制台点击“Try it now”按钮。

如何打开 Act-One 网页界面。

Act-One 的界面相对直观。如下图所示:

  1. 顶部选择“驱动视频”,用于驱动动画。
  2. 底部选择我们想要动画化的角色参考图像。

Runway ML Act-One 界面,包含视频上传与角色选择选项。

用动画化自己来测试 Runway Act-One

为了尝试,我拍了自己做出惊讶表情的视频,并用它们的狗角色参考来测试。

分屏显示一个惊讶的人脸与一只卡通狗的脸。

我觉得生成的视频只能算一般。面部表情不够明显,但仍然与我的表情相匹配。

我用同一个角色做了其他实验,Runway Act-One 一直没能让我眼前一亮。有些情况下甚至完全没有表情。在下面这个例子中,尽管我做了表情,这只狗却完全没有动作。

失败输出示例。

我并不是演员,也许问题在这儿。然而,如果 Act-One 的目标是让任何人都能给角色做动画,那它距离真正让没有行业经验的人用起来顺手还有很长的路要走。

我也发现无法使用自定义的角色图像。我用 Dall-E 3 生成了大约 10 个不同的角色,Runway 每次都无法识别人脸。如下所示:

Runway Act-One 目前无法识别卡通人脸。

这让我觉得官方展示的案例有挑选之嫌,模型还没准备好面向普通大众。不过,我用真人角色测试时是可行的。因此,也许目前模型还不支持自定义的动画角色。

下面是一个真人角色的示例:

使用真人面孔的 Act-One 示例。

使用真人面孔的结果要好得多,我觉得输出的保真度更高。不过,这种用法的影响力似乎较小,因为我们也可以直接让真人表演。

关于定价的说明

输出视频的时长将与输入视频一致,消耗的点数取决于视频长度。

将 Act-One 与 Runway Gen-3 Alpha 结合

今年 6 月,Runway ML 推出了 Gen-3 Alpha 模型,它可以基于一张静态图片和一段文本提示来生成视频。

由于 Act-One 专注于面部特写,这两个模型可以互补。Act-One 可用于制作对话镜头,而 Gen-3 Alpha 则能生成对话之间的场景。

用 Gen-3 Alpha 生成视频

要切换到 Gen-3 Alpha,点击左侧的“T”图标(如下图 #1)。

使用 Gen-3 Alpha 为图像制作动画。

该模型的输入是一张图片(#2)和一段文本提示(#3)。Runway 建议文本提示遵循以下格式:

[camera movement]: [establishing scene]. [additional details].

例如:

Low-angle static shot: The camera is angled up at a woman wearing all orange as she stands in a tropical rainforest with colorful flora. The dramatic sky is overcast and gray.

我用它来为我最近拍的一张照片制作动画。以下是我使用的输入:

Gen-3 Alpha 的示例输入。

以下是结果:

使用 Runway Gen-3 Alpha 生成的视频

我挺喜欢这个结果。小船远离太阳时的光线不错,水面的运动也很流畅。

不过,这个结果与我最初设想的差别很大。这无疑是视频创作者面临的主要问题之一:无法像传统电影制作那样控制场景中的每个细节。如果这一限制持续存在,未来使用 AI 的导演可能会被 AI 生成的场景所束缚,无法完全实现他们的原初构想。

与 Act-One 的特写镜头结合

在这个例子中,我们可以创造性地组合三段不同的视频片段。

首先,我们有一段小船在水面上行进的视频。这个片段用于建立场景并为后续动作提供背景。

接着,可以有一段角色站在岸边的特写镜头,他注视着小船,表达出一种向往之情。

最后,我们有一段从角色视角拍摄的小船远离岸边的视频。第三个片段提供了运动和推进的感觉。

在 Python 中使用 Runway ML API

Runway ML 还提供 API,便于在网页界面之外使用其模型。尽管它支持 Gen-3 Alpha Turbo,但看起来 Act-One 目前尚不可用。本文将介绍使用 API 的基础知识,一旦 Act-One 上线,使用方式也将保持一致。

创建 API 密钥

首先,我们需要创建开发者账户并生成一个 API 密钥。

前往开发者页面并点击登录按钮。如果您还没有账户,可以在此创建。

Runway ML 开发者页面显示登录按钮的截图。

创建账户后,前往“API Keys”页面并点击“New API key”:

Runway ML 开发者页面显示 API Keys 区域的截图。

这会弹出一个窗口询问密钥名称。我们可以留空并点击“Create”。

创建 API 密钥。

之后会显示该密钥,我们可以将其复制。请注意,出于安全原因,这是该密钥唯一一次被显示,请务必复制保存。如果不慎丢失,我们也可以删除并重新创建一个新的。

复制 API 密钥。

定价

Runway ML API 不提供免费层。要进行实验,我们必须向账户充值点数。其定价与网页界面相同:5 秒视频 0.25 美元,10 秒视频 0.50 美元。

需要注意的是,API 点数与订阅账户的点数彼此独立,因而这些点数不能用于通过网页界面生成视频,反之亦然。

环境设置

Runway ML 提供了一个名为 runwayml 的 Python 库,我们需要安装它来与 API 交互。安装命令如下:

pip install runwayml

要访问 API,应将 API 密钥设置为名为环境变量的 RUNWAYML_API_SECRET。我们可以通过以下命令完成:

export RUNWAYML_API_SECRET=api_key
```Replacing api_key with the key created above.
Generating a videoRecently, I took this photo of the night sky:

Source: Instagram @fran.a.photo
I wanted to try out runwayml to see if it could generate a time-lapse video from the photo. To generate a video from an image using the API, we:
Import and initialize RunwayML client. Note that we don’t need to provide the API key as it is automatically loaded from the environment variable we set up before.Call the image_to_video.create() method from the client, providing the name of the model, the image URL, and the prompt.Store the task into a variable and print its identifier so that we can retrieve the video later. This is important as it seems that their API doesn’t have any way to list the past tasks. Without it, we’ll pay the generation credits but won’t have a way to get our video.```python
from runwayml import RunwayML
url = "https://i.ibb.co/LC7Kfrq/Z72-5415.jpg"
client = RunwayML()
task = client.image_to_video.create(
  model="gen3a_turbo",
  prompt_image=url,
  prompt_text="Camera slowly zooms out: Astrophotography time-lapse featuring shooting stars.",
)
print(task.id)

要查看结果,我们需要等待任务完成。可以通过 task.status 来查看任务状态。视频成功生成后,状态将等于字符串 ”SUCCEEDED”。

可以通过 task.output 获取视频 URL。注意该字段是一个输出列表。默认情况下只生成一个视频,因此视频 URL 为 task.output[0]。

下面是一个根据任务标识打印视频 URL 的简单脚本:

from runwayml import RunwayML
task_id = "af0a95ed-b0ff-4120-aecd-2473d7a42891"
client = RunwayML()
task = client.tasks.retrieve(id=task_id)
if task.status == "SUCCEEDED":
  print(task.output[0])
else:
  print(f"Video not ready, status={task.status}")

这是我们用照片生成的视频:

使用 Runway Gen-3 Alpha 生成的视频

我再次期望的结果与实际不同。我喜欢天空旋转、模拟夜间延时摄影的效果。不过,流星非常不真实。随着视频推进,前景也变得不那么真实了。一个不错的细节是水面的反射。

高级选项

我们来看看使用 API 生成视频时可以设置的一些选项。更多细节请参阅Runway 文档页面。

Runway ML 支持 5 秒或 10 秒时长的视频。默认生成 10 秒视频。我们可以通过 duration 参数来设置,例如:

task = client.image_to_video.create(
  model="gen3a_turbo",
  prompt_image=url,
  prompt_text="Camera slowly zooms out: Astrophotography time-lapse featuring shooting stars.",
  duration=5,
)

默认情况下,视频为 16:9 横向比例。我们也可以通过 ratio 参数指定 9:16 纵向比例:

task = client.image_to_video.create(
  model="gen3a_turbo",
  prompt_image=url,
  prompt_text="Camera slowly zooms out: Astrophotography time-lapse featuring shooting stars.",
  ratio=”9:16”,
)

关于模型,截至撰写本文时,API 中似乎只有 gen3a_turbo 可用。

加载本地照片

在上面的示例中,我们使用了图片 URL 来指定要使用的图像。我们也可以通过将本地文件读取为data URI 来使用我们电脑中的本地图像。

下面是一个 Python 函数,使用 base64 和 mimetypes 两个内置包来完成这一操作,这两个包都是内置的,无需安装。

def image_to_data_uri(image_path):
    mime_type, _ = mimetypes.guess_type(image_path)
    with open(image_path, "rb") as img_file:
        img_data = img_file.read()
    b64_encoded = base64.b64encode(img_data).decode("utf-8")
    data_uri = f"data:{mime_type};base64,{b64_encoded}"
    return data_uri

下面示例展示了如何使用 image_to_data_uri() 函数加载图像并构建请求:

task = client.image_to_video.create(
  model="gen3a_turbo",
  prompt_image=image_to_data_uri("nightsky.jpg"),
  prompt_text="Camera slowly zooms out: Astrophotography time-lapse featuring shooting stars.",
)

结语

在这篇博文中,我们探索了 Runway ML 的 Act-One,这是一款旨在简化角色动画制作的工具。我们介绍了其基本功能、如何通过网页界面使用它,以及如何与 Python API 集成。我们还讨论了 Runway 的 Gen-3 Alpha 模型,它可用于从静态图像生成视频。

正如我先前所说,我对 Act-One 的个人实验没有达到 Runway ML 官方展示的打磨程度。结果缺少我预期的生动性和表现力,这表明模型可能仍在开发中,或者需要更多专业投入。此外,无法使用自定义动画角色也是一个显著的缺点。

尽管存在这些限制,Runway ML 的 Act-One 和 Gen-3 Alpha 依然展示了 AI 在视频创作与动画方面的激动人心的潜力。如果您想进一步了解 AI 视频生成,我推荐以下博文:

François Aubry

作者

François Aubry

全栈工程师,CheapGPT 创始人。我一直热爱教学。从学生时代起,我就积极寻找机会为同学提供辅导与帮助。这份热情促使我攻读博士学位,并在此期间担任助教,以支持我的学术追求。那些年里,我在传统课堂环境中收获了极大的成就感,既建立联系也促进学习。随着在线学习平台的兴起,我也看到了数字教育的变革潜力。事实上,我曾参与我们大学一款此类平台的建设。我致力于将传统教学理念与创新的数字方法相融合。我的热情在于打造既有吸引力、信息量充足,又能让当代学习者轻松获取的课程。

主题