位置: IT常识 - 正文

【特征提取】Hog特征原理简介与代码实践(特征提取原理)

编辑:rootadmin
【特征提取】Hog特征原理简介与代码实践 前言

推荐整理分享【特征提取】Hog特征原理简介与代码实践(特征提取原理),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:特征提取后怎么分类,特征提取后怎么分类,特征提取原理,特征提取有什么用,特征提取有什么用,特征提取常用方法,特征提取有什么用,特征提取常用方法,内容如对您有帮助,希望把文章链接给更多的朋友!

在【模式识别】SVM实现人脸表情分类一文中,我曾使用Hog特征+SVM的方式实现表情分类,但对于Hog特征的原理并未做深入整理。此篇将结合scikit-image来简单分析Hog特征的原理和维度关系。因为没看过原论文,因此自己的理解可能会有偏差,如有错误,欢迎评论区指正。

图像梯度

在进入到Hog之前,需要先了解图像中梯度的概念。 以下图为例(图源:[1]),黑色像素点值为0,白色像素点值为1,分别求X方向梯度和Y方向梯度,从后两幅图可以看出,当箭头从0突变到1时,梯度为正值,图像中以白色边缘表示,反之为负值,以黑色的阴影表示。 更进一步,把X方向的梯度和Y方向的梯度进行融合,这样可以计算出每一个像素点的融合梯度大小和方向。 例如,上图中选择了一个像素点,其相邻位置的像素大小如宫格所示,X方向梯度大小为50,Y方向梯度大小为50,那么其融合梯度大小为70.1,方向为45°。

计算公式的数学表达如下[2]:

有了上面的概念之后,下面进入到Hog特征提取的流程。

标准化gamma空间和颜色空间(Gamma/Colour Normalization)

标准化gamma空间和颜色空间是Hog特征提取的第一步。 这一步主要做了3个操作:

1、因为颜色信息影响不大,因此先转化为灰度图;

2、进行gamma校正: gamma<1在高灰度值区域内,动态范围变小,图像对比度降低,图像整体灰度值变大,显得亮一些;gamma>1在低灰度值区域内,动态范围变小,图像对比度降低,图像整体灰度值变小,变得暗淡[3] 校正公式如下: 校正的好处在于:能够有效地降低图像局部的阴影和光照变化

3、对图像尺寸进行重新调整,并让各像素进行归一化;

计算图像梯度

图像预处理之后,就要计算图中每一个像素点的梯度。之前已经给出了图像梯度的计算公式,但在实际使用中,两个方向上的梯度分量可以用卷积的方式来快速计算。

x方向的梯度分量gradscalx:用[-1,0,1]梯度算子对原图像做卷积运算y方向的梯度分量gradscaly:用[1,0,-1]梯度算子对原图像做卷积运算为每个细胞单元构建梯度方向直方图【特征提取】Hog特征原理简介与代码实践(特征提取原理)

下面就需要引入一个细胞单元(Cell)的概念,这里Cell的尺寸可以自由设定,我这里以8 X 8 的尺寸为例,如下图所示: 这张猫选自VOC2012数据集,我对其进行了一定的裁剪。 这里的8 X 8指代一个Cell中包含8 X 8个像素点,例如图中的网格,每个网格代表一个像素点,对于每一个像素点可以计算出一个梯度值和方向。

下面就要统计每个Cell的梯度直方图,通常来说,直方图是用来统计频率的。这里也类似,因此,需要先把360°角度进行分类。按照原作者的说法,分成9份效果最好。于是就有了下面这张图[3]: 这里表示的是每一块为20°,这里初次看可能会有个疑问:360°/9 = 40°,每一块是40°才对,为什么是20°呢? 这是由于角度只看了数值,因此正角度和负角度的符号进行忽略,因此180°/9 = 20° 举个例子,第一个像素点梯度方向为45°,40°<45°<60°,这样它就被划分到第三组。 以此类推,统计一个Cell中每个像素点的角度,就可以得到梯度方向直方图。

把细胞单元组合成大的块(block),并归一化梯度直方图

下一步就要引入另一个新概念:块(block),一些博文中也称作窗口(windows),应该是同一个东西。 还是拿这张猫图举例,假设block的大小为2 X 2,那么就包含2 X 2个cell,所占据的尺寸为(16,16)个像素。 如图中的蓝框代表cell,黄框代表block,这里block的大小也是通过人为指定。 这样,一个block内所有cell的特征向量串联起来便得到该block的HOG特征,同时,需要在块内进行归一化。归一化的方法大致有四种: 根据原作者描述,使用L2-Hys方法效果最好[3]。

至于这里的大小设置,个人理解是和目标的尺寸有关。例如,行人检测的最佳参数设置是:3×3细胞/区间、6×6像素/细胞、9个直方图通道[3]。

移动block,计算维度

下面就到最后一步,一张图里有多个像素,那么通过计算之后,整张图的hog特征的维度是多少呢? 这里我们进入实践,来通过实践来理解block是如何移动的。

首先导库,使用opencv和skimage

import cv2from skimage.feature import hog

定义数据预处理过程,调整图片尺寸为256x256,并将图片进行灰度化和归一化

def preprocessing(src): gray = cv2.cvtColor(src, cv2.COLOR_BGR2GRAY) # 将图像转换成灰度图 img = cv2.resize(gray, (256, 256)) # 尺寸调整g img = img/255.0 # 数据归一化 return img

提取Hog特征

img = cv2.imread("test.jpg")img_afterpro = preprocessing(img)image_features = hog(img_afterpro, orientations=9, pixels_per_cell=(8, 8), cells_per_block=(16, 16), block_norm='L2-Hys')

这里有多个参数,主要的四个参数解释和默认取值如下:

orientations:方向数pixels_per_cell:胞元大小cells_per_block:块大小block_norm:可选块归一化方法L2-Hys(L2范数)

这里图片的大小为(256,256),cell的大小选择为(8,8),block设置为(16,16),那么hog特征总的维度是多少呢?起初我的理解是多个block平铺整个图像,那么每个block大小为(8x16,8x16)=(128,128),即整幅图像有四个block,那么总维度应该是16x16x9x2x2=9216然而通过验证

image_features.shape

输出的实际维度应为665856,差得很远!

于是我想到了卷积神经网络中卷积核的滑动窗口的运动方式,假设这里block也是以滑动窗口的方式进行运动,每次运动的步长为一个cell的宽度,如下图所示: 这里的block应该是(16,16),我这里为了作图方便,仍保留为(2,2),旨在领会传达的意思。 如图所示,每个block计算完成之后,向水平/垂直方向移动一个cell的宽度,这样前一部分的cell会和下一个block再次计算。 这样block总的个数可以这样计算: 水平方向block个数=(256-128)/8 + 1 =17 垂直方向block个数=水平方向block个数=17 那么总维度=16x16x9x17x17=665856

结果证实,该思路是正确的。

Reference

[1]https://www.bilibili.com/video/BV1dz411B7Rd [2]https://blog.csdn.net/zouxy09/article/details/7929348 [3]https://blog.csdn.net/qq_37791134/article/details/81413758

本文链接地址:https://www.jiuchutong.com/zhishi/299724.html 转载请保留说明!

上一篇:学习笔记:深度学习(2)——BP神经网络

下一篇:ChatGPT探索系列之二:学习GPT模型系列的发展历程和原理(探索app下载)

  • iphone13pro怎么设置来电闪光灯(iphone13pro怎么设置5g网络)

    iphone13pro怎么设置来电闪光灯(iphone13pro怎么设置5g网络)

  • 真我q3s屏幕刷新率是多少(真我v3屏幕刷新率)

    真我q3s屏幕刷新率是多少(真我v3屏幕刷新率)

  • 小米应用行为记录在哪里(小米应用行为记录如何隐藏)

    小米应用行为记录在哪里(小米应用行为记录如何隐藏)

  • 快手小店里的评价怎么删除(快手小店里的评价中心怎么关闭)

    快手小店里的评价怎么删除(快手小店里的评价中心怎么关闭)

  • 电脑小广告怎么让它不再出现(电脑小广告怎么能弄干净)

    电脑小广告怎么让它不再出现(电脑小广告怎么能弄干净)

  • 华为手机出厂设置后数据能否恢复(华为手机出厂设置怎么恢复)

    华为手机出厂设置后数据能否恢复(华为手机出厂设置怎么恢复)

  • 平果11是双卡双待的吗(苹果11是双卡双带)

    平果11是双卡双待的吗(苹果11是双卡双带)

  • 电脑如何恢复删除的文件(电脑怎么恢复删除的数据)

    电脑如何恢复删除的文件(电脑怎么恢复删除的数据)

  • 华为畅享10s如何开隐藏空间(华为畅享10s如何长截屏)

    华为畅享10s如何开隐藏空间(华为畅享10s如何长截屏)

  • 苹果8plus左边喇叭不响(苹果8plus左边喇叭不响是正常的吗)

    苹果8plus左边喇叭不响(苹果8plus左边喇叭不响是正常的吗)

  • ipad黑屏后右侧发热(ipad部分黑屏 触控正常)

    ipad黑屏后右侧发热(ipad部分黑屏 触控正常)

  • mt6765相当于麒麟什么处理器(mt6765相当于麒麟多少)

    mt6765相当于麒麟什么处理器(mt6765相当于麒麟多少)

  • 手机半年没充电会坏吗(手机半年没充电了还能用吗)

    手机半年没充电会坏吗(手机半年没充电了还能用吗)

  • 指令计数器的作用(指令计数器和指令寄存器的区别)

    指令计数器的作用(指令计数器和指令寄存器的区别)

  • 苹果live photo怎么设置(苹果livephoto怎么关闭)

    苹果live photo怎么设置(苹果livephoto怎么关闭)

  • 安卓手机白屏怎么快速修复(安卓手机白屏怎么恢复)

    安卓手机白屏怎么快速修复(安卓手机白屏怎么恢复)

  • 屏幕指纹解锁反应迟钝(屏幕指纹反应比后置指纹慢)

    屏幕指纹解锁反应迟钝(屏幕指纹反应比后置指纹慢)

  • 剪映画中画特效怎么弄(剪映画中画特效怎么去掉)

    剪映画中画特效怎么弄(剪映画中画特效怎么去掉)

  • wps文档怎么搜索关键字(wps文档怎么搜索关键词)

    wps文档怎么搜索关键字(wps文档怎么搜索关键词)

  • 戴尔笔记本怎么添加控制面板(戴尔笔记本怎么设置u盘启动)

    戴尔笔记本怎么添加控制面板(戴尔笔记本怎么设置u盘启动)

  • ios13怎么更新app(ios13怎么更新到ios16)

    ios13怎么更新app(ios13怎么更新到ios16)

  • 4k屏可以调2k的吗(4k屏幕可以调低到2k分辨率吗)

    4k屏可以调2k的吗(4k屏幕可以调低到2k分辨率吗)

  • led显示屏安装(led显示屏安装方式)

    led显示屏安装(led显示屏安装方式)

  • 微博怎么看访客(微博怎么看访客记录)

    微博怎么看访客(微博怎么看访客记录)

  • 无法激活面容id(无法激活面容id是不是证明手机有id锁)

    无法激活面容id(无法激活面容id是不是证明手机有id锁)

  • 建筑业印花税核定征收
  • 私车公用协议可以入账吗?
  • 民办非企业免税额度
  • 会计核算是否健全 填错了有影响吗
  • 小企业会计准则以前年度损益调整
  • 固定资产变动包括哪些内容
  • 金税三期报税软件
  • 发票属于什么凭证类型
  • 报销筹建期间的房租押金怎么做会计分录?
  • 购进客房用品取得增值税专用发票注明税额9120
  • 个人转让住宅要交哪些税
  • 开具的增值税专用发票上注明的金额
  • 购进二手办公设备如何进行入账?
  • 餐饮行业享受免增值税政策怎么开发票
  • 金税盘最高限额怎么修改
  • 金税盘在电脑上怎么打开
  • 建筑施工企业印花税计税依据
  • 银行利息现金流量表什么科目
  • 上年度多计提的工资怎么冲减
  • 接受个人投资现金怎么做账务处理?
  • 电子账册需要缴纳印花税的规定是怎么说?
  • 购进货物赠送客户增值税处理
  • 垃圾费随水费征收
  • 工程预算费用会计怎么做
  • thinkphp yii
  • 购物卡销售的重点工作是什么
  • downloadplus.exe是什么进程 作用是什么 downloadplus进程是安全的吗
  • 个人所得税手续费返还
  • linux桌面设置界面在哪
  • 大金中央空调面板图解
  • emsm是什么意思
  • 售后租回怎么理解
  • PHP:imagecreatefromgd2()的用法_GD库图像处理函数
  • 所有者权益期末减期初等于净利润还是利润总额
  • vue设置图片
  • 新办企业工商需要什么手续
  • 哪些税改将影响家庭个人财富
  • 增值税代扣代缴税率是多少
  • 进项税额转出结转会计分录怎么写
  • 出口退税抵减应计入哪里
  • 残保金交错了怎么办
  • 主播工资不发
  • mysql中join的用法
  • 利得都需要缴纳企业所得税吗
  • 收外汇是一定要交税吗
  • 购入不动产的税率是多少
  • 税务登记证证书编号是什么
  • 工商年报纳税总额从哪看
  • 商业银行提取的盈余公积可用于
  • 珠宝行业的会计处理方式
  • 员工外面有自己的公司
  • 专票红冲信息表填开显示红字信息表金额大于蓝色金额
  • 漏缴增值税处罚规定
  • 应收账款周转率越大越好还是越小越好
  • 企业优惠政策是什么意思
  • 小规模纳税人申报增值税的操作流程
  • windows注册表简单应用
  • Win7旗舰版系统文件名称
  • win8更新win8.1
  • win10系统无法安装打印机句柄无效
  • win7系统u盘打不开怎么办
  • win8.1iso
  • 虚拟内存扩大有什么好处
  • Win7安全模式怎么切换到正常模式
  • windows7电脑无法正常运行
  • win7 64位纯净版系统c盘空间显示与实际占用空间不对的解决方法图文教程
  • pm2使用手册
  • cocos2dx4.0教程
  • unityz
  • JQuery 又谈ajax局部刷新
  • JavaScript中getUTCMinutes()方法的使用详解
  • js格式化时间戳
  • python怎么用的
  • googlevoice使用教程
  • 河北发票查询真伪查询
  • 小规模企业零申报怎么操作
  • 独生子女补贴和退休金一起发吗
  • 关税税率表包括哪些
  • 税务局工会
  • 税务登记办法细则
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设