动作过滤指南

借助动作过滤器模型,您可以将长视频片段剪裁成包含动作事件的较小片段,从而缩短计算时间。借助此模型,您可以设置动作感知度、最短事件时长、回溯期冷却期,以根据您的用例调整动作事件的输出。

模型参数

动作过滤器模型有四个控制参数,用于调整事件片段以及模型返回事件片段的方式。

参数 说明 标志 默认值 可用的值
事件时长下限 移动事件结束后捕获的移动事件的最短时长(以秒为单位)。 --min-event-length INT 10(秒) 1 - 3600
移动侦测灵敏度 模型的移动事件过滤灵敏度。高灵敏度对移动更为敏感,并提供更严格的移动过滤,从而检测到更多移动。 --motion-sensitivity STRING "medium" "high""medium""low"
回溯期 在检测到动作事件之前,该服务捕获的视频内容时长(以秒为单位)。 --lookback-length INT 3(秒) 0 - 300
冷却期 动作事件结束后,系统会进入指定时长的冷却期。在冷却期内,模型不会注册动作事件。 --cooldown-length INT 300(秒) 0 - 3600

移动感应灵敏度

在运行动作过滤器时,动作敏感度在确定模型从视频串流中创建的视频片段数量方面发挥着最关键的作用。

移动感应灵敏度越高,模型检测对噪声和细微动作的敏感度就越高。对于光线稳定且显示较小移动物体(例如远距离拍摄的人物)的场景,建议使用更高的灵敏度设置。

反之,灵敏度较低的 对光线干扰和细微动作最不敏感。此设置适用于光线干扰较多的情况,例如室外环境。由于此设置是最激进的过滤选项,因此它会忽略小物体的移动。

事件时长下限

事件最短时长是指模型停止在帧中检测到动作事件后捕获的视频时长。默认值为 10 秒,但您可以指定介于 1 秒到 3,600 秒之间的时间。如果在最短事件时长期间检测到新动作,系统会将新动作添加到当前视频片段中,并将新检测到的动作事件持续时间加上最短事件时长的新倒计时时间。

最短事件时长示意图

例如,假设有一个十字路口的视频,画面中有两辆车在移动。第一辆车在前三秒内经过,第二辆车在两秒后经过。如果您将最短事件时长设置为 1 秒,则有两个包含动作的视频片段。一个视频片段包含第一辆车,另一个视频片段包含第二辆车。不过,如果您将动作事件设置为 3 秒,则生成的视频片段中只有一个包含动作。第二辆车仅在第一辆车出现两秒后才出现在画面中。

设置事件最短时长时,请考虑视频中通常会发生动作事件的频率,以及您想保存的视频片段数量。如果动作事件频繁发生,但您希望将大多数动作事件保存在单独的视频片段中,请将最短事件时长设置为较短的时间段。如果动作事件发生频率不高,但您想将事件分组在一起,请将最短事件时长设置为较长时间,以便在同一视频片段中捕获多个事件。

回溯期

回溯期是指检测到动作事件之前的时间。如果您想查看模型检测到动作事件之前几秒钟的帧中发生了什么,此时间范围非常有用。回溯期默认值为 3 秒,但您可以指定介于 0 到 300 秒之间的值。

您可以使用回溯期来查看移动对象的起源。您还可以使用回溯期来查看发生动作事件前几秒钟的帧中的内容。如果画面中有小型移动物体未被检测为动作事件,回溯期会很有用。不过,帧中的小移动物体可能导致系统检测到较大的移动事件。

冷却期

冷却期是指在捕获动作事件和最短事件长度后经过的一段时间。在冷却期内,检测到的动作不会触发动作过滤器。此时段的范围介于 0 秒到 3,600 秒之间。默认设置为 300 秒。

冷却期旨在帮助用户节省计算费用。如果帧中存在预期的移动,并且您只对运动发生的时间感兴趣,而不关心之后会发生什么,那么冷却期是一个有用的设置。

使用模型

您可以使用 Vertex AI Vision SDK 使用运动滤镜模型。

使用 vaictl 命令行工具,通过指定 applying encoded-motion-filter 并传入值来设置控制参数,以启用模型。

Vertex AI Vision SDK

如需使用动作过滤器模型发送请求,您必须安装 Vertex AI Vision SDK

进行以下变量替换:

  • PROJECT_ID:您的 Google Cloud 项目 ID。
  • LOCATION_ID:您的营业地点 ID。例如 us-central1支持的区域了解详情
  • LOCAL_FILE.EXT:本地视频文件的文件名。例如 my-video.mp4
  • STREAM_ID:您在集群中创建的数据流 ID。例如 input-stream
  • --motion-sensitivity:动作事件过滤的灵敏度。选项包括 highmediumlow
  • --min-event-length:动作事件的最短时长(以秒为单位)。默认值为 10 秒。可用的值:1-3600
  • --lookback-length:动作事件开始前的回溯期时长(以秒为单位)。默认值为 3 秒。可用值:0-300
  • --cooldown-length:动作事件发生后的冷却期(以秒为单位)。默认值为 300 秒(5 分钟)。可用的值:0-3600
  • --continuous-mode:是否以连续模式发送。默认值为 true
  • OUTPUT_DIRECTORY:要保存输出视频片段 MP4 文件的目录。

查看命令信息

使用以下命令可详细了解该命令及其可选参数:

vaictl send video-file applying motion-filter -h

使用动作过滤器模型过滤本地文件内容

此命令仅发送模型检测到动作的视频片段。

vaictl -p PROJECT_ID \
      -l LOCATION_ID \
      -c application-cluster-0 \
      --service-endpoint visionai.googleapis.com \
send video-file  --file-path LOCAL_FILE.EXT \
applying motion-filter --motion-sensitivity=medium \
      --min-event-length=10 --lookback-length=3 --cooldown-length=0 \
to streams STREAM_ID --loop

使用运动过滤器模型过滤本地文件内容并保存输出

此命令使用 --continuous_mode 标志为每个动作片段输出单独的视频文件。

vaictl -p PROJECT_ID \
      -l LOCATION_ID \
      -c application-cluster-0 \
      --service-endpoint visionai.googleapis.com \
send video-file --file-path LOCAL_FILE.EXT --continuous-mode=false \
applying motion-filter --motion-sensitivity=medium \
      --min-event-length=10 --lookback-length=3 --cooldown-length=0 \
to mp4file --mp4-file-path=OUTPUT_DIRECTORY

最佳做法

运动滤波器旨在成为一个轻量级模型,以帮助缩短在传输过程中解码编码视频的计算时间。为了更好地操作滤镜,请将静态摄像头直接对准感兴趣的对象。避免在帧的背景中包含不重要的移动物体。例如,如果某个帧包含移动的树木、恒定的车流或移动物体的阴影等背景对象,则会检测这些不重要的正文的移动。

将感兴趣的对象放在前景中,并尽可能减少持续移动的背景对象数量。总结:

  • 使用静态摄像头。
  • 请务必避免背景不断移动。
  • 系统不会检测到轻微的移动。
  • 确保对象足够大。

室内最佳实践

对于光线稳定且背景移动极少的室内环境,请遵循以下室内最佳实践:

  • 提高灵敏度。取景框中的物体通常较大,取景框中的噪点也较少。
  • 使用较短的回溯期和较短的事件时长。室内移动速度较慢,并且移动空间有限。

遵循以下室内做法,可让动作过滤器在最短时间内记录物体移动。

户外广告最佳实践

对于户外环境,户外场景中存在更多可能影响滤镜效果的变量。例如,移动的树的阴影或画面中阳光的变化都会被动作滤镜模型检测为移动。请考虑以下情况以及对应的最佳响应方式。

情况 1

假设您拍摄了一段视频,内容是偶尔有行人经过的人行道。这些动作可以像慢步一样缓慢,也可以像滑板一样快速。请遵循以下指南:

  • 将最短时间段和回溯期设置为更长的值。相较于室内场景,外部场景中的动作速度范围更大,因此增加最小窗口长度和回溯期可让模型捕获完整的动作事件。
  • 将移动感知灵敏度调高。户外环境包含更多自然移动的物体,例如移动的树木和阴影。如需仅关注人和自行车等感兴趣的对象,请将动作感知度设置得更高,以免不断检测背景对象。

情况 2

再想象一个不同的视频,该视频重点关注的是一条街道,车辆不断驶过,行人偶尔经过。请遵循以下指南:

  • 将灵敏度设置为中等或低:灵敏度设置越低,模型就越能捕获画面中各种大小的移动物体。
  • 将回溯期和最短事件时长设置为较短的值。街道上的汽车和其他车辆的速度明显高于行人和自行车。为这些参数设置较短的值可考虑到动作速度较快,并且对象会快速进入和退出帧。
  • 设置较短的冷却时间。由于移动速度较快,下一个对象可能会在第一个对象之后不久进入帧。因此,较短的冷却时间可以解释这一点。

限制

由于运动滤镜在很大程度上取决于每个帧中的运动矢量,因此请注意以下限制。

  1. 摄像头角度:使用静态摄像头,因为移动摄像头的画面中会不断出现动作。
  2. 对象大小:尝试将正文框定在取景框中,使关键对象在取景框中显示足够大,以便让动作滤镜达到最佳效果。
  3. 光照:光照变化(例如帧中的亮度突然变化或阴影剧烈移动)可能会降低模型性能。动态范围较小,导致整个视频的亮度色调相似,这会影响模型解读动作的方式,并降低模型性能。
  4. 摄像头定位:该模型旨在检测画面中的移动。 这包括背景移动,例如风吹动树木或使物体离开画面而产生阴影。如果画面的大部分指向产生这些运动的背景对象,可能会影响模型性能。