Fast-Rcnn和YOLO的区别及mAP值的计算

Fast-Rcnn和YOLO的区别及mAP值的计算

  1. 算法分类:YOLO所属类别为one-stage,Fast-Rcnn所属类别为two-stage
    • two stage:
      • 先进行区域生成,该区域称为region proposal(RP,一个有可能包含物体的预选框);再通过卷积神经网络进行样本分类,精度高,适合做高检测精度的任务
      • 任务流程:特征提取—生成RP—分类/定位回归
      • 常见two stage:R-CNN、SPP-Net、Fast R-CNN、Faster R-CNN、R-FCN
      • two stage多了一步预选框,Fast-Rcnn为典型的two-stage类型,其准确度比无预选框的算法高,但是其速度要慢上不少Fast-Rcnn和YOLO的区别及mAP值的计算_第1张图片
    • one stage:
      • 不用RP,直接在网络中提取特征来预测物体的分类和位置,速度非常快,适合做实时检测任务,但是效果不会太好
      • 任务流程:特征提取—分类/定位回归
      • 常见one stage:OverFeat、YOLOv1、YOLOv2、YOLOv3、SSD、RetinaNet
      • one-stage无预选框,YOLO(You Only Look Once)算法为典型的one-stage算法,其舍弃了一部分准确率来提高其速度
        Fast-Rcnn和YOLO的区别及mAP值的计算_第2张图片
  2. 原理

    目标检测分为两大系列——RCNN系列和YOLO系列:

    • RCNN系列是基于区域检测的代表性算法
    • YOLO是基于区域提取的代表性算法
    • 而SSD是基于前两个系列的改进
  3. 候选区域的产生
    1. 滑动窗口法:滑窗法简单易于理解,但是不同窗口大小进行图像全局搜索导致效率低下,而且设计窗口大小时候还需要考虑物体的长宽比。所以,对于实时性要求较高的分类器,不推荐使用滑窗法。
      • 其主要思想:首先对输入图像进行不同窗口大小的滑窗进行从左往右、从上到下的滑动。每次滑动时候对当前窗口执行分类器(分类器是事先训练好的)。如果当前窗口得到较高的分类概率,则认为检测到了物体。对每个不同窗口大小的滑窗都进行检测后,会得到不同窗口检测到的物体标记,这些窗口大小会存在重复较高的部分,最后采用非极大值抑制(Non-Maximum Suppression, NMS)的方法进行筛选。最终,经过NMS筛选后获得检测到的物体。
    2. 选择性搜索:滑窗法类似穷举进行图像子区域搜索,但是一般情况下图像中大部分子区域是没有物体的。学者们自然而然想到只对图像中最有可能包含物体的区域进行搜索以此来提高计算效率。选择搜索(selective search,简称SS)方法是当下最为熟知的图像bounding boxes提取算法,由Koen E.A于2011年提出。其优点为:计算效率优于滑窗法,由于采用子区域合并策略,所以可以包含各种大小的疑似物体框。合并区域相似的指标多样性,提高了检测物体的概率。
      • 其主要思想:图像中物体可能存在的区域应该是有某些相似性或者连续性区域的。因此,选择搜索基于上面这一想法采用子区域合并的方法进行提取bounding boxes。首先,对输入图像进行分割算法产生许多小的子区域。其次,根据这些子区域之间相似性(相似性标准主要有颜色、纹理、大小等等)进行区域合并,不断的进行区域迭代合并。每次迭代过程中对这些合并的子区域做bounding boxes(外切矩形),这些子区域外切矩形就是通常所说的候选框。
      • 选择搜索流程
        • step0:生成区域集R
        • step1:计算区域集R里每个相邻区域的相似度S = s 1 , s 2 , … S={s1, s2,…}S=s1,s2,…
        • step2:找出相似度最高的两个区域,将其合并为新集,添加进R
        • step3:从S中移除所有与step2中有关的子集
        • step4:计算新集与所有子集的相似度
        • step5:跳至step2,直至S为空
  4. 评估效果:
    1. 使用IoU(Intersection over Union,交并比)来判断模型的好坏。所谓交并比,是指预测边框、实际边框交集和并集的比率,一般约定0.5为一个可以接受的值。
      Fast-Rcnn和YOLO的区别及mAP值的计算_第3张图片

    2. 使用mAP综合衡量检测效果,单看Precision和Recall是不行的,因为Precision和Recall是成反比的关系

      Precision=TP/(TP+FP)

      Recall = TP/(TP+FN)

      具体计算的例子:

      已知条件:班级中总人数100人,其中男生80人,女生20人

      目标:找出所有女生

      结果:从班级中选择了50人,其中20人是女生,还错误的把30名男生挑出来了

      相关(Relevant),正类 不相关(NonRelevant),负类
      被检索到(Retrieved) true position(TP 正类判定为正类,例子中就是把女生正确判定为 “这是个女生”) false position(FP 负类判定为正类,”存伪“,例子中就是把男生误判为 “这是个女生”)
      未被检索到(Not Retrieved) false negative(FN 正类判定为负类,“去真”,例子中就是把女生误判为 “这是个男生“) true negative(TN 负类判定为负类,例子中就是把男生判断为 “这是个男生“)

      TP=20,FP=30.FN=0,TN=0

    3. 指标分析

      基于置信阈值来计算Precision和Recall,例如分别计算0.9,0.8,0.7,必须要给定一个阈值,这样才能将其他框排除掉。当置信阈值选择为0.9时,那么置信度为0.8和0.7的框都会被过滤掉了。当选择框的时候,可以选择置信度最大的一个框作为检测框。

      如何计算mAP呢?此时需要把所有阈值都考虑进来,mAP就是所有类别的平均(就是综合考虑所有P和R的情况,综合得出来的一个指标值)

      P-R图如图所示

    Fast-Rcnn和YOLO的区别及mAP值的计算_第4张图片

    而mAP值即是P-R图的极大值所围成的图形的面积,如下所示:mAP= A1+A2+A3+A4
    Fast-Rcnn和YOLO的区别及mAP值的计算_第5张图片

你可能感兴趣的:(YOLO,目标检测,深度学习,计算机视觉,YOLO)