开发者学堂课程【高校精品课-华中科技大学 -智能媒体计算:图像提取特征(下)】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/811/detail/15707
图像提取特征(下)
前面讲了 SIFT 手工的这种局部特征。还有很多其它的手工的局部特征,大家可以去看一看,团队撰写过这种特征的整个特征融合的综述,后面的参考图片。
下面再介绍一种深度的特征的提取,已知 CNN 为例,CNN 叫卷积神经网络,深度学习应该说这十几年,非常滞后。它是一个简单的什么层层的这个堆点,卷积层,Pooling 层,需要就把它再次增加,局部的连接卷积层与层之间的话局部相连,也就是权值共享就是同一个通道的这个所有神经元,它共享相同的参数。
另外就是传统的全神经网络向MLP网络它的计算量减少,层数更是,同时为什么最近的若干年这种深度学习神经网络越来越火了其实得益于这几个因素。
第一就是对于 CNN 的普及:
比如数据变大,有大的数据集,比如说 ImageNet ,其实对这个整个 CNN 的普及起到了推动作用,另外现在的计算机强大的计算能力,尤其是 GPU 这种加速性能,为这种计算的多层的反复迭代的计算提供了可能。另外还有 ReLU 这种激励函数的 Rropout 机制共同推动。
另外就是训练的数据充足。大数据,你能够找到大量的训练基地,运算速度快,将强大的运算能力,收敛速度快,RELU 激励函数是导致收敛速度快,前面一个是大数据使得训练数据充足。强大的 GPU 和 CPU 的处理运算速度快, ReLU 使得收敛速度快。Dropout机制使得过拟合不容易产生,这样共同使得训练大而深的这种神经网络成为可能
卷积神经网络的发展,你看从1980年以后,经过了近40年的发展,有各种各样的网络的模型出现,就去搜索这个相应的这个网络的名字,可以找到它的原始的论文,以及相应的一些应用场景。局部特征,提取了详细的算法,课后可以去下载提取的它的源代码,然后去真正的人可以用 matlab 或者自己用这个 Python 或者是其他的语言设计,来看看它的效果。
下面看一看局部特征,无论是手工的,还是深度的这种局部特征,提取之后还要进行编码,作用就是局部特征数量大,他空间开销大,能对它们进行适当的压缩,同时能够形成一个图像的单一并长的表示,比方说不同的图像提出来的长度不同,将来没办法怎样进行匹配,怎么去配置。
编码方法有很多,比如可以利用 0阶的统计信息,都发生的频数信息,像 BOW(BOF/TF-IDF)另外利用一阶统计信息,一般用它的均值 ,VLAD ,IntraVLAD/ASMK 等,VLAD 在图像检索里用的很多,后面会以特征编码来进行解释。
还有利用的二阶统计信息也就是方差,比如说 FV以及 IFV / TE以及 FAemb 等等。二阶的统计信息其实它同时利用了一阶和二阶,而对于深度的这种局部特征可以通过一些池化的方法。
通常有讲和池化,叫 SumPooling ,像 CroW / SPoC 描述符都是通过和池化,还有个平均池化,叫 AveragePooling ,另外还有个最大池化,叫 R-MAC 描述符。
以这个局部特征描述符- VLAD 为例介绍:
那么它的名称叫局部描述符聚合向量。比如 SIFT 128位形成的一个向量叫 Vector ofAggragate Locally Descriptor,叫 VLAD ,这里在图像检索大量的文献里边引用了这个。
生成步骤:
第一步提取 SIFT 特征,然后聚合生成词汇向量,怎么生成词汇向量,用了 k-means 的算法。前面的课程讲过,在这里面的码子就是这个 k-means算法得到的,每一个聚类里面,就 class 里边的,它的至心,这里叫中心。这是它的字子。马书就是这个码子的集合,就是就是说分成了很多很多,像这里。你把一个空间,把它分割成了若干的 class ,若干的区域,每个区域是可以找到中心,这个中心就是码字,每个中心点把它集合在一起,就是它的码书。生成 VLAD 向量怎么做,就是对每一幅图像落在同一个聚类中心区域里面的残差进行累加。
它的残差是什么,比如说落在了这个区域,.X点,它本身的这个特征值跟这个中心值求一个差,这个叫叫残差,把这个残差怎么给它加起来,因为它有不同维,每一维都放在不同的区域里它都有一个残差,把这个残差 sigma 起来。就是它的 VLAD
描述符的分布有四部:
一个是分配,聚合残差归一化,还有串连
第一步输入局部特征集合,进来以后分配,就是将特征分配到最近的码字
K-means 算法,k 要足够的大,一般要大于4096。再就是对聚合,聚合 sigma,聚合残差聚合各个码字对应的这个特征的残差,然后对它进行归一化。归一化后各个聚类产生的残差,最后把它串联起来,这就是 VLAD。
那么有了这个以后,每一幅图像都有一个定长的 VLAD 的向量,拿它去建索引,去检索就变得容易。
举一个例子:
左边这幅图它 VLAD 的向量是上面这一块,这幅图像是下边这一块。
这两幅图像它是有变化的,它远近,要么就是角度不同。它的整个的整个的 VLAD 向量是非常接近的,注意的是 VLAD 的输入是 SIFT ,里面存的是梯度,是主方向,剩下这个图不就是角度不同。这就有了统一的一个全局的定长的表示,这就为图像下一步的图像的建索引建检索,实现检索变得基础
图像描述服务深层浅层,按照时间排序进行了这个综述,可以参考下列文献,了解他整个的发展脉络。