一 写在前面
有一个月没更博客了,捂脸 o( ̄= ̄)d
端午回家休息了几天,6月要加油~
回到正文,HOG是很经典的一种图像特征提取方法,尤其是在行人识别领域被应用的很多。虽然文章是2005年发表在CVPR上的,但近十年来还没有被淹没的文章真的是很值得阅读的研究成果了。
- 文章出处:CVPR2005
- 文章链接:https://lear.inrialpes.fr/people/triggs/pubs/Dalal-cvpr05.pdf
二 基本介绍
- 行人检测任务由于背景复杂等特点,本身是一个很难的任务;
- 所以我们需要鲁棒的特惠总能表示方法;
- 文章提出的HOG性能比之前的wavelets,SIFT等效果都要好很多;
- 文章提出的HOG方法在MIT的杏仁数据集上能达到很好的效果,因此文章还贡献了一个由1800个行人图像的数据集。
三 HOG特征提取方法
key idea:
局部物体的形状和外观可以通过局部梯度或者边缘的密度分布所表示。
主要步骤:
上图为论文中提供的图,个人觉得我在参考资料中列出的那篇博客中给出的图可能更好理解一些。
- 首先是对输入图进行灰度处理和gamma矫正;
- 计算图像中每个像素的梯度大小和梯度方向;
- 为每个cell中的梯度构建梯度直方图;
- 以block(比cell大)为单位获取特征;
- 获取整个图像的梯度直方图得到HOG特征;
- 最后通过一个线性SVM判断是否为行人;
具体细节:
关于每一个过程的详细解释还是在这篇博客中已经写得很清楚了,这里就不再搬运了。
四 行人检测
文章中数据集的图像大小均为:64*128, block大小为16x16, block stride为8x8,cell size为8x8,bins=9(直方图等级数);
- 块个数为:
((64-16)/8+1) * ((128-16)/8 +1) = 105
- 每个块内cell个数;
(16*16)/(8*8)=4
- 每张图特征维度:
105*4*9=3780
获取到每张图的特征维度后,再用线性SVM训练分类器即可。
下图为作者而给出的示例图:
- 图a: 训练样本的平均梯度图;
- 图b:以这个像素为中心的这个block块中最大的正SVM值;
- 图c:以这个像素为中心的这个block块中最大的负SVM值;
- 图d:测试图像
- 图e:图d对应的R-HOG特征
- 图 f:将图e中的R-HOG特征乘上图b中的权值后得到的R-HOG图像;展现了构成人体的主要轮廓;
- 图g:将图e中的R-HOG特征乘上图c中的权值后得到的R-HOG图像;展现了人体轮廓内部的梯度对于行人识别来说大多是negative的线索。
五 参考资料
- https://blog.csdn.net/zouxy09/article/details/7929348
- https://blog.csdn.net/songzitea/article/details/17025149
这两篇博客写的都很好,推荐阅读一波。
网友评论