目标检测之hog(梯度方向直方图)---hog简介0

梯度直方图特征(HOG) 是一种对图像局部重叠区域的密集型描述符, 它通过计算局部区域的梯度方向直方图来构成特征。Hog特征结合SVM分类器已经被广泛应用于图像识别中,尤其在行人检测中获得了极大的成功。需要提醒的是,HOG+SVM进行行人检测的方法是法国研究人员Dalal在2005的CVPR上提出的,而如今虽然有很多行人检测算法不断提出,但基本都是以HOG+SVM的思路为主。

HOG特征是一种局部区域描述符,它通过计算局部区域上的梯度方向直方图来构成人体特征,能够很好地描述人体的边缘。它对光照变化和小量的偏移不敏感。

图像中像素点(x,y)的梯度为

Dalal提出的Hog特征提取的过程:把样本图像分割为若干个像素的单元(cell),把梯度方向平均划分为9个区间(bin),在每个单元里面对所有像素的梯度方向在各个方向区间进行直方图统计,得到一个9维的特征向量,每相邻的4个单元构成一个块(block),把一个块内的特征向量联起来得到36维的特征向量,用块对样本图像进行扫描,扫描步长为一个单元。最后将所有块的特征串联起来,就得到了人体的特征。例如,对于64*128的图像而言,每2*2的单元(16*16的像素)构成一个块,每个块内有4*9=36个特征,以8个像素为步长,那么,水平方向将有7个扫描窗口,垂直方向将有15个扫描窗口。也就是说,64*128的图片,总共有36*7*15=3780个特征。

在行人检测过程中,除了上面提到的HOG特征提取过程,还包括彩图转灰度,亮度校正等步骤。总结一下,在行人检测中,HOG特征计算的步骤:

(1)将输入的彩图转换为灰度图;

(2)采用Gamma校正法对输入图像进行颜色空间的标准化(归一化);   目的是调节图像的对比度,降低图像局部的阴影和光照变化所造成的影响,同时可以抑制噪音的干扰;

(3)计算梯度;主要是为了捕获轮廓信息,同时进一步弱化光照的干扰。

(4)将梯度投影到单元的梯度方向;目的是为局部图像区域提供一个编码,

(5)将所有单元格在块上进行归一化;归一化能够更进一步对光照、阴影和边缘进行压缩,通常,每个单元格由多个不同的块共享,但它的归一化是基于不同块的,所以计算结果也不一样。因此,一个单元格的特征会以不同的结果多次出现在最后的向量中。我们将归一化之后的块描述符就称之为HOG描述符。

(6)收集得到检测空间所有块的HOG特征;该步骤就是将检测窗口中所有重叠的块进行HOG特征的收集,并将它们结合成最终的特征向量供分类使用。

之前的文章行人计数、计次提到HOG特征这个概念,这两天看了一下原版的论文,了解了一下HOG特征的原理,并根据自己的理解将这个方法的流程写了下来,如果有不对的地方欢迎指正。

HOG(Histograms of Oriented Gradients)特征的基本思想:The basic idea is that local object appearance and shape can often be characterized rather well by the distribution of local intensity gradients or edge directions, even without precise knowledge of the corresponding gradient or edge positions.即使不知道(图像间)准确的对齐的梯度或边缘位置,局部目标的外观和形状信息也能通过局部梯度密度或边缘方向来表征。下面是HOG特征的提取过程。参考文献[1]里将HOG特征用作行人检测,其实如果将下面的步骤读完,你会发现HOG不止可以用来检测行人,也可以检测狗、猫等等几乎任何物体,所做的工作只是训练样本的不同,所以HOG特征可以称为object检测方法。

1、色彩归一化(Gamma/Color Normalization)

作者测试了RGB、LAB还有灰度空间内的图像,发现RGB和LAB空间内的测试图像取得的结果基本相同,而灰度空间内的图像识别率又1.5%下降。所以这几种色彩空间的效果大体相同,没必要将RGB转化到LAB或反之。所以这一步的归一化基本可以省略,但是测试图像和训练的图像总得是一个颜色空间的,这点没问题吧。

2、计算梯度值(Gradient Computation)

离散集上计算梯度值的方式有很多种,比如以待测像素为中心,用中心的右邻值减去左邻值或者下邻值减去上邻值,用论文里的说法就是用mask[-1,0,1]对横向或纵向的像素做卷积,分别可以得到中心像素的梯度x分量和y分量。有了这两个分量,梯度值和方向不难确定了吧。当然论文里还提到了其他方法,比如cubic-corrected[1,-8,0,8,-1],uncentred[-1,1]等。作者发现-1,0,1]的效果最好。

对于彩色图像,作者分别计算每个颜色通道的梯度值,选取三个通道里最大值作为该点的像素值,而不是简单粗暴的将彩色图像转化为灰度图像再求梯度值。

3、构建直方图(或称空间分级,Spatial/Orientation Binning)

计算得到了每个点的梯度值和方向,接下来就是如何利用梯度了。作者考虑梯度是向量,所以梯度会有0-360度的方向取值(signed gradient),或者是0-180度的取值(unsigned gradient)。以20度作为一个bin(就是直方图里的一个竖条),可以构成含有9个bin的直方图。等等,如果你想把把图像的所有梯度都放到一个直方图里,那你就大错特错了。作者将图像划分成了一个个小的cell,每个cell里包含4x4,6x6...个像素,以每个cell做为一个单元,这样每个cell就能得到一个统计直方图了。这样就相当于保留了图像局部的特征。经过试验发现,6x6大小的cell效果最好,如下图(1)(先忽略block)。在将梯度放到bin里时,根据梯度值的不同对bin的贡献也应该不同,比如可以将梯度值开方平方等等。经过测试作者发现最简单的才是最有效的,比如某个像素的梯度值为10,方向为15度,那就将0-20度的bin加10就好了,就这么简单。不过在计算bin之前,还需要考虑第4步归一化。

图(1)

4、区间归一化(Normalization and Descriptor Blocks)

考虑到同一幅图像中的光照强度可能不同,那么势必会造成不同区域的梯度变化剧烈程度不同,来看作者是如何消除影响的。前文讲到了像素构成的cell,作者将多个cell构成一个block,在某个block内可以认为是光照不变的,所以在block内进行梯度值的归一化,比如block内像素的梯度值构成的向量为v=(10,20,30),那么归一化后:v=v/(||v||+E)其中E是一个很小的常数,作者测试了四种归一化方法,具体可以查看论文[1]。需要注意的是,为了进一步去除光照影响,每个block的位置是有交叉的,比如某个cell可能属于block1也属于block2。经过测试,作者发现一个Block内有3x3个cell,每个cell有6x6个像素效果最好如上图(1)。

5、检测窗口(Detector and Context)

以上步骤可以得到一幅图像的hog描述,但是不要忘了初衷:检测行人。准确的说是将一幅图像中的行人圈出来,如果将整幅图像取hog特征进行比对就不是行人检测了。由于行人在图像的位置不固定,所以作者提出了64x128检测窗口的概念,将这个固定大小的窗口在图像上滑动,没滑动一次做一次相似度匹配,匹配的方法在步骤6内。

6、分类器

作者采用SVM作为分类器,将事先标定好的行人和非行人图像按照如上步骤获取hog特征,用svm获取两类的最优间隔。当有一幅待检测图像时,获取步骤5内检测窗口的hog特征,然后利用最优间隔做出分类的判别。

如果给如上步骤画一个流程图,基本就是:

OpenCV里有实现hog行人检测的代码,效果大体如下图(自己的图找不到了,下图在网上找的),其实误检率还是蛮高的,部分误检可以通过差分解决,但是在拥挤的人群效果只能呵呵了。

hog(histogram of oriented gradients)是行人检测,目标检测最重要的特征之一,但其运算速度相对比较慢。本程序是HOG的SSE实现加速,非常有价值。

http://blog.csdn.net/wangningbo128/article/details/6426195 理论推导

http://blog.csdn.net/smartempire/article/details/24038355

http://www.csdn.net/tag/%25E8%25A1%258C%25E4%25BA%25BA%25E6%25A3%2580%25E6%25B5%258B

http://download.csdn.net/detail/sjtuippr/7222487 hog see 加速实现

http://blog.csdn.net/tianmochao13/article/details/26380481 写论文

时间: 2024-08-14 01:45:55

目标检测之hog(梯度方向直方图)---hog简介0的相关文章

HOG 梯度方向直方图简介(转载)

一.基本HOG算法 HOG特征最早出现在SIFT算法中,由于其极强的图像特征描述能力,逐渐被人们熟知和广泛运用,其在目标检测方面表现尤为突出. HOG特征提取过程 步骤一:遍历图像每个像素点,以其为中心取8*8像素领域作为网格(block)区域: 步骤二:将网格(block)区域平均分成4个大小相等的细胞单元(cell),每个细胞单元的大小是4*4个像素: 步骤三:计算所有细胞单元(cell)中的每个像素的梯度幅值和梯度方向,梯度算子使用中心算子[1,0,-1]: 其中,H(x,y)为每个像素水

(转)梯度方向直方图HOG(Histograms of Oriented Gradients )

HOG(Histograms of Oriented Gradients )梯度方向直方图 方向梯度直方图(Histogram of Oriented Gradient, HOG)特征是一种在计算机视觉和图像处理中用来进行物体检测的特征描述子.此方法使用了图像的本身的梯度方向特征,类似于边缘方向直方图方法,SIFT描述子,和上下文形状方法,但其特征在于其在一个网格密集的大小统一的方格单元上计算,而且为了提高精确度使用了重叠的局部对比度归一化的方法. 这篇文章的作者Navneet Dalal和Bi

【数字图像处理】目标检测的图像特征提取之HOG特征

1.HOG特征 方向梯度直方图(Histogram of Oriented Gradient, HOG)特征是一种在计算机视觉和图像处理中用来进行物体检测的特征描述子.它通过计算和统计图像局部区域的梯度方向直方图来构成特征.Hog特征结合SVM分类器已经被广泛应用于图像识别中,尤其在行人检测中获得了极大的成功.需要提醒的是,HOG+SVM进行行人检测的方法是法国研究人员Dalal在2005的CVPR上提出的,而如今虽然有很多行人检测算法不断提出,但基本都是以HOG+SVM的思路为主. (1)主要

Histograms of Sparse Codes for Object Detection用于目标检测的稀疏码直方图

AbstractObject detection has seen huge progress in recent years, much thanks to the heavily-engineered Histograms of Oriented Gradients (HOG) features. Can we go beyond gradients and do better than HOG? We provide an affirmative answer by proposing a

目标检测faster rcnn error == cudaSuccess (2 vs. 0) out of memory

想尝试 更深更强的网络,或者自己写了一个费显存的层,发现1080 ti的11G显存不够用了,老师报显存不够怎么办? Check failed: error == cudaSuccess (2 vs. 0)  out of memory 调小batch_size的大小. 怎么调呢? 调这个文件: experiments/cfgs/faster_rcnn_end2end.yml EXP_DIR: faster_rcnn_end2endTRAIN: HAS_RPN: True IMS_PER_BATC

目标检测的图像特征提取之(一)HOG特征(转载)

目标检测的图像特征提取之(一)HOG特征 [email protected] http://blog.csdn.net/zouxy09 1.HOG特征: 方向梯度直方图(Histogram of Oriented Gradient, HOG)特征是一种在计算机视觉和图像处理中用来进行物体检测的特征描述子.它通过计算和统计图像局部区域的梯度方向直方图来构成特征.Hog特征结合SVM分类器已经被广泛应用于图像识别中,尤其在行人检测中获得了极大的成功.需要提醒的是,HOG+SVM进行行人检测的方法是法

paper :80 目标检测的图像特征提取之(一)HOG特征

1.HOG特征: 方向梯度直方图(Histogram of Oriented Gradient, HOG)特征是一种在计算机视觉和图像处理中用来进行物体检测的特征描述子.它通过计算和统计图像局部区域的梯度方向直方图来构成特征.Hog特征结合SVM分类器已经被广泛应用于图像识别中,尤其在行人检测中获得了极大的成功.需要提醒的是,HOG+SVM进行行人检测的方法是法国研究人员Dalal在2005的CVPR上提出的,而如今虽然有很多行人检测算法不断提出,但基本都是以HOG+SVM的思路为主. (1)主

HoG SVM 目标检测分析

前一段时间开始了解HoG跟SVM行人识别,看了很多包括Dalal得前辈的文章及经验分享,对HoG理论有了些初步的认识. HoG 的全称是 Histogram of Oriented Gradient, 直译过来也就是梯度方向直方图. 就是计算各像素的梯度方向,统计成为直方图来作为特征表示目标. 下面简述一下利用HoG + SVM 实现目标检测的简要步骤 Step1:获取正样本集并用hog计算特征得到hog特征描述子.例如进行行人检测,可用IRINA等行人样本集,提取出行人的描述子. Step2:

目标检测——HOG特征

1.HOG特征: 方向梯度直方图(Histogram of Oriented Gradient, HOG)特征是一种在计算机视觉和图像处理中用来进行物体检测的特征描述子.它通过计算和统计图像局部区域的梯度方向直方图来构成特征.Hog特征结合SVM分类器已经被广泛应用于图像识别中,尤其在行人检测中获得了极大的成功.需要提醒的是,HOG+SVM进行行人检测的方法是法国研究人员Dalal在2005的CVPR上提出的,而如今虽然有很多行人检测算法不断提出,但基本都是以HOG+SVM的思路为主. 实现: