卷积神经网络的变种: PCANet

前言:昨天和大家聊了聊卷积神经网络,今天给大家带来一篇论文:pca+cnn=pcanet.现在就让我带领大家来了解这篇文章吧。

论文:PCANet:A Simple Deep Learning Baseline for Image Classification

论文地址:https://core.ac.uk/download/pdf/25018742.pdf

论文代码:https://github.com/Ldpe2G/PCANet

1 摘要

这部分我就不说了,都在我的上一篇博客说了:http://www.cnblogs.com/xiaohuahua108/p/7029128.html就是分析分析传统的特征抽取方法没有卷积神经网络方法抽取特征方便,快捷,准确率高什么的。其实说白了就是用PCA去学习卷积神经网络的卷积核,当然后面用二值化和哈希去重置像素点。PCANET特征提取流程图:

2 PCAnet的网络结构

假设我们现在有N个大小为mxn的训练样本,设置每一个层次的滤波器大小为k1xk2.

下图是一个pcanet的详细图:

2.1 第一层

例如下面的一副图像,我们对每一个像素点进行一个k1xk2的块采样,既然每一个像素点都要被采样到,那么就是mxn个,得到第i 个训练样本就为:,其中,至于为什么卷积之后是这样呢,你拿着卡片这样一个一个沿着像素点平移,得到的也是这个。

然后就是必不可少的去中心化,,那么整个训练集就为,

假设第i层的滤波器数量是,PCA的目的就是寻找一些列的标准正交矩阵来最小化重构误差:

那么就是解决主成分分析,也就是矩阵X的协方差矩阵的前n个特征向量,因此对应的PCA滤波器如下:

2第二层

第二层基本与第一次相同。首先计算第一次PCA层的映射输出,为:

当然这是要在得到的图像上进行补零操作,以保持和原图像一样的大小。

最后我们可以得到第二层PCA的滤波器,然后对第一层得到的图像进行卷积操作,接着进行二值化。

3输出层

对第二层得到图像进行二值化哈希编码,编码位数与第二层的滤波器个数相同。

公式为:

把原来的图像映射成,0-255,此处一般设置成8,函数H 是一个阶跃函数。,表示第二层的滤波器个数。

对于第一层的每个输出矩阵,将其分为B块,计算统计每个块的直方图信息,然后在将各个块的直方图特征进行级联,最终得到块扩展直方图特征:

在进行直方图分块时同样可以采用重叠分块和非重叠分块模式,需要视情况而定。实验表明非重叠分块适用于人脸识别,重叠分块模式使用于手写数字识别、文本识别、目标识别等等。此外直方图特征还为PCANet提取到的特征添加了一些变换上的稳定性(例如尺度不变形)。

4 实验结果

3 总结

我认为这篇文章最好的点就是在卷积层用了PCA,这样早卷积的时候就有了一定的目的性,从而提高了分类效率。创新性很高。

时间: 2024-10-18 04:01:03

卷积神经网络的变种: PCANet的相关文章

卷积神经网络(CNN)基础介绍

本文是对卷积神经网络的基础进行介绍,主要内容包含卷积神经网络概念.卷积神经网络结构.卷积神经网络求解.卷积神经网络LeNet-5结构分析.卷积神经网络注意事项. 一.卷积神经网络概念 上世纪60年代.Hubel等人通过对猫视觉皮层细胞的研究,提出了感受野这个概念.到80年代.Fukushima在感受野概念的基础之上提出了神经认知机的概念,能够看作是卷积神经网络的第一个实现网络,神经认知机将一个视觉模式分解成很多子模式(特征),然后进入分层递阶式相连的特征平面进行处理,它试图将视觉系统模型化,使其

卷积神经网络大总结

#Deep Learning回顾#之2006年的Science Paper 大家都清楚神经网络在上个世纪七八十年代是着实火过一回的,尤其是后向传播BP算法出来之后,但90年代后被SVM之类抢了风头,再后来大家更熟悉的是SVM.AdaBoost.随机森林.GBDT.LR.FTRL这些概念.究其原因,主要是神经网络很难解决训练的问题,比如梯度消失.当时的神经网络研究进入一个低潮期,不过Hinton老人家坚持下来了. 功夫不负有心人,2006年Hinton和学生发表了利用RBM编码的深层神经网络的Sc

卷积神经网络的并行化模型——One weird trick for parallelizing convolutional neural networks

前段时间一直在关注 CNN 的实现,查看了 caffe 的代码以及 convnet2 的代码.目前对单机多卡的内容比较感兴趣,因此特别关注 convnet2 关于 multi-GPU 的支持. 其中 cuda-convnet2 的项目地址发布在:Google Code:cuda-convnet2 关于 multi-GPU 的一篇比较重要的论文就是:One weird trick for parallelizing convolutional neural networks 本文也将针对这篇文章给

深度学习方法(十):卷积神经网络结构变化——Maxout Networks,Network In Network,Global Average Pooling

技术交流QQ群:433250724,欢迎对算法.技术感兴趣的同学加入. 最近接下来几篇博文会回到神经网络结构的讨论上来,前面我在"深度学习方法(五):卷积神经网络CNN经典模型整理Lenet,Alexnet,Googlenet,VGG,Deep Residual Learning"一文中介绍了经典的CNN网络结构模型,这些可以说已经是家喻户晓的网络结构,在那一文结尾,我提到"是时候动一动卷积计算的形式了",原因是很多工作证明了,在基本的CNN卷积计算模式之外,很多简

Spark MLlib Deep Learning Convolution Neural Network (深度学习-卷积神经网络)3.1

3.Spark MLlib Deep Learning Convolution Neural Network (深度学习-卷积神经网络)3.1 http://blog.csdn.net/sunbow0 Spark MLlib Deep Learning工具箱,是根据现有深度学习教程<UFLDL教程>中的算法,在SparkMLlib中的实现.具体Spark MLlib Deep Learning(深度学习)目录结构: 第一章Neural Net(NN) 1.源码 2.源码解析 3.实例 第二章D

Spark MLlib Deep Learning Convolution Neural Network (深度学习-卷积神经网络)3.2

3.Spark MLlib Deep Learning Convolution Neural Network(深度学习-卷积神经网络)3.2 http://blog.csdn.net/sunbow0 第三章Convolution Neural Network (卷积神经网络) 2基础及源码解析 2.1 Convolution Neural Network卷积神经网络基础知识 1)基础知识: 自行google,百度,基础方面的非常多,随便看看就可以,只是很多没有把细节说得清楚和明白: 能把细节说清

Spark MLlib Deep Learning Convolution Neural Network (深度学习-卷积神经网络)3.3

3.Spark MLlib Deep Learning Convolution Neural Network(深度学习-卷积神经网络)3.3 http://blog.csdn.net/sunbow0 第三章Convolution Neural Network (卷积神经网络) 3实例 3.1 测试数据 按照上例数据,或者新建图片识别数据. 3.2 CNN实例 //2 测试数据 Logger.getRootLogger.setLevel(Level.WARN) valdata_path="/use

CNN卷积神经网络新想法

最近一直在看卷积神经网络,想改进改进弄出点新东西来,看了好多论文,写了一篇综述,对深度学习中卷积神经网络有了一些新认识,和大家分享下. 其实卷积神经网络并不是一项新兴的算法,早在上世纪八十年代就已经被提出来,但当时硬件运算能力有限,所以当时只用来识别支票上的手写体数字,并且应用于实际.2006年深度学习的泰斗在<科学>上发表一篇文章,论证了深度结构在特征提取问题上的潜在实力,从而掀起了深度结构研究的浪潮,卷积神经网络作为一种已经存在的.有一定应用经验的深度结构,重新回到人们视线,此时硬件的运算

TensorFlow框架(4)之CNN卷积神经网络详解

1. 卷积神经网络 1.1 多层前馈神经网络 多层前馈神经网络是指在多层的神经网络中,每层神经元与下一层神经元完全互连,神经元之间不存在同层连接,也不存在跨层连接的情况,如图 11所示. 图 11 对于上图中隐藏层的第j个神经元的输出可以表示为: 其中,f是激活函数,bj为每个神经元的偏置. 1.2 卷积神经网络 1.2.1 网络结构 卷积神经网络与多层前馈神经网络的结构不一样,其每层神经元与下一层神经元不是全互连,而是部分连接,即每层神经层中只有部分的神经元与下一层神经元有连接,但是神经元之间