ope电竞平台_ope体育APP_ope体育专业平台
ope电竞平台

裸体女人,泰铢-ope电竞平台_ope体育APP_ope体育专业平台

admin admin ⋅ 2019-11-19 17:24:22

全文共4499字,估计学习时长9分钟

特征工程在机器学习算法范畴中能够说是“改动游戏规则”的存在。特征工程是进行最蓝导航多试验的范畴——依据现有内容规划新特征并改进模型的体现。

一些世界上顶尖的数据科学家依托特征工程进步自己在黑客马拉松中的排行榜得分。

那么此项技能能够扩展运用于非结构化数据吗,例如图画?这对核算机视觉爱好者来说是一个风趣的谜题,本文将揭晓答案。准备好对图画数据运用特征提取技能,然后履行特征工程。

事实上,特征提取有许多办法。

本文将介绍一种抢手的图画特征提取办法——方向梯度直方图(Histogram of Oriented Gradients),称作HOG更为熟知。具体包括:了解HOG特征描述子是什么、作业机制(算法背面完好的数学运算),以及在Python中的运用。


目录


1. 什么是特征描述子?

2. HOG特征描述子介绍

3. HOG核算进程

3.1 数据预处理

3.2 梯度核算

3.3 幅值和方向核算

4. 运用梯度和方向创立直方图的办法

5. HOG核算进程

5.1 梯度直方图核算

5.2 梯度标准化

5.3 完好图画特征

6. 在Python中运用HOG特征描述子


什么无敌大军阀是特征描述子?


请看下面两张图片。你能区分出图片中的物体吗?



能够清楚地看到,左图中有一辆轿车,右图中有一条狗。接下来,把这个问题变得略微复杂点——区分下图中的物体。


仍是很简略,汪涵暗讽韩庚罢录对吧?你知道裸体女性,泰铢-ope电竞渠道_ope体育APP_ope体育专业渠道两个问题的差异吗?卡尔迪罗拉第一组图片包括许多信息,如物体形状、色彩、边际和布景等。

比较来看,第二组图片中的信息少多了(只要形状和边际),但这些信息足以区分图片中物体。

你知道咱们接下来要讲什么了吗?在第二组图片中,能够轻松辨识物体,由于其间包括了辨认物体所需的必要信息。而这也便是特征描述子的效果:特征描述子是图片的简略代替,其间只包括图画最重要的信息。

此外还有许多种特征描述子。以下是最抢手的几种:

HOG: 方向梯度直方图

SIFT: 标准不变特征改换

SURF: 加快稳健特征

本文聚集HOG特征描述子及其作业机制。现在开端吧!



HOG特征描述子介绍


HOG,也称作方向梯全国天气图度直方图,是常用于提取图画数据特征的一种特征子。其广泛运用于核算机视觉使命以进行方针检测。

一同看看HOG与其它特征描述子的差异:

HOG特征描裸体女性,泰铢-ope电竞渠道_ope体育APP_ope体育专业渠道述子重视物体的结构或形状。你可能会问,这和提取的图画边际信息有什么差异?就边际信息而言,只能区分此像素是否归于边际。而HOG还能供给边际的方向。这是经过提取边际的梯度和方向完成的。

别的,这些方向是在“部分”区域核算得出的。这就意味着一张完好的图片被分红了几个小部分,针对每个区域核算其梯度和方向。更多相关细节会在下文提及。

终究,HOG会别离为这些部分生成直方图。由于它们是运用像素值的梯度和方向发明出来的,所以得名“方向梯度直方图”。

其正式界说为:

HOG特征描述子用于核算和核算图片中部分区域呈现的梯度方向。

运用相似OpenCV的东西运用HOG十分简略。由于skimage.feature库中已有被称为hog的预界说函数,所以只需几行代码即可。可是,本文的裸体女性,泰铢-ope电竞渠道_ope体育APP_ope体育专业渠道要点聚集这些特征到底是怎样核算出来的。


HOG核算进程


经过上文,想必你对HOG特征描述子已有根本了解。现在该开端研讨本文背面的核撸死心思想了。咱们一同逐渐评论HOG的核算进程。

考虑下图尺度(180 x 280)。一同具体了解这张图画的HOG特征是怎么创立的。


第1步:数据预处理(64 x 128)

你们中大多数人应该都很了解这一步。数据预处理在任何机器学习项目中都是关键进程,杨艺林处理图画时也不破例。

在此需求对图画进行预处理,将宽高比降为1:2。图画最佳尺度为64 x 128。这是由于需求将图片分为8*8卫宫士郎的女儿和16*16的小块以提取特征。运用特定的尺度(64 x 128)会让后续运算十分简洁。实际上,这个数据便是原始论文(http://lear.inrialpes.fr/people/triggs/pubs/Dalal-cvpr05.pdf)中运用的值。

回到本文所给出的比如上,选用64 x 28这一巨细的图画作为当时的标准图画尺度。下图是修正尺度后的图画。




第2步:梯度核算(x和y方向)

下一步是核算图画中每一像素的梯度。梯度是x和y方向所发作的细小改动。本文中,笔者从图画中取一小块区域,并核算其梯度:


从上图的小块区域中得到像素值。对此区域,生成了如下的像素矩阵(下图所示的矩阵仅用作比如,且不是所示区域的初始像素值):

图源:机器学习运用课程


笔者已将像素值85高亮表明。现在,确认x方向的梯度(或改动),需求用像素值85右侧值减去其左边值。相应地,核算y方向的梯度,需求用所选像素值85上方的值减去其下方的值。

由此核算出这一像素在x和y方向的梯度为:

x方向改动(Gx) = 89 – 78 = 11

y方向改动(Gy) = 68 – 56 = 8

此进程得出两个新矩阵——一组x方向的存储梯度,一组y方向的存储梯度。这与运用巨细为1的索伯算子相似。密度上有剧烈改动时,如边际周围的密度,起伏则会升高。

现在已别离核算求得x和y方向的梯度。请对图画中一切像素重复同一进程。下一步便是运用这些值核算出幅值和方向。

第3步:幅值和方向核算

运用上一步中核算出的梯度,然后确认每个像素值的幅值和方向。在此进程中,会运用到勾股定理(是的,便是你在校园学过的那个!)。

请看下图:


梯几巴度根本上对应的都是相似图中的底边和笔直边。所以,上例的Gx为11,Gy为8。 运用勾股定理核算总斜率幅值:

总斜率幅值= √[(Gx)2+(Gy)2]

总斜率幅值= √[(11)2+(8)2] = 13.6

接下来,核算每个像素的方向。能够农门女财神用tan核算视点。

tan() = Gy / Gx

因而,视点值为:

= atan(Gy / Gx)

把值带入函数后,得出的方向值为36。所以至此,现已有每个像素值的总梯度和方向。然后需求运用这些梯度和方向值生成直方图。

但等等——在深化了解HOG特征描述子中的直方图是怎么创立的之前,先歇息一下。把这想作整个进程中的一个小进程。文中将先评论运用已具有的两个值——梯度和方历来创立直方图的一些简略办法。


运用梯度和方向创立直方图的办法

直方图是展现一组接连数据散布频率的图表。已有x轴上的变量(bin办法)和y轴上的频率。本文中运用x轴上的视点或方向,y轴上的频率。

办法1:

首要是最简略的生成直方图的办法酷睿乐健。运用每个像素值,找出像素的方向并更新频率表。

下图是高亮的像素值(85)的进程。由于此像素的方向值为36,所以针对此值在36上方填入一个数字,以表明频率:

来历: 机器学习运用课程


对一切像素值重复此进程,直至符号完图画中这些视点和呈现频率表。毒圣武尊这个频率表可运用x轴的视点值和y轴的频率值生成直方图。

这是创立直方图的一种办法。留意,此处直方图的b裸体女性,泰铢-ope电竞渠道_ope体育APP_ope体育专业渠道in值为1。由此得到约180个不同的bucket,每个代表一个方向值。另一种办法是为更大的bin值创立直方图特征。

办法2:

此法与办法1相似,仅有的不同是bin的巨细为20。所以,得出bucket的数量为9。

随后,查看每个像素的方向并存储9x1矩阵中方向值的频率。制作此图得出直方图:

来历: 机器学习运用课程


办法3:

以上两种办法仅用方向值生成直方图,没有将梯度值考虑在内。办法3是生成直方图的另一种办法——将梯度幅值填入矩阵,而不是频率。请看下图示例:

来历:机器学习运用课程


可能会留意到,运用方向值30,只更新为20的bin值。别的,还应该给其它bin添加一些权重。

办法4:

此法对办法4做出一些微调。在此,将像素梯度的contribution值加到像素梯度恣意一边的bin中。请记住,bin值越挨近方向值的,contribution更高。

来历:机器学习运用课程


这便是HOG特征描述子创立直方图的办法。

第4步:核算8x8单元(9x1)的梯度直方图

HOG特征描述子中创立的直方图不是为整幅图画生成的。相反,图画被分红8x8的几个单元,且为每个单元核算定向梯度直方图。你觉得这会发作什么呢?

这样做得到更小区域的特征(或直方图),相应地代表整幅图画。在此当然能够将8x8的值改为16x16或32x32。

假如将图画分为8x8单元并生成直方图,相应每个单元会得到一个9x1的矩阵。此矩阵运用上文说到的办法4生成。


一旦为图片中8x8的区域生成HOG,接下来便是进行直方图标准化。

第5步:在16x16单元(36x1)中进行梯度标准化

了解标准化怎么进行之前,先了解这样做的原因很重要。

尽管现已为图画8x8单元创立了HOG特征,图画的梯度对全体的亮度尤为灵敏。这意味着关于一张特定图片,图画的某一部分与其他部分比较会十分亮堂。

尽管无法从此图画中彻底清除亮度的不同,可是能够经过对16x16区域进行梯度标准化来削弱亮度改动。下图比如能够解说16x16区域是怎么创立出来的。


在此兼并四个8x8单元创立一个16x16的区域。已知每个8x8的单元的直方图有一个9x1矩阵。所以,此处应有4个9x1矩阵或许一个36x1矩阵。为对矩阵进行标准化,用每一个值除以值的平方和的平方根。给定的向量V的数学表明为:

V = [a1, a2, a裸体女性,泰铢-ope电竞渠道_ope体育APP_ope体育专业渠道3, ….a36]

核算平方和的平方根数值:

k = √(a1)2+ (a2)2+ (a3)2+ ….(a36)2

用向量V中的每一个值除以k:


成果将是一个巨细为36x1的标准化向量

第6步:完好图画特征

现在处于为图画生成HOG特征的终究一步。至此,现已为图画中的16x16区域创立特征。现在将一切特征兼并用于取得终究图片的特征裸体女性,泰铢-ope电竞渠道_ope体育APP_ope体育专业渠道。

你能猜出给定图画终究的特征总数是多少吗?首要需求求出一个64128图画能够得到多少1616巨细的区域:


105(7x15)块16x16区域。每一块都有一个36x1的向量作为特征。因而,图片的特征总数为105x36x1=3780个。

现在欧缇薇已为一幅图片生成了HOG特征,文末还会验证是否得到了相同数量的特征。


在Python中运用HOG特征描述子


是时分翻开Python了!笔者敢确保这是本文最令人等待的部分。一同看下去吧。

下文将显现一幅图的HOG特征是怎么生成的,以及相同的办法能否运用于更大的数据集。首要下载所需的数据库和即即将创立HOG特征的图画:

#importing required libraries

from skimage.io import imread, imshow

from skimage.transform import resize

from skimage.feature import hog

f韩国道德2017rom skimage import exposure

import matplotlib.pyplot as plt

%matplotlib inline

#reading the image

img = imread('puppy.jpeg')

imshow(img)

print(img.shape)

(663, 459, 裸体女性,泰铢-ope电竞渠道_ope体育APP_ope体育专业渠道3)


由上可见,图画巨细为663x459。需求将图画巨细变为64x128。请留意,文中所运用的是skimage,其需求输入高度x宽度。

#resizing image

resized_img = resize(img, (128,64))

imshow(resized_img)

print(resized_img.shape)

(128, 64, 3)


本文中将直接运用skimage.features的hog函数。因而不用独自核算梯度、幅值(总梯值)和方向。hog函数将在内部核算它并回来特征矩阵。

此外,假如设置参数为‘visualize = True’,它将回来一张HOG的图画。

#creating hog features

fd, hog_image = hog(resized_img, orientations=9, pixels_per_cell=(8, 8),

cells_per_block=(2, 2), visualize=True, multichannel=True)

在持续前,先介绍一下这些超参数都代表什么。

orientations是所创立的bucket数量。由于本文中想得到一个9x1的矩阵,所以将orientations设置为9。

pixels_per_cell界说所创立直方图的单元尺度。本文中所叶倩文儿子触及的比如都运用了8x8单元,在此将设置相同的值。正如上文所提,你能够挑选改动这个值。

另一个超参数cells_per_block指所规乳白陆行鸟范化的直方图上的小块区域巨细。本文说到的单元是指每小块区域,而不是像素的数量。所以,此处用2x2表明,而不是16x16。

函数的特征矩阵存储在变量fd中, 图画存储于hog_image中。查看一下特征矩阵的巨细:

fd.shape

(3780,)

正如预期那样,共有3780个图画特征,这验证了之前在第7步中所做的核算。你能够挑选更改超参数的值,这将供给不同巨细的特征矩阵。

终究,来看一看HOG图画侯洪俊:

fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(16, 8), sharex=True, sharey=True)

ax1.imshow(resized_img, cmap=plt.cm.gray)

ax1.set_title('Input image')

# Rescale histogram for better display

hog_image_蒂莉娅战记rescaled = exposure.rescale_intensity(hog_image, in_range=(0, 10))

ax2.imshow(hog_image_rescaled, cmap=p要插lt.cm.gray)

ax2.set_title('Histogram of Oriented Gradients')

plt.show()


留言 点赞 重视

咱们一同共享AI学习与开展的干货

如需转载,请后台留言,恪守转载标准

相关新闻

admin

admin

TA太懒了...暂时没有任何简介

精彩新闻