博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【人脸检测——基于机器学习4】HOG特征
阅读量:5824 次
发布时间:2019-06-18

本文共 2199 字,大约阅读时间需要 7 分钟。

前言

HOG特征的全称是Histograms of Oriented Gradients,基于HOG特征的人脸识别算法主要包括HOG特征提取和目标检测,该算法的流程图如下图所示。本文主要讲HOG特征提取。

 

HOG特征的组成

Cell:将一幅图片划分为若干个cell(如上图绿色框所示),每个cell为8*8像素

Block:选取4个cell组成一个block(如上图红色框所示),每个block为16*16像素。Block的滑动步长为8像素,如黄色箭头所示

Detection Window:令64*128像素大小的图片为检测Win,在其中共计有105个block。

HOG 特征要完全描述一个obj的所有信息,它的维度=窗体中所有block个数(105)*每个block中cell的个数(4)*每个cell中Bin的个数(9)=3780(维),每一维就是一个bin

 

HOG特征的提取

  1. Gamma/Colour Normalization

在Navneet Dalal的实验 [1]中Gamma/Colour Normalization对于检测器的性能仅仅有些许的影响,他猜测是后续的描述子归一化能实现相同的功能。

  1. Gradient Computation

Dalal的实验[1]中最简单的一维中心对称模板处的高斯模板下效果最好。根据具体的检测目标采取不同的梯度计算方法。

人脸识别中可以采用如下特征模板计算像素的梯度:

水平方向上的模板为::左中右三个像素分别与模板相乘=相邻像素之差

竖直方向上:;b也就是上下像素之差

整个梯度的幅值 :

角度:

  1. Spatial/Orientation Binning

这里我们定义了新的概念bin。Bin可以是(无符号的梯度),也可以是(有符号的梯度)。对于人体检测系统来说,由于不同人着装的颜色和背景变化太大,梯度方向的符号不是很重要,而对其他的刚性对象如花瓶、茶杯、摩托车等梯度符号信息非常重要。

我们这里的人脸检测中,将bin定义在,并将其分为9份,因此,每个cell都有9个bin。上一小节我们计算出 了像素的梯度与角度。我们要在cell中统计每个梯度的幅值总和。

bin的投影操作可如下所示(并不唯一)

Bin的投影

Bin 将0-360划分为9块,每块为40度,这40度中,每20度为连续的。

例如 0-40度中

Bin1 为0- 20 在这个范围 180-200 当在这两个范围内的 被认为在一个bin上

例如(有很多方法)

对于某个像素ij,计算出来的幅值为f,角度为a=10,在0-20,那么就投影在bin1上

若 a=190,在180-200之间,那么也在bin1上。

投影幅值为:

若 a=10/190,刚好位于中间,这,投影幅值就为f

若a=25,那么投影将被分解为在Bin1 和bin2上

 

计算整体的hog特征

3780维==win(block cell bin),每个维度就是一个bin

对于3780维的某一维,就是某一个窗体win下的某个block中的某个cell的某个bin

对于一个block中的4个cell

Cell0: bin0 bin 1 … bin8

Cell1: bin0 bin 1 … bin8

Cell2: bin0 bin 1 … bin8

Cell3: bin0 bin 1 … bin8

 

对于第ij(第i行j列)个像素,投影在cell0中的Bin0上,那边bin0中的内容就是f0:bin0中描述的就是当前像素的梯度

对于第i+1j像素,若也投影在cell0中的Bin0上,那么Bin0中的内容就是f1

当投影完后, 求 sumbin0 --------就是最后的bin0 权重的累加

 

 

  1. Normalization and Descriptor Blocks

原因:梯度算子容易受到噪声如光照和背景对比度的影响,为了减少这种影响需要对局部cell进行归一化处理

基本思想:将相邻的cell组成可重叠的block,以有效的利用重叠的边缘信息,然后对每个块分别进行归一化处理。

Dala文章中介绍了四种常见的block归一化算法,其中(1),(2),(4)的性能大致相同,而(3)则降低了性能

(1)L2-norm:

(2)L2-Hys:先做一次L2-norm归一化,然后把大于等于0.2的分量赋值为0.2再做一次L2-norm

(3)L1-norm:

(4)L1-sqrt:,采用了L1-norm的平方根式

其中, 表示v的k阶范数,为一个小数值的常量,它的存在是必要的

统计好每一个block内的梯度信息并形成描述子后,将检测窗口(win)内所有信息收集起来并结合成的向量即为HOG特征向量。

参考与致谢

Dalal N, Triggs B. Histograms of oriented gradients for human detection[C]//Computer Vision and Pattern Recognition, 2005. CVPR 2005. IEEE Computer Society Conference on. IEEE, 2005, 1: 886-893.

转载于:https://www.cnblogs.com/gfgwxw/p/9743511.html

你可能感兴趣的文章
使用membership(System.Web.Security)来进行角色与权限管理
查看>>
opticom 语音质量验证白皮书
查看>>
3D实时渲染中的BSP树和多边形剔除
查看>>
Frank Klemm's Dither and Noise Shaping Page: Dither and Noise Shaping In MPC/MP+
查看>>
网络抓包的部署和工具Wireshark【图书节选】
查看>>
Redis在Windows+linux平台下的安装配置
查看>>
Maven入门实战笔记-11节[6]
查看>>
Local declaration of 'content' hides instance variable
查看>>
ASP.NET中 HTML标签总结及使用
查看>>
Linux下日志系统的设计
查看>>
爬虫IP被禁的简单解决方法——切换UserAgent
查看>>
php生成word,并下载
查看>>
紫书 习题8-11 UVa 1615 (区间选点问题)
查看>>
asp.net mvc学习(Vs技巧与Httpcontext)
查看>>
float数据在内存中是怎么存储的
查看>>
开发经验和习惯
查看>>
dedecms 修改标题长度可以修改数据库
查看>>
Matplotlib学习---用matplotlib画直方图/密度图(histogram, density plot)
查看>>
MySQL案列之主从复制出错问题以及pt-slave-restart工具的使用
查看>>
linux 查看剩余内存数
查看>>