精华内容
下载资源
问答
  • 论文笔记:IOUnet

    千次阅读 热门讨论 2018-08-24 09:14:57
    核心思想是:对于检测到的bounding box,利用PrPool提取内部特征并算出IOUnet预测的IOU,记其梯度为grad。而这个IOU记为PrevScore,然后以 公式更新bounding box。更新之后重新进行IOU预测结果为NewScore。如果...

    作者指出,目前主流的目标检测网络都由两步完成:目标分类和目标定位。首先从背景中找出前景的object proposal并将其分配上合适的分类标签,然后通过最大化IOU或者其他检测结果和ground truth之间的度量标准来进行对定位目标的系数回归。最后多余的bounding box会通过NMS去除。

    分类和定位在这样的检测流水线上被不同的处理,每种分类标签是proposal的“classification confidence”,然而bounding box的回归模块只预测了针对proposal的变换系数以拟合目标位置,“localization confidence”却在循环中缺失。

    这样带来两个问题:

    首先,在抑制重复检测时,classification score通常会用作成给proposal排名的标准,可能导致更准确的边界框反而被不准确的抑制的情况。

    图片中黄框为ground truth,绿框和红框都是检测结果,绿框定位更准确但cls conf更低。

    其次,缺乏localization confidence使得被广泛使用的边界框回归方法缺少可解释性或可预测性。先前的工作曾指出bounding box迭代回归的非单调性,也就是说,应用多次之后bounding box回归可能有损bounding box定位表现(如下图)。

    对于以上问题作者提出:
    1.IOU是对定位准确度的一个天然准则。作者用预测的IOU替换classification confidence作为NMS中的排名关键依据。称为IOU-guided NMS,有助于消除cls conf误导下的错误。

    2.提出了一种与传统的基于回归的方法表现相当的基于优化的bounding box改良流程。使用预测到的IOU优化目标,同时作为定位置信度的可解释性指示量。提出的Precise RoI Pooling layer可以通过梯度上升求解IOU优化。实验表明该方法能与基于CNN的检测器兼容,并且能带来定位准确率的单调上升。

    深入目标定位

    作者探究目标定位的两个问题

    1.Misaligned classification and localization accuracy

    当移除重复bounding box时,NMS是不可缺少的步骤。近期有一系列算法对NMS进行了改进,但作者认为这些基于参数的方法需要更多的计算资源,使得其无法进行实时应用。

    而在广泛应用的NMS方法中,cls conf被用来给bounding box排名。作者将cls conf和IOU进行可视化,可以看到,定位准确度与cls conf并不是很好的相关联。

    对于pearson correlation即

    作者指出在传统NMS中,对于同一个单个物体的多重检测,拥有最高cls conf的bounding box会保留下来,而由于这种“misalignment”,拥有更好的位置的bounding box可能会在NMS过程中被抑制。

    作者还将使用NMS,IOU-Guided NMS,和不使用NMS进行了对比。作者将bounding box根据与它们对应的ground truth的IOU进行组合。对于同一个ground truth的多重检测匹配中,只有最高IOU的被认为是正样本,那么No-NMS可以被认为是正样本的上限。可以看到在使用NMS之后有超过一半的与ground truth的IOU>0.9的bounding box被抑制,这有损定位表现。

    2.Non-monotonic bounding box regression
    单一的目标检测可以分为2类:bounding box-based和segment-based。segment-based方法对每个实例生成像素级的分割却不可避免的需要额外的分割注释(这里不太明白)。这次工作集中在bounding box-based方法上。

    单一的物体定位一般被公式化地表现为一个bounding box的回归工作。核心是一个网络直接学习bounding box向指定目标拟合的过程。

    作者将基于FPN和Cascade R-CNN结构上的bounding box迭代回归表现做了对比。

    a中基于回归的方法随着迭代次数增加,在上升之后迅速下降。b中0,1,2代表Cascade R-CNN中的回归阶段,多轮回归之后,基于优化的方法高出0.8%AP。

    在此基础上提出IoU-Net

    Learning to predict IoU

    对训练集中所有的ground truth采用数据增强生成一个candidate box set,去除与ground truth之间IOU<0.5的box,在该集合中选取训练集,实验证明这能够带来更好的表现以及鲁棒性。

    IoU-Net结构如下:

    输入图像首先输入一个 FPN 骨干网络。然后 IoU 预测器读取这个 FPN 骨干网络的输出特征。研究者用 PrRoI 池化层替代了 RoI 池化层。这个 IoU 预测器与 R-CNN 分支有相似的结果。虚线框内的模块能构成一个单独的 IoU-Net。因为训练过程独立于其他特有分类器,所以对输入的分布具有一定的鲁棒性(比如与不同detectors合作等)。

    IOU预测器与大部分现存的RoI-based detector兼容。IOU预测器的表现在下图已给出。

    IOU-guided NMS

    对于算法IOU-guided NMS,分类置信度和定位置信度是解开的(disentangled)。研究者使用定位置信度(预测得到的 IoU)来给所有被检测到的边界框排名,然后基于一个类似聚类的规则来更新分类置信度。

     

    核心思想是:从bounding box集合B中依次选取预估IOU(localization confidence)最高的bounding box(记为b_{m}),然后将与其IOU高于一定阈值的bounding box一个个选出来,并将这些bounding box(包括最开始选的)的最高classification confidence记为s。然后将(b_{m},s)二元组记录到集合D中,本质是将bounding box和cls conf的重新分配。

    作者认为,IOU-guided NMS解决了cls conf和localization accuracy不匹配的问题,并取得了超过传统NMS及Soft-NMS等变体的表现。

    随后在实验中给出了使用IOU-guided NMS的效果:

    对于soft NMS解释核心思想是:M为当前得分最高框,bi 为待处理框,bi 和M的IOU越大,bi的得分si就下降的越厉害。

    具体见https://blog.csdn.net/shuzfan/article/details/71036040

    AP的下标指IOU阈值,即在bounding box与对应的ground truth之间的IOU大于一个阈值时,这个bounding box就会被标记为正样本。可以看到随着这个IOU阈值的增高,IOU-NMS相对表现越来越好,但是对于较低的阈值,IOU-NMS表现反而不如先前的NMS或者soft-NMS。(为什么?)

    随后作者提到对于这个问题,原因在于“IoU estimation error”。当bounding box与GT有一个较低的IOU时,他们在表现上会有更大的方差。如图中接近左下角的部分明显看到点的分布更扩散。之前提到IOU-guided NMS本质是一个bounding box和cls conf重新匹配的过程,那么换句话说,对于与GT之间的IOU较低的bounding box,这个重新匹配的过程得到适得其反的效果。

    作者在后文中提出这一问题可以被一些方法例如训练时对更低IOU的bounding box进行采样而“partially solved”。

    作者给出了不同NMS和在不同IOU阈值下的recall曲线。raw-detected bounding box由不带有NMS的ResNet50-FPN生成(浅蓝色线条)。可以看到,随着对定位准确率的需求的增加(结合图片即IOU阈值的增加),IOU-guided NMS和其他NMS的表现差距也会变大。

    bounding box refinement

    作者归纳bounding box refinement可以被公式化地表现为寻找最优c^{*}

    其中,box_{det}是检测出的bounding box,box_{gt}是对应的ground truth bounding box,transform是以c为参数的bounding box的transform,crit是测量两个bounding box之间距离的标准。比如在Faster RCNN中,crit是大尺度坐标下的smooth L1距离等等。

    随后作者又提出,基于区域的算法直接用前馈神经网络预估最优c^{*}。然而,迭代bounding box回归方法易受输入分布变化的影响并且可能导致非线性的localization improvement。基于此,作者提出一个利用IOUNet作为鲁棒IOU预测器的基于优化的bounding box refinement方法。

    核心思想是:对于检测到的bounding box,利用PrPool提取内部特征并算出IOUnet预测的IOU,记其梯度为grad。而这个IOU记为PrevScore,然后以公式更新bounding box。更新之后重新进行IOU预测结果为NewScore。如果prevscore和newscore相差小于一个early-stop阈值或者newscore比prevscore低于一个“定位退化容忍度”,则认为该bounding box更新完毕。

    在作者实验中,取的\lambda =0.5\Omega _{1}=0.001\Omega _{2}=-0.01T=5

    作者给出实验结果如下(应该是用了IOU-guided NMS和optimization-based bounding box refinement两者之后的结果):

    至于PrPool,作者随后给出解释Precise RoI Pooling。

    对于给出的特征图F上的任意离散位置(i,j)上的特征w_{i,j},使用双线性插值法,可认为在任意坐标下特征图连续:

    公式乍一看有些复杂,实际上是考虑周围四个点的双线性插值法,对于更远的点不纳入计算范围。

    ROI的盒子bin中两个坐标分别为左上角和右下角坐标。

    通过以下公式进行pooling:

    作者将PrRoIPooling与其他pooling比较,图例如下:

    如图所示,RoI Pooling对框周围及内部所有点取平均。RoI Align对RoI划分为等大小的区域,对每个区域中心取周围四个点进行双线性插值计算平均值,而PrRoIPooling对框内所有位置做积分再求平均值,连续可微。

    作者认为,PrRoIPooling重点在于连续性。

     

    IOU预测器可以被整合到标准的FPN流水线中。如图所示,IOUNet采用ResNet-FPN作为主干,采用自顶向下的结构来建立特征金字塔。FPN从特征金字塔的不同层级根据他们的scale提取ROI的特征。而原来的ROI层被替换成了Precise RoI Pooling层。IOU预测器作为“network head”,基于由bankbone传来的相同的视觉特征与RCNN分支平行工作。

    joint training

    由在ImageNet上预训练的ResNet模型初始化权重,所有的新层由均值为0标准差为0.01或0.001的高斯分布初始化。作者使用smooth-L1 Loss训练IOU预测器,训练用数据如之前所说的方法得到,IOU labels经过归一化处理在[-1,1]之间分布。

    对于输入图像resize到长轴不到1200px,短轴800px。分类和回归分支从RPN上每张图采集512个RoI。训练时batch size为16,网络迭代160k次,学习率0.01,在120k次迭代后降为0.001。对于前10k次迭代采用0.004的学习率作为“warm up”,采用10^{-4}作为weight decay,0.9作为momentum。

    在前向传播过程中,首先对初始坐标进行bounding box回归。为了加速这一过程,首先对所有检测出的bounding box采用IOU-guided NMS。对处理之后的拥有最高cls conf的前100个bounding box进行optimization-based refinement。

    给出总表:

    速度如下:

     

     

     

    展开全文
  • IOUnet论文笔记 IOU-guided NMS

    千次阅读 2019-03-27 16:29:13
     核心思想是:对于检测到的bounding box,利用PrPool提取内部特征并算出IOUnet预测的IOU,记其梯度为grad。而这个IOU记为PrevScore,然后以公式更新bounding box。更新之后重新进行IOU预测结果为NewScore。如果...

    论文:https://arxiv.org/abs/1807.11590

    代码:https://github.com/vacancy/PreciseRoIPooling

    文章指出定位置信度与分类置信度不匹配的问题,并把定位问题从回归的方式改为基于优化的方式,从而提升定位精度。

    Motivation

    当前two-stage的目标检测任务流程为: 
    1. 通过RPN网络粗预测得到ROI候选框,区分前景背景  ROI
    2. 对前景框进行分类和回归,得到每个框的分类置信度及回归坐标 
    3. 通过NMS,以分类置信度排序,过滤掉IoU大于一定阈值的框,得到最终的结果 
    可以看到,在这个过程中,对于定位置信度没有考虑。这样会出现两个问题:

    (1)分类置信度高不代表IoU大,如上图(a)所示,以分类置信度当做这个框的置信度做NMS, 会把与ground-truth的IoU大,但是分类分数低的框给抑制 
    (2)边界框回归算法的可解释性较差,在Cascade RCNN论文中指出:边界框回归不是单调的,如上图(b)所示,如果边界框回归次数过多,结果可能会退化。 
     

                                                                                   (a)黄框为ground truth 

                                                                                   (b)黄框为ground truth

    文章提出一种新思路:将IoU置信度加入到目标检测的流程中,基于优化的方法来进行边界框修正。

    Contribution

    对于以上问题作者提出:
    (1)IOU是对定位准确度的一个天然准则。作者用预测的IOU替换classification confidence作为NMS中的排名关键依据。称为IOU-guided NMS,有助于消除cls conf误导下的错误。

    (2)提出了一种与传统的基于回归的方法表现相当的基于优化的bounding box改良流程。使用预测到的IOU优化目标,同时作为定位置信度的可解释性指示量。提出的Precise RoI Pooling layer可以通过梯度上升求解IOU优化。实验表明该方法能与基于CNN的检测器兼容,并且能带来定位准确率的单调上升。

    IOU-Net

           与Faster RCNN的主要区别在RoI-Pooling 换成了PrRoI-Pooling, 加入了一个IoU预测器。 

           输入图像首先输入一个 FPN 骨干网络。然后 IoU 预测器读取这个 FPN 骨干网络的输出特征。研究者用 PrRoI 池化层替代了 RoI 池化层。这个 IoU 预测器与 R-CNN 分支有相似的结果。虚线框内的模块能构成一个单独的 IoU-Net。因为训练过程独立于其他特有分类器,所以对输入的分布具有一定的鲁棒性(比如与不同detectors合作等)。

    IOU Predictor

           IOU预测器的输入不是用RPN产生的RoIs,而是对Ground Truth框随机扰动得到候选框(对训练集中的所有真值边界框,使用一组随机参数手动变换它们,从而生成候选边界框集),再过滤掉与GT的IoU<0.5的框,剩下的作为输入,经过PrRoI Pooling给IoU predictor。

    PrROI pooling

    pooling(池化):基于ROI坐标和特征图进行特征提取的过程。

    ROI:Region of interest

    目的:输入为大小不一的ROI,输出为固定大小的特征向量(因为后面的全连接层需要固定大小的输入)

    ROI pooling:首先,预测得到的ROI先除以stride(比如16)并量化取整得到坐标为整数值的ROI(这里是为了映射到feature maps上,看Fast RCNN笔记就明白了),然后将ROI划分成k*k个bin(k常用7、14),划分后得到的一个bin(也叫grid)如Figure6中的红色虚线框,bin的左上角坐标是(x1,y1),右下角坐标是(x2,y2),因为(x1,y1,x2,y2)不一定都是整数,所以还有一个量化的过程,也就是对左上角坐标(x1,y1)向下取整,对右下角坐标(x2,y2)向上取整,这样就得到红色实线框。假如用wij表示特征图上(i,j)这个点的特征值(绿色小圆点),那么最后得到的ROI中一个bin的特征值就如Figure6中ROI Pooling图下方的公式所示,这里是求均值操作(Fast RCNN论文中以及目前常用的ROI pooling实现中采用最大池化,也就是用这个bin中的最大值作为这个bin的值)。ROI Pooling虽然解决了不同大小ROI的尺寸统一,但是其量化操作会引入一定的误差,这也是后续ROI Align的改进方向。

    ROI Align:不再对预测得到的ROI进行量化操作,首先,直接将坐标为浮点值的ROI划分成k*k个bin,对于ROI的1个bin计算该bin的值时也不对该bin的坐标进行量化,而是在该bin中均匀取4个点,这4个点的坐标用(ai, bi)表示,通过计算f(ai,bi)得到该点的特征值,f(.)的计算公式如公式2所示,其实就是插值的过程,从插值公式2可以看出距离(x,y)越近的点的权重IC(x,y,i,j)越大。比如左上角那个红点(f(x,y))的值就由附近的4个绿色点(wij)的值加权得到,这样计算得到4个红点的特征值后求平均就是这个bin的特征值。ROI Align这种计算每个bin值得方式没有引入量化操作,通过插值方式得到的值也比较准确,因此引入的误差较少,这是Mask RCNN和Faster RCNN相比很重要的一个改进点。但是ROI Align中每个bin都是设置4个点,这样没有考虑bin的大小差异,因此还存在可优化的点。

    PrROI Pooling:采用积分方式计算每个bin的值,如公式3所示。这种计算方式和ROI Align最大的区别在于计算一个bin的值时不仅仅考虑该bin中4个插值点的均值,而是将bin中的插值看作是连续的,这样就可以通过对该bin中所有插值点求积分得到该bin所包围点的总和,最后除以面积就得到该bin的值,因此结果更加准确。 

    积分形式的PrPool(bin,F),对(x1,y1,x2,y2)都可导,确保box refine的可行性,这是IoU-Net可以在预测过程中不断的求导,反向传播,更新梯度的最重要的原因。之前的方式是无法求导的。

    IoU-guided NMS 

    对于一类的所有检测出的bbox: 
      取出定位置信度最大的框bm, 得分为s 对于与bm的IoU大于阈值的框,将其过滤,若分类置信度高于bm的,则更新bm的分类置信度。不断迭代进行,直到B中所有bbox都处理完毕。 
            之前的NMS是以bbox的分类置信度排序,然后按IoU过滤得到分类置信度最高的框 。IoU-guided NMS则是以bbox的定位置信度排序,然后按IoU过滤,并更新分类置信度。得到定位置信度最高的框,并且分类置信度变成最高了。 

           Figure7是在不同IOU阈值情况下框的召回率情况对比,without NMS曲线对应最大的召回率,可以看出IOU-guided NMS确实在召回率方面和NMS算法相比优势明显。 

          Table1是关于NMS、soft NMS和IOU-guided NMS算法的效果对比。在IOU阈值较高时IOU-guided NMS算法的优势还是比较明显的(比如AP90),原因就在于IOU阈值较高时需要预测框的坐标更加准确才能有较高的AP值,这正好和IOU-guided NMS的出发点吻合。 

           AP的下标指IOU阈值,即在bounding box与对应的ground truth之间的IOU大于一个阈值时,这个bounding box就会被标记为正样本。可以看到随着这个IOU阈值的增高,IOU-NMS相对表现越来越好,但是对于较低的阈值,IOU-NMS表现反而不如先前的NMS或者soft-NMS。(为什么?--因为IOU估计误差吗)
     

    Bounding box refinement as an optimization procedure 

           核心思想是:对于检测到的bounding box,利用PrPool提取内部特征并算出IOUnet预测的IOU,记其梯度为grad。而这个IOU记为PrevScore,然后以公式更新bounding box。更新之后重新进行IOU预测结果为NewScore。如果prevscore和newscore相差小于一个early-stop阈值或者newscore比prevscore低于一个“定位退化容忍度”,则认为该bounding box更新完毕。

           refine目标是使在inference阶段,利用IoU net对预测的bouding box的IoU越来越大,算法步骤为:

    1. 网络预测得到boudngbox  b=(x1,y1,x2,y2)

    2. b做PrRoI pooling并i通过IoU net分支,得到输出结果prev_score 

    3. 通过prev_score对b的梯度更新b的坐标,得到新的框 b’(b表示两点的坐标吧,因为改了pooling层,所以可导)

    4. b’再次通过PrRoI pooling和 IoU net分支,得到新的分数new_score

    5.如果new_score 比prev_score小或者差小于一定阈值则停止迭代,否则继续迭代,直到达到最大IoU

                                                                               BBox refinement 伪代码

           Table2是关于optimization-based bbox refinement的实验对比,+Refinement表示在表中3个算法的输出预测框基础上用Figure5中的standalone IOU-Net结构做进一步refinement。 

           作者AP50-60的较差结果归因于IoU估计误差。当边界框的IoUground-truth值较低时,它们在外观上的差异较大。对于IOU较低的框,IoU的估计变得不那么准确。这也会降低后续的基于IOU优化的边界框修正的性能。可以通过在训练IOU-Net的时候,多投入一些IOU值小的训练框的方法来改善。

    Joint training

           由在ImageNet上预训练的ResNet模型初始化权重,所有的新层由均值为0标准差为0.01或0.001的高斯分布初始化。作者使用smooth-L1 Loss训练IOU预测器,IOU labels经过归一化处理在[-1,1]之间分布。(为啥要有负值啊?)

           不加IOU-NMS和Fefine,那IOU-net能干嘛? 只有pooling变了,预测得到了IOU有啥用?所以只是改进的pooling层贡献了精度?作者说联合训练,让原模型学到了某些东西??原模型能学到啥?变得只是pooling层啊。

           测试的时候,模型输出坐标先用bbox regression进行修正,然后再用IOU-guided NMS(IOU由IOU-net预测得到)取出类别置信度最高的100个bbox,最后使用基于优化的算法优化修正bbox。(100这个数字?? 类别置信度最高?)

     

    参考链接:

    https://blog.csdn.net/ctfabc4425/article/details/81490805

    https://blog.csdn.net/stezio/article/details/82011643

    https://blog.csdn.net/u014380165/article/details/82025507

    https://www.jianshu.com/p/eef8f2205302

     

    顶会文章:CVPR,ICCV,ECCV,NIPS

    展开全文
  • 方法3.1 总体结构3.2 基于IoUNet的网络3.2.1 网络结构3.2.1 训练3.3 分类网络3.4 在线跟踪细节4. 实验 今天带来一篇Martin大神的新作,CVPR19预定,基本上看是结合了IoUNet和深度回归网络, 前者用于精细定位和...


    今天带来一篇Martin大神的新作,CVPR19预定,基本上看是结合了IoUNet和深度回归网络,
    前者用于精细定位和尺度估计,后者用于粗略定位提供候选框。欢迎与我讨论~? 论文地址

    1. 主要贡献

    1. 将目标跟踪分为目标分类和目标评价两个网络部分,前者分类用于粗定位,后者用于精细定位,即两阶段跟踪;
    2. 目标估计网络使用了ECCV18的IoUNet结构,基于大数据集离线训练,训练时最大化与gt的IoU;
    3. 目标分类网络使用了深度回归网络结构,由2层卷积层构成,在线训练,根据输出的map选择候选框交给目标估计网络,并且提出了新的快速在线训练方法;
    4. 性能超过了DaSiamRPN,GPU下达到30fps。

    2. 方法动机

    首先说为什么跟踪要把分类和估计分开,因为分类主要用来判断某个位置目标是否存在,而对目标的状态并不敏感,目标状态在跟踪中简化为2D位置和目标框的长宽,这个是目标评价做的事,所以将跟踪框架分成两个任务模块有助于提高整体的性能。
    基于CF的跟踪器可以说是一个不错的分类器,它会输出一个响应图,根据最大响应判断目标最可能存在的位置,但是这种方法不能完全估计目标的状态,比如尺度,所以尺度估计一般会使用额外的分类器进行估计。而目标的精确估计需要大量的先验信息,因为如形变这类目标变化是难以单靠跟踪图像的信息进行估计的。所以作者认为SiameseRPN的成功主要依赖于大量的离线训练,但是Siamese方法大部分受限于分类的性能,因为这类方法没有在线训练的过程,而CF方法是有的,所以没有在线训练
    导致它不能很好的应对跟踪中的干扰,或者说相似的目标,模型更新也只能部分解决这个问题。所以作者提出了一个在线训练的分类器和一个离线训练的评价网络,联合起来解决目标跟踪问题,其实和检测很像了,就是一个两阶段的跟踪框架。

    3. 方法

    3.1 总体结构

    1
    如图可以看到分类网络和评价网络被整合到了一个网络框架中,两个任务使用了同样的主干网络,即ResNet-18,这部分是在ImageNet上预训练好的然后再跟踪中第一帧fine-tune。目标评价使用离线训练的IoU预测模块,在大量的数据集上训练,数据是王道啊,这一块有四个输入,分别是参考帧的bounding box(简称bb)及主干网络提出的特征和测试帧的候选bb及特征,它会输出候选框对应的IoU值,最终的bb使用梯度下降法最大化IoU值得到。分类网络是在线训练的一个全卷积结构,用于增强分类器区别目标和场景中其他物体的判别力,输入当前帧搜索域的特征,它会输出目标位置的置信图。另外作者认为通过SGD方法训练不是最优的,提出了一套基于共轭梯度和牛顿高斯的方法进行优化,真厉害!

    3.2 基于IoUNet的网络

    3.2.1 网络结构

    一个简单的评价模块即传统的bb回归的方法,给一个粗略的目标状态返回一个更加准确的目标状态。ECCV18的IoUNet训练时预测bb和gt的IoU,然后测试时直接最大化IoU得到一个更加准确的目标状态,有兴趣的同学可以去读一读。Martin就直接把这个想法用过来具体来说,IoUNet输入一张图的深度特征和一些候选bb(中心坐标和长宽),然后用PrPooling层得到固定size的bb区域的特征,这里PrPool是一个可连续的操作,即对bb坐标可导,如此可以通过梯度下降最大化IoU得到最佳的bb。由于跟踪任务的目标是没有类别一说的,所以和检测任务不同,这里的IoU模块需要针对目标而不是针对类别进行训练,作者认为IoU预测模块是一个高层语义的模块所以仅仅使用视频第一帧训练是不合理的,所以需要离线训练得到一个泛化能力强的IoU预测模块。
    下面关键来了,由于跟踪我们事先不知道目标是谁,需要在测试时给定,所以难点在于IoU模块如何利用好给定目标的参考帧的信息,作者进行了很多尝试,发现Siamese的结构不错,于是就用了类似的叫做基于调制的网络来预测给定参考帧的任意目标的IoU。
    2
    如图,这部分网络设计的挺复杂,分为上下两部分,上半部利用参考帧生成调制向量给下半部测试帧的网络进行调制。两支的输入特征网络都是一致的。上半部分提出的是参考帧 x 0 x_0 x0的参考目标 B 0 B_0 B0的特征,输出一个正数的D维的调制向量c,D对应特征层数。而在测试帧x时,网络部分发生了变化,主干网络提出的特征后多接了一层卷积层,相应的后面pooling也变大了,之后用调制向量对特征的每一通道做了加权处理,即赋予了参考帧的信息,调制后的特征再被送给IoU预测模块g,即三个全连接层后输出IoU,那么公式表达对一个bb,B的IoU即 I o U ( B ) = g ( c ( x 0 , B 0 ) ⋅ z ( x , B ) ) IoU(B)=g(c(x_0,B_0)\cdot z(x,B)) IoU(B)=g(c(x0,B0)z(x,B))

    3.2.1 训练

    根据IoU表达式,这个部分是可以通过标记的图片对进行端到端训练的,作者使用了LaSOT和trackingNet数据集上采集的图片对,还使用了coco数据集进行数据扩增,采用了和DaSiamese类似的方法,在参考帧上,提取了目标周围的5倍大小的方形区域作为输入,测试帧则是将图片做了位置和尺度的偏移扰动来模仿跟踪场景,每一个图片对生成16个候选bb,这是由gt加上高斯噪声生成的,并且设定bb和gt最小的IoU为0.1,使用图像模糊和色彩扰动进行数据扩增,IoU最终归一化到-1和1之间。训练的时候主干网络是不更新的。

    3.3 分类网络

    这部分结构很简单,由两层卷积层构成,主要用于粗略定位所以不需要更深的网络,说是分类网络其实更像回归,类似深度回归跟踪的思想,用卷积操作回归出一个以目标为中心的高斯label,写出函数即
    3
    和CF方法类似写出目标函数即
    4
    w则是卷积核的参数,那么如何在线学习,传统的随机梯度下降的收敛速度太慢了,而Martin是一个对速度要求很高的男人绝对不允许所以设计了更快的算法,把正则项的表达和残差的表达统一起来, r j ( w ) = γ j ( f ( x j ; w ) − y j ) r_j(w)=\sqrt {\gamma_j}(f(x_j;w)-y_j) rj(w)=γj (f(xj;w)yj),这里j从1到m代表每一帧,正则项 r m + k ( w ) = λ k w k r_{m+k}(w)=\sqrt {\lambda_k} w_k rm+k(w)=λk wk,这里k取1和2即两层的卷积。那么loss可以写成更简单的形式 L ( w ) = ∥ r ( w ) ∥ 2 L(w)=\|r(w)\|^2 L(w)=r(w)2,根据高斯牛顿近似忽略二阶微分,首先在 w + Δ w w+\Delta w w+Δw处对r一阶泰勒展开 r ( w + Δ w ) ≈ r w + J w Δ w r(w+\Delta w)\approx r_w + J_w \Delta w r(w+Δw)rw+JwΔw,那么 L ( w + Δ w ) L(w+\Delta w) L(w+Δw)即为下式
    5
    其中 J w J_w Jw代表r对w的雅可比矩阵,详细可以参考高斯牛顿法解非线性二次函数问题。我们需要的变量就是 Δ w \Delta w Δw用于更新w,可以直接令 L ( w + Δ w ) − L ( w ) L(w+\Delta w)-L(w) L(w+Δw)L(w) Δ w \Delta w Δw求导得到 Δ w \Delta w Δw的解析解,即 − ( J w T J w ) − 1 J w T r w -{\left( J_w^T J_w \right)}^{-1}J_w^T r_w (JwTJw)1JwTrw,这里为了避免求逆且 J w T J w J_w^T J_w JwTJw正定,可以使用共轭梯度下降法解,这里作者为了简化求解过程,利用了深度学习框架的反传函数巧妙实现了这一过程,整体算法如下
    6
    很明显包含两层循环,大循环利用高斯牛顿法更新w,小循环利用共轭梯度法求解 Δ w \Delta w Δw,详细过程就不展开了,只说说如何利用反传函数,令s是一个标量函数,v为变量,那么有 B a c k P r o p ( s , v ) = ∂ s ∂ v BackProp(s,v)=\frac{\partial s}{\partial v} BackProp(s,v)=vs
    那么类似的 B a c k P r o p ( r T u , w ) = J w T u BackProp(r^T u,w)=J_w^T u BackProp(rTu,w)=JwTu,其它的类推。

    3.4 在线跟踪细节

    特征提取部分都用的ResNet-18网络,分类网络只用了block4的特征,评价网络3和4都用了。
    分类网络第一层卷积核是1*1的用于降维到64,第二层4*4的,只输出一层特征,激活函数使用的是PELU,优点是在0处也可导。第一帧使用了数据扩增,第一层卷积参数仅在初始帧优化,后面只优化第二层,trick太多了,还使用了困难样本挖掘。
    评价网络部分估计目标的位置和尺度,首先根据分类网络的置信图找到最大置信点,即粗略的候选目标区,结合上一帧的尺度生成初始bb,理论上只用一个bb就可以了,但是多多益善嘛,所以加了噪声后又生成9个,10个bb都给IoUNet预测模块,对每个bb,5次梯度下降迭代最大化IoU得到最优bb,最后取3个最高IoU值的bb的平均作为最终预测结果,这里面的调制向量仅仅是第一帧计算出来的,也就是说参考帧分支仅在第一帧用,后面就不用了,参考帧就是初始化帧。

    4. 实验

    Pytorch上进行的实验,GPU速度30fps,测了4个数据库,NfS,UAV123,TrackingNet和Vot18,VOT18超过第一1%,UAV123超过DaSiamese6.6%,超过ECO12%,相当惊人。
    作者探究了一下评价网络设计的不同结构的性能,大家可以看看,Siamese结构也有不错的性能。总结:CVPR19的Oral预定。
    7

    展开全文
  • 目标检测论文

    2018-10-04 10:54:00
    目标检测相关论文,包括selective search,R-CNN,SPP-Net, Fast R-CNN, Faster R-CNN, FPN, Mask R-CNN, YOLO V1 V2 V3, SSD, DSSD, CornerNet, IoUNet.
  • 【ATOM(CVPR2019 oral)】论文阅读笔记

    千次阅读 2019-04-18 16:57:48
    这是MD大神19年新作,按照传统,还是有高深的数学推导和什么Gauss-Newton,总之是看不懂的东西,理论很强了,然后他们用的还是SIamese的框架,说明现在Siamese框架确实很promising的,用了IoUNet来提精度,也引入了...

    ATOM: Accurate Tracking by Overlap Maximization 论文地址 代码地址

    写在前面

    这是MD大神19年新作,按照传统,还是有高深的数学推导和什么Gauss-Newton,总之是看不懂的东西,理论很强了,然后他们用的还是SIamese的框架,说明现在Siamese框架确实很promising的,用了IoUNet来提精度,也引入了很多机制,比如尺度变化、Hard negative mining等,感觉人家都已经封装的很厉害了,loss也加了权重,没有做的余地了hhh

    Motivation

    • 现在很多tracker都致力于优化分类的精度而忽略了对目标的准确定位,他们一般多尺度的搜索来实现bbox的选择,但是因为目标是一个复杂的任务,所以这些方式具有局限性。

    Contribution

    • 提出了一个有两个部分的框架,分别对应与目标的分类和估计;
    • 用Conjugate-Gradient-based策略来加快在线学习的收敛;
    • 使用IoUNet来选择bbox,而不是像以前一样用置信度来选。

    Algorithm

    算法分为两个部分,1)目标估计模块是offline训练的;2)目标分类模块是在线学习的。
    在这里插入图片描述
    上图就是本文算法流程图,上下两个分支用的resnet参数是一样的,然后上面那个分支得到的结果作为下面分支的一个参数来得到最终预测的结果,这个图也很直观可以看出来,接下来说一下里面的各个部分。

    1 Target Estimation by Overlap Maximization

    这个地方他们也用了级联的方式,用了两个block来做。这里用的是IoUNet,引入了一个PrPool来做ROI Pooling(这里的ROI是ground truth的框),因为这个结构但是连续的,所以就可导,可训练,这样得到的bbox就可以用梯度来更新。最后得到的IoU由下面公式得到:
    在这里插入图片描述
    其中c表示reference branch的结果,z表示当前得到的结果B,网络通过最大化上面这个公式来实现。训练的时候ResNet的参数是不变的,只训练后面的结构。

    2 Target Classification by Fast Online Learning

    虽然上面的过程能够准确定位了,但是却没办法区分真的target和distractor,所以他们用了两个全连接层来选择结果,这个模块主要负责得到一个粗糙的2D的位置,最后选择的函数如下:
    在这里插入图片描述
    x表示从backbone网络得到的特征,w是网络参数,然后用DCF的方式来算loss:
    在这里插入图片描述
    这里他们用了Gauss-Newton的方式来做梯度下降过程,这边实在看不懂,感兴趣的建议看论文。

    3 Online Tracking

    这里他们对第一帧还做了预处理,包括遮挡、尺度变化、几何变化等,最终得到30个训练样本来那两层分类分支。在跟踪的时候,先是跟踪响应度最高位置,他们先是根据上一帧得到的尺度来割出来一个B,然后给B上加随机噪声,一共有10个初始的bbox,然后再不断迭代最大化IoU,最后的bbox是通过前三个IoU最大的进行平均得到的,整个过程中没有用到任何的反向传播。另外他们还加了hard negative mining来做,而且模型是有在线更新的。

    Experiment

    终于写到这里了???不知道自己在写什么,看实验结果很强了。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    总结

    emmmm,厉害是厉害,但是MD文章,真的都是用来被我这种菜鸡来膜的,实在看不懂,数学基础真的很重要的了,然后他们也用了很多机制,用了很大的训练集,真是无法超越了。

    展开全文
  • 头条AI lab面试

    千次阅读 2019-02-24 21:36:16
    每个都会一直深入的去讨论 一面(1小时) 1.算法:x的n次方(x任意...7.iounet 8.rfbnet 9.忘了 二面(1小时) 1.介绍实习 2.目标检测模型发展 3.深度可分离卷积 4.focal loss 5.Densenet,有没有改进模型 6.多标签/...
  • 这也是ATOM的IoUNet主攻的方向。 6)泛化性能提升:非常推荐自动化所黄凯奇老师组的 GOT-10k 数据集,数据组织的非常棒。黄老师组在one-shot learning领域有着深厚的积淀,所以站在这个领域的角度,他们提出了...
  • 文字检测采用的处理算法一般包括:Faster-RCNN、Mask-RCNN、FPN、PANet、Unet、IoUNet、YOLO、SSD。 3. 文字识别 在文本检测的基础上,对文本内容进行识别,将图像中的文本信息转化为计算机可识别和处理的文本信息...
  • IOU-Net 算法笔记

    万次阅读 多人点赞 2018-08-24 21:18:04
    论文:Acquisition of Localization Confidence for Accurate Object Detection ... 这篇ECCV2018的文章个人非常喜欢,我们知道在目标检测算法中最后一般都会通过NMS算法移除重复预测框,移除的依据是预测框的分类得分...
  • Iou predictor使用FPN网络中所提取的特征,为每个bbox进行IOU精准度预测,通过对图像中gt bbox做数据增强操作来生成bbox和gt labels,用于训练IoUNet,而非使用RPN中生成的proposals; 具体地,对训练集图像中的...
  • Borui Jiang∗1,3, Ruixuan Luo∗1,3, Jiayuan Mao∗2,4, Tete Xiao1,3, and Yuning Jiang4 1School of Electronics Engineering and Computer Science, Peking University 2ITCS, Institute for Interdisciplinary ...
  • 论文地址:https://arxiv.org/abs/1807.11590 代码地址:https://github.com/vacancy/PreciseRoIPooling  1.论文的出发点  传统的2-stage的目标检测算法中,分类和定位被用不同的方法解决。...
  • Sina Weibo:小锋子Shawn Tencent E-mail:403568338@qq.com ... [1] Acquisition of Localization Confidence for Accurate Object Detection ECCV 2018...
  • """Optimize iounet boxes with the default parametrization""" output_boxes = init_boxes.view(1, -1, 4).to(self.params.device) step_length = self.params.box_refinement_step_length # 1 if isinstance...
  • 我们论文的Center-ness和IoUNet之间的关系 他们之间有共同的思想,不过IoUNet就是要将IoUNet训练一个独立的网络来预测预测边界框和基础真值框之间的IoU分数 Center-ness仅仅只有一层,并且是和detector联合训练的,...
  • 7.IOU的算法设计和阈值的选择,今年比较有特点的是IOUNet和Cascade RCNN。 8.更好的NMS。 9. one shot learning,我看来一个样本和小样本的数据增强和学习,也会有一些有意思的研究。参考评论里面的提到的参考文章...
  • ATOM代码调试

    2021-04-07 20:50:27
    直接跳到./ltr/train_settings/bbreg/atom.py开始 首先是对训练流程进行配置 settings.description = 'ATOM IoUNet with default settings, but additionally using GOT10k for training.' settings.batch_size = 64...
  • Bounding Box Regression with Uncertainty for Accurate Object DetectionAbstract1.Introduction2.Related WorkTwo-stage DetectorsObject Detection LossRelated Non-Maximum SuppressionBounding Box Refinemen3...
  • target_box = self.get_iounet_box(self.pos, self.target_sz, sample_pos[scale_ind,:], sample_scales[scale_ind]) # Update the classifier model self.update_classifier(train_x, target_box, learning_...
  • 这也是 ATOM 的 IoUNet 主攻的方向。 6)泛化性能提升:非常推荐自动化所黄凯奇老师组的 GOT-10k 数据集,数据组织的非常棒。 黄老师组在 one-shot learning 领域有着深厚的积淀,( One/zero-shot learning都是...
  • 模型的输出包含bbox和对应的置信度(confidence),首先按照置信度降序排序,每添加一个样本,阈值就降低一点(真实情况下阈值降低,iou不一定降低,iounet就是对这里进行了改进)。这样就有多个阈值,每个阈值下分别...
  • 目标检测论文阅读:CornerNet

    千次阅读 2018-09-13 14:02:37
    本周介绍的正是ECCV 2018上的CornerNet,这篇文章借鉴了人体关键点检测的思路来做detection,还是有些想法和创新的,不过个人更喜欢IoUnet一点,因为在我看来这篇文章的创新实际上并不是非常本质上的东西,但是借鉴...
  • 目标检测存在的问题总结

    千次阅读 2019-11-22 09:49:24
    7.IOU的算法设计和阈值的选择,今年比较有特点的是IOUNet和Cascade RCNN。 8.更好的NMS。 one shot learning,我看来一个样本和小样本的数据增强和学习,也会有一些有意思的研究。参考评论里面的提到的参考...
  • CVPR2019论文题目中文列表

    千次阅读 2019-11-18 09:48:52
    英文题目 中文题目 Finding Task-Relevant Features for Few-Shot Learning by Category Traversal 少镜头学习中用类别遍历法寻找任务相关特征 Edge-Labeling Graph Neural Network for Few-Shot ...
  • ✓\checkmark✓ Deformable ConvNets v1(CVPR 2017) ✓\checkmark✓ Deformable ConvNets v2 (CVPR 2018) ✓\checkmark✓ IoUNet (ECCV 2018) ✓\checkmark✓ GIoU(CVPR 2019) ✓\checkmark✓ DIoU( 2019)...
  • 近几年目标跟踪论文简单分类综述

    千次阅读 2019-08-21 20:17:44
    ATOM(CVPR2019 oral):MD大神的作品,用了线下训练目标估计和线上训练分类来做,也提出了IoUNet的有用性,其实也可以理解为是一个two-stage的过程,也用了多层的特征; EDCF(IJCAI2018):也是Siamese的框架只...
  • 介绍 IoUNet首先发现了分类和回归共享一个头会有冲突这个问题,他们发现了有些分类分数特别高的bbox反而在回归上不够准确。为了解决这个问题,他们引入了一个额外的head用来预测IOU,用作位置的置信度,然后把位置...
  • SiamMask算法详解

    万次阅读 多人点赞 2019-04-04 20:50:07
    这也是 ATOM 的 IoUNet 主攻的方向。 6) 泛化性能提升 :非常推荐自动化所黄凯奇老师组的 GOT-10k 数据集,数据组织的非常棒。黄老师组在 one-shot learning 领域有着深厚的积淀,所以站在这个领域的角度,他们...
  • 基于孪生网络的跟踪算法汇总

    万次阅读 多人点赞 2019-03-09 23:56:54
    对于视觉目标跟踪(即单目标跟踪)任务而言,在2017年之前,大量的跟踪都是在相关滤波算法的基础上做出改进的,经典的算法包括KCF、DSST等。随着深度学习技术的兴起,跟踪领域中的学者们也开始去尝试着将深度神经...
  • 物体检测 资料大搜集

    2018-09-21 16:46:05
    物体检测基本知识科普: P-R curve & AP的解释:  Object-Detection-Metrics mAP的产生和解释:  What is Mean Average Precision?...IoUnet 关于候选框 awesome-object-proposals    

空空如也

空空如也

1 2 3 4 5 ... 7
收藏数 127
精华内容 50
关键字:

iounet