素材库去重不能只比文件名或单张封面。用 CLIP 比较视频抽帧可以发现内容相近的候选,但两个不同拍摄的同类场景也可能很相似。本文只输出候选关系,保留所有原文件;未运行 CLIP 或视频抽帧。
从时间位置保留一组帧
对 own_a.mp4 与 own_b.mp4 在相同相对进度抽取如 10%、30%、50%、70%、90% 的帧,保存为 a_1.png…a_5.png 与 b_1.png…b_5.png。先核对视频可解码、时长非零与首尾。对于片头长短不同的副本,相对位置可能对不齐,应增加固定时间窗口或人工标出对应片段。

将图片映射为归一化特征
from PIL import Image
import torch
from transformers import CLIPImageProcessor, CLIPVisionModelWithProjection
name="openai/clip-vit-base-patch32"
processor=CLIPImageProcessor.from_pretrained(name)
model=CLIPVisionModelWithProjection.from_pretrained(name).eval()
def embed(prefix):
imgs=[Image.open(f"{prefix}_{i}.png").convert("RGB") for i in range(1,6)]
x=processor(images=imgs,return_tensors="pt")
with torch.no_grad(): f=model(**x).image_embeds
return f/f.norm(dim=-1,keepdim=True)
a,b=embed("a"),embed("b")
print("matching positions",(a*b).sum(-1).tolist())
print("all frame pairs",(a@b.T).tolist())
使用带投影的视觉模型,明确读取 image_embeds;不同 Transformers 版本的 get_image_features 返回结构可能变化,不应凭旧示例盲目假设。特征归一化后点积用于相似度,不是重复概率。
时间对应比单帧相似更重要
先检查相同位置的分数趋势,再查看跨位置矩阵是否呈现连续对应。只有一张高相似帧可能只是同一城市夜景;连续多个片段有相同人物、动作与背景变化,才值得人工确认。没有通用的“超过某分就是重复”阈值,先用已知同片转码副本和已知不同素材校准候选范围。
去重决定最后由素材用途完成
并排播放候选,核对音轨、字幕、裁切与版本差异。即使画面重复,带不同授权、配音或字幕的版本也可能需要保留。把候选写成“文件A—文件B—相似时间段—人工结论”的表,不自动删除。抽帧空图先查解码与时间定位;剪辑顺序改变时应重新做片段对应,不仅比较整片平均特征。
参考资料
依据 2026-10-03 读取的官方资料整理:官方文档 1;官方文档 2。
Ai菜鸟网。发布者:AI小管家,转载请注明出处:https://www.alyyhw.com/33142.html