[论文笔记] BCNet 阅读笔记

发布于:2023-01-09 ⋅ 阅读:(486) ⋅ 点赞:(0)

Deep Occlusion-Aware Instance Segmentation with Overlapping BiLayers(CVPR 2021)

论文链接:论文链接
代码链接:代码链接

  • 文章的 Related Work 可以当一篇综述,有很多关于 Occlusion Handling 的论文,可以参考
  • Amodal Instance Segmentation:模态实例分割。传统实例分割只能 focus 可见区域,但是模态实例分割可以预测被遮挡的部分

摘要

  • 动机:高度重叠目标难以进行实例分割
  • 方法
    • 将图像建模(解耦)为两个重叠层,并提出双层卷积网络(BCNet),其中顶部的GCN层检测遮挡物体(遮挡者),底部的GCN层推断被部分遮挡的物体(被遮挡者)
    • BCNet 在模态和非模态设置中使用不同的backbone和对象检测器在整体分割性能上实现了一致的收益

引言

  • 原理图
    • BCNet 在 ROI 提取后同时回归 遮挡者 和 被遮挡者,使用两个不同的层将它们的像素进行分组,将目标的边界进行解耦,最后在mask 回归阶段将两者进行 interaction
      在这里插入图片描述
  • 传统方法的局限
    • 传统方法通过 NMS 或 后处理 来解决相邻物体之间的掩码冲突,因此,它们的结果是 沿边界过度平滑相邻物体的差别很小
    • ROI 中的感受野可以观察到属于同一类别的多个物体,因此当 遮挡者 的一部分被判定在 被遮挡者 中时,传统的 mask head 不能解决这种问题,导致误差
      在这里插入图片描述
  • BCNet 对比其他 mask head 的结构
    在这里插入图片描述

Occlusion-Aware Instance Segmentation(遮挡感知实例分割)

  • 网络结构图

在这里插入图片描述

  • GCN 相关
    在这里插入图片描述

    • 给定邻接图 g = < V , E > \mathcal g=<\mathcal V, \mathcal E> g=<V,E>,图卷积操作定义如下:
      Z = σ ( A X W g ) + X \bold Z=\sigma (\bold A \bold X \bold W_g)+\bold X Z=σ(AXWg)+X
      其中 X ∈ R N × K \bold X\in R^{N×K} XRN×K 是输入特征, N = H × W N=H×W N=H×W 是 ROI 区域中的像素数量, K K K 是每一个 node(每个像素就是一个 node)的特征维度, A ∈ R N × N \bold A\in R^{N×N} ARN×N 是从特征相似度而来的定义图结点邻接关系邻接矩阵, W g ∈ R K × K ′ \bold W_g\in R^{K×K'} WgRK×K 是用来将 output 进行变换的可学习权重矩阵,其中 K ′ = K K'=K K=K
    • 输出特征 Z ∈ R N × K ′ Z\in R^{N×K'} ZRN×K 包括通过全局信息传播在整个图层内更新的节点特征,这是在非线性函数 σ ( ⋅ ) σ(·) σ() 之后得到的,包括归一化和ReLU函数。最后在 GCN 层添加一个残差链接
    • 为了构造邻接矩阵 A \bold A A ,通过点积相似度定义每两个图节点 x i , x j x_i,x_j xi,xj 之间的成对相似度为
      A i j = s o f t m a x ( F ( x i , x j ) ) , F ( x i , x j ) = θ ( x i ) T ϕ ( x j ) \bold A_{ij}=softmax(F(x_i, x_j)),\\ F(x_i,x_j)=\theta(x_i)^T\phi (x_j) Aij=softmax(F(xi,xj)),F(xi,xj)=θ(xi)Tϕ(xj)
      其中 θ , ϕ \theta ,\phi θ,ϕ 是两个通过 1 × 1 1×1 1×1 卷积实现的可训练变换函数,如 Figure 4 ,两个结点之间的高置信度边缘对应较大的特征相似度
    • 定义 G i \mathcal G^i Gi 表示第 i 个图, X r o i X_{roi} Xroi 表示输入 ROI 特征, W f \bold W_f Wf 表示FCN 层的权重,整个表达式如下:
      Z 1 = σ ( A 1 X f W g 1 ) + X f X f = Z 0 W f 0 + X r o i Z 0 = σ ( A 0 X r o i W g 0 ) + X r o i \bold Z^1=\sigma (\bold A^1\bold X_f \bold W_g^1) + \bold X_f \\ \bold X_f = \bold Z^0 \bold W_f^0+\bold X_{roi}\\ \bold Z^0=\sigma (\bold A^0\bold X_{roi}\bold W_g^0)+\bold X_{roi} Z1=σ(A1XfWg1)+XfXf=Z0Wf0+XroiZ0=σ(A0XroiWg0)+Xroi
      为了连接两个 GCN 块,第一个 GCN 的表示遮挡者的输出特征 Z 0 \bold Z^0 Z0 直接加到了 X r o i \bold X_{roi} Xroi 上面来融合 occlusion-aware 特征 X f \bold X_f Xf ,它是第二个 GCN 层的输入,用来获得 被遮挡者 的mask Z 1 \bold Z^1 Z1
  • 损失函数

    • 遮挡者的 边界 损失函数
      在这里插入图片描述
    • 遮挡者的 mask 损失函数
      在这里插入图片描述
    • 多任务损失
      在这里插入图片描述
    • Detect 损失
      在这里插入图片描述
      在这里插入图片描述

实验结果

  • 第一个 GCN 层的作用

在这里插入图片描述

  • 第二个 GCN 层有无 第一个 GCN 层
    在这里插入图片描述

  • GCN 和 FCN 的差别
    在这里插入图片描述

  • 使用不同的检测器
    在这里插入图片描述

  • 可视化结果
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  • 不同数据集、不同SOTA方法的结果
    在这里插入图片描述


网站公告

今日签到

点亮在社区的每一天
去签到