关联比赛: “新内容 新交互”全球视频云创新挑战赛--算法挑战赛道
Richardzuo 比赛攻略
赛题背景与理解
视频物体分割(Video Object Segmentation)是计算机视觉最近两三年兴起的⼀个研究领域,其⽬的是从视频所有图像帧中把感兴趣的物体区域的分割出来。与视频物体跟踪不同,视频物体跟踪只要求得到每帧图像中感兴趣物体的包围框,⽽视频物体分割必须精确到图像的每个像素,因此是⽬前计算机视觉领域最难的任务之⼀。
目前的视频物体分割可以分为三个类别:半监督视频物体分割、无监督视频物体分割和交互式视频物体分割。其中,半监督视频物体分割是给定用户感兴趣物体在视频第一帧图片上的分割区域,算法来获取在后续帧上的物体分割区域。无监督视频物体分割是全自动的视频物体分割,除了视频外,没有其他任何输入。其目的是全自动分割出视频中显著性的物体区域。交互式视频物体分割的输入不是第一帧物体的掩码,而是某帧图像上少量用户交互信息,算法需要根据用户交互信息在整个视频中分割处感兴趣物体。在这三个类别中,半监督视频物体分割算法是所有视频物体分割的基础,无监督视频物体分割最具有挑战性。
⼀般来说,⼈是视频中最重要的内容,精确地分割出视频中的⼈体区域在各个领域中均有着重要应⽤前景,如切换⼈物背景、合成⼴告、抠图等。可以说,视频⼈物分割对视频的⼆次创作有着极为重要的意义,⾼精度的视频⼈物分割算法结合⼴⼤⽤户们⽆限的想象⼒会创造出众多意想不到的玩法与应⽤,也会为企业创造许多有趣、有意义、有价值的商业应⽤空间。
较于⼀般的 VOS 任务,专注于⼈体区域的分割算法难度更⼤,主要原因在于:
- ⼈体往往有各种各样的⼿持物(如杯⼦、球拍、⻝物、餐具等)与附属物(如项链、帽⼦、⼤⾐、提包)等,这些附属物的语义信息与纹理信息与⼈体有着较⼤差异,⽽且附属物类别众多,尺度不⼀,如何准确地识别出各种附属物是本任务的难点之⼀;
- ⼈体动作幅度、类型变化较⼤。不同于 DAVIS 等数据集中的其他物体,如⾃⾏⻋、⻜机、汽⻋等刚性物体,⼈体是柔性的,这意味着在⼀段视频⾥同⼀个⼈体的外观与形态会有较⼤的差异;此外,⼈体可能还会有较⼤的动作幅度,如跳舞、运动等类型的视频,肢体的动作幅度远远⼤于其他常⻅动物。
- 当⼈物背景较为复杂或者区域内⼈体较多时,会出现严重的遮挡情形。如何处理这些复杂情况仍是⼀个难以解决的问题。
- 就精度来说,半监督算法的精度明显⾼于⽆监督算法的精度,这是由于视频第⼀帧的 GT 信息已经包含了⾮常丰富的先验信息,包括⼈体数量、⼈体区域、背景区域等,⽽且是精确到像素级别的先验信息。就实⽤性程度来说,⽆监督算法的实⽤性与应⽤前景则远⾼于半监督算法,毕竟标注精确到像素级别程度的⼈体区域是⼀项⾮常耗时且枯燥的⼯作,费时费⼒,⽽且需要有专业的标注⼯具,这会严重限制算法的应⽤场景。由于⽆监督的视频分割算法应⽤前景更加⼴泛,已经有越来越多的学者致⼒于此研究。⽬前⽐较常⻅的思路是先使⽤图像分割算法处理视频的第⼀帧图像,⽣成接近于 GT 的 Mask 分割结果,以此作为伪标签来将⽆监督分割任务转化为半监督分割任务。这种做法充分利⽤了⽬前⽐较成熟的图⽚分割算法与半监督视频分割算法,将⼆者结合起来进⾏解决⽆监督视频分割任务,实现过程简单可靠,有着较好的发展前景,这也是本次竞赛中采用的思路。
核心算法
STM 算法在 VOS 领域取得了较大的成功,其使用记忆力网络来存储过去帧的检测特征,并利用时空注意力机制将过去帧特征与当前帧特征的每个像素点进行匹配,这充分利用了之前检测结果的先验信息,对于遮挡情形以及剧烈运动情形有着很好的处理能力。
然而,STM 算法也存在许多问题,其 Non-local 匹配机制虽然可以很好的利用之前帧检测结果的特征,但也很容易出现一个目标匹配到多个目标的问题,特别是不同目标之间有着相似外观的时候。对此 KMN 网络提出了 kernelized memory reader 方法。具体来说,该方法首先筛选出 Memory 特征中与当前帧特征最匹配的一个点,以此为中心点构建高斯核,以此抑制远离该点区域的特征响应。这种 Memory reader 可以有效抑制外观相似目标的错误响应,防止 STM 算法检测出多个相似目标。
KMN 存在有空间不连续的问题。当不同目标具有相似外观时,得到的最匹配特征点很容易出现在其他目标区域,出现目标匹配错误情形。
总结如下 STM,KMN 算法的主要问题如下:
- 特征缺少空间连续性: Memory reader 的 Non-local 注意力机制忽略了特征的空间连续性
- 训练速度慢: 由于视频段物体数量不同,STM 使用单块 GPU 跑一个视频,造成显存分配不均衡。目标数量过多时显存不够,过少时显存又过剩。经过实测,一个 720x1280 的视频段,目标数量大于 4 且图片数量大于 100 帧时,只有 32GB 的 V100 才能满足训练要求
- 误差累积: 由于训练视频段只有 3 帧图片,推理视频段却有上百帧的图片。如此大的 gap 会导致 STM 算法在推理时鲁棒性很差,易造成误差的累积与放大
对此,我们的解决思路是:
- 使用带有 spacial-constrain 的 kernelized memory reader 模块来提高特征的空间连续性,提高目标的匹配精度。其结构如图:
其次,提出将 STM 算法改进为更纯粹的单目标分割算法,在加载数据时便将视频段的多个目标拆解为单个目标,而不是在模型计算的时候在模型内部拆分。这样做的好处是可以确保模型接触的视频段全部为单目标视频段,目标数目固定,方便了网络的训练与推理。确保可以根据显存数量来自由设置 batchsize。原 STM 算法,在训练天池的人物分割数据集时,在不改变原分辨率(720x1280)的情况下,只有 32G 显存的 v100 可以跑得动一个视频段,除此以外任何一张显卡也不行,哪怕是总显存已经超过 32G 的多张卡并联也不可以。
改进后的单目标 STM 算法只负责模型计算,将多目标拆分工作交给了数据集加载部分,将多目标聚合工作交给了推理代码。这种更加纯粹的单目标 STM 算法使得模型更加关注计算本身,而无需负责多目标的拆分与聚合。使得模型可以自由的根据显存大小设置 batchsize,同时也可以使用多张显存不大的显卡并行训练或推理。结构如图:
经过实测,当使用 720P 分辨率的天池人物分割数据集时,原始 STM 算法的训练和推理过程只能使用 32G 显存的 V100 显卡来进行,除此之外使用任何一张显存小一点的显卡都不行,而经过改进后的单目标 STM 算法可以自由选择选择,使用 4x3090 进行训练时,设置 batchsize=8,即每个显卡负责训练两个目标,训练速度远远超过单张 v100 的训练速度。
最后,在训练阶段引入 re-id 噪声,让网络主动适应这种混淆噪声,以提高算法的鲁棒性。具体过程为,在生成当前帧的预测结果之后,随机选取一个 50x50 的区域,将此区域内的背景、前景倒换,以模仿模型在推理过程中的混淆问题。
这种引入 re-id 噪声来进行对抗训练的方法有效地避免了 STM 算法过度信任 Memory 中的缓存帧,防止了误差的累计与放大,显著的提高了单目标 STM 算法的精度。训练策略如下:
比赛经验总结和感想
阿里云 \&intel 举办的本次比赛定义为算法赛道,团队在参赛过程中发现无监督的 Video Object Segmentation 算法十分依赖实例分割的先验与时序 Propagation 网络的相互配合,比赛过程中,团队研究并选取了 Propagation 效果较好的 STM 网络并对其空间限制缺失的情况进行改善,利用历史 memory 产生 Spatial-Constrain Kernel 对人物出现的空间位置进行限制,最终能够解决绝大部分的 ID Switch 的情况,其次团队选取了分割边界较为好的 SOLOv2 作为实例分割的网络,产生很好的实例分割结果,最后团队借鉴 Video Object Tracking 的思路,建立 Tracking Score 来决定最终的显著性目标及初始帧,将 Propagation 和 Segmentation 很好的结合在了一起。
其次,本次比赛在工程方面,团队使用了 intel 提供的 BF16 加速指令,使得模型推理速度提升 200%+,通过对 CPU 计算能力与网络大小的均衡,团队指定出了最佳的推理策略,并针对数据集每段视频 Object 数量不同造成的负载不均衡问题进行了解决,最终团队以第二名的分数进入总决赛,无多模型、分辨率融合的情形下,Mean J\&F 达到 88.8,200 段视频的 CPU 推理时间仅为 4 个小时!
视频是跨向通用视觉 AI 的一道门槛,当 AI 算法能够真正理解视频的时候,它或许才能够理解人类视觉的原理,视频技术将成为新视觉 AI 一个亟待攻克的难关,团队将一直关注并尝试解决视频领域已知的难题,希望推动通用视觉 AI 的发展与进步。
查看更多内容,欢迎访问天池技术圈官方地址:全球视频云创新挑战赛算法赛道第一名比赛攻略\_天池技术圈-阿里云天池
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。