0%

HOG 特征解释

方向梯度直方图(英语:Histogram of oriented gradient, 简称 HOG)是应用在计算机视觉和图像处理领域,用于目标检测的特征描述器。这项技术是用来计算局部图像梯度的方向信息的统计值。

理论摘要

HOG 的思想是,在一幅图像中,局部目标的表象和形状 (appearance and shape) 能够被梯度和边缘的方向密度分布很好的描述. HOG 的提取方法是:

  1. 把图片分割成很多小的联通区域 (这些区域被称为 cell)
  2. 对于每个 cell 中的 pixels, 计算梯度方向
  3. 把所有的 cell 计算出来的梯度方向 concatenation 到一起,就是 HOG 特征。

为了提高准确率,对 local histograms 的更大范围 (称为 block) 进行 constrast-normalized. 过程如下:

  1. 计算各个 histogram 在对应的 block 中的密度
  2. 根据这个密度,对所有的 cell 做 normalize.

这样做的好处是对于光照和阴影比较鲁棒。

HOG 的优点

  1. HOG 操作的是局部的 cell, 所以,对于几何和光学变化有较好的鲁棒性
  2. 作者通过实验发现,在粗粒度的空域抽样,细粒度的方向抽样,较强的局部光学归一化的条件下,只要行人能够大体保持直立的姿势,就容许行人有细微的肢体动作,不影响检测效果。

算法实现

计算梯度

特征检测的第一步常常是图像预处理,如归一化颜色值和 gmma 值,但是,作者实验发现,HOG 可以省略这个步骤。因为 HOG 的描述子归一化能达到同样的效果,预处理的好处微乎其微。所以,第一步直接计算梯度。使用下面的卷积核进行卷积:

\[ \lbrack -1, 0, 1 \rbrack \text{ and } {\lbrack -1, 0, 1 \rbrack}^T \]
  • 其它卷积核如 (3 \times 3) 的 Sobel 卷积核,斜角卷积核,在行人检测中效果比较差。
  • 使用 Gaussian 模糊进行预处理的效果反而比没处理的效果差。

Orientation binning

这个过程是针对 cell 来操作,计算 cell 中的每个 pixel 的方向梯度,然后建立方向直方图。根据计算的梯度是否有正负之分,可以把方向定为 (0-180) 或者 (0-360).

  • Dalal 和 Triggs 在实验中发现在行人检测中,把方向直方图分为 9 个 bins 效果最好。
  • Dalal 和 Triggs 使用梯度的模长作为投票的权重.(也可以使用其它的方法计算权重,但是,直接使用模长通常能产生最好的效果)

Descriptor Block

把 cell 集结成更大的 Block 的目的是为了进行局部归一化。而局部归一化的目的是为了解释光照和对比度的影响。方法是把相邻的几个 cell 集结到一起,形成一个 Block. 各个 Block 可能会重叠,类比 CNN 中,在卷积的过程中,kernel size 和 stride 大小的选择。在一个 Block 中的所有的 cell 的方向地梯度放到一起,形成该 Block 的 feature. 整张图片的 Block 的 feature 放到一起,形成该图片的 feature.

Block Normalization

有多种 normalize 方法,normalize 针对的是一个 Block 的 feature 进行的。Normalization 在 HOG 算法中非常重要,能显著提高准确率。有以下几种方法:

  • L2-norm

    \[ f=\dfrac{v}{\sqrt{{\Vert v \Vert}^2_2+e^2}} \]
  • L2-norm, 但是,带有截断操作,截断之后重新 normalize

  • L1-norm

    \[ f=\dfrac{v}{{\Vert v \Vert}_1+e} \]
  • L1-sqrt

    \[ f=\sqrt{\dfrac{v}{{\Vert v \Vert}_1+e}} \]