视觉探测任务

视觉探测任务

1.1 探测任务简介
分类是对图像中仅有的主体分类,而定位就是对图像中仅有的主体进行分类并给出位置;检测则是对多个主体进行定位。
Bounding box:(bx, by, bw, bh),bx和by分别为要识别主体的中心点坐标,而bw和bh为识别主体的长宽,这样只需要四个参数就可以将主体的位置确定。

2.1 siliding windows & IoU
滑窗就是把原图切成许多小块,送入分类网络,将背景类丢弃,目标类输出;采用滑窗的方法将探测问题转化为分类问题,但是问题在于除非我们的步长以及Bounding box尺寸选的十分合适,否则很难恰巧将目标框住,那么应该如何评价bounding box的好坏呢?
我们引入重合率的概念,即IoU(Intersection over Union),IoU= intersection/Union。

2.2 Region Proposal

问题在于滑窗的大小,步长,选择几种窗口?理论上为了遍历图像上的所有目标,可能要生成数以万计的候选框,因此只用滑窗的方法是不可行的,还得借用传统视觉的SS(Selective Search)方法,基于特点规则删选候选框,这种方法无需训练,运行传统分割算法提取很多初始候选框,按照相似度合并候选框,最终留下固定数量的候选框,一般这个具体的数量选择2000个。
候选框过多时,采用非极大值抑制的方法,将所有候选框送入分类器得到属于某个类的概率,设定一个阈值,比如小于0.5的舍弃,然后挑出概率最大的候选框,将这个框周围的框舍弃掉,再挑选一个最大的,循环上述步骤;处理完一个类别之后,再处理下一个类别。

3. 探测任务-网络发展概览

R-CNN ------ OverFeat ----- Fast R-CNN ----- RPN ----- YOLO v1 ------ SSD ----- YOLO v2 ----- RetinaNet ----- Mask R-CNN ----- YOLO v3(只列出比较有代表性的几个网络)

3.1 R-CNN - 开山之作

主要分为5个阶段

  1. 产生与类别无关的候选区域,这些候选区域其中就包含了R-CNN最终定位的结果;
  2. 将这些候选区域的大小resize到一个大小,针对每个候选区域提取固定长度的特征向量;论文中采用的是迁移学习的方法,替换掉了ImageNet专用的1000-way分类层,换成了一个随机初始化的21-way分类层,(其中20是VOC的类别数,1代表背景)而卷积部分都没有改变。我们对待所有的推荐区域,如果其和真实标注的框的IoU>= 0.5就认为是正例,否则就是负例。SGD开始的learning_rate为0.001(是初始化预训练时的十分之一),这使得调优得以有效进行而不会破坏初始化的成果。每轮SGD迭代,我们统一使用32个正例窗口(跨所有类别)和96个背景窗口,即每个mini-batch的大小是128。另外我们倾向于采样正例窗口,因为和背景相比他们很稀少;
  3. 一系列的SVM分类器;思考一下检测汽车的二分类器。很显然,一个图像区域紧紧包裹着一辆汽车应该就是正例。同样的,没有汽车的就是背景区域,也就是负例。较为不明确的是怎样标注哪些只和汽车部分重叠的区域。论文使用IoU重叠阈值来解决这个问题,低于这个阈值的就是负例。这个阈值我们选择了0.3,是在验证集上基于{0, 0.1, … 0.5}通过网格搜索得到的。作者发现认真选择这个阈值很重要。如果设置为0.5,可以提升mAP5个点,设置为0,就会降低4个点。正例就严格的是标注的框;
  4. 边框回归(BBR);
  5. 逐类NMS.

R-CNN论文分析:https://blog.csdn.net/v1_vivian/article/details/78599229

3.2 Fast R_CNN
在这里插入图片描述

改进一: 区域映射;

  1. R-CNN在原图片上以候选框截取图像,送入网络;
  2. Fast R-CNN直接在分类网络输出的FM上以候选框截取目标特征,一方面R-CNN要对每个候选框区域计算卷积,而Fast R-CNN只需要计算一次卷积,从而节省了大量的计算时间,比R-CNN有一百倍左右的提速;另一方面,无需resize,减少了图像的信息损失;

改进二:统一输出特征维度RoI,在最后一层卷积层加了一个ROI pooling layer;

  1. 无论候选框的大小如何,都以相同的原则将其划分成等量的子区域(此为超参,现在一般选取 3 x 3);
  2. 对每一个子区域进行“max pooling”后,送入到输出特征中;
  3. 此方法不需要resize即可输出统一维度的特征;

改进三:将SVM分类器换成了softmax函数,原来分类和边框预测是分开的,但实际上它们之间是有联系的,这一改进解决了梯度回传和loss合并的问题。

参考文章:https://cloud.tencent.com/developer/news/281788

3.3 Faster R-CNN
在这里插入图片描述
加入一个提取边缘的神经网络,也就说找到候选框的工作也交给神经网络来做了。

RPN略解
训练集:

  1. 利用anchor box的思想,在输入的FM上滑窗生成好多好多bounding box;
  2. 选取与ground truth的IoU值最高的bounding box当作正样本。此外,如果一个bounding box和ground turth的IoU超过0.7,则也当作正样本;
  3. 选取所有与ground turth的IoU低于0.3的bounding当作负样本;
  4. 对于既不是正样本,也不是负样本的bounding box则直接丢弃。超出边界的bounding box也丢弃。

RPN损失函数包括分类损失和回归损失两个部分,这样的话Faster R-CNN的损失函数包括四个部分。

YOLO-分而治之

改革了区域建议框式检测框架: RCNN系列均需要生成建议框,在建议框上进行分类与回归,但建议框之间有重叠,这会带来很多重复工作。YOLO将全图划分为SXS的格子,每个格子负责中心在该格子的目标检测,采用一次性预测所有格子所含目标的bbox、定位置信度以及所有类别概率向量来将问题一次性解决(one-shot)。

参考文章:https://www.cnblogs.com/fariver/p/7446921.html

猜你喜欢

转载自blog.csdn.net/h__ang/article/details/87909320