Histograms of Oriented Gradients for Human Detection

彼黍离离,彼稷之苗。行迈靡靡,中心摇摇。
知我者,谓我心忧。不知我者,谓我何求。
苍天悠悠,此何人哉。

这篇文章是对Histograms of Oriented Gradients for Human Detection, Navneet Dalal and Bill Triggs 的学习总结这篇文章使用了HoG特征加上SVM来对行人进行检测。

在深度学习一统江山以前,图像识别的主要方法都是先对图片提取特征,然后使用机器学习的算法对这些数据进行学习。这篇文章想要解决的问题就是对行人进行检测,这篇文章提出的HoG特征明显受到了SIFT特征的影响(SIFT特征参考:  https://blog.csdn.net/Ghost__2011/article/details/79706781),使用图片的梯度信息来描述图片内容。又,这篇文章和2001年 Viola&Jones的人脸检测的文章同样属于划窗检测中的一种。即在一个图片中,框住其中一部分内容,然后对框柱部分进行识别。

文章提供了算法的主要流程图。我们根据这个流程图来梳理HoG特征提取的过程。
首先输入图片(Input image)被设定为大小为64*128个像素的图片,这个图片就是滑窗在大图片中框出的小图片。
第一步,对图片进行了伽马矫正,这个操作我上网找了一些伽马矫正的资料,应该是对最后的结果有一定的影响,但是不多(注:没有做过对比试验)
第二步,计算图片的梯度。

在图片上我们一般用设计好的核来计算图片的梯度图片。常用Sobel算子来做。

第三步,计算8*8子区域的HoG特征,借用openCV的图来说明什么是8*8的子区域

通过前面对梯度的计算,在每一个8*8的子区域中会得到两个矩阵,一个是梯度的方向,一个是梯度的强度。
我们根据方向在0-180的范围将梯度划分为9个柱。根据每个方向距离两个柱的比例将强度按比例分入两个柱中。

最后我们得到类似下图的直方图。

第四步,归一化,这一步的目的是由于每个直方图所受光照强度可能不同,光照强,梯度的强度也必然会更强,我们希望减少光照对结果的影响。
将四个子区域组成一个block,每个子区域的9个直方图可以看做一个九维向量。四个子区域就变为9*4=36维向量。


公式中v就是36维的block向量。

第五步,将HoG特征组合成一个决策窗口,我们来总结一下,最开始我们用的是64*128的图片,每个cell有8*8个像素。
那我们就有8*16个cell,但是我们的归一化操作会把使列和行都减少一个block,得到7*15个block
而每一个不能block都有9*4维向量,最后得到的决策窗口就是7*15*9*4=3780维的向量。



最后一步就是使用线性SVM来对数据进行学习。

线性SVM是一个二分类算法,它找到距离正分实例最大的超平面来划分数据集,线性SVM与感知机的差别在于线性SVM找到的超平面距离正负实例集是最大的,也就是说线性SVM找到的超平面是唯一的,而感知机不需要找到距离最大的,只要能够区分正负实例即可。

y = sign(W*X+b)

小结:
很明显的能在这篇文章中看到SIFT的思想,不得不说SIFT真是神作。而收齐影响又另有创新的HoG这篇论文也是引用两万+的神作。
这两篇文章最关键的地方都在于使用梯度直方图来描述物体特征,所以梯度去描述物体的特征的办法是有效的。


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值