目标检测--mask R_CNN

在这里插入图片描述与faster R_CNN相比,mask R_CNN是用RoiAlign代替了Roi Pooling,在最后计算loss时增加了FCN(mask)层。

一、ROIAlign

ROI Pooling:
目的
从RPN网络确定的ROI中导出较小的特征图,ROI的大小各不相同,但经过ROI Pooling后都编程了7x7大小。RPN网络提出若干ROI的坐标[x, y, w, h]表示,然后输入ROI Pooling,输出7x7大小的特征图供分类和定位使用。
存在的问题:
若ROI网络输出的ROI大小为8x8的,则无法保证输入像素和输出像素是一一对应。他们包含的信息量不同(有的是一对一,有的是一对二),再者他们的坐标无法和输入对应起来(一对二的那个ROI输出像素该对应哪个像素的坐标?)这对分类没什么影响,但是对分割却影响很大。ROIAlign的输出坐标使用插值算法得到,不再量化,每个grid中的值也不再使用max,同样使用插值算法。
操作:
为了得到固定大小(7x7)的feature map,需要做2次量化操作:
1、图像坐标–>feature map
2、feature map–>ROI feature坐标
输入一张800x800的图像,图像中有2个目标,其中狗的bounding box为665x665,经过VGG16后,可获得对应的feature map,如果我们对卷积层进行padding操作,图片经过卷积层大小保持,但经过池化层,最后获得的feature map会比原图缩小一定的比例,这与Pooling的个数和大小关系有关。在VGG16中,我们使用5个池化操作,每个池化操作都是2Pooling,因此feature map的大小为800/32 x 800/32 = 25 x 25(整数),将狗的BB对应到feature map上面,得到665/32 x 665/32 = 20.78 x 20.78(浮点),但像素无小数,则对其进行量化操作(即取整),得到20x20,这里引入第一次量化误差;然而我们的feature map中有不同大小的ROI,而后面的网络要求固定输入,我们需要将不同大小的ROI转化为固定的ROI feature,这里使用7x7的ROI feature,我们需要将20x20的ROI映射成7x7的ROI feature,20/7 x 20/7 = 2.86 x 2.86,取整2x2,这里引入第二次量化误差。这里误差0.86,而feature map:原图=1:32,所以误差为0.86x32=27.52.

ROIAlign:
目的:
为了得到固定大小(7x7)的feature map且不引入量化误差。
解决方法:
不使用量化操作,使用“双线性插值”算法。双线性插值是一种比较好的图像缩放算法,它充分的利用了原图中虚拟点四周的四个真实存在的像素值来共同决定目标图中的一个像素值,即可以将20.56这个虚拟的位置对应的像素估计出来。

二、网络架构

整个网络包含2个部分,一部分是backbone,用来提取特征,另一部分head用来对每一个ROI进行分类、框回归和mask预测。
为了产生对应的mask,论文中提出了两种结构:Faster R_CNN/ResNet和Faster R_CNN/FPN。
1、Faster R_CNN/ResNet,backbone使用预测训练好的ResNet,使用ResNet倒数第4层的网络。输出的ROI首先获得7x7x1024的ROI feature,然后将其升维到2048个通道。然后两个分支,上面的分支负责分类和回归,下面的分支负责生成mask。
前面进行了多次卷积和池化,减小了对应的分辨率,mask分支开始利用反卷积进行分辨率的提升,同时减少通道的个数,变为14x14x80的mask模板。
2、Faster R_CNN/FPN,输入单一尺度的图片,可以对应的图像金字塔。

三、损失函数

每个ROI的Loss函数 :
在这里插入图片描述每个ROIAlign对应k*m^2维度的输出,k对应类别的个数,即输出k个mask,m对应池化分辨率(7x7)。
Lmask(Cls_k)=Sigmod(Cls_k)。
平均二值交叉熵Loss,通过逐像素的Sigmod计算得到。对应一个属于GT中的第k类的ROI,Lmask仅仅在第k个mask上面有定义(其它的k-1个mask输出对整个Loss没有贡献)。
Why k个mask?
通过对每个Class对应一个madk可以有效避免类间竞争(其他class不贡献的class)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值