物体检测及分类方法总结

当下比较流行的检测方法:Faster R-CNN,ION, HyperNet, SDP-CRC, YOLO,G-CNN,SSD。

下图是各种目标检测模型的检测精度对比

DPM

Deformable Part Model,可变形的组件模型,是一种基于组件的检测算法,08年提出。DPM可以看做是HOG的扩展,大体思路与HOG一致。先计算梯度方向直方图,然后用SVM训练得到物体的梯度模型。有了这样的模板就可以直接用来分类了,简单理解就是模型和目标匹配,DPM只是在模型上做了多改进工作。

算法思想:

1)Root filter+ Part filter:

如下图,是一个检测人的model,该模型包含了一个8*8分辨率的根滤波器(Root filter)(左)和4*4分辨率的组件滤波器(Part filter)(中)。其中,中图的分辨率为左图的2倍,并且Part filter的大小是Root filter的2倍,因此看的梯度会更加精细。右图为其高斯滤波后的2倍空间模型。

(左)Rootfilter                  (中) Part filter            (右)高斯滤波后模型

(2)响应值(score)的计算:

root模型响应值得分公式如下:

其中,x0、y0、l0分别为锚点的横坐标、纵坐标、尺度;

R0、l0 (x0, y0)为根模型的响应分数,或者说是匹配程度,本质就是模板β和feature map的卷积,后面的part filter也是如此;

Di,l0−λ(2(x0, y0)+vi)为部件模型的响应分数;

b为不同模型组件之间的偏移系数,加上这个偏移量使其与跟模型进行对齐;

(x0, y0)为rootfilter的left-top位置在root feature map中的坐标,2(x0, y0)是因为part feature map的分辨率是root feature map的两倍,2(x0, y0)+vi为第i个part filter映射到part feature map中的坐标;

vi为锚点和理想检测点之间的偏移系数,即相对于rootfilter left-top 的偏移。

 

part模型响应值得分公式如下:

 

其中x,y为训练的理想模型的位置;

Ri,l(x + dx, y + dy)为组件模型的匹配得分;

di · φd(dx, dy))为组件的偏移损失得分;

di为偏移损失系数;

 

 

φd(dx, dy))为组件模型的锚点和组件模型的检测点之间的距离;

 

 

此公式表明,组件模型响应越高,各个组件和其相应的锚点距离越小,则响应分数越高,越有可能是待检测物体。

(3)DPM特征定义:

DPM首先采用的是HOG进行特征的提取,但又有别于HOG,DPM只保留了HOG中的Cell。如上图所示,假设一个8*8的Cell,将该细胞单元与其对角线临域的4个细胞单元做归一化操作。提取有符号的HOG梯度,0-360度将产生18个梯度向量,提取无符号的HOG梯度,0-180度将产生9个梯度向量。因此,一个8*8的细胞单元将会产生,(18+9)*4=108,维度有点高。作者的优化思想是,首先只提取无符号的HOG梯度,将会产生4*9=36维特征,将其看成一个4*9的矩阵,分别将行和列分别相加,最终将生成4+9=13个特征向量,为了进一步提高精度,将提取的18维有符号的梯度特征也加进来,这样一共产生13+18=31维梯度特征。实现了很好的目标检测。

(4)DPM检测流程:

如上图所示,对于任意一张输入图像,提取其DPM特征图,然后将原始图像进行高斯金字塔上采样,然后提取其DPM特征图。对于原始图像的DPM特征图和训练好的Root filter做卷积操作,从而得到Root filter的响应图。对于2倍图像的DPM特征图,和训练好的Part filter做卷积操作,从而得到Part filter的响应图。然后对其精细高斯金字塔的下采样操作。这样Root filter的响应图和Part filter的响应图就具有相同的分辨率了。然后将其进行加权平均,得到最终的响应图。亮度越大表示响应值越大。

(5)Latent SVM:

 

传统的Hog+SVM和DPM+LatentSVM的区别如上面公式所示。

由于训练样本中,负样本集肯定是100%的准确的,而正样本集中就可能有噪声。因为正样本标注是人工进行的,人是会犯错的,标注的也肯定会有不精确的。因此需要首先去除里面的噪声数据。而对于剩下的数据,里面由于各种角度,姿势的不一样,导致训练的模型的梯度图也比较发散,无规则。因此需要选择其中的具有相同的姿势的数据,即离正负样本的分界线最近的那些样本,将离分界线很近的样本称为Hard-examples,相反,那些距离较远的称为Easy-examples。

缺点:

模型太死板了,不能适应物体的运动,特别是非刚性物体的运动。

使用传统的slider window的方法,给出的窗口太多,10^5, 10^6甚至更多,计算量非常大。

OverFeat

OverFeat: Integrated Recognition, Localization and Detection using Convolutional Networks,14发表。OverFeat其实就是一种特征提取算子,就相当于SIFT,HOG等这些算子一样。

这篇文献牛逼的地方,在于充分利用了卷积神经网络的特征提取功能,它把分类过程中,提取到的特征,同时又用于定位检测等各种任务。只需要改变网络的最后几层,就可以实现不同的任务,而不需要从头开始训练整个网络的参数。其主要是把网络的第一层到第五层看做是特征提取层,然后不同的任务共享这个特征提取层。基本用了同一个网络架构模型(特征提取层相同,分类回归层根据不同任务稍作修改、训练),同时共享基础特征。

OverFeat的网络架构方面与Alexnet基本相同,Alexnet的训练和测试过程为,①训练阶段:每张训练图片256*256,然后随机裁剪出224*224大小的图片,作为CNN的输入进行训练;②测试阶段:输入256*256大小的图片,我们从图片的5个指定的方位(上下左右+中间)进行裁剪出5张224*224大小的图片,然后水平镜像一下再裁剪5张,这样总共有10张;然后把这10张裁剪图片分别送入已经训练好的CNN中,分别预测结果,最后用这10个结果的平均作为最后的输出。

overfeat 在训练阶段采用与Alexnet相同的训练方式,在测试阶段差别很大,这就是OverFeat最大的创新点,它不是裁剪出10张224*224的图片进行结果预测平均。

overfeat 中用到了两个基础算法:FCN 和 offset max-pooling

FCN 

Fully Convolutional Networks for Semantic Segmentation,全卷积神经网络,此算法多用于语义分割领域。

对于一个各层参数结构都设计好的网络模型来说,输入的图片大小是固定的,比如Alexnet设计完毕后,网络输入图片大小就是227*227。FCN的精髓就是网络可以一直前向传导,让一个已经设计完毕的网络,也可以输入任意大小的图片。FCN算法灵魂:

1、把卷积层--->全连接层,看成是对一整张图片的卷积层运算;

2、把全连接层--->全连接层,看成是采用1*1大小的卷积核,进行卷积层运算。

下面用一个例子,讲解怎么让一个已经设计好的CNN模型,可以输入任意大小的图片:

如上图所示,上面图中绿色部分表示卷积核大小。假设我们设计了一个CNN模型,输入图片大小是14*14,通过第一层卷积后我们得到10*10大小的图片,然后接着通过池化得到了5*5大小的图片,接着要从5*5大小的图片变为1*1大小的图片:

(1)传统的CNN:此过程为全连接层,把这个5*5大小的图片,展平成为一个一维向量,进行计算(cnn源码中的flatten函数,就是为了展平成一维向量)。

(2)FCN:FCN并不是把5*5的图片展平成一维向量,再进行计算,而是直接采用5*5的卷积核,对一整张图片进行卷积运算。

其实这两个本质上是相同的,只是角度不同,FCN把这个过程当成了对一整张特征图进行卷积,同样,后面的全连接层也是把它当做是以1*1大小的卷积核进行卷积运算。

上例中,输入的是一张

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值