网站欢迎页面在线设计,网页版百度网盘,有哪些做副业的网站,wordpress伟静态论文#xff1a;SOLOv2: Dynamic, Faster and Stronger 代码#xff1a;https://github.com/WXinlong/SOLO
摘要
主要提出了作者在SOLOv2中实现的优秀的实例分割方法#xff0c;旨在创建一个简单、直接、快速的实例分割框架#xff1a;
通过提出动态学习对象分割器的mas…论文SOLOv2: Dynamic, Faster and Stronger 代码https://github.com/WXinlong/SOLO
摘要
主要提出了作者在SOLOv2中实现的优秀的实例分割方法旨在创建一个简单、直接、快速的实例分割框架
通过提出动态学习对象分割器的mask head使mask head依赖于位置。具体来说将mask branch分解为mask kernel branch和mask feature branch分别负责学习卷积核和卷积特征 – mask learning提出Matrix NMS显著减少了由于mask的NMS导致的推断时间开销。 – Matrix NMSSOLOv2 可以用于目标检测和全景分割
介绍
SOLOv2首先引入了一个动态方案它允许按位置动态分割对象。具体来说,mask learn 可以分为两部分:convolution kernel learning 和 feature learning。
文章提出的Matrix NMS有很好的性能优势文章表示Matrix NMS在准确性和速度上均胜过现有的NMS和同类产品。
通过这些改进SOLOv2的AP性能比SOLOv1高出1.9%速度也提高了33%。 文章给出了在单个V100 GPU卡上的评估结果在MS COCO数据集上Res-50-FPN SOLOv2在18 FPS时可实现38.8的mask AP。
Related Work
1、Dynamic Convolutions动态卷积
在传统的卷积层中学习到的卷积核是固定的并且独立于输入。空间变换网络[Spatial Transform Networks]预测全局参数变换以扭曲特征图从而使网络能够自适应地变换以输入为条件的特征图。提出了动态滤波器[Dynamic filter]来主动预测卷积滤波器的参数。 它以特定于样本的方式将动态生成的滤镜应用于图像。变形卷积网络[Deformable Convolutional Networks]通过预测每个图像位置的偏移量来动态学习采样位置。
2、Non-Maximum Suppression
Soft-NMS根据邻居与较高得分的预测的重叠程度来降低其置信度得分。与传统的NMS相比检测精度有所提高但由于顺序操作推理速度较慢。Adaptive NMS将动态抑制阈值应用于每个实例该阈值是针对人群中的行人检测量身定制的。Fast NMS能够并行决定要保留的预测或丢弃的预测。但是它以性能下降为代价加快了速度。Matrix NMS同时解决了硬去除和顺序操作的问题。在简单的PyTorch实施中Matrix NMS能够在不到1 ms的时间内处理500个掩模并且比Fast NMS的效率高出0.4。
SOLOv1
SOLOv1框架的核心思想是按位置分割对象。将输入图片划分为S X S的网格。如果一个对象的中心落在一个网格单元格中该网格单元格负责预测语义类别以及分配每个像素的位置信息。主要包括两个分支category branch and mask branch。
Category branch预测语义类别掩码分支对对象实例进行分段。具体地说类分支输出S×S×C形张量其中C为对象类的个数。Mask branch
SOLOv2
1、Dynamic Instance Segmentation
SOLOv2 的网格多层次的预测coordConv和损失函数都是继承于SOLOv1,提出了一套动态方案 动态方案将原始的mask branch解耦为mask kernel branch以及mask feature branch分别用于预测卷积核和卷积特征。 如图2所示在SOLOv1中mask branch如2a所示由于参数量较多预测结果存在冗余信息因此进行解耦如图2b所示本文考虑到都是从预测结果层面出发。对此作者想到为什么不从卷积核角度出发由此得到2c上面为mask kernal分支下面为mask特征分支。
2、Mask Kernel Branch
Mask kernel 分支位于prediction head内与语义类别分支一起。prediction head 在 FPN 输出的特征图金字塔上工作。Head内的两分支由4个卷积组成用于特征提取最后一个卷积用于预测。Head 的权重在不同的特征图层级上共享。 作者通过给第一个卷积添加归一化的坐标即连接两个附加的输入通道将空间功能添加到内核分支。 对每个网格来说 kernel分支预测D维输出来表示预测的卷积核权值其中D为参数的数量。当为了生成具有E个输入通道的1 × 1卷积的权重D E当 3 × 3卷积D 9E。这些生成的权重取决于位置即网格单元。 如果将输入图像划分为S × S 个网格则输出空间将为 S × S × D。注意到这里不需要激活函数。 这里输入为 H × W × E的特征 F其中 E是输入特征的通道数输出为卷积核 S × S × D其中S是划分的网格数目D 是卷积核的通道数。对应关系如下1 × 1 × E 的卷积核则 D E 3 × 3 × E的卷积核则 D 9E。
3、Mask Feature Branch
由于Mask Feature和Mask Kernel是解耦并分别预测的因此有两种构造Mask Feature Branch的方法
predict the mask features for each FPN levels可以把它和Kernel分支一起放到head中这意味着我们可以预测每个FPN级别的掩码特征predict a unified mask feature representation for all FPN levels为所有FPN级别预测一个统一的掩码特征表示
文中采用的是第二种方法。
作者采用了特征金字塔融合来学习统一的高分辨率掩码特征表示。将FPN P2 至 P5层分别依次经过 【3 × 3 convgroup normReLU和 2x bilinear upsampling这样FPN特征P2至P5 被合并到了一个相同的输出原图的1/4然后再做逐点相加element-wise summation最后一层做【1x1卷积group norm 和ReLU】操作。如图3所示。应该注意的是在进行卷积和双线性上采样之前将归一化的像素坐标输入到最深的FPN级别以1/32比例。 提供的准确位置信息对于启用位置敏感度和预测实例感知功能非常重要。
Forming Instance Mask
对于每个单元格(i,j)首先得到掩码核 Gi,j,:∈RDG_{i,j,:} \in R^D Gi,j,:∈RD 然后将G_{i,j}与F卷积得到实例掩码。总的来说每个预测级别最多有S^2掩码。最后使用Matrix NMS 得到最终的实例分割结果。
Learning and Inference
Loss 函数和 SOLOv1 一样如公式2所示
LLcateλLmaskL L_{cate}λL_{mask} LLcateλLmask
Matrix NMS
其启发自soft-NMSsoft-NMS 是每次选择置信度最高的候选mask或框降低与其存在重叠的候选mask或框的置信度。这种过程像传统的Greedy NMS一样是顺序的无法并行实现。作者反其道而行之既然是降低每个mask的置信度那就想办法按照一定规则对所有mask挨个降低置信度。
某一候选mj置信度被降低和两方面因素有关其衰减因子受以下因素影响:
The penalty of each prediction mi on mj (si sj) 各预测mi对mj (si sj)的罚值;The probability of mi being suppressed. mi被抑制的概率
对第一个来说 可以通f(ioui,j)f(iou_{i, j})f(ioui,j)轻松计算mj上每个预测mi的惩罚值
第二个比较麻烦概率通常与IoUs呈正相关。所以在这里作者直接用the most overlapped prediction on mi预测来近似概率
为此最终的衰变因子变成公式4 更新后的分数由 sjsj⋅decayjs_js_j \cdot decay_jsjsj⋅decayj计算得出 考虑两个最简单的递减函数表示为线性函数
Gaussian
Implementation
Matrix NMS的所有操作都可以一次性实现不需要递归。
对按分数降序排列的前N个预值计算一个N×N的两两IoU矩阵。对于二进制掩码IoU矩阵可以通过矩阵运算有效地实现计算得到了IoU矩阵上的最大列数重叠的IoU计算所有较高得分预测的衰减因子通过逐列最小值选取各预测的衰减因子作为最有效的衰减因子(Eqn. (4))最后通过衰减因子对分数进行更新。
为了使用只需要threshing和选择 top-k 得分掩码作为最终的预测。
图4显示了Pytorch风格的 Matrix NMS 伪代码:
Experiments
Main Results SOLOv2 Visualization
The outputs of mask feature branch.作者使用的模型具有64个输出通道即在mask prediction之前的最后一层特征图的通道 E 64。 这里有两种主要模式首先最重要的是mask features是position-aware。它显示了水平和垂直扫描图像中对象的明显行为。另一个明显的模式是某些特征图负责激活所有前景对象例如在白框中的那个。
与Mask R-CNN分割结果的比较: 最终的输出如图8所示。不同的物体有不同的颜色SOLOv2方法在不同的场景中显示了良好的效果值得指出的是边界处的细节被很好地分割特别是对于大型对象。
Ablation Experiments
在表1中将SOLOv2与MS COCO test-dev上最先进的实例分割方法进行了比较。 参考http://blog.csdn.net/john_bh/