• 论文日记五:QueryInst


    导读

    实例分割领域21年的SOTA,整个模型结构设计总述为以下:
    1)设计了类似于Cascade Mask R-CNN的多阶段迭代优化的bbox和mask预测头;
    2)基于query的实例分割方法,延续了DETR(首次将Transformer成功整合为检测pipline中心构建块的目标检测框架模型)中的随机初始化N个object queries和匈牙利匹配损失函数、transformer的Mutil-head attention模块,提出了动态掩码头模块;

    这里先解释第一点:多阶段优化
    实例分割领域的使用多阶段优化迭代主要解决一个问题:Mismatch
    Mismatch问题以两阶段的R-CNN为例子,我知道两阶段实例分割训练阶段大概流程为:输入图像-->backbone(一些卷积操作等等得到特征图)-->feature map --> Region Proposal Netword(RPN) --> Proposal --> Roi pooling/Roi Align(流程如下图所示),在这个得到proposal的时候,会计算proposal和GT的IOU,这时会有一个人为设定的阈值IOU,通过阈值将proposal分为正、负样本(一般为1:3),之后这些proposal送入到ROI Pooling/Roi Align中进行分类和回归;而在测试阶段,输入图像-->backbone-->feature map-->RPN-->proposal到proposal这一步无法采样,因为没有GT,只能将所有的proposal当做正样本进入ROI Pooling,这样导致的问题是:训练阶段的proposal被采样过,而inference没被采样过,输入ROI pooling/RoI Align的分布不一样,后者未经过筛选,质量更差,用前者训练的detector来测试后者的proposal,肯定不对;此外如果提高IOU阈值,1)满足阈值的Proposal更少,造成过拟合;2)training阶段的proposal减少,而inference不变,更加剧了“1)”。
    image

    因此,Cascade RCNN给出的方法是:多阶段(用一个stage的输出去训练下一个stage),例如,有一个IOU为0.65的proposal,有3个detector(0.6/0.7/0.8),这里的一个固有实验现象是:proposal经过detector后,IOU会提高,那这样,0.65的proposal经过0.6的detector后,IOU-->0.75,再经过0.7的detector又提高到0.85,再-->0.8的IOU,detector-->0.95,这样proposal的质量更高,而且因为阈值逐级上升,不会有多的样本筛选掉;

    第二点结合模型结构来了解;

    模型结构

    1)Backbone:queryinst的backbone由ResNet50+FPN输出C2,C3,C4,C5四个分辨率的特征;
    2)queries:这里延用了DETR中随机初始化N个object queries,采用nn.Embedding初始化N个object的queryinst bbox和queries features,并将初始化的bbox解码为原始尺寸的bbox表达,(bbox解码有中心点+高宽改为左上、右下角点表示);
    3)bbox和cls预测:以第一阶段为例子,
    image

    • xFPN表示FPN输出的多分辨率特征图,bt-1表示上一阶段的bbox的预测,Pbox在这表示ROI Align,xboxt表示得到的7*7的bbox feature;
    • qt-1是上一阶段的object query,MSAt是transformer中的Mutil-head self-attention,得到的q*t-1是transformer query;
    • DynConvboxt是动态卷积,输出的qt和xbox*t分别是增强的bbox feature和object query;
    • Bt代表有FFN构成的bbox预测分支,bt为这一阶段的预测结果;

    4)最主要创新点:Dynconvbox和DynConvmask

    这里有queryinst的动态掩码头示意图:
    image
    与以往不同的是,增添了一个DynConvmaskt模块,这样将query和mask feature 建立了联系,看下面公式:
    image
    看懂了第“3)”部分的公式,这部分也自然容易看懂,这里最重要的是,经过ROI Align的mask feature和query同时经过了动态卷积,

    • 那这样在训练期间,每个掩码信息不仅传回Xmaskt,还会流回query,这样使得mask和query之间建立了联系,训练完成后,掩码预测的信息存在query中;
    • 在推理阶段,前5个stage丢弃所有的动态掩码头,仅在最后阶段使用,query隐式地携带了多阶段信息进行掩码预测(query+Xmaskt经过Dynconvtmask得到mask)

    总结

    1. queryinst集成了Cascade Mask R-CNN的多阶段迭代优化和DETR的object queries和匈牙利匹配损失函数、transformer的Mutil-head attention模块,构建了一个基于query的实例分割框架,它由基于query的对象检查器和并行监督驱动的六个动态掩码头组成;
    2. 关键点是提出了Dynconvtmask模块,将query和mask信息建立了联系,同时利用不同阶段的query中固有的一对一对应关系提升了检查精度,即每个单独的的query在每个阶段均用来预测同样的目标;
      3.多头自注意力
  • 相关阅读:
    【因果推断python】49_去偏/正交机器学习1
    linux 上安装tomcat ,并将tomcat注册为服务
    数据库基础(一)
    CompletableFuture 使用教程
    【Python】os.makedirs()创建目录
    Linux0.12内核源码解读(2)-Bootsect.S
    微服务框架 SpringCloud微服务架构 9 初识 Docker 9.4 Docker 的安装
    wangshusen学习笔记
    棋盘格角点检查
    都说自动化测试才是测试人员的新出路,为什么要做自动化测试?
  • 原文地址:https://www.cnblogs.com/Hjxin02AIsharing-Wust/p/17658273.html