SOLOv2:Dynamic and Fast Instance Segmentation

SOLOv2是在SOLO的基础上设计的网络,主要是将mask预测分支解耦成掩码核预测(Mask kernel branch)和掩码特征学习(Mask feature branch),分别负责生成卷积核和需要卷积的特征映射,使得mask分支生成速度更快,最后也提出Matrix-nms快速过滤结果

什么是 SOLOv2?

  • SOLOv2-20230408144052
  • 在 SOLOv1 的基础上,通过重新设计 Mask 预测分支实现效果提升
  • SOLOv 2 的 Mask 分支改进思路是将 Mask 分支解藕成掩码核预测(Mask kernel branch)和掩码特征学习(Mask feature branch),分别负责生成卷积核和需要卷积的特征映射
  • 另一个创新是使用矩阵非最大值抑制(NMS)技术显著减少了推理运算的开销

SOLOv2 的网络结构?

  • SOLOv2-20230408144052
  • 继承 SOLOv1 的网络结构,将 Mask 分支解藕成掩码核预测(Mask kernel branch)和掩码特征学习(Mask feature branch),分别负责生成卷积核和需要卷积的特征映射

SOLOv2 的动态实例分割?

  • SOLOv2-20230408144052
  • 已知 SOLOv1 从 FCN 的特征直接生成 SxS 个 Mask 预测结果,而 SOLOv2 不直接生成掩码预测结果,而是生成掩码核预测(Mask kernel branch)和掩码特征学习(Mask feature branch),分别负责生成卷积核和需要卷积的特征映射
  • 上图 G 表示生成的掩码核、F 表示掩码特征,假设需要计算 Si,SjS_i,S_j 位置的掩码预测,从 G 中取出对应位置 (i, j)处的值作为卷积核,然后去和 F 做卷积运算,得到的就是掩码预测结果

    Mi,j=Gi,jF\mathrm{M}_{i,j}=\mathrm{G}_{i,j}*\mathrm{F}

  • Mask kernel G:已知卷积核的通用大小表达形式是 (Cin,k,k,Cout)(C_{in}, k, k, C_{out}),其中 CinCoutC_{in}、C_{out} 是输入输出通道数,由于 F 的特征长度已知 E,即 Cin=EC_{in}=E,假定输出通道 Cout=1C_{out}=1,那么当 G 使用 1x 1 卷积时,D=E 满足卷积核大小,当 G 使用 3 x 3 卷积时,D=9E 满足卷积核大小
  • Mask Feature F:将所有的 FPN 层融合到 1/4 Mask,作为 Mask 特征分支

SOLOv2 的损失函数?

  • 损失函数包含 2 部分,一部分是类别预测、一部分是实例 mask 预测

  • 实例 mask 预测使用 Dice loss ,即计算每个正样本对应 mask 的 Dice loss,然后取平均值

参考:

  1. SOLOv2算法学习_鲸落于北的博客-CSDN博客
  2. 性能提升30%以上,实时实例分割算法SOLOv2实现产业SOTA