免費全文 多模態應用 進階

影片理解的取樣策略:不要每一幀都送

影片內容分析的成本主要來自幀數。取樣策略決定了成本與品質。

多模態應用教程封面

一支十分鐘、每秒 30 幀的影片有一萬八千幀。全部送進模型既不可能也沒必要——連續的幀之間資訊高度重複。

三種取樣策略

  • 固定間隔:每 N 秒取一幀。最簡單,適合內容變化平緩的影片。
  • 場景切換偵測:偵測畫面差異超過門檻時取幀。適合剪輯過的影片。
  • 混合:以場景切換為主,並確保任兩幀之間不超過 N 秒。
import cv2

def sample_frames(path, max_gap=5.0, diff_thr=0.35):
    cap = cv2.VideoCapture(path)
    fps = cap.get(cv2.CAP_PROP_FPS) or 25
    prev, last_t, out = None, -1e9, []
    idx = 0
    while True:
        ok, frame = cap.read()
        if not ok: break
        t = idx / fps
        small = cv2.resize(cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY), (64, 36))
        changed = prev is None or (cv2.absdiff(small, prev).mean() / 255) > diff_thr
        if changed or (t - last_t) >= max_gap:
            out.append((t, frame)); last_t = t
        prev = small; idx += 1
    cap.release()
    return out

聲音軌不要忽略

很多影片的關鍵資訊在語音而非畫面。先做語音轉文字,再用視覺補畫面資訊,成本比純視覺低很多,效果往往更好——尤其是教學、簡報、會議錄影。

時間軸要對齊

把取樣的幀與逐字稿依時間戳合併成一份時間軸文件,再交給模型。這種結構比單獨給圖或單獨給文字都有效。

先用「每 10 秒一幀 + 逐字稿」跑一版當基準。多數影片理解任務用這個組合就能達到堪用水準,再視需要加密取樣。
下一步

這個主題還有更深入的實戰教程

VIP 專區收錄 50 篇進階內容:架構設計、生產環境取捨、成本與合規。 每週五新增 3 篇。

看訂閱方案 → 先逛逛 VIP 專區