由于项目需要,但是对视频领域的生成编辑可以说是一窍不通。通过一篇论文及其代码了解这个领域,重点介绍videoswap的代码结构和文件操作。
入门基础知识点
学术性讨论太复杂,本人只根据网上的一些资料提供一些直观的理解,深入的理解需要多看文献,多看公式和代码,如有错误,感谢指出
视频编辑
目的
在保持视频原有结构和时间一致性的前提下,修改特定的内容,比如改变物体的外观、插入新元素、或者增强特定区域的清晰度。这里的时间一致性包括运动一致性、光照一致性、色彩一致性等,确保视频编辑后帧与帧之间的连贯性和自然性。
方法
这些方法都是为了保持时间一致性,也就是让编辑后的视频更”丝滑“
- 传统方法:光流法【很多相机手机厂商都会在传感器设备引入防抖功能以及自动补帧和对焦,就是这个方法】、分割遮罩技术【把人物抠出来换背景】和基于关键帧和运动矢量的编辑【很多b站大佬剪辑,应该都刷到过教你用关键帧实现转场的】
- 基于深度的方法:RNN,GANs等网络能学习视频帧之间的关联,然后补全或者修复视频帧
- 基于扩散的视频编辑:就是本文要讨论的点,能实现,给一段“小猫走钢琴”视频,让模型“用这张柯基的照片替换小猫”,模型就会逐帧修改视频,从而实现视频编辑。
视频追踪技术
追踪视频中物体,人物,特征点的技术,得到它们的运动过程。通常会结合目标检测技术来实现:在视频的每一帧中,首先使用像YOLO等目标检测方法识别并定位目标,然后将检测结果输入到追踪技术中,通过结合检测结果和运动模型(如光流模型),在帧之间持续追踪和关联目标。
这里简单介绍一个光流运动模型
,来帮助理解视频追踪。【这个技术是最经典的一个技术】
可以把光流模型想象成一种用来“绘制”目标移动方向的工具。假设你在看一个视频,视频中有汽车在移动。光流模型会观察视频的每一帧,找出汽车的各个部位(如车顶和车灯)的移动方向。可以想象它在画虚线箭头,每一帧上都有新的箭头,表示从上一帧到当前帧,这些点移动了多少、朝向哪里。就像下图一样,光流模型能够判断哪些部分在移动,哪些部分保持不动。每当目标移动时,光流模型会实时更新目标的运动路径,通过估算