经典的手工设计特征——HOGHistogram of Oriented Gradients方向梯度直方图。如果把我们之前聊的“四阶矩”理解为图像的统计纹理特征那么HOG就是图像的形状轮廓特征。它不关心像素有多亮只关心轮廓和边缘的走向。HOG在计算机视觉史上有着里程碑式的意义曾是行人检测领域的王者算法。一、HOG的核心思想用“箭头”描绘轮廓想象让你在几分钟内用简笔画抓住一个人物的姿态你会怎么做你肯定会先画轮廓而不会一点点涂颜色。画轮廓时你画的每一条线段其实都有一个方向。HOG正是如此。它认为一张图像里的物体其局部外观和形状可以被该局部区域里边缘梯度的方向分布很好地描述出来。具体来说它会做这样一件事把图像切成很多微小的“细胞”小格。在每个小格子里统计所有边缘的“箭头”都指向哪些方向。如果格子里正好有一根竖线那这个格子的“直方图”里90度那个方向就会有一个很高的柱子。最后把所有小格子的方向统计结果组合起来就形成了整张图独一无二的“形状签名”。这样一来无论是照片里的人、汽车还是猫都会因为轮廓线条方向组合的不同而呈现出完全不同的HOG特征。配合一个分类器如SVM就能教会机器识别这些形状。二、HOG特征的提取流程步步为营这个过程像一次精密的“解剖”每一步都清晰明确第1步预处理——统一“光照”用伽马校正等方法调整图像的整体亮度目的是减少光照变化和局部阴影对后续梯度计算的影响。这个步骤在实际应用中有时可以省略因为后续的归一化也能起到类似作用。第2步计算梯度——描出所有“箭头”这是最关键的一步。对图像中的每一个像素都计算出它水平和垂直方向上的亮度变化然后合成一个总的梯度大小和梯度方向。梯度大小变化的剧烈程度。边缘越清晰这个值就越大。梯度方向变化的方向指向亮度增加最快的方向。结果给每个像素附上了一个“箭头”箭头的长短表示边缘强弱指向表示边缘方向。这一步之后色彩纹理都消失了剩下一张记录了所有边缘箭头的地图。这与简单的边缘检测不同HOG特意保留了方向信息中最核心的部分对具体边缘强度不那么敏感。第3步为每个细胞Cell创建方向直方图HOG把图像划分成密集的、小的矩形区域称为细胞Cell比如8x8像素一个格子。就像在一个8x8的小格子里进行“投票”。格子里每个像素都根据自己的梯度方向投出自己的一票。这个票的权重就是梯度的大小边缘越强的像素话语权越大。方向在0-180度无符号梯度或0-360度有符号梯度之间被分成9个区间。比如0-180度分成9份每20度一个。一个像素的箭头指向15度就为0-20度那个柱子增加票数。最终一个细胞就变成了一个9个数字的直方图这9个数字就概括了这个细胞区域内的主要边缘走向。用无符号梯度0-180度的好处是穿黑衣服和白衣服的人他们的轮廓梯度方向是相反的但在0-180度区间里就一致了这正符合我们“只关心形状不关心亮度”的初衷。第4步对块Block进行归一化——抵抗光照变化这是HOG的精妙之处。单个细胞的直方图很容易受光照影响。比如图像变亮一倍所有梯度大小都翻倍直方图数值也随之翻倍。HOG的做法是把相邻的几个细胞比如2x24个细胞组成一个更大的块Block。然后把一个块内所有细胞的直方图数值拼成一个长向量对这个向量进行L2归一化一种让向量长度变为1的数学技术。效果无论这个块的局部光照是明是暗归一化后我们关注的只是各个方向梯度的相对比例而不是绝对大小。这极大增强了特征对光照和阴影的鲁棒性。第5步生成最终特征描述子把图像上所有可以滑动的块块与块之间可以重叠的特征向量全部串联起来就得到了一张图像的巨长HOG特征向量。一个经典的计算案例一张64x128像素的行人图像。使用8x8的细胞每张图就有 (64/8) x (128/8) 8x16 128个细胞。使用2x2的块每个块含4个细胞。每个细胞用9个方向bin每个块的特征维度就是 4x9 36维。块在图上按细胞为单位滑动步长为8像素(8-1) x (16-1) 7x15 105个块。最终的HOG特征向量总维度105个块 x 36维 3780维。这个3780维的向量就是SVM分类器眼中一个行人的形状。三、HOG的鲜明特点尺有所短寸有所长核心优势对几何和光学形变不敏感归功于在粗粒度的细胞和块上做统计和归一化只要人体保持着大致站立的姿态稍有动作变化依然能被识别。强鲁棒性对局部光照变化、阴影有极强抵抗力适合户外的图像。表示的是形状而非纹理或颜色这对于基于轮廓就能判断的物体如行人、车辆效果极佳。经典结合HOGSVM的组合是传统目标检测中最成功的范式之一可以看作现代目标检测的重要先驱。主要局限无法处理严重遮挡如果一个人一半身子被树挡住HOG描述的形状就被彻底破坏。对物体方向变化敏感HOG本质上不是旋转不变的。一个站着的行人的HOG特征和一个躺着的行人完全不同除非进行训练数据的增强。计算量大、特征维度高在密集网格上计算梯度并生成直方图速度慢且特征冗余度较高。参数需精心设计细胞大小、块大小、bin的数量等都需要根据具体任务去调整。四、与CNN特征的对比视角CNN中浅层的卷积核其实也是一种“梯度方向检测器”能检测水平边、垂直边等。HOG相当于手工设计好的、固定不变的浅层特征提取器。而CNN的突破在于它能通过数据自主学习到从边缘到形状再到物体局部如人眼、车轮的提取器。从这个角度看HOG的哲学为后来的CNN提供了重要的基础直觉。