CV物体检测与目标检测----概述与R-CNN

目录

  • 第一部分:简介
    • 项目架构:
    • 图像识别三大任务:
    • 目标检测任务描述
  • 第二部分:R-CNN
    • 一.Overfeat模型
    • 二.R-CNN概述
    • 三.R-CNN的候选区域和特征提取
    • 四.SVM分类和NMS非极大值抑制
    • 五.修正候选区域
    • 六.R-CNN训练过程及测试过程
    • 七.R-CNN缺点

第一部分:简介

项目架构:

数据采集层:数据标注、数据存储
深度模型层:数据预处理、多GPU模型训练
用户层:网页、小程序,获取识别检测结果

图像识别三大任务:

目标识别:只有一个物体,分类,定性目标,确定目标是什么;
目标检测:有多个物体,定位目标,确定目标是什么以及位置;
目标分割:像素级的对前景与背景进行分类,将背景剔除。

目标检测任务描述

1.算法分类
模型训练:加入全连接层,通过softmax进行概率计算,交叉熵损失衡量。
1)两步走的目标检测:先进行区域推荐,而后进行目标分类,如R-CNN、SPP-net、Fast R-CNN、Faster R-CNN。
2)端到端的目标检测:采用一个网络一步到位,如YOLO、SSD。

2.常见指标IoU(Intersection over union,交并比)
bounding box(bbox)----目标标记框
Ground-truth bounding box----图片当中真实标记的框
Predicted bounding box----预测的时候标记的框
LoU即真实框与预测框的交集并集之比----IOU=(A∩B)/(A∪B)
CV物体检测与目标检测----概述与R-CNN_第1张图片

第二部分:R-CNN

一.Overfeat模型

由于目标检测中,一张图片可能有多个物体,所以不适用简单的图片分类。Overfeat模型的思路是,对于输入的一张图片,设置k个大小形状不同的滑动窗口,对于每个滑动窗口,依次从图片的左上角按行按列滑动,得到m个子图。将每个子图输入到CNN网络中,用SVM分类器进行分类,并对bounding box标记区域进行回归。其中训练集为若干个已标记好的子图。

二.R-CNN概述

R-CNN在2014年被提出,基于Overfeat模型的思路,不使用暴力方法,而是用候选区域(region proposal),以深度神经网络为基础。
CV物体检测与目标检测----概述与R-CNN_第2张图片
具体步骤包括(以AlexNet为例):
1.找出图片中可能存在目标的侯选区域region proposal。(一般通过选择性搜索selective search)
2.进行图片大小调整为了适应AlexNet网络的输入图像的大小227x227,通过CNN对候选区域提取特征向量,2000个建议框的CNN特征组合成2000x4096维矩阵。(统一大小:crop+warp)
3.将2000x4096维特征与20个SVM组成的权值矩阵4096x20相乘(20种分类,SVM是二分类器,则
有20个SVM),获得2000x20维矩阵。
4.分别对2000x20维矩阵中每一列即每一类,进行非极大值抑制(NMS:non-maximum suppression)剔除重叠建议框,得到该列即该类中得分最高的一些建议框。
5.修正bbox,对bbox做回归微调。

三.R-CNN的候选区域和特征提取

1.候选区域
一般采用选择性搜索(Selective Search, SS),首先将每个像素作为一组,然后计算每一组的纹理,并将两个最接近的组结合起来。但是为了避免单个区域吞噬其他区域,首先对较小的组进行分组,接着继续合并区域,直到所有区域都结合在一起。
在通过选择性搜索方法获得2000个候选区域后,由于传统的CNN限制了输入必须固定大小,所以在实际使用中往往需要对候选区域进行crop或者warp的操作,得到符合要求的2000个warped region proposal。
crop:截取原图片的一个固定大小的patch。
warp: 将原图片的ROI缩放到一个固定大小的patch。
无论是crop还是warp,都无法保证在不失真的情况下将图片传入到CNN当中,会使用一些方法尽量让图片保持最小的变形。
各向异性缩放:即直接缩放到指定大小,这可能会造成不必要的图像失真。
各向同性缩放:在原图上裁剪侯选区域,(采用侯选区域的像素颜色均值)填充到指定大小在边界用
固定的背景颜色。
2.CNN网络特征提取
每一个候选区域输入到CNN网络中,得到更高级、更抽象的特征(2000x4096,2000组特征向量),作为下一步分类器、回归的输入数据,并保存到磁盘中。

四.SVM分类和NMS非极大值抑制

1.SVM分类器
将2000个候选区域提取的特征矩阵2000x4096输入到SVM分类器中,默认有20种不同的分类,因此有20个SVM分类器,对于4096维向量,20个SVM分类器权值矩阵为4096x20,输出端得到2000x20的得分矩阵,分别表示2000个候选区域中20个分类的概率。
2.NMS非极大值抑制
NMS:non-maximum suppression,非极大值抑制,仅用于测试过程。
迭代过程:对2000个候选框进行概率筛选,对剩余的候选框,每个类别进行IoU(交并比)>=0.5筛选。
CV物体检测与目标检测----概述与R-CNN_第3张图片
假设存在五个区域ABCDE:
首先选出score最大的,假设为C,让剩余的A、B、D、E分别与B进行交并比(IoU)计算>阈值(0.5),B和D满足,则去除B和D,保留预测框C。
循环第二次筛选,A的得分最高,E与A的IoU为0.6> 0.5,删除E,保留预测框A。

五.修正候选区域

因为筛选出来的候选框(region proposal)不一定非常准确,需要用bbox regressor回归修正筛选后的候选区域,使之回归于ground-truth(真实标记框),默认认为这两个框之间是线性关系,因为最后筛选出来的候选区域和ground-truth已经很接近。

六.R-CNN训练过程及测试过程

R-CNN的训练过程分为:正负样本准备+预训练+微调网络+训练SVM+训练边框回归器
1.正负样本准备
对于训练集中的所有图像,采用selective search方式来获取,最后每个图像得到2000个region proposal,但是每个图像不是所有的候选区域都会拿去训练,而是按照正负样本比例1: 3组成训练集。
正样本:某个region proposal和当前图像上的所有ground truth中重叠面积最大的那个的IOU大于等于0.5,则该region proposal作为这个ground truth类别的正样本。
负样本:某个region proposal和当前图像上的所有ground truth中重叠面积最大的那个的IOU都小于0.5,则该region proposal作为这个ground truth类别的负样本。
2.预训练与模型微调
预训练:pre-training,由于CNN模型较多且容量较大,常常不会重新训练一个神经网络,而是采用著名的已经用大量数据集训练好的网络,如AlexNet,采用其中的模型参数。
微调:fine-tuning,在现有的模型上微调卷积参数。对准备好的正负样本进行尺寸变换,使其符合预训练好的网络的输入,继续训练网络微调参数(迁移学习)。
3.svm分类器和bbox回归器训练
SVM分类器训练:对每个类别的SVM分类器进行训练,训练集为准备好的带标签的正负样本,得到4096x20的权重矩阵,4096维,20个分类。
bounding box:在训练样本中,针对那些与ground truth(真是标记框)的交并比IoU超过某个阈值且IoU最大的region proposal(候选区域)进行bbox回归训练,得到回归的参数。
4.测试过程
对输入图片进行选择性搜索SS得到2000个候选区域,对候选区域尺寸等进行处理,并输入到CNN模型中得到特征向量矩阵,再输入到已训练好的SVM分类器中,输入得分矩阵,采用NMS非极大值抑制去掉多余候选框,再进行回归得到预测结果。

七.R-CNN缺点

1.训练阶段多:微调网络+训练SVM+训练边框回归器。
2.占用磁盘空间大(SVM分类器需要保存数据)、处理速度慢、图片可能会变形(warped过程)。

你可能感兴趣的:(CV物体检测与目标检测----概述与R-CNN)