本文整理记录了旷视研究院Detection组针对视频目标跟踪与分割问题的探讨和收获,并从喜闻乐见的图像处理出发,以期更好阐述视频目标跟踪的意义。

  • VideoAnalyst开源代码:https://github.com/MegviiDetection/video\_analyst

自然图像的物体实例模式识别任务,比如人脸识别、人体解析和场景关系识别,其整体思路大多采用局部定位再分而治之,即先使用检测算法定位图像中的目标个体,再针对其做相对应处理;此时,图像处理的实例即是一个个局部区域(空间位置)。

同样,视频的实例处理对象自然成了每个目标物体的tracklet(实例对象在每一帧上的空间位置)。如何获取每个实例对象在时空上的tracklet,也就是追踪技术,就成了视频对象处理的基础技术之一。在广义的单目标跟踪中,不再限制跟踪目标的类别,仅仅以初始帧给出的目标为准进行跟踪。

SiamFC++算法

单目标跟踪的性能其实主要依靠特征对比和逻辑推理。

特征对比是多数工作的主流方向,因为在已知第一帧目标图像前提下,定位下一帧目标位置的最直观方法是把下一帧图像以滑动窗为单位(或者以物体proposal为单位)与目标图像特征进行比对,特征最相近便认为是目标物体。

但是,现有的特征提取器、传统特征提取方法或者卷积神经网络,皆无法在目标持续变动和周遭出现干扰物体的情况下,准确提取特征,很好地区分目标与非目标,因此,一些简单的推理逻辑,比如cosine window、scale-ratio penalty的方法,也用来修正特征比对结果。

当然,逻辑推理也不仅限于修正特征比对, 在特征已经实在无法有效区分的情况下 ,如何设计整体优化的判断逻辑也是很重要的工作。

图1:SiamFC结构图

图2:SiamRPN结构图

虽然单目标跟踪的核心在于特征对比和逻辑推理,但这更多是为了保证目标跟踪的鲁棒性,它的效果最终要体现在对每帧图像目标的状态估计(定位)上。旷视研究院在这一方向做了探究。

SiamFC[1](图1)是一个CNN实现的、十分简洁而精妙的单目标跟踪算法,同时有着对于跟踪目标在每一帧上的位置估计过度人为假设的问题;SiamRPN[2](图2)利用anchor回归逻辑进行更准确的位置估计,但是引入了一些歧义问题,跟踪器的鲁棒性受到影响。

通过分析tracking任务中定位的需求特点和SiamFC框架之后,旷视研究院对依据SiamFC进一步实现高性能目标跟踪算法的基本原则进行了探究,归纳总结出四条基本原则,

1)分类与回归任务分离,2)无歧义分类打分,3)无先验位置回归,4)预测质量评估,并在此基础上设计实现了SiamFC++[3]算法(AAAI2020),结构如下图所示:

图3:SiamFC++结构图

为了验证方法设计的合理性,本文在多个单目标跟踪数据集上进行了测试,结果如图4所示:

图4:SiamFC++评测结果

可以看到, 相较于现有SOTA,本文在多个数据集上均取得了跟踪质量和速度上的更优成绩;再加上简单的在线模板库逻辑后,SiamFC++更是在VOT18上实现EAO 46.7@50FPS。

SAT算法

把上述单目标跟踪过程中的目标初始化条件,修改为首帧可以给予目标mask,并预测该目标在每一帧图像中的mask,便成了视频目标分割的任务。

依据对单目标跟踪算法的理解,本文的核心处理方法是以该目标的tracklet为基础单位,逐像素分类tracklet里面的目标物体。最简单的解决方法是利用跟踪算法直接对分割目标进行跟踪,在跟踪得到的目标框内进行分割,这便是本文算法的baseline,但是仍存在一些问题:

  1. 分割需要更加精细的特征,而跟踪模型无法很好地提供;
  2. 准确的目标分割对目标的特征库更新提出了更高要求(逐像素分类),目标建模需要根据目标状态的变化进行更新;
  3. 分割结果仅仅是后处理操作,无法辅助进行更加高效的目标跟踪。

分析以上问题之后,旷视研究院提出了SAT[4] (CVPR2020)算法,pipeline如图5所示。

图5:SAT 结构图

由图5可知,通过增加Saliency Encoder用于给分割提供高分辨率特征, 增加Global Modeling Loop用于全局目标特征的更新,增加Cropping Strategy Loop来根据分割结果进行跟踪质量的评估,从而在直接使用分割结果和跟踪结果作为目标位置之间进行切换,提升整体pipeline的运行效率。

本文同样进行了详尽的对比分析,结果如图6所示。

图6:SAT评测结果

与当前SOTA相比,SAT算法在速度与指标的trade-off上取得了很好的结果,也希望可以激发出更多的改进方案。

开源VideoAnalyst

为方便学术交流,旷视研究院开源了以深度学习任务为核心的基于PyTorch的训练工程VideoAnalyst,它目前以算法SiamFC++和SAT(comming soon)为项目实例,通过分析当前深度学习模型训练测试工程的结构特点,开发出一套注重任务扩展性的深度学习训练/测评框架,其系统由5个模块构成:

  1. dataloader提供训数据;
  2. model构建模型结构、初始化和损失函数等,构成模型的整体架构;
  3. optimizer专注于模型(model)的训练细节,比如学习率调节 (lr schedule)、优化器参数 (optim method)、梯度调整 (grad modifier) 等;
  4. engine trainer-控制一个epoch的训练流程;tester-控制一个测试集的测试流程;
  5. pipeline 根据一个任务使用model完成的任务处理流程,可以独立运行测试,或提供对外API接口。

图7:VideoAnalyst 系统配置架构

实现VideoAnalyst的核心问题就是,1)如何在这5个模块中实现不同的任务;2)如何对一个训练或测试流程进行合理的模块化配置。

为解决这两个问题,本工程采用config与代码模块一一对应的方式,配置即系统构建,整个工程在一套大的config配置树的规划下进行开发,如图7所示。对于模块的具体实现,采用注册器的形式对其所属的任务进行注册。

SOT训练测试流程

图8:VideoAnalyst 系统流程图

本文按照配置即系统构建的设计原则,在配置文件中按照代码模块的实际分布进行相关参数的配置,使其集中化,逻辑化。config示例请见:

https://github.com/MegviiDete…\_analyst/blob/master/experiments/siamfcpp/train/siamfcpp\_googlenet-trn.yaml。

训练和测试仅需要运行 python3 main/train.py or test.py -cfg configfile.yaml 即可,具体模块的构建流程如图8所示。

结论

由于着重于多任务框架的设计和实现,遵守开闭原则 (Open–closed principle),因此video\_analyst具有非常好的多任务扩展属性。

旷视研究院后续会基于该框架,实现更多的计算机视觉任务算法,也欢迎大家在这个框架上实现新工作。总而言之,旷视研究院会在目前工作基础上继续开发第二代项目VisionAnalyst,敬请期待。

———作者——-

  • 李作新,北京航空航天大学硕士, 现为旷视研究院Detection组研究员。
  • 许胤达,浙江大学硕士,曾在旷视研究院Detection组实习, SiamFC++共同一作。
  • 陈汐,浙江大学硕士,曾在旷视研究源Detection组实习,SAT一作。

欢迎各位同学加入旷视研究院 Detection组,简历可以投递给 Detection 组负责人袁野 (yuanye@megvii.com)

参考文献


  1. Bertinetto, Luca, et al. “Fully-convolutional siamese networks for object tracking.” European conference on computer vision. Springer, Cham, 2016.
  2.  Li, Bo, et al. “High performance visual tracking with siamese region proposal network.” Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. 2018.
  3.  Xu, Yinda, et al. “SiamFC++: Towards Robust and Accurate Visual Tracking with Target Estimation Guidelines.” arXiv preprint arXiv:1911.06188 (2019).
  4.  Chen, Xi, et al. “State-Aware Tracker for Real-Time Video Object Segmentation.” arXiv preprint arXiv:2003.00482 (2020).

专栏文章推荐

  • CVPR2020 | 旷视研究院提出SAT:优化解决半监督视频物体分割问题
  • R TALK | 旷视危夷晨:不确定性学习在视觉识别中的应用

欢迎关注旷视研究院专栏,定期更新最新旷视研究院成果
加入旷视:career@megvii.com

发表评论

邮箱地址不会被公开。 必填项已用*标注