猫眼对于视频特定点位跟踪问题的解决方案

avatar
猫小娱 @猫眼娱乐

1.赛题分析

1.1.赛题介绍

首届“马栏山杯”国际音视频算法大赛由中国工业与数学应用学会指导,湖南省互联网信息办公室、湖南省科学技术协会主办,中国(长沙)马栏山视频文创产业园、芒果TV承办。

本次算法大赛分为视频特定点位跟踪、视频推荐、画质损伤修复三道赛题.我参加的是视频特定点位跟踪赛道,初赛和复赛皆是第二名.使用大致方法是图像配准+图像跟踪.

视频特定点位跟踪,是指在初始标注视频固定区域的情况下,随着视频的进展,跟踪定位原标注区域在后续视频中位置的技术。这个技术其中一个应用点,就是视频内的动态广告植入,能够在不影响用户观看体验的前提下,提升视频平台的变现能力,降低广告客户的盲投风险,视频动态广告成为了备受青睐的广告投放形式。视频动态广告要求将广告视觉元素自然精准地与原视频内容进行融合,达到以假乱真的效果。这就要求我们需要对摄像机运动进行精准估计、准确估计光影、妥当处理景深及物体遮挡关系等。如何解决上述问题,提升视频动态广告植入的真实感,并尽可能实现视频动态广告的自动化、标准化植入极具挑战。

大致就是在第一帧给定目标位置,在后续帧中预测目标的位置。这个位置为四边形的顺时针的四个顶点,可以为不规则的四边形.在后面统计参赛者的感受,都普遍觉得这个赛题很有意思.对于应用场景,也是比较广泛.举办方的应用主要是广告植入,通过在跟踪区域贴上广告相关的海报和动态的视频,使广告嵌入观看的内容中,在不影响用户观看体验的前提下,很自然的植入了广告.因此,这个对跟踪的位置的精度要求特别高.按举办方的意思差不多要达到mse小于1,才能不影响观看效果.

1.2.数据说明

研究数据:供创意解决方案的研究用。视频首帧标注拟植入广告物体区域。场景较为简单、持续时间较短(~100帧长度)。共计2000个视频片段。

验证集数据:100个视频片段,视频标注拟植入区域四个特征点在所有帧的轨迹。用来完成创意方案对植入效果的验证。

测试集数据:分AB榜,各200个视频片段,视频标注拟植入区域四个特征点在所有帧的轨迹。用来完成创意方案对植入效果的测试。参赛者只拿到第一帧的四个特征点坐标。

1.3.评估指标

假设共计N个视频,某视频有M帧。

对于某一帧f,MSE计算如下:

对于某视频,MSE计算如下:

对于整个视频集,最终MSE为:

2.确定方案

2.1.综述常用方案

对于一般的跟踪应用,我们首先想到的是传统的方法如相关滤波(kcf),meanshift,到后面深度学习的发展对于各类特定目标的跟踪,业界常采用track by detection, 如人脸跟踪,行人跟踪,大致就是先检测出目标框,再将时序中的这些框通过相关性或位置关系联系起来。而对于这次赛事的应用,上面的方法都不能直接用,其中大致有两个不同点

  • 赛题中框是不规则的四边形,kcf中的采样窗口或者是dnn中检测模型中的Anchor一般都是规则四边形.并且赛题对四个顶点的精准度要求较高

  • 赛题中框的内容可能回出现遮挡,或者内容存在变化.并且跟踪的目标可能无任何特征.

最后总结这个赛题的方向介于图像配准(常用于slam和医学配准)和图像跟踪之间(VOT,MOT).如果只使用图像配准,这个赛题中的一些场景是不适用的,同时只使用图像跟踪的方案也不行.具体的我在后面详细描述.因此,在选择方案时我本着简单的策略融合了两个方向的一些方案

2.1.1.图像配准

图像配准的一般流程是,对两张图像,通过特征提取、匹配最后进行图像对齐。简单的说,我们选择两个图像中的感兴趣点,将参考图像(reference image)与感测图像(sensed image)中的等价感兴趣点进行关联,然后变换感测图像使两个图像对齐。传统方法的图像配准常使用SIFT+NN,工业界由于效率可能会使用ORB特征。同时深度学习在配准这块也有一些不错的工作,主流的常采用 SuperPoint 以及 SuperGlue 的方案。SuperPoint 通过利用深度学习来得到图像中的特征点,SuperGlue 通过利用 CNN 和 GNN 将两帧图像的特征点进行匹配。当然2020年图像配准又有些新SOTA的paper,相关方向可以继续研究。

最后,我采用的SIFT+NN的方法。并不是SuperPoint+SuperGlue不香,主要是赛题没有训练数据集,一般深度学习训练出的特征子适用性不一定好,另外即使SIFT+NN比SuperPoint+SuperGlue多一些误配也能得到好的变换结果。

2.1.2. 图像跟踪

图像跟踪的相关知识也是比较庞大.我这里简单叙述下使用siammask的原因.网络head带了mask可以做些策略,并且效果在大部分场景也比较好,但缺少四个顶点的精确位置,在这里的作用是利用中心位置校准。同时在对候选框的相似度度量也借鉴了跟踪的一些知识.

2.2.方案

具体pipeline我分为了两个部分.第一个部分为预测位置,召回预测框.第二个部分为相似度计算,选择最优框.预测位置模块是通过各种方法预测出跟踪框的位置.相似度计算是对每个框的内容与参考内容计算相似度来作为框的置信度评估.这个pipeline的建立,代表我优化的方向是尽可能召回框出现的位置,精准的相似度评估选取最优的框.

2.2.1.预测位置

对全局图像的特征点进行分区.分为全图,局部和四顶点区域.对于全图特征点使用SIFT特征点,配对使用NN最近领配对.对于局部特征使用SIFT特征点+角点,SIFT使用NN配对,角点使用光流估计并反向验证进行配对.四顶点区域使用SIFT特征,由于特征点数较少使用模版匹配进行配对.并对于各个区域的特征点分别求出单应矩阵,和fusion特征点之后求单应矩阵.

2.2.2.相似度计算

相似度的计算流程也是比较常用的方案,这里按对角线放大对比区域是为了引入方向的误差.最后warp成矩形对比.

3.效果调优

3.1.分析

方案优点缺点
图像配准理想状态下根据配对点的仿射关系,对齐变换后可以准确的得到跟踪区域的四个顶点的坐标.即使跟踪区域出现遮挡,可以根据其他区域的关系推出位置通过局部区域得到的特征点,后续在通过描述子去配对.还是丢掉了全局的位置或者特征信息,在多个相似场景下可能出现误配对,进而导致顶点的位置不准确
目标跟踪在单目标跟踪的情况下,预测的跟踪区域由感受野的传递是参考全局信息的,大体位置还是比较准确不规则四边形的框不支持,导致mse精度下降.跟踪的目标变化或遮挡时,框不准确,几乎无解.

3.2.有提升的方案

3.2.1.特征点位置分区(提分明显)

motivation:特征点配对准确且数量也较多,不一定能保证预测框的位置准确,比如全局的特征点配准对齐后的图像在跟踪区域并不一定对齐.最理想的状态是直接找到跟踪区域四个顶点的配对点,但现实状态跟踪区域的四个顶点并不一定是特征点.所以在调优中,我使用了特征点分区,提高靠近跟踪区域的注意力,不但可以提高特征点匹配过程的精度,也使召回的候选框跟符合局部跟踪的目标.

在赛题中大约有5%的视频是带很严重的虚化.这类case非常难优化.大致描述就是视频由于拍摄手法在抖动,需要跟踪的目标是虚化的背景,而特写的前景是一个运动的物体.这种情况使大多数特征点都分布在特写的前景,预测的位置被前景带偏,但groundtruth应该是抖动的虚化背景.最后我通过角点(解决图像低频分量区域特征点少的问题)+分区优先级(解决前景有大量特征点带偏的问题)+siammask(跟踪算法在这类case影响较小),大致能覆盖这类case.

3.2.2.相似度调优(提分明显)

motivation:有时候图像的相似度到一定阈值并不准确,比如96%并不一定比95%的候选框好,这里使用了按照对角线放大对比区域,进而放大了图像坐标误差带来的相似度误差.这里主要是因为坐标误差导致对角线方向出现偏差.所以实质是引入方向的误差.并使用了滤波和SSIM来度量相似度.时间有限,没有测试深度学习的metric learning 或者siammse网络是否有更好的度量.

3.2.3.光流估计调优(提分明显)

motivation:sift特征在有些场景出点不足,使用了角点利用光流估计来增加配对点.同时由于光流估计存在着依赖时序上下文并且适用于背景变动小的场景,因此在search_window参考帧中加入时序中最接近候选帧的图像.

3.2.4.rerank策略(提分较小)

motivation:一是图像的相似度高到一定阈值并不准确,比如96%并不一定比95%的候选框好,二是当出现严重遮挡时,相似度会非常低,这时的相似度估计也不准确.我以参考分区优先级rerank了相似度排名,也可以有效的命中最优的框.

3.3.其他无提升的方案

3.3.1.其他传统特征点的使用

尝试过几种其他的传统特征点比如orb等,比不上sift的效果.对于出点少的场景,用角点去做光流估计也是很好的方案,其他特征点效果也不是特别好.所以也不建议尝试其他的传统的特征点方案了,可以试试深度学习的方法,在用比赛的数据finetune应该有不错的效果.

3.3.2.kcf等传统的目标跟踪

效果比不上siammask,对于难的场景, 再怎么优化也很难提升.不建议在目标跟踪这块花太多精力,这块的主要工作是矫正特征点配对的位置,感觉很难只通过目标跟踪得到好的效果,冠军方案也是图像配准的.

4.tricks推荐

4.1.可视化并量化效果提升badcase分析

这是个大家也比较常用的方法,但本赛题中没有提供groundtruth.在最早时采用先验规则制定的相似度计算来作为置信度,使我可以在初赛到复赛10多天里进行快速迭代效果调优.

4.2.一些论文的motivation可以借鉴

sift等传统特征一般为局部特征.我们在使用sift局部特征配准时,脱离了位置和结构的信息.这里引入了siammask,理论上靠着cnn的感受野我能得到一个参考全局的跟踪位置.在初赛中这个确实带了了指标的提升,但在复赛中指标略微下降一丢丢,最后给去掉了.但我感觉应该是有帮助的,因为复赛只有三天最终没有找到指标下降的原因.

4.3.SuperPoint+SuperGlue

补了SuperGlue的论文,确实强大.我感觉superglue比NN提升很多,也许上SuperPoint+SuperGlue指标会有提升.比赛中也有其他同学使用了SuperPoint+SuperGlue但最终没有我的排名好,感觉还是方向没把控好.这个赛题不仅仅是图像配准,具体看我的效果调优模块.同时看了旷视CVPR 2020 SLAM挑战赛的方案,在遇到出点少的问题,他们使用了动态阈值调整,但具体根据怎样的参考动态调节的方法不知,也可作为trick去试试.

SuperPoint+SuperGlue

动态阈值

Reference:

1.SuperPoint: Self-Supervised Interest Point Detection and Description

2.SuperGlue: Learning Feature Matching with Graph Neural Networks

3.siammask作者的理解

4.旷视CVPR 2020 SLAM挑战赛