本文主要是介绍PCANet: A Simple Deep Learning Baseline for Image Classification?(精读),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
一.文献名字和作者
PCANet: A Simple Deep Learning Baseline for Image Classification?; Tsung-Han Chan, Kui Jia, Shenghua Gao, Jiwen Lu, Zinan Zeng, and Yi Ma
二.阅读时间
2014年10月10日
三.文献的目的
文献主要是提出了一个可以用作图像分类的深度学习方面的基线算法PCANet,同时,这个算法在数学上又比较简单,效率也高,方便对深度学习算法进行基本的理论研究。这个算法是非监督的特征提取算法,作者将这个算法提取到的特征与其他人工特征和使用DNN提取的特征进行比较,发现这种简单的特征提取算法的效果能够在比肩state of the art的特征提取算法,包括人工选择特征和使用DNN训练出来的特征。
作者的目的有两个:1.设计一种简单的深度学习完了能够很方便地用在不同的数据和任务上面;
2.这个简单的算法可以作为人们使用深度学习网络的参考。
四.文献的贡献点
1.提出了一种简单的非监督深度学习网络--PCANet网络,这个网络是由两个PCA滤波层、一个哈希层和一个局部直方图计算层,并且在此基础上面提出两个变种--RandNet和LDANet;
2.作者做了大量的实验来比较PCANet和其他传统的人工选择特征以及DNN学习到的特征在不同数据库上面的表现,从而得出了使用PCANet也能够达到比肩the state of the art的效果,使用的数据库包括MultiPIE、Extended Yale B、AR Dataset、FERET Dataset、LFW Dataset、MNIST Datasets、CUReT Dataset、CIFAR10。
五.作者提出的方法
作者提出的方法如图1所示,前面两个步骤为PCA滤波,第三个步骤为二值哈希化的过程;第四部是计算局部直方图的过程。
图1. PCANet的流程
对于PCA滤波的过程,作者的做法是将训练集中每一幅图像分成大小为k1*k2的图像块,图像块之间可以进行重叠,然后将图像块转化为一个向量,并将同一幅图像的块对应的向量按列排列成一个矩阵Xi,然后将所有的训练图片得到的形成一个巨大的矩阵X,然后根据PCA的方法,j个特征向量V,然后将每个特征向量转化为一个大小为k1*k2的矩阵,使用这个矩阵来初始化卷积核,然后进行类似于CNN的卷积操作。第二个PCA滤波的过程也是这样的。
在第二个PCA滤波之后,进行对输出结果进行二值哈希操作,得到L1*L2个二值化图像,然后L1个输入的图像对应的L2个图像中每个位置对应的像素的值作为一个二进制数的一个位,这样就可以将L1*L2幅图片压缩为L1幅图片。然后将每一幅图分成了B个块,对每个块进行直方图计算,然后将每个直方图连接起来成为一个向量,然后将L1幅图像对应的向量连接起来,作为输入图片的特征。这个就是PCANet特征提取方法。
图2. PCANet流程图
从上面的算法流程中可以看出,PCANet的训练过程只是在训练集中进行特征向量计算的过程,并没有包括迭代和优化求解的过程,因此,训练过程很快,而测试过程基本上和CNN的前向过程一样。因此,PCANet与CNN区别最大的地方在于卷积核是直接通过PCA计算得到的,而不是像CNN一样通过迭代的过程得到的。
版权所有,欢迎转载,转载请注明出处,谢谢

这篇关于PCANet: A Simple Deep Learning Baseline for Image Classification?(精读)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!