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}} \]