yolact论文阅读

目录

何为实例分割:

Mask RCNN

FCIS

边界框的正确性的度量标准:(一个边界框)

计算模型对该类别的精确率(一张图片)

平均精度(Average Precision)(一个类别)

平均精度均值 mAP (Mean Average Precision)(所有类别)

Fast NMS

RetinaNet

备注


开一个新坑

参考翻译:https://blog.csdn.net/qq_41627847/article/details/90524052

参考解析:https://www.aiuai.cn/aifarm1190.html

这是一篇实例分割的论文,看一下具体的效果

何为实例分割:

   1. 将物体从背景中分离,即目标检测

   2. 对检测到的物体进行逐像素提取,即图像分割

   3. 对检测到的物体进行类别划分,即图像分类

顺便了解了一下mask rcnn(https://blog.csdn.net/wangdongwei0/article/details/83110305)和fcis(https://blog.csdn.net/jiongnima/article/details/78961147以及https://blog.csdn.net/whz1861/article/details/79121135

Mask RCNN

是Faster RCNN的扩展,对于Faster RCNN的每个Proposal Box都要使用FCN进行语义分割,分割任务与定位、分类任务是同时进行的。
1、引入了RoI Align代替Faster RCNN中的RoI Pooling。因为RoI Pooling并不是按照像素一一对齐的(pixel-to-pixel alignment),也许这对bbox的影响不是很大,但对于mask的精度却有很大影响。使用RoI Align后mask的精度从10%显著提高到50%。
2、引入语义分割分支,实现了mask和class预测的关系的解耦,mask分支只做语义分割,类型预测的任务交给另一个分支。这与原本的FCN网络是不同的,原始的FCN在预测mask时还用同时预测mask所属的种类。

掩膜框架:分割是像素到像素的任务,我们使用FCN来预测掩膜的空间布局。对比多层感知器(MLP,全连接),全卷积网络(FCN)通过利用空间布局编码的优势改善了结果,使得掩膜AP比MLP中的掩膜AP提高了2.1(由maskrcnn论文表2-e)。与MLP相比,FCN头部的卷积层未经过前期训练。
链接:https://www.jianshu.com/p/0b23b5bc17fa

FCIS

是一个端对端的网络(one-stage),但其中也借鉴了faster rcnn的RPN,这是必不可少的部分,在ROIproposal的基础上提取位置敏感的特征,然后进行分割与分类任务:

  • 分为inside/outside两种位置敏感的特征提取方法
  • inside提取的是关于物体的特征,进行分割
  • outside提取的是物体外的特征,然后对每一个像素取最大值,然后进行平均投票,进行类别判断

摘要:

yolact是一个简单的全卷积网络

在单个Titan Xp上以33 fps在MS COCO上实现29.8 mAP

参考:https://www.xianjichina.com/news/details_73065.html

目标检测问题中最常用的度量标准 --- 平均精度均值(Mean Average Precision, mAP)

目标检测问题,给定一张图片,找到图中的所有目标,确定他们的位置并对他们进行分类。

对于任何算法来说,度量的值总是把预测值和参考标准的信息进行比较之后计算得到的。

在目标检测问题中,参考标准的信息包括图像,图像中目标的类别,以及每个目标的真实边界框

计算 IoU  -> 精确率(Precision)-> 平均精度(Average Precision)

边界框的正确性的度量标准:(一个边界框)

交并比是预测边界框和参考边界框的交集和并集之间的比率Jaccard 指数(Jaccard Index

 

交集覆盖的是边界框重合区域(蓝绿色区域),并集覆盖的是橙色和蓝绿色的所有区域。

ä»ä¹æ¯mAP ?

然后, IoU 可以像这样计算:

ä»ä¹æ¯mAP ?

如果 IoU > 0.5(最常用的阈值),那么认为这是一个正确检测,否则认为这是一个错误检测。

计算模型对该类别的精确率(一张图片)

给定的图片中类别 C 的精确率=图片中类别 C 的真正类数量/图片中类别 C 所有目标的数量

平均精度(Average Precision)(一个类别)

对于一个给定的类别,让我们对验证集中的每张图片都计算它的精确率,并进行平均。

某个类别(C)的平均精度=验证集中该类(C)的所有精确率的和/含有该类别(C)目标的图像数量

平均精度均值 mAP (Mean Average Precision)(所有类别)

为了只用一个数字来表示一个模型的性能(一个度量解决所有问题),我们对所有类别的平均精度值计算其均值(average/mean)。这个新的值,就是我们的平均精度均值 mAP (Mean Average Precision)!!

平均精度均值=所有类别的平均精度值之和/所有类别的数目

所以,平均精度均值即数据集中所有类别的平均精度的均值。

注意事项:

mAP 总是在固定的数据集上进行计算。

mAP 并不是量化模型输出的绝对度量,但它是一个不错的相对度量。(用来比较目标检测的新老方法的性能好坏)

mAP结果好不代表每个类的AP都很好。根据不同的类别在训练数据中的分布情况不同,平均精度值可能对于某些类别(这些类别有很好的训练数据)非常高,然后对于某些类别(这些类别有更少的数据或者坏数据)可能非常低。在分析结果时还是要最好注意单独类别的平均精度值。

我们通过将实例分段分成两个并行子任务来实现这一点:(1)生成一组原型【prototype最初形态】掩码和(2)预测每个实例的掩码系数【 coefficients】。然后我们通过将原型与掩模系数线性组合来生成实例掩模。我们发现,因为这个过程不依赖于repooling,这种方法可以产生非常高质量的掩模,并且可以?免费?提供时间【temporal】稳定性。

此外,我们分析了原型的最新【emergent新兴的】表现,发现他们以他们自有的一个翻译变化方式【translation variant manner】学会定位实例,尽管是全卷积的。

最后,我们还提出了Fast NMS,即以随时【drop-in】12毫秒的速度更快替代标准NMS,只有轻微的【marginal边缘的】性能损失【 performance penalty】。

对之前工作的介绍:

最先进的实例分割方法,如MASK-RCNN和FCIS直接建立在先进的目标检测(如Faster R-CNN和R-FCN)上。然而,这些方法主要关注性能而不是速度,让场景缺乏实例分割(类似于实时对象检测器SSD和YOLO)。

我们的目标是填补快速,one-stage这一实例分割模型空白,就像SSD和YOLO填充目标检测的差距一样。

像SSD和YOLO这样的One-stage目标检测器能够通过简单地移除the second stage 以其他方式弥补丢失的性能加速现有的 second stage detectors,如Faster R-CNN。然而,相同的方法不容易扩展到实例分割。

最先进的【State-of-the-art使用最先进技术的; 体现最高水平的;】two-stage实例分割方法在很大程度上依赖于特征定位来生成掩模。

“repool”这些方法是以一些边界框区域为特征(例如,通过RoIpool / align),然后将这些现在已定位的特征提供给它们的掩模预测器。这种方法本质上【inherently】是按顺序进行的【sequential】,因此很难加速。

像FCIS那样并行执行这些步骤的 One-stage方法确实存在,但在定位后需要大量的后处理【post-processing】,因此仍然远非实时。

将yolact与RetinaNet的结构放在一起比较,c3-c4-c5与p3-p4-p5这部分与RetinaNet的结构基本一致

这里也是对FPN中的P(i)层feature map分别进行class box mask三个步骤(比RetinaNet 多了一个mask)至于橘色框之间的箭头,应当是卷积3*3的意思,WH并没有表示大小不变化

Fast NMS

NMS

参考链接以及借用图片:https://blog.csdn.net/shuzfan/article/details/52711706

https://blog.csdn.net/leviopku/article/details/80886386(python)

IoU就是两个框的交并比

1.保留与ground truth的IoU大于某一阈值t1的框
2.非极大值抑制:(去除重复的检测结果)
首先选出对某一物体得分最高的框,然后筛掉其他与这个框的IoU大于某一阈值t2的框

解析来源:https://blog.csdn.net/ZRL4836/article/details/89468232

源码:https://blog.csdn.net/jacke121/article/details/92068855

理解:利用矩阵进行并行运算,提高速度
假设一共有c个类别(船、人脸),那么每个类别对应有n个得分检测(图中人脸类别有五个框),对这n个得分检测进行排序,假设为d1(max)\d2\d3\……\dn

计算它们之间的IoU,可得对角矩阵。(下表)

这里写图片描述

IoU

0.98

0.83

0.81

0.75

0.67

0.98

1

0.9

0

0.3

0

0.83

0.9

1

0

0.2

0

0.81

0

0

1

0

0.8

0.75

0.3

0.2

0

1

0

0.67

0

0

0.8

0

1

很明显对角线都是1(自己和自己IoU)下三角和上三角是对称的,所以计算之前就把他们都置为0了:

IoU

0.98

0.83

0.81

0.75

0.67

0.98

0

0.9

0

0.3

0

0.83

0

0

0

0.2

0

0.81

0

0

0

0

0.8

0.75

0

0

0

0

0

0.67

0

0

0

0

0

进行一轮筛选,去除重复的结果,假设阈值为t1=0.5,去掉大于0.5的框,于是0.83和0.67就被去掉了,矩阵中移除这两个框的信息,得到如下矩阵:

 

IoU

0.98

0.81

0.75

0.98

0

0

0.3

0.81

0

0

0

0.75

0

0

0

逐列求max:得到矩阵K

0.98

0.81

0.75

0

0

0.3

 

进行二轮筛选,保留没关系(重叠小)的框(圈的不是同一个实例),假设阈值t2=0.01,保留小于0.01的框,于是0.75被去掉了,剩下的0.98和0.81分别对应rose和jack两个实例,而且都是各自分值最高的检测。

如果用NMS的话,先选出0.98最大值,然后将剩下所有框与它算IoU值,去掉大于阈值t1的,接下来未处理的中0.81是最大的,重复与剩下的框操作(不用和0.98比了),去掉大于阈值t1的,直到筛选掉所有框。(只有一个阈值)阈值设置不当会出现问题:设置太高可能会造成物体的重复检查(来源链接:https://www.jianshu.com/p/742bbcba2794

阈值过高:

FASTNMS的矩阵上三角矩阵进行降序排列,得到每一列的最大值,相当于NMS从高得分迭代到低得分是一样的操作,但转化为矩阵操作,速度会快很多,而且只对IoU最大值进行筛选,不是对所有IoU值进行筛选,也加快速度。

RetinaNet

论文原文:https://arxiv.org/abs/1708.02002  Focal Loss for Dense Object Detection

参考翻译:https://blog.csdn.net/PPLLO_o/article/details/88952923

match the speed of previous one-stage detectors

surpass the accuracy of all existing state-of-the-art two-stage detectors

RetinaNet能够匹配以前的一级检测器的速度,同时超越了所有现有的最先进的二级检测器的精度。

we identify class imbalance during training as the main obstacle impeding one-stage detector from achieving state-of-the-art accuracy and propose a new loss function that eliminates this barrier.

图3.一阶段RetinaNet网络架构在前馈ResNet架构[16](a)之上使用特征金字塔网络(FPN)[20]骨干,以生成丰富的多尺度卷积特征金字塔(b)。对于这个骨干网,RetinaNet附加了两个子网,一个用于分类锚框(c),一个用于从anchor boxes回归到ground-truth对象框(d)。网络设计有意简单,这使得这项工作能够专注于一种新颖的焦点损失功能,消除了我们的一级探测器和最先进的两级探测器(例如带有FPN的Faster R-CNN [ 20])之间的精度差距,并能以更快的速度运行。

第一个子网(c)在主干的输出上执行卷积对象分类;第二个子网(d)执行卷积边界框回归。

分类子网预测A个anchorsK个对象类在每个空间位置处对象存在的概率。子网是连接到每个FPN级别的小型FCN;所有金字塔等级共享此子网的参数。它的设计很简单。从给定的金字塔等级获取具有C通道的输入特征图,该子网应用四个3*3卷积层,每个卷积层具有C个滤波器,每个层接着ReLU激活,接着是具有KA滤波器的3*3卷积层。最后附加sigmoid激活以输出每个空间位置的KA二元预测,参见图3(c)。在大多数实验中我们使用C = 256和A = 9。

box回归子网。我们将另一个小FCN附加到每个金字塔等级,以便将每个锚框的偏移量回归到附近的ground-truth对象(如果存在)。子回归子网的设计与分类子网相同,只是它在每个空间位置终止于4A线性输出,见图3(d)。对于每个空间位置的每个A个锚点,这4个输出预测锚和ground-truth框之间的相对偏移(我们使用RCNN [11]中的标准框参数化)。我们注意到,与最近的工作不同,我们使用类不可知的边界框回归量,它使用更少的参数并且同样有效。

分类子网和box回归子网虽然共享一个共同的结构,但使用单独的参数。


特征金字塔网络运用带侧面连接的自上而下的架构,从单尺度输入中构建网络内特征金字塔。带特征金字塔网络主干架构的FasterR-CNN根据尺度从不同级别的特征金字塔中抽取RoI特征,但是另一方面,该方法的其余部分与普通的ResNet类似。


链接:

https://www.jianshu.com/p/5a28ae9b365d(图片)

https://www.jianshu.com/p/0b23b5bc17fa

备注

看了一些博客发现全连接(fc)和全卷积(FCN)有些混乱。

总结一下,全连接说的一般是全连接层,论文中的表述是 fully-connected (fc) layers

而全卷积是说的全卷积网络,论中的表述是Specifically, we predict an m × m mask from each RoI using an FCN [30],后面都带有引用注释的。

 

 
 

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值