分享

Swin-Transformer再次助力夺冠 | Kaggle第1名方案解读

 InfoRich 2021-10-27

Image

在报告中介绍了two-step “detect-then-match”的视频实例分割方法。第1步对每一帧进行实例分割得到大量的instance mask proposals。第2步是利用光流进行帧间instance mask matching。用high quality mask proposals证明了一个简单的匹配机制可以促使得到更好的跟踪。本文的方法在2021年UVO比赛中取得了第1名的成绩。

1实例分割

这里作者采用了先检测后进行语义分割的Pipeline的方法。

  • 首先,训练一个目标检测器为视频的每一帧生成边界框。
  • 然后,取前100个bounding box proposals,裁剪带有这些bounding box的图像,并将调整大小后的图像块输入前景/背景分割网络,以获得Instance Mask。

1、检测网络

  • 作者采用Cascade Region Proposal Network作为Baseline,采用Focal loss和GIoU loss进行分类和边界框回归。

  • 在训练过程中,作者使用2个独立的SimOTA采样器进行正/负样本采样,其中一个用于分类,另一个用于边界框回归。与此同时作者也放宽了边界框回归采样器的选择标准,以获得更多的正样本。

  • 与分类头和边界框回归头并行增加一个IoU分支,用于预测预测边界框与ground truth之间的IoU。

  • 为了解决目标检测中分类任务和回归任务之间的冲突问题,作者采用了decoupled head算法。

  • 为了节省内存,所有金字塔的头部都有相同的权重。

  • 将decoupled head的第1卷积层替换为DCN。

  • 作者在FPN中添加了CARAFE块,并使用Swin-Transformer作为Backbone。

2、语义分割

前面使用检测网络预测的边界框来裁剪图像,并将它们的大小调整为512×512。裁剪后的图像路径被输入到分割网络以获得Instance Mask。

作者采用了Upernet架构和Swin-Transformer作为Backbone。

该分割网络是一种二值分割网络,如果像素属于目标,则被预测为前景,否则被预测为背景。

2帧间Mask匹配

Image
图1

图1显示了本文方法的概述。

作者的想法类似于IoU-tracker。利用预测的光流将前一帧的跟踪器wrapped 到当前帧,然后通过计算被wrapped Mask与detected Mask之间的IoU将跟踪器与当前帧的detected Mask匹配。

用M表示所有帧的 mask proposals,表示帧t的mask proposal。t表示视频长度,F表示光流,其中表示帧t与帧t+1之间的光流。

  • 首先,用第1帧中的mask proposal初始化跟踪器。
  • 然后,使用光流将跟踪器的warpped mask到第2帧。
  • 然后,通过计算它们之间的IoU,将warpped mask与detected Mask 匹配。

作者认为只有当IoU大于固定阈值时匹配才会成功。如果跟踪器与detected Mask匹配,则用匹配的Mask替换跟踪器的最新Mask。如果跟踪器和中的Mask之间没有匹配,则使用warpped mask更新其最新的Mask。如果跟踪器没有连续匹配5帧,从跟踪器列表中删除这个跟踪器。对于中没有匹配跟踪器的Mask,作者用这些Mask初始化新的跟踪器,并将这些跟踪器添加到跟踪器列表中使用非最大抑制(NMS)来去除最新Mask IoU大于0.7的跟踪器。

给每个跟踪器分配一个分数,这个分数是被跟踪的帧数和检测分数之和的乘积。

3复现细节

1、检测模型

作者使用MMDetection来训练检测器。对于Backbone网络,作者通过ImageNet 22k预训练了Swin-Transformer。

这里所有的检测器都经过了Detectron '1x’ setting的训练。2个SimOTA采样的中心比设置为0.25,分类头的top-K数设置为10,回归头的top-K数设置为20,以获得更多的正样本。

分类分支和回归分支使用4个的卷积层,IoU分支和回归分支共享相同的卷积层。为了训练以Swin-Transformer为Backbone的检测器,作者采用AdamW作为优化器,初始学习率设置为1e-4。批量大小设置为16。在COCO上进行训练后,结合6个epoch的UVO-Sparse和UVO-Dense数据集对检测器进行微调。所有的检测器都是以 class-agnostic的方式训练的。在推理过程中增加测试时间,进一步提高网络性能。

2、语义分割

作者使用MMSegmentation来训练分割网络。这里使用与检测网络相同的Backbone。

在训练过程中,给定一幅图像和一个Instance Mask,首先生成一个bounding box,bounding box包含Instance Mask,然后在bounding box的各个方向上添加20像素的边界。

作者使用生成的边界框来裁剪图像,并调整图像补丁的大小为。随机翻转、随机光度失真和随机bounding box抖动被用作数据增强。

作者还采用多元学习率策略,初始学习率设置为6e-5。批大小被设置为32,AdamW被用作优化器。

  • 首先,在OpenImage, PASCALVOC和COCO数据集的组合上训练网络为300k iter,
  • 然后,在UVO-Density和UVO-Sparse数据集的组合上优化网络为100k迭代,初始学习率设置为6e-6。

所有的分割网络都是用class-agnostic的方式训练的,因此,分割裁剪路径中的目标成为一个前景/后景分割问题。推理过程中仅使用翻转试验增强。

3、光流估计

作者在FlyingTh-ings上训练的模型。FlyingThings是一个用于光流估计的大规模合成数据集。数据集是通过随机化从ShapeNet数据集中收集的相机的运动和合成对象生成的。先在FlyingThings上对光流估计模型进行预训练,每次迭代10万次,BS为12;然后在FlyingThings3D上进行10万次迭代,BS为6。

指标与可视化结果

Image
表1
Image
图2

在图2中,作者展示了一些视频实例分割结果。本文的方法可以适用于不同形状的物体。

潜在的改进点

本文简单的“检测然后匹配”框架可以作为视频实例分割的Baseline。它严重依赖于每帧mask proposals的质量。该方法的性能可能受到严重遮挡、物体出现/消失/重新出现等因素的影响。通过在Mask匹配过程中考虑目标层理,可以很好地解决这些问题。

4参考

[1].1st Place Solution for the UVO Challenge on Video-based Open-World Segmentation 2021

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多