R-CNN可以说是利用深度学习进行目标检测的开山之作。作者为Ross Girshick
该目标检测算法的是目标检测研究的一个巨大的进步,使检测的准确率得到了大幅度的提升

RCNN算法的4个流程

  1. 一张图像生成1k~2k个候选区域
  2. 对每个候选区域,使用深度网路提取特征
  3. 特征送入每一类的SVM分类器,判别是否属于该类
  4. 使用回归器精细修正候选框位置

    每一步的详细操作

  • 利用selective Search算法通过推向分割的方法得到一些眼熟区域,然后使用一些合并策略将这些区域合并,得到一个层次化的区域结构,而这些结构就包含着可能需要的物体
  • 通过2000个候选区得到2000张图片,将2000张图片缩放到227x227pixel,接着再将候选区域输入到事先训练好的AlexNetCNN网络中,获取4096为的特征得到2000x4096维矩阵
  • 将2000x4096维特征与20个SVM组成的全职矩阵吧4096x20相乘,获得2000x20维矩阵表示每个建议狂使某个目标类别的得分,分别对上市2000x20维矩阵中每一列即每一类进行非极大值抑制剔除重叠建议狂,得到该列即该类中得分最高的一些建议框。

image.png

对于svm权值矩阵的理解(涉及到过多的数学概念,无法理解,还是直接使用模型吧)

svm的中文全称为支持向量机,是一种二分类的模型,它的基本模型是定义在特征空间上的间隔最大的线性分类器,间隔最大使它有别于感知机;svm还包括核技巧,这使它陈文哥实质上的非线性分类器。svm的学习策略就是间隔最大化,可形式化为一个求解凸二次规划的问题,也等价于正则化的合页损失函数的最小化问题,svm的学习算法就是求解凸二次规划的最优化算法

非极大值一致提出重建议框

IoU(Intersection over Union)表示为(A∩B)/(A∪B)

对于每一个类别,计算其中经过SVM之后的得分最高的目标,之后计算其他目标与该目标之间的iou值,之后删除所有iou值大于给定阈值的目标
image.png
对于图中的目标的处理为

  1. 通过ss算法得到一系列的边界框,
  2. 在所有的边界框中寻找到评分最高的一个边界框,
  3. 通过svm之后的评分概率为0.98
  4. 对于另外一个得到的概率为0.86,之后计算两个边框的交并比iou,之后再判断得到的iou是否大于一个阈值,如果大于阈值则认为两个目标为同一个目标
  5. 将对应概率低的删掉,保留最准确的一个边界框,所以得到的图像中,就之后最准确的一个边界框

    使用回归器精细修正候选框的位置

    对NMS处理后剩余的建议框进一步筛选。接着分别用20个回归器对上述20个类别中剩余的建议框进行回归操作,最终得到每个类别的修正后的得分最高的bounding box
    如图,黄色框口P表示建议框Region Proposal,绿色窗口G表示实际框Ground Truth 红色窗口G表示Region Proposal进行回归后的预测窗口,可以使用最小二乘法解决线性的回归问题
    image.png

    FastRCNN

    与RCNN训练的时间相比,FastRCNN网络比RCNN网络块了9倍,推理时间快了213倍,准确率从62%提升到了66%(在pascal 数据集上)

    FastRCNN的基本流程

  6. 一张图片生成1k~2k个候选区域

  7. 将图像输入到网络得到相应的特征图,将SS算法生成的候选框投影到特征图上获得相应的特征矩阵
  8. 将每个特征矩阵通过ROI(Region of Interest) pooling层缩放到7x7大小的特征图,接着将特征图展平通过一系列全连接层得到预测结果

    FastRCNN与RCNN之间的区别

  • RCNN网络候选区域输入到卷积神经网络得到特征
  • FastRCNN将整张图象送入网络,紧接着从特征图像上提取相应的候选区域。这些候选区域的特征不需要再重复计算

    对于SVM(支持向量机)的理解

    对于支持向量机的更加直观的理解

    在二位空间中,我们拥有一系列的点,我们要解决的问题是找到一条直线将其按照类别分开来,之后根据这条直线来对新加进来的点进行归类
    image.png
    对于三位空间,相应的我们需要解决的问题为,找到一个平面将这些点分开来,最后可以拓展到思维以及更高的空间维度中去。
    image.png

    FasterRCNN

    主要的算法流程

  • 将图像输入网络得到相应的特征图

  • 使用RPN结构生成候选框,将RPN生成的候选框投影到特征图上获得相应的特征矩阵
  • 将每个特征矩阵通过ROI pooling层缩放到7x7大小的特征图,接着将特征图展平通过一系列全连接层得到预测结果

    正样本的条件

    候选框和一个既定的正样本的IoU值大于0.7就将其设定为正样本,

    RPN网络的主要工作流程

  • 对于一张图片的每个区域,进行像卷积层的卷积核的操作相似的流程,对于每个位置都进行扫描

  • 对于一个位置,取其128x128pixel、256x256pixel、512x512pixel的图像,得到1:1,1:2,2:1的三张图片,这样对于每个位置就会取到3x3=9个anchor,之后将得到的anchor输入卷积神经网络进行预测,得到2k个预测值,和4k个回归参数,对候选框进行位置的调整
  • 2k个预测值的内容是其为背景的概率和其为要检测的物体的概率,4k个回归参数分别是对应上下左右四个方向的调整值
  • image.png

    之后的操作

    在上一层的操作中,我们