| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 人工智能 -> CSK与KCF算法推导(六) -> 正文阅读 |
|
[人工智能]CSK与KCF算法推导(六) |
??本文是CSK与KCF算法推导的第六篇,主要介绍HOG特征提取与多通道计算。
边缘特征提取??采用 [-1,0,1] 的滤波模版求原始图像的水平和垂直方向的梯度。滤波模版的Anchor位于滤波模版的中心。求边缘的像素的梯度时,对原始图像的 边界有一个扩展的操作,作者采用的是镜像扩展,这样一来边缘像素的梯度值均为0。 方向图与强度图??在得到
x
x
x方向的梯度图和
y
y
y方向的梯度图之后,我们就得到了原始图像中每个像素点的梯度向量
(
d
x
,
d
y
)
(dx,dy)
(dx,dy),将这些梯度向量转换成模
r
r
r与方向角
α
\alpha
α进行表示,用于生成方向梯度直方图(Histogram of Oriented Gradient,HOG)。 ??其中一个HOG有9个bin,另一个是18个bin,在生成直方图之前,我们可以先准备好它们对应的方向图和强度图,生成HOG就是要把梯度向量的模累加到对应的bin里面去。 生成直方图
??将位于中心的Cell等分为左上、左下、右上、右下四部分。位于左上部分的梯度向量,它们会按照一定的比例系数分别为中心Cell、左方、上方、左上方的Cell对应的直方图产生贡献,其余三个部分也是类似。就这样,一个Cell中的梯度向量,会对共9个直方图(算上它自身对应的直方图)产生贡献。 ??比如①号位置的梯度向量的两个系数
a
=
b
=
5
8
a=b=\frac{5}{8}
a=b=85?,这一梯度向量的强度按照四个比例系数
a
b
ab
ab、
b
(
1
?
a
)
b(1-a)
b(1?a)、
a
(
1
?
b
)
a(1-b)
a(1?b)、
(
1
?
a
)
(
1
?
b
)
(1-a)(1-b)
(1?a)(1?b)、分到四个直方图相应的bin中。
??每个Cell都以原来的Cell为中心,向外将边长扩展为原来的两倍。每个梯度向量的强度按照权重系数与对应的方向图,累加到直方图上。越靠近Cell中心的梯度向量权重系数越大,最大为 49 / 64 49/64 49/64,最小为 1 / 64 1/64 1/64。 特征图
??记原始图像有 M M M行 N N N列, M M M和 N N N都能被4整除。将原始图像划分为一个个Cell之后,能够得到 P P P行 Q Q Q列的Cell,每个Cell对应一个27维的向量。所以此时的特征图就是三维的结构,相当于是多通道的图像,每一幅图都是 P × Q P×Q P×Q的大小,总共有27个通道。 归一化??归一化的方式和经典的HOG算法是类似的。将相邻的四个Cell组成一个Block,不同的Block之间有重叠。但也有一些细微的不同。 经典做法??经典的做法是逐Block生成归一化的向量。比如Block Ⅳ,将Block Ⅳ里的四个Cell对应的27维向量拼成108维的向量,然后将这一向量的每个分量除以它的模长。 实际做法??而作者实际采用的归一化的方式和上面说的不同。作者采用的是逐Cell归一化。首先,求归一化采用的模长就不一样。在Block Ⅳ里,先将每个Cell的9维向量拿出来拼成一个36维的向量
h
h
h,这里的9维向量就是前面的通过[0,180)的方向图生成的9个bin的直方图。
主成分分析??108个通道的特征图确实太大了,所以需要降维。经典的主成分分析的方式是,将每个通道的图像打平,变成108个一维向量,然后取均值,求用协方差矩阵特征值并从大到小排列,来得到基变换矩阵,最后得到降维后的结果。 添加LAB特征??最后就是把每个通道的特征图拉平,得到一维的行向量,然后按列排布得到二维的特征图。最后还可以选择是否要加上LAB颜色特征,实际上就是多一个图像通道而已。作者这里将图像拉平,我猜想主要目的就是用OpenCV里的push_back函数增加一个通道的特征。 多通道计算的可加性??关于多通道的计算,一开始最让我疑惑的是,多通道的训练样本,该生成怎样的训练标签?是不是每个通道都需要生成一个高斯模板作为训练标签?后来再回想了一下训练的过程发现并不是这样的。
??引入核函数最大的好处就是将原来的样本映射到了高维的特征空间,而这里引入多通道,有没有像是把样本先提高一点维度,然后再提高到更高维度的特征空间呢?这样去想就使得多通道的计算有了较强的可解释性。 公式推导??下面进行相关的公式推导,推导仍旧是针对一维样本。假设
x
1
x_1
x1?、
x
2
x_2
x2?、
x
3
x_3
x3?分别是三个通道的列向量样本。然后我们把它们拼接起来。 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 17:19:42- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |