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

共 3491字,需浏览 7分钟

 ·

2021-10-30 06:17

↑ 点击蓝字 关注极市平台

作者丨ChaucerG
来源丨集智书童
编辑丨极市平台

极市导读

 

本文详细介绍了Kaggle冠军方案中的two-step “detect-then-match”的视频实例分割方法。 >>加入极市CV技术交流群,走在计算机视觉的最前沿

在报告中介绍了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匹配

图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。

指标与可视化结果
表1
图2

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

潜在的改进点

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

参考

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

如果觉得有用,就请分享到朋友圈吧!

△点击卡片关注极市平台,获取最新CV干货

公众号后台回复“CVPR21检测”获取CVPR2021目标检测论文下载~


极市干货
项目/比赛:珠港澳人工智能算法大赛算法打榜
算法trick目标检测比赛中的tricks集锦从39个kaggle竞赛中总结出来的图像分割的Tips和Tricks
技术综述:一文弄懂各种loss function工业图像异常检测最新研究总结(2019-2020)


CV技术社群邀请函 #

△长按添加极市小助手
添加极市小助手微信(ID : cvmart4)

备注:姓名-学校/公司-研究方向-城市(如:小极-北大-目标检测-深圳)


即可申请加入极市目标检测/图像分割/工业检测/人脸/医学影像/3D/SLAM/自动驾驶/超分辨率/姿态估计/ReID/GAN/图像增强/OCR/视频理解等技术交流群


每月大咖直播分享、真实项目需求对接、求职内推、算法竞赛、干货资讯汇总、与 10000+来自港科大、北大、清华、中科院、CMU、腾讯、百度等名校名企视觉开发者互动交流~



觉得有用麻烦给个在看啦~  
浏览 67
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报