目标检测

传统的目标检测
-1. 利用不同尺寸的滑动窗口框出图中的某一部分作为候选区域;
-2. 提取候选区域相关的视觉特征。比如人脸检测常用的Harr特征;行人检测常用HOG特征等;
-3. 利用分类器进行识别,比如常用的SVM模型。
基于SS的目标定位的过程:
-1. 训练过程
--1. 人工标注正例样本和负例样本
正例样本:包含物体的图像
负例样本:不包含物体的图像, 也叫做背景图像
--2. 使用标注好的数据,提取HOG、LBP等特征信息,然后使用SVM模型构建分类器模型。
-2. 预测过程
--1. 使用SS来提取可能的物体区域框
--2. 将区域框大小resize成训练的大小区域框或者使用相同的特征提取方式提取特征(HOG、LBP等)<和训练操作一样>
--3. 使用训练好的模型对当前图像的所有区域进行预测,然后预测概率最大的那个区域作为最终的预测框。
========================================================
RCNN
NOTE: 还是基于区域提名(物体候选框)的方式的目标检测
和传统的目标检测的区别:
-1. 传统的目标检测中,候选框区域的特征信息一般是HOG、LBP等特征(纹理、轮廓、区域信息...),RCNN中使用CNN卷积结构来自动的提取高阶特征(纹理、轮廓、区域信息...<卷积的功能>)
-2. 传统的目标检测中,一般最终的预测框就是候选框,R-CNN中会基于候选框区域的高阶特征,对候选框进行位置的微调。(也就是做一个回归)
流程:
1. Selective Search产生候选框
2. CNN卷积结构提取候选框的高阶特征
3. 基于候选框的高阶特征做分类,判断候选框中出现的物体是哪个类别(C+1,C个类别,1个背景)
4. 基于候选框的高阶特征做回归,对候选框的位置做调整

 

1,传统的目标检测

      利用不同尺寸的滑动窗口框出图中的某一部分作为候选区域

      提取候选区域相关的视觉特征。比如人脸检测常用的Harr特征;行人检测常用 HOG特征等

      利用分类器进行识别,比如常用的SVM模型

      传统目标检测,DPM中将物体看成是多个不同组件的结合,其效果不错,但是 检测速度相对比较慢

2,目前主流的目标检测

      two-stage检测算法  首先产生候选区域,然后对候选区域进行分类R-CNN SPPNET Fast R-CNN

      one-stage检测算法,直接进行区域定位与分类 SSD YOLO

3, 选择性搜索(区域合并算法)

     1,划分图像为细粒度小块

     2,计算相邻区域相似度,合并最相似的两块区域,

     3,形成最终的候选区域

     区域合并采用三种多样性策略来增加候选区域的可能性

      1,多种颜色空间:RGB,灰度,HSV

      2,多种相似度度量标准,纹理,大小,重叠情况等

      3,更改阈值,阈值越大,分割块越少

 

目标检测的思路

思路一:1,搭建一个图像分类的神经网络,如在alexNet基础上做一个fine-tuning产生新的网络

            2,在网络的尾部,变成classfication+regression

            3,使用偶认识距离作为损失函数,做fine-tuning来训练

            4, 预测的时候,分别用两个分支来完成不同的功能

思路二: classfication+候选框

            取大小不同的框,让框出现在不同的位置,得出这个框的判定得分,获取得分最高的那个框

 

精度评估值

精度:precision=tp/tp+fp

召回率:recall=tp/tp+fn  可以把漏检的操作当作FN

TP: true positive, 正确的阳性,说明预测是阳性,而且预测对了,那么实际也是正例。
TN: true negative, 正确的阴性,说明预测是阴性,而且预测对了,那么实际也是负例。
FP: false positive, 假阳性,说明预测是阳性,预测错了,所以实际是负例。
FN: false negative, 假阴性,说明预测是阴性,预测错了,所以实际是正例。

为了得到tp和fn,需要用到IOU,以判断检测结果正确还是错误,一般以0.5做为IOU的阈值。

 

IOU

IOU定义了两个bounding box的重叠读,也就是 a∩b/(a∪b)

 

overFeat(特征提取算子)算法:

      1, 利用滑动窗口进行不同尺度的区域提名,然后使用CNN模型对每个区

域进行分类,得到类别和置信度;

      2,利用多尺度滑动窗口来增加检测数量,提升分类效果;

      3, 用回归模型预测每个对象的位置;

      4, 边框合并;

 

    这个1*1*1*1的padding,是左右上下的padding

 

overFeat核心思想

     1,区域提名:结合滑动窗口和规则块,即多尺度的滑动窗口;

     2,分类和定位:统一用CNN来做分类和预测边框位置,和AlexNet类似,其中1-5为特征提取层,即将图片转为固定维度的特征向量,6-9层为分类层(分类任务专用),不同的任务(分类,定位,检测)公用特征提取层(1-5层),值替换6-9层

      3,累积:因为用了滑动窗口,同一个目标对下会有多个位置,也就是多个视角;因为用了多尺度,同一个目标对象又会有多个位置,也就是多个视角,同一个目标对象又会有多个大小不一的快。 这些不同位置和不同大小块上的分类置信度会进行累加,从而使得判定更为准确。

      一个是全卷积代替全连接,一个是多尺度滑动获取更多的区域信息。多尺度多视野的测试是核心。

 

OverFeat和AlexNet的区别主要在于以下几点:

   没有使用LRN;

   没有使用重叠池化;

   使用小的stride代替大的stride(2代替4);

   AlexNet中测试阶段中使用256*256图像做裁剪(四个角落和中间)和水平翻转, 得到5*2也就是10张227*227的图像,然后送进网络里面得到10个结果求平均来 进行预测。这样的做法有两个问题,裁剪时可能忽略了图像的一些区域,以及 10张图像有很多重叠部分导致了冗余计算。

   OverFeat的测试阶段中使用多尺度、滑动窗口的方法(实验最多输入6个不同尺 度的图像),来产生预测结果。没有造成特征的丢失,因为卷积的时候是对整个图像进行卷积的。

 

OverFeat 多尺度预测阶段

      

 

分类和回归

分类我们一般用交叉熵损失函数,回归一般用MSE

假设3个类别,特征提取->分类->输出3+1(3个类别加一个背景)

                                   回归->fc7->fc8->fc91

                                                        ->fc92

                                                         ->fc93

  
Hog:方向梯度直方图,

       HOG特征检测算法的几个步骤:颜色空间归一化—>梯度计算—>梯度方向直方图—>重叠块直方图归一化—>HOG特征。

       颜色空间归一化:图像灰度化,将rgb转为灰度图像

                               gamma校验:Gamma标准化,采用平方根或者对数法。

       梯度方向直方图:将图像划分为若干个cell,8*8个像素为一个cell,相邻的cell之间不重叠。在每个cell内统计梯度方向直方图,将所有的梯度划分为9个bin,作为直方图的横轴,角度范围所对应的梯度值累加作为直方图纵轴。

       重叠快直方图归一化:采用l2正则化,将所有block的特征向量组合起来,形成特征向量,这就是HOG特征,这个特征向量就可以表征整个图像了。

       

LBP: 以窗口中心像素为阈值,将相邻的8个像素的灰度值与其进行比较,若周围像素值大于中心像素值,则该像素点的位置被标记为1,否则为0。

 

非极大值抑制

 物体检测中应用NMS算法的主要目的是消除多余(交叉重复)的窗口,找到最佳物体检测位置。

https://www.cnblogs.com/zf-blog/p/8532228.html

 

RCNN

1,利用ss得到若干个候选区域

2,对于每个候选区域分别使用CNN提取高阶特征向量,并且特征向量存储到磁盘中。

3,对于候选框区域提取的高阶特征向量使用SVM进行分类

4,使用非极大值一直剔除重复框

5,精准定位

 

提取出2000个框,高阶特征维度为4096,也就是可以得到一个2000*4096的特征向量矩阵,类别1的概率,2000*4096,通过训练一个4096*1的权重系数,就可以完成svm,关于1类别的训练。类别2同样

SVM是一种基于判别式的机器学习模型。

       原理:对于一个二分类问题,例如优质站点和劣质站点,SVM的目标就是寻找到一个多维空间中的超平面,使得不同类别的实例尽可能被这个超平面正确地分开,并且超平面到它两侧最近实例的距离(称作边缘)尽可能大。

 

机器学习:根据已有的数据,进行算法选择,并给予算法和数据构建模型,最终对未来进行预测。

有监督学习,有人为标注数据的学习

无监督学习,相反

 

深度学习,是机器学习的子类,深度学习是给予传统的神经网络算法发展到多隐层的一种算法体现。

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值