开源SOLOv2,让动态实例分割更快更强更精准

 

作者

介绍

作者建立一个性能强大的简单,通过动态学习对象分割器的蒙版头,使蒙版头以位置为条件,进一步提升性能。具体来说,将遮罩分支解耦为遮罩内核分支和遮罩特征分支,分别负责学习卷积内核和卷积特征。利用矩阵NMS(非最大抑制)以显着减少由于掩码的NMS造成的推理时间开销。Matrix NMS可以一次完成具有并行矩阵运算的NMS,并产生更好的结果。

 

作者演示了一个简单的直接实例分割系统,该系统在速度和准确性上均优于一些最新方法。轻量级的SOLOv2以31.3 FPS的速度执行,并产生37.1%的AP。此外最新的物体检测结果和全景分割显示出潜力,可以作为实例分割以外的许多实例级识别任务的新的强大基准。

 

图1 – COCO test-dev上的速度精度折衷方案,用于一些最近的实例分割方法。拟议的SOLOv2优于一系列最新算法。在Tesla V100-GPU机器上测试了所有方法的推理时间

 

相关工作

 

  •  实例细分

        

实例分割是一项艰巨的任务,因为它需要同时进行实例级和像素级的预测。

现有方法可以概括为三类:

自上而下的方法从对象检测的角度解决了该问题,即先检测然后在框中分割对象。在无锚对象检测器FCOS 上建立了他们的方法,显示了有希望的性能。

自下而上的方法将任务视为“标签-然后-群集”问题,例如,学习每个像素的嵌入,然后将它们聚类成组。

最新的直接方法旨在直接处理实例分割,而不依赖于盒子检测或嵌入学习.

 

作者继承了SOLO的核心设计,并进一步探索了直接实例分割解决方案。作者方法与最新的YOLACT 进行比较。YOLACT学习针对每个锚框将一组标准化为[-1,1]的系数。在推理过程中,它首先执行边界框检测,然后使用预测的框来裁剪组装好的蒙版。BlendMask改善了YOLACT,在准确性和速度之间实现了更好的平衡。作者的方法是从SOLO演变为通过将原始的掩码预测直接解耦到内核学习和特征学习来实现的。不需要锚框。无需标准化。不需要边界框检测。我们直接将输入图像映射到所需的对象类和对象蒙版。训练和推论都简单得多。因此该框架要简单得多,但性能却要好得多(在可比的速度下AP可以提高6%);而我们的最佳模型则达到了41.7 AP,而YOLACT的最佳值为31.2%。

 

  • 动态卷积

在传统的卷积层中,学习的卷积核保持固定并独立于输入,例如,每个图像和图像每个位置的权重都相同。以前的一些作品探讨了为传统卷积带来更多灵活性的想法。空间变换网络预测全局参数变换以扭曲特征图,从而使网络能够自适应地变换以输入为条件的特征图。 用动态滤波器来主动预测卷积滤波器的参数。它以特定于样本的方式将动态生成的滤镜应用于图像。可变形卷积网络通过预测每个图像位置的偏移量来动态地学习采样位置。作者将动态方案引入实例分割,并启用按位置学习实例分割器。

 

  • 非最大抑制

NMS在许多计算机视觉任务中被广泛采用,并成为对象检测系统的重要组成部分。提出了一些最近的工作来改进传统的NMS。它们可以分为两组,以提高准确性或加快速度。代替根据阈值将硬去除应用于重复的预测,Soft-NMS 根据邻居与较高得分的预测的重叠程度来降低其置信度得分。与传统的NMS相比,检测精度有所提高,但是由于顺序操作,推理速度很慢。自适应NMS 将动态抑制阈值应用于每个实例,该阈值是针对人群中的行人检测量身定制的。为了加快推理速度,提出快速NMS使得可以并行决定要保留的预测或丢弃的预测。但它以性能下降为代价加快了速度。与以前的方法不同,作者的Matrix NMS同时解决了硬去除和顺序操作的问题。结果提出的Matrix NMS在简单的PyTorch实施中能够在不到1 ms的时间内处理500个掩模,这与网络评估时相比可以忽略不计,并且比Fast NMS的效率高出0.4%。

 

SOLOv1

 

SOLOv1框架的核心思想是按位置划分对象。输入图像在概念上分为S×S网格。如果对象的中心落入网格单元,则该网格单元负责预测语义类别以及分配每个像素位置类别。有两个分支:类别分支和掩码分支。类别分支预测语义类别,而遮罩分支则对对象实例进行分段。

 

图2 – SOLOv1架构

SOLOv2

下面SOLOv2设计的详细信息。

动态实例细分

    作者从SOLOv1继承了大多数设置,例如网格单元,多级预测,CoordConv 和损失函数。在此基础上,作者介绍了一种动态方案,在该方案中,将原始的遮罩分支解耦为遮罩内核分支和遮罩特征分支,分别预测卷积内核和卷积特征。我们在图3中显示了与SOLOv1的比较。

图3 –动态SOLOv2与SOLOv1的比较

  • 掩码内核分支

        掩码内核分支与语义类别分支一起位于预测头中。头部在由FPN 生成的特征图的金字塔上工作。头部中的两个分支都包含4个conv,用于特征提取,最后一个conv用于预测。头部的权重在不同的功能图级别之间共享。我们通过给第一卷积访问归一化的坐标,即连接两个附加的输入通道,将空间功能添加到内核分支。

  • 遮罩功能分支

        遮罩特征分支需要预测实例感知特征图F∈RH×W×E,其中E是遮罩特征的维数。F将由mask内核分支的输出卷积。如果使用了所有预测权重,即S2分类器,则最终卷积后的输出实例蒙版将为H×W×S2,这与SOLOv1的输出空间相同。

 

        由于遮罩特征和遮罩内核是分离的并分别进行预测,因此有两种方法可以构建遮罩特征分支。作者将其与内核分支一起放入头部。这意味着我们可以预测每个FPN级别的遮罩功能。或者,为所有FPN级别预测统一的蒙版特征表示。

图4 –统一mask功能分支

最后采用后者来提高效率和效率。为了学习统一的高分辨率MASK特征表示,我们应用了基于语义分割启发的特征金字塔融合。经过3×3转换,组范数,ReLU和2×双线性上采样的重复阶段,FPN特征P2至P5为合并为1/4比例的单个输出。逐元素求和后的最后一层包括1×1卷积,组范数和ReLU。详细信息如图3所示。应该注意的是,在进行卷积和双线性上采样之前,我们将归一化的像素坐标输入到最深的FPN级别(以1/32比例)。提供的准确位置信息对于启用位置敏感度和预测实例感知功能非常重要。

 

  • 形成实例遮罩

对于(i,j)处的每个网格单元,我们首先获得掩码kernelGi,j ,:∈RD。然后将Gi,j ,:与F卷积得到实例蒙版。总共,每个预测级别最多会有S2个掩码。最后,我们使用提出的Matrix NMS来获得最终实例分割结果。

 

  • 学习与推理

标签分配和丢失功能与SOLOv1相同。训练损失函数定义如下:

Matrix NMS

 

它受到NMS的启发,NMS每次选择置信度最高的候选掩模(或盒),以降低与之重叠的候选掩模(或盒)的置信度。这个过程是迭代的,连续的,不能并行化。

 

作者的做法正好相反,因为这是为了降低每个面具的可信度,所以试图按照一定的规则逐一降低所有面具的可信度。候选掩模j的置信度降低,这与两个因素有关:

 

1) 与之重叠的掩模i具有较高的掩模i,迫使掩模j具有较低的置信度;

 

2) 还有一种可能性,即蒙版i本身将被其他候选蒙版k降低,蒙版i的可能性将被降低。

 

 

当然,你也可以说,面具k的信心可能会被其他面具所强迫衰退。如果考虑完整的链,这个过程是复杂的。作者利用上述过程作为衰减因子的近似,并没有追求完美的数学表达式。在实际计算中,只考虑了由重叠度最大、置信度较高的掩模引起的衰减。

 

mask i 置信度被降低的概率:

mask j 置信度衰减因子:

给出了Matrix NMS的Python代码:

 

  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
def matrix nms(scores, masks, method=’gauss’, sigma=0.5):# scores: mask scores in descending order (N)# masks: binary masks (NxHxW)# method: ’linear’ or ’gauss’# sigma: std in gaussian method# reshape for computation: Nx(HW)masks = masks.reshape(N, HxW)# pre−compute the IoU matrix: NxNintersection = mm(masks, masks.T)areas = masks.sum(dim=1).expand(N, N)union = areas + areas.T − intersectionious = (intersection / union).triu(diagonal=1)# max IoU for each: NxNious cmax = ious.max(0)ious cmax = ious cmax.expand(N, N).T# Matrix NMS, Eqn.(4): NxNif method == ’gauss’: # gaussiandecay = exp(−(iousˆ2 − ious cmaxˆ2) / sigma)else: # lineardecay = (1 − ious) / (1 − ious cmax)# decay factor: Ndecay = decay.min(dim=0)return scores ∗ decay

实验结果

 

作者在COCO test dev数据集上进行了实例分割实验:

 

 

 

 

SOLOv2实现了一个新的SOTA,使用Res-DCN-101-FPN,AP达到41.7!几乎比掩模RCNN高4个百分点。

 

作者直接在生成的掩码上生成目标帧,并在COCO test dev数据集上得到目标检测结果,也达到了主流算法的水平:

 

 

下图是与掩模R-CNN分割结果的比较:

图5 –Mask细节比较。我们将模型(AP为39.7%)与Mask R-CNN(AP为37.8%)的预测对象边界细节进行了比较。Mask-RCNN的蒙版头通常限制为28×28分辨率,导致在对象边界处的预测较差。

 

 

图6 –边界框对象的速度精度折衷,在COCO test-dev上进行检测。在TitanX-GPU机器上评估所有方法的推理时间。

结论

 

作者大大改善了SOLOv1从三个方面进行实例细分。

 

根据位置来学习掩模预测头的自适应动态卷积内核,从而实现更紧凑但功能更强大的头设计,并通过减少FLOP获得更好的结果。

 

作者重新设计了Mask功能,更准确的预测了边界。特别是对于中型和大型对象

在物体检测中实例分割推理效率的瓶颈是掩码的NMS。以前的作品都使用

框NMS作为替代,或通过近似来加快速度,这会损害面罩AP。 作者设计了一种简单且速度更快的NMS策略,称为Matrix NMS,用于掩模的NMS处理,不带牺牲Mask AP。

 

论文地址:

https://arxiv.org/pdf/2003.10152.pdf

开源地址:

https://github.com/aim-uofa/AdelaiDet/

 

更多论文地址源码地址:关注“图像算法”微信公众号

  • 0
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值