Siam Mask

Paper : Fast Online Object Tracking and Segmentation: A Unifying Approach
Code : official

摘要

作者提出了SiamMask 的结构,可以根据上一帧的bounding box的信息对下一帧的分割掩膜进行预测, 然后再在掩膜的基础上生成该帧对应的bounding box。与其他Segmentation 的方法相比,该结构采用bbox进行mask预测,因此速度会快很多。SiamMask的实现方法比较简单,在SiamRPN的基础上在新增一个分支进行mask的生成,创新点比较小。

网络结构

在这里插入图片描述
网络的整体结构如图所示,作者在SiamRPN的两个分支之外,添加了一个新的分支用来进行Mask的预测。为了使得到的score map/response map容纳更大的信息,Siam Mask 中在互相关的一步采用的是depth-wise cross-correlation 层,可以输出一个多通道的response map。

Depth-wise Cross-correlation :

  • 通过类似深度可分离卷积的方法,逐通道计算correlation结果,这样的好处是可以得到一个通道数非1的输出。
    在这里插入图片描述

损失函数:在训练期间,每个RoW(Region of a candidate window)都用ground truth 标签 y n ∈ { ± 1 } y_n\in \{\pm 1\} yn{±1} 标记,并且还与大小为 w × h w\times h w×h 的ground truth mask c n c_n cn 相关联。 令 c n i j ∈ { ± 1 } c^{ij}_{n}\in \{\pm1\} cnij{±1}表示与第 n n n 个候选RoW中的对象掩模的像素 ( i , j ) (i,j) (i,j) 相对应的标签。 掩码预测任务的损失函数 L mask \mathcal L_\text{mask} Lmask 是所有RoW上的二进制logistic回归损失
L mask ( θ , ϕ ) = ∑ n ( 1 + y n 2 w h ∑ i , j log ⁡ ( 1 + e − c n i j m n i j ) ) \mathcal L_\text{mask}(\theta,\phi) = \sum_n (\frac{1+y_n}{2wh}\sum_{i,j}\log(1+e^{-c_n^{ij}m_n^{ij}})) Lmask(θ,ϕ)=n(2wh1+yni,jlog(1+ecnijmnij))

其中, 1 + y n 2 \frac{1+y_n}{2} 21+yn 表示只考虑 y n = 1 y_n=1 yn=1 的情况

对于mask预测分支, h ϕ h_\phi hϕ 网络由两个1*1 的卷积层组成,输出通道数分别为256和63*63。作者设计了两种SiamMask的结构,一种结构具有三个分支,一种结构具有两个分支,损失函数分别为
L 2B = λ 1 ⋅ L mask + λ 2 ⋅ L sim L 3B = λ 1 ⋅ L mask + λ 2 ⋅ L score + λ 3 ⋅ L box \\\mathcal L_\text{2B} = \lambda_1 \cdot \mathcal L_\text{mask}+\lambda_2\cdot \mathcal L_\text{sim} \\\mathcal L_\text{3B} = \lambda_1 \cdot \mathcal L_\text{mask}+\lambda_2\cdot \mathcal L_\text{score}+\lambda_3\cdot \mathcal L_\text{box} L2B=λ1Lmask+λ2LsimL3B=λ1Lmask+λ2Lscore+λ3Lbox

其中, L sim \mathcal L_\text{sim} Lsim 表示SiamFC提出的损失函数。正例和负例的label方式如下:对于anchor box,与ground-truth 的IoU在0.6以上时标记为正例,否则为负例。对于bbox和score分支,使用两个1*1的卷积核进行计算。

使用Mask生成bbox的方式有三种:

  • 对齐的min-max bbox
  • 最小矩形包围盒MBR
  • 自动生成的优化矩形包围盒
    在这里插入图片描述
    优化矩形包围盒:

arg ⁡ min ⁡ bbox { cost ( bbox ) = α ∑ x ∉ bbox [ Mask ( x ) > 0 ] + ∑ x ∈ bbox [ Mask ( x ) = 0 ] } subject to  1 M f ∑ x ∉ bbox [ Mask ( x ) > 0 ] < Θ f , 1 ∣ bbox ∣ ∑ x ∈ bbox [ Mask ( x ) = 0 ] < Θ b \\\arg\min_{\text{bbox}} \{\text{cost}(\text{bbox}) = \alpha \sum_{x\not \in \text{bbox}}[\text{Mask}(x)>0]+\sum_{x\in \text{bbox}}[\text{Mask}(x) = 0]\} \\ \text{subject to }\frac{1}{M_f}\sum_{x\not \in \text{bbox}}[\text{Mask}(x)>0]<\Theta_f,\frac{1}{|\text{bbox}|}\sum_{x \in \text{bbox}}[\text{Mask}(x) = 0]<\Theta_b argbboxmin{cost(bbox)=αxbbox[Mask(x)>0]+xbbox[Mask(x)=0]}subject to Mf1xbbox[Mask(x)>0]<Θf,bbox1xbbox[Mask(x)=0]<Θb

其中 M f M_f Mf 表示对象的像素数。

An intuitive interpretation of the cost function is that we want to find a bounding box which minimizes a weighted sum of the number of object pixels outside of the bounding box and the number of background pixels inside the bounding box, with percentage of excluded object pixels and included background pixels constrained by Θf and Θb .

网络架构:对于这两个Siam Mask,使用ResNet-50直到第4阶段的最终卷积层作为我们的主干网络。 为了在更深的层中获得较高的空间分辨率,我们通过使用步幅为1的卷积将输出步幅减小为8。此外,我们通过使用dilated conv来增加感受野大小。 在我们的模型中,我们向共享主干网络添加一个非共享的调整层(具有256个输出的1×1 conv)。

推断:在两个分支的SiamMask中,对于第一个视频帧之后的每个视频帧,我们使用 min-max 框来拟合输出蒙版,并将其用作裁剪下一帧搜索区域的参考。 相反,在三分支SiamMask中,我们利用box分支的最高得分输出作为参考。

遮罩修饰模块:为了产生更精确的对象蒙版,使用多个由上采样层和跳过连接组成的修饰模块合并了低分辨率和高分辨率特征。 下图给出了修饰模块U3的示例,展示了如何使用堆叠式精炼模块生成掩模。

在这里插入图片描述
在这里插入图片描述
失败案例:我们讨论了SiamMask失败的两种情况:运动模糊和“非对象”实例。 尽管本质上有所不同,但这两种情况可以说是由于训练集中完全缺乏相似的训练样本而引起的,它们集中在可以从前景中明确区分的对象上。

在这里插入图片描述

总结

作者的实验部分做的比较常规,对于Object Tracing部分的实验,作者达到了SOTA的效果;对于Object Segmentation的实验,作者表示尽管我表现不行但是我能做实时。实时主要是SiamFC结构造成的,而Object Tracing的表现提升在我看来不一定很有参考价值,该模型可以在两任务的数据集上同时训练,相当于做了一个超大的数据增广,而且Mask本身就比bbox要多提供很多信息。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值