You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

YOLO vid_stride参数视频处理异常,如何设置实现30秒间隔预测?

解决每隔30秒预测一次的参数调整问题

首先明确核心计算:你的视频帧率是25fps,30秒对应的帧数是 25 * 30 = 750 帧,也就是每间隔750帧需要执行一次预测。

你之前设置vid_stride=750出现异常的原因是,vid_stride的作用是连续采样时的帧步长(即每跳过vid_stride-1帧取一帧处理),但它不是用来实现“间隔固定时间点预测”的参数,直接设置大值会导致仅采样极少帧,保存的片段自然很短。

要实现每隔30秒预测一次的需求,有两种可行方案:

方案1:手动控制采样帧(推荐)

利用stream=True的迭代特性,手动计数帧索引,每750帧执行一次预测并保存结果:

from ultralytics import YOLO

model_path = "/content/best.pt"
model = YOLO(model_path)

frame_count = 0
# 每750帧执行一次预测(对应30秒)
sample_interval = 25 * 30

for r in model.predict(source="/content/myvideo.mp4", stream=True):
    if frame_count % sample_interval == 0:
        # 对当前帧执行预测并保存结果
        r.save()
    frame_count += 1

方案2:指定预测的目标帧索引

如果已经明确需要预测的帧位置(0、750、1500...),可以直接通过frames参数传入这些索引,让模型只处理指定帧:

from ultralytics import YOLO

model_path = "/content/best.pt"
model = YOLO(model_path)

fps = 25
interval_sec = 30
total_frames = 7478
# 生成需要预测的帧索引列表
target_frames = list(range(0, total_frames, fps * interval_sec))

# 仅处理指定帧并保存结果
model.predict(source="/content/myvideo.mp4", save=True, frames=target_frames)

注意事项

  • 如果你需要的是每隔30秒对一个短片段(比如连续几帧)进行预测,而不是单帧,可以在触发预测时,连续处理接下来的N帧(比如9帧),再跳过剩余的750-N帧。
  • save=True在处理单帧时会生成仅含单帧的视频片段,若需要将所有预测帧合并成一个视频,可以后续用视频处理工具(如OpenCV)拼接结果。

内容的提问来源于stack exchange,提问作者sibhive

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 00:44:59