最新公告
  • 欢迎光临数据科学与编程,我们是数据学科学兴趣交流小组立即加入我们
  • One-Stage和Two-Stage检测器比较

    One-Stage和Two-Stage检测器比较

    深度神经网络用于目标检测任务是一个成熟的研究领域,近年来,在众多多目标检测模型,One-stage detection 被认为是速度与精度权衡的最佳选择。在这篇文章中,我们将解释One-stage和Two-stage 方法之间的发展、区别、速度和精度


    1 经典算法介绍
    有两种常见的anchor-based目标检测方法:One-stage vs Two-stage。
    • Two-Stage Detection
    这类方法为两个阶段:提出区域(region proposal),然后对这些区域进行分类和位置修正预测。相关的Paper:
    R-CNN:Ross Girshick, 2013 – UC Berkeley
    Fast R-CNN: Ross Girshick, 2015 — Microsoft Reseach
    Faster R-CNN: Shaoqing Ren, 2015 — Microsoft Reseach
    Mask R-CNN: Kaiming He, 2017 — Facebook AI Research (FAIR)
    Faster RCNN是Two stage detection的经典算法。算法框架图如下所示,

    One-Stage和Two-Stage检测器比较

    Stage 1:对一张图先通过Conv layers和RPN提取候选区域(proposals),RPN通过softmax判断anchors属于positive或者negative。在这个阶段, 不需要知道RoI对应的物体到底是哪一类(只要知道是否是前景,还是背景),同时,也不需要很精确的bounding box。
    Stage 2:通过RoI Pooling收集输入的feature maps和proposals提取正样本proposal feature maps,送入全连接层判定目标类别以及更准确的定位。
    • One Stage Detection

    这类方法跳过区域建议(region proposal)阶段,一次得到最终的定位和内容预测。SSD和YOLO是常用的One stage detection方法。YOLO架构虽然比SSD快,但不够精确。

    近年来,deconvolution方法,如Deconvolution-SSD(DSSD)和特征金字塔网络(FPN)已成为任何目标检测体系结构的必要手段。在原始体系结构的基础上增加了deconvolution方法,使模型能够在不同的大小对象上达到优越的泛化性能,并显著提高了小目标检测的性能。相关的Paper:

    SSD:Single Shot MultiBox Detector
    DSSD: Deconvolutional Single Shot Detector
    FSSD:Feature Fusion Single Shot Multibox Detector
    RefineDet:Single-Shot Refinement Neural Network for Object Detection
    RfbNet:Receptive Field Block Net for Accurate and Fast Object Detection
    SSD
    与Faster RCNN类似,SSD算法在图像上平铺尺度和宽高比不同的anchor。与Faster RCNN方法不同的是,SSD采用了多尺度的特征图进行检测,并且使用卷积而不是全连接。

    One-Stage和Two-Stage检测器比较

    (1)anchor 匹配

    SSD的anchor与ground truth的匹配原则主要有两点。首先,保证每个ground truth一定与某个anchor匹配,方法是对于图片中每个ground truth,找到与其IOU最大的anchor。其次,对于剩余的未匹配anchor,若与某个ground truth的IOU大于某个阈值(例如0.5),那么该anchor也与这个ground truth匹配。

    (2)Hard negative mining

    在匹配步骤后,大多数anchor都属于负样本。这导致了正负训练样本的严重不平衡,SSD没有使用所有的负样本,而是先把负样本根据置信度损失进行排序,然后为每个 anchor 只选择分值最高的那些样本,并使得正负样本的比例不超过1:3。实验结果表明这样还可以使得优化更快,训练更平稳。

    (3)数据扩增

    SSD的采用很多的数据扩增(Data Augmentation),主要有水平翻转(horizontal flip),随机裁剪加颜色扭曲(random crop & color distortion),随机采集块域(Randomly sample a patch)等。


    2 One-Stage vs Two-Stage

    1 Multi-Scale Feature

    Faster RCNN通过单个特征映射进行检测,对于512×512的图像大小,Faster CNN检测通常在32×32像素的特征映射(conv5_3)上执行,
    而SSD-VGG则利用mutil-scale策略,预测从64×64像素特征映射(conv4_3)开始,并在32×32、16×16上一直持续到1×1到总共7个特征映射。

    2 Speed

    通常,one stage detection比two stage detection速度快。这是因为:
    (1)one stage detection没有区域建议网络,也就是说区域建议网络与分类定位完全集成。这样就可以一定限度地减少冗余计算,提高速度;
    (2)one stage detection对图像中任何数量的对象都是鲁棒的,其计算负载仅取决于anchor 的数量。然而,每个区域重复执行的Faster RCNN,其计算负荷随着RPN提出的区域数目的增加而增加。这个数字受到一个超参数的限制,为了得到更好的结果,这个参数被设置得足够大,从而导致大量的开销。另外,detect head也是拖累速度的一个重要因素,采用 light head 可以缩小 two-stage 和 one-stage 在速度上的差距。
    3 Accurate
    Focal Loss 认为原因在于训练过程中前景/背景的不平衡。Two stage detection很容易处理这种不平衡。RPN缩小了候选对象位置的数量,过滤掉了大多数背景实例。在此基础上,再进行sampling,为第二阶段检测器提供平衡的前景/背景样本。相比之下,One stage detection模型的anchor会产生大量的负样本,虽然也可以应用Hard negative mining 方法,但由于训练过程仍然容易被背景样本所主导,因此对于One  stage detection模型训练来说,这种方法效率低下。

    3 总结
    总的来说,以SSD为代表的one stage detection,在有限资源的情况中能获得更好的性能,而 two stage detection 相对能取得更好的精度。而对于实际应用或比赛,很大程度上不是one/two stage 的问题,而是能不能找到有效的tricks,如:用NAS找到更适合目标检测的backbone/head/neck,Pseudo-Labelling半监督学习、如何处理Feature alignment、正负样本不平衡等等问题

    本站上原创文章未经作者许可,不得用于商业用途,仅做学习交流使用,本站免责声明。转载请注明出处,否则保留追究法律责任的权利。《署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)》许可协议授权
    数据科学与编程 » One-Stage和Two-Stage检测器比较

    发表评论

    • 52会员总数(位)
    • 320资源总数(个)
    • 25本周发布(个)
    • 3 今日发布(个)
    • 333稳定运行(天)

    提供最优质的博文资源集合

    立即阅览 了解详情