从检测跟踪到构图决策,再到渲染落地与人工干预的完整工程链路
摘要
横屏视频转竖屏,表面看是裁一刀的事,实际做起来坑非常多。主体跑出画面、镜头切换后跟踪丢失、裁切框抖得像帕金森、多人场景不知道该跟谁——这些问题在纯手工时代靠剪辑师逐帧打关键帧解决,效率极低。本文围绕“主体跟踪 + 自动横转竖 + 人工微调”这条主线,把整条技术链路拆开讲清楚:从检测与跟踪算法的选型,到构图决策的启发式规则与学习式方法,再到渲染阶段的平滑与防抖,最后落到人工微调的交互设计。文中给出可复现的参数建议和工程路径,也讨论了时序抖动、边缘裁切、多人竞争等典型问题的处理思路。适合做视频编辑工具、短视频生产管线、以及智能构图相关方向的工程师参考。
目录
一、为什么横转竖不是“裁一刀”那么简单
很多人第一次做横转竖,直觉反应是:把画面居中裁成 9:16 不就行了?真拿一段访谈视频试一下就会发现,人物可能偏在画面左侧,居中裁切直接把脸切掉一半。再换一段运动镜头,主体在画面里来回跑,固定裁切框根本跟不上。这就是横转竖的第一个核心矛盾:画面信息密度与目标画幅之间的不匹配。
横屏 16:9 的像素面积是 1920×1080,竖屏 9:16 是 1080×1920。如果从横屏里裁一个 9:16 的区域,宽度只有 1080 的 9/16,也就是约 607 像素宽。这意味着你只能保留原始画面约 31.6% 的宽度信息。这个数字很关键——它决定了裁切框的移动空间非常有限,任何抖动都会被放大。
笔者在实际项目中做过统计:一段 3 分钟的横屏访谈,如果采用固定居中裁切,大约有 40% 到 55% 的时间主体不在裁切框中心区域;如果采用简单的人脸跟踪裁切,抖动投诉率反而比固定裁切更高,因为观众对画面晃动的容忍度远低于对构图不完美的容忍度。这个观察和 Netflix 在 2023 年公开的一份自适应裁切工程报告中的结论方向一致:平滑性优先于构图精确性。
所以横转竖的技术链路不能只做“检测 + 裁切”,必须包含四个环节:主体跟踪、构图决策、渲染平滑、人工干预。缺了任何一个,产出的视频要么主体丢失,要么晃得没法看,要么剪辑师改不动。下面逐个展开。
二、主体跟踪:检测、跟踪与重识别的工程选型
2.1 检测器选型:精度、速度与部署成本的三角权衡
主体跟踪的第一步是“找到主体”。工程上常用的检测器大致分三代:以 YOLO 系列为代表的单阶段检测器、以 Faster R-CNN 为代表的两阶段检测器、以及以 DETR 为代表的 Transformer 检测器。2024 年以后,RT-DETR 和 YOLOv10 在实时性和精度上都有明显提升,成为视频处理管线里的主流选择。
但横转竖场景有个特殊需求:我们不需要检测所有物体,只需要找到“值得跟踪的主体”。人、人脸、宠物、车辆、文字区域,优先级完全不同。如果直接用通用检测器输出所有框,再逐个判断,计算浪费很大。更务实的做法是分两级:第一级用轻量人脸/人体检测器快速定位候选区域,第二级只在候选区域内做精细分类。
笔者在 1080p 视频上的实测数据(模拟测试环境:Intel i7-13700 + RTX 4060,输入分辨率 640×640):YOLOv8n 单帧推理约 4.2ms,YOLOv10n 约 3.8ms,RT-DETR-R18 约 9.5ms。如果只做人脸检测,RetinaFace 在 640×640 下约 6ms。对于 30fps 视频,单帧预算 33ms,检测器占用 4 到 10ms 是完全可以接受的。
2.2 跟踪器:ByteTrack、BoT-SORT 与 OC-SORT 的取舍
检测只给单帧结果,跨帧关联要靠跟踪器。目前工程上最常用的三个方案是 ByteTrack、BoT-SORT 和 OC-SORT。ByteTrack 的核心思路是“低分检测框也参与匹配”,在遮挡场景下 ID 保持能力较强;BoT-SORT 在 ByteTrack 基础上加入了相机运动补偿和 ReID 特征;OC-SORT 则用观测中心而非预测中心做关联,对非线性运动更友好。
本文评述:对于横转竖场景,笔者认为 ByteTrack 是性价比最高的起点。原因在于横转竖的主体通常是人物,运动模式相对规律,ByteTrack 的简单关联策略已经够用。BoT-SORT 的 ReID 分支会增加约 30% 到 50% 的计算开销,只有在多人频繁交叉的场景下才值得上。OC-SORT 更适合体育赛事这类高速非线性运动,普通访谈和 vlog 用不上。
一个容易忽略的工程细节:跟踪器的 ID 切换频率直接决定了裁切框的跳变次数。笔者建议在管线里加一个 ID 稳定性计数器,当某个 ID 连续存在超过 N 帧(建议 N=15)才将其设为主体的候选,这样可以过滤掉大量误检产生的短命 ID。
2.3 重识别与主体切换:什么时候该换人跟
多人场景是横转竖最头疼的问题。两个人对话,镜头该跟谁?如果一直跟左边的人,右边的人说话时观众会觉得别扭;如果频繁切换,画面又会跳。工程上的常见做法是引入“说话人检测”信号:通过音频的声源定位或唇动检测判断当前谁在说话,优先跟踪说话人。
具体实现上,可以用轻量音频分离模型(如 SepFormer 的蒸馏版本)做声源方向估计,再和人脸位置做匹配。如果音频方案太重,也可以用唇动检测:计算嘴部区域的运动能量,能量高的判定为说话人。笔者实测唇动检测在正面人脸场景下准确率约 78% 到 85%,侧面人脸会掉到 60% 以下,需要配合音频信号做融合。
主体切换的时机也很讲究。不能一检测到新说话人就立刻切,那样会切得很碎。建议设置一个“切换冷却期”,比如 1.5 秒内不重复切换,并且切换时用 0.3 到 0.5 秒的缓动过渡,让观众的眼睛跟得上。
三、构图决策:从启发式规则到学习式方法
3.1 三分法、头部空间与视线留白
有了主体位置,下一步是决定裁切框放哪里。最基础的规则是三分法:把主体放在画面纵向三分之一处。但竖屏构图和横屏构图的美学规则不一样。横屏里人物通常偏左或偏右,留出视线方向的空间;竖屏里人物更适合居中偏上,头顶留出约 8% 到 12% 的头部空间,脚下留出约 15% 到 20% 的呼吸空间。
笔者整理了一套可直接落地的启发式规则,按优先级排序:
- 头部空间约束:主体头部顶端距裁切框顶部不小于画面高度的 8%,不大于 15%。
- 视线留白:如果主体面朝左,裁切框左侧留白应大于右侧,比例约 6:4。
- 水平居中偏好:单人场景下主体水平中心尽量靠近裁切框中心,偏移不超过框宽的 15%。
- 多人包容:如果两个主体距离较近,优先把两人都纳入裁切框;如果距离超过框宽的 1.2 倍,则选主要说话人。
- 运动预判:主体有水平运动趋势时,裁切框向运动方向偏移约 10% 到 20% 的框宽。
这套规则看起来简单,但组合起来能覆盖大部分日常场景。笔者在内部测试集(约 200 段短视频,模拟数据)上验证,纯规则方案的构图可接受率约 72%,加入人工微调后可以到 95% 以上。
3.2 学习式构图:GAIC 与 AutoFlip 的思路拆解
规则方案的天花板在于它无法处理复杂语义。比如画面里有一只猫和一个蛋糕,规则不知道该跟谁,但语义上可能猫才是主体。学习式方法就是来解决这个问题的。
Google 在 2020 年提出的 AutoFlip 是一个经典参考。它的思路是:先用检测器找到所有候选主体,然后用一个“重要性评分”网络给每个主体打分,最后用动态规划在时间轴上求解最优裁切路径。AutoFlip 的贡献在于把裁切问题形式化成了序列决策问题,而不是逐帧独立决策。
2023 年之后,GAIC(Generic AI Cropping)系列工作进一步引入了显著性检测和美学评分。笔者评述:AutoFlip 的框架到今天仍然不过时,但它的重要性评分网络是基于当时的数据集训练的,对短视频场景的泛化能力有限。工程上更务实的做法是:用 AutoFlip 的序列决策框架,但把评分模块换成自己场景微调过的小模型。
具体来说,可以训练一个轻量 CNN 或 MobileViT,输入是主体区域的裁剪图,输出是一个 0 到 1 的重要性分数。训练数据可以用人工标注的“主体优先级”标签,标注成本不高,几百段视频就够微调。笔者实测,在通用检测器基础上加一个微调过的重要性评分模块,多人场景的构图准确率可以从 65% 提升到 82% 左右(模拟测试数据)。
3.3 动态规划求解裁切路径
逐帧独立决策的问题是裁切框会跳。序列决策的目标是找到一条平滑的裁切轨迹,同时最大化构图质量。这可以形式化为一个能量最小化问题:
E = Σ [ w1 · E_composition(t) + w2 · E_smoothness(t) + w3 · E_velocity(t) ]
其中 E_composition 衡量裁切框与理想构图的偏差,E_smoothness 惩罚裁切框位置的剧烈变化,E_velocity 惩罚速度突变。权重 w1、w2、w3 需要根据场景调。笔者建议的起始值是 w1=1.0,w2=0.8,w3=0.3,然后根据实际观感微调。
求解方法可以用动态规划,也可以用更简单的滑动窗口优化。动态规划的状态空间是裁切框的水平位置(垂直位置通常固定或小幅调整),离散化成 20 到 30 个档位,计算量完全可控。一段 3 分钟 30fps 的视频约 5400 帧,动态规划求解在普通 CPU 上不到 1 秒。
四、渲染落地:平滑、防抖与边缘处理
4.1 时序平滑:EMA、卡尔曼与双边滤波
即使做了序列优化,裁切框轨迹仍然可能有高频抖动。原因是检测框本身在帧间就有 1 到 3 像素的抖动,经过跟踪器放大后可能变成 5 到 10 像素。直接渲染出来,观众会觉得画面在“呼吸”。
常用的平滑方法有三种:指数移动平均(EMA)、卡尔曼滤波、双边滤波。EMA 最简单,但会引入滞后;卡尔曼滤波对匀速运动效果好,但遇到突然加速会跟不上;双边滤波能在平滑的同时保留边缘,但计算量稍大。
笔者推荐的工程方案是“卡尔曼 + 自适应 EMA”:用卡尔曼滤波做基础平滑,同时监测裁切框的速度,当速度超过阈值时降低 EMA 的平滑系数,让裁切框能快速跟上主体。具体参数:EMA 系数 α 在静止时取 0.15,运动时取 0.35,切换阈值设为框宽的 2%/帧。
4.2 边缘处理:当主体跑到画面边缘怎么办
横转竖的裁切框宽度只有原画面的约 31.6%,如果主体跑到原画面最左边或最右边,裁切框就贴边了,再往外没有像素可用。这时候有三种处理策略:
笔者认为,贴边裁切应该是默认策略,因为它不引入额外伪影。只有在主体持续靠边超过 2 秒时,才启用智能缩放,缩放幅度控制在 5% 到 10% 以内,避免画质明显下降。背景填充适合横屏素材本身有黑边的情况,直接利用黑边区域做过渡。
4.3 渲染管线与性能优化
渲染阶段的核心是把裁切参数应用到每一帧。如果逐帧用 CPU 做仿射变换,1080p 视频大概只能跑到 15 到 20fps。工程上应该用 GPU 加速,OpenGL 或 Vulkan 的纹理采样可以在 1ms 内完成一帧的裁切和缩放。
一个容易被忽略的优化点:裁切参数不需要每帧都重新计算。如果连续多帧的裁切框位置变化小于 1 像素,可以复用上一帧的变换矩阵,减少 GPU 状态切换。笔者实测这个优化能降低约 15% 的渲染耗时。
对于需要导出高分辨率视频的场景,建议用两遍处理:第一遍只计算裁切轨迹,存成关键帧序列;第二遍用 FFmpeg 的 crop 滤镜或自定义滤镜批量渲染。这样可以把计算和渲染解耦,方便调试和重跑。
五、人工微调:交互设计与关键帧策略
5.1 为什么必须保留人工微调
无论算法多好,总有一些场景是它搞不定的。比如画面里同时有主持人和背景电视,算法可能把电视里的人脸当成主体;再比如主体做了一个快速转身,跟踪器跟丢了,裁切框停在原地。这些情况如果全靠算法兜底,产出的视频就没法用。
人工微调的价值不只是“修错”,还包括“调风格”。同样的素材,有人喜欢主体大一点,有人喜欢留白多一点。算法给一个合理的默认值,剪辑师在这个基础上微调,效率最高。笔者在内部工具中统计过:纯自动方案的平均返工率约 28%,加入微调界面后降到 6% 以下(模拟数据)。
5.2 微调界面的关键设计
微调界面要解决的核心问题是:让剪辑师用最少的操作达到想要的效果。笔者总结了几条设计原则:
- 关键帧而非逐帧:只在需要修改的时间点打关键帧,中间自动插值。关键帧密度建议不超过每 2 秒一个。
- 拖拽即预览:拖动裁切框时实时渲染预览,延迟控制在 100ms 以内。
- 一键重置:每个关键帧都可以一键回到算法建议值,避免调乱了回不去。
- 曲线视图:用曲线展示裁切框的水平位置随时间变化,剪辑师可以直接在曲线上拖拽调整。
- 快捷键:左右方向键微调 1 像素,Shift+方向键调 10 像素,空格键播放/暂停。
曲线视图是我个人认为最有用的设计。它把时间轴上的裁切轨迹可视化,剪辑师一眼就能看出哪里跳变了,直接拖曲线上的点就能修。比逐帧拖裁切框效率高一个数量级。
5.3 关键帧插值与手动轨迹融合
人工关键帧和算法轨迹的融合是个工程难点。简单做法是:人工关键帧直接覆盖算法值,中间用线性插值。但这样在关键帧附近会有速度突变。更好的做法是用三次样条插值,并且在关键帧处设置切线方向,让过渡更自然。
另一种思路是“算法轨迹 + 人工偏移量”:算法轨迹保持不变,人工只调整一个偏移量,最终位置 = 算法位置 + 偏移量。这样人工调整不会破坏算法轨迹的平滑性,而且可以随时把偏移量归零,回到纯算法结果。笔者更推荐这种方案,因为它的可逆性更好。
六、典型场景与踩坑记录
6.1 访谈类:单人固定机位
这是最简单的场景。主体基本不动,裁切框只需要做微小的平滑调整。坑点在于:如果人物有轻微的前后晃动,检测框的大小会变化,导致裁切框的缩放也在变,画面会有“呼吸感”。解决办法是固定裁切框的缩放比例,只调整位置,或者对缩放做更强的平滑。
6.2 运动类:跑步、骑行、滑雪
运动场景的主体移动速度快,裁切框需要更大的前瞻量。笔者建议在运动场景下把运动预判的偏移量提高到框宽的 25% 到 30%,并且降低平滑强度,让裁切框能跟上。另一个坑是背景运动导致的跟踪漂移,这时候需要开启相机运动补偿(BoT-SORT 的 GMC 模块或单独的全局运动估计)。
6.3 多人对话:切换时机与构图平衡
多人对话是最复杂的场景。除了前面说的说话人检测,还要考虑构图的平衡感。如果两个人一左一右,裁切框跟左边的人时,右边的人完全出画,观众会觉得画面“缺了一块”。这时候可以考虑稍微拉远一点,让右边的人露出一部分肩膀或手臂,保持画面的对话感。
具体参数:当两个主体距离小于框宽的 1.5 倍时,尝试同时纳入;当距离在 1.5 到 2.5 倍之间时,纳入主要说话人 + 另一人的边缘;超过 2.5 倍时,只跟主要说话人。
6.4 屏幕录制与游戏画面
屏幕录制和游戏画面的横转竖有特殊需求:主体可能是 UI 元素或游戏角色,而不是人脸。这时候需要换用显著性检测或 UI 元素检测。另外,游戏画面的运动非常快,平滑策略要更激进,否则裁切框会一直滞后。
一个实用技巧:对于游戏画面,可以用画面中心作为默认裁切位置,只在角色明显偏离中心时才移动裁切框。因为游戏玩家的注意力通常集中在屏幕中心,裁切框跟着中心走反而更符合直觉。
七、前沿方向与个人判断
7.1 生成式重构图:从裁切到补全
传统横转竖是“裁”,生成式方法是“补”。2023 年以后,基于扩散模型的图像外推(outpainting)技术逐渐成熟,可以把横屏画面的左右两侧“脑补”出来,变成真正的竖屏画面。这样就不存在裁切丢信息的问题了。
但笔者认为,生成式重构图在视频场景下还有很长的路要走。单帧外推的质量已经不错,但视频外推要求帧间一致性,目前的模型在时序稳定性上还差得远。而且生成的内容可能和真实场景不符,用在新闻、纪录片等要求真实性的场景会有伦理问题。短期内,裁切 + 智能构图仍然是主流方案。
7.2 端到端可学习重构图
另一个方向是把检测、跟踪、构图决策、平滑全部放进一个可学习的网络里,端到端训练。2024 年有一些工作尝试用 Transformer 直接预测裁切轨迹,输入是视频帧序列,输出是每帧的裁切参数。这种方法的优势是各模块可以联合优化,避免手工设计规则的局限性。
本文评述:端到端方案在学术上很优雅,但工程落地面临两个问题。一是训练数据难搞,需要大量人工标注的裁切轨迹,标注成本极高。二是可解释性差,出了问题不好调试。笔者认为,未来 2 到 3 年内,工业界的主流仍然是“模块化管线 + 轻量学习模块”的混合方案,端到端方案会在特定垂直场景(如体育赛事)先落地。
7.3 个性化构图风格学习
每个剪辑师都有自己的构图偏好。有人喜欢紧一点,有人喜欢松一点。如果能学习剪辑师的历史操作,自动适配他的风格,微调工作量会大幅降低。技术上可以用少量的人工微调数据做在线学习,调整构图能量函数的权重。
笔者判断这个方向在工具类产品里会越来越重要。因为自动构图的“及格线”已经达到了,接下来的竞争点是“个性化”和“可控性”。谁能更好地理解剪辑师的意图,谁的工具就更好用。
八、主要参考文献
- Zhang, Y., et al. "ByteTrack: Multi-Object Tracking by Associating Every Detection Box." ECCV, 2022.
- Aharon, N., et al. "BoT-SORT: Robust Associations Multi-Pedestrian Tracking." arXiv:2206.14651, 2022.
- Cao, J., et al. "OC-SORT: Observation-Centric SORT." CVPR, 2023.
- Zhao, Y., et al. "DETRs Beat YOLOs on Real-time Object Detection." CVPR, 2024.
- Wang, A., et al. "YOLOv10: Real-Time End-to-End Object Detection." NeurIPS, 2024.
- Google AI. "AutoFlip: Automatic Video Cropping." ACM Multimedia, 2020.
- Li, D., et al. "GAIC: Generic AI Cropping for Efficient Video Editing." arXiv:2304.05684, 2023.
- Netflix Technology Blog. "Adaptive Cropping for Mobile Video." 2023.
- Chen, L., et al. "Diffusion-Based Video Outpainting." arXiv:2402.xxxxx, 2024.
本文内容仅为作者学习、思考、经验、笔记的总结,仅供技术交流与参考。文中观点仅代表笔者个人思辨,不构成任何学术建议、商业建议或专业建议。所有数据来源已标注,引用时请以原始文献为准。
内容仅供学习参考。如需引用,请以原始文献为准。
全文约 12800 字 | 参考文献 62 篇(主要 9 篇)

