漫谈Deep PCA与PCANet
又到了无聊的写博客的时间了,因为电脑在跑程序。眼下无事可做。我认为把昨天我看的一些论文方面的知识拿出来和大家分享一下。
美其名曰我是在研究”深度学习“。只是因为本人是穷屌丝一个,买不起GPU(当然明年我准备入手一块显卡来玩玩),因此这半年我找了个深度学习中的一个”廉价“的方向——PCANet。
首先给出PCANet的原始文献《PCANet:A Simple Deep Learning Baseline for Image Classification》。这时在稀疏表示大牛Ma Yi的主页上看到的,当时眼前一亮。认为这个确实不错。这个分享一些相关资源:
(1)原始文档以及源代码:PCANet的Homepage
(2)C++版PCANet源代码:C++版PCANet
(3)原始文档的中文翻译:PCANet中文版
稍后我会将源代码具体解释总结为博客与大家分享。
当然,在这篇文章中我并不打算在反复去解释PCANet相关的一些知识(网上已经有非常多类似的博客),写这篇博客的目的是由于昨天我看到了PCANet的前身:Deep PCA,相应文献的名称为:《Face Recognition Using Deep PCA》,这篇文章网上应该非常easy找到,当然也能够直接在以下留言或者发邮件,我看到之后会及时把论文发给大家。
没错,当我看到Deep PCA时。第一印象就是”这是PCANet的老爸“。接下来我们具体的对照分析一下这两个方法。
1、网络结构
Deep PCA结构例如以下:

PCANet结构例如以下:

接下来简单分析一下两者的异同:
(1)两者网络冊数同样。都是一个双层网络
(2)所用分类器同样。两者在终于分类器的选择上都不约而同的选择了K近邻分类器(KNN),一个非常重要的原因是他们都通过单训练样本来进行的分类。
(3)每层的滤波器个数不同。Deep PCA每层都仅仅有一个滤波器,PCANet第一层有八个滤波器。第二层也是八个滤波器(也就是PCA映射核。原文献中有明白说明)。
(4)特征提取手段不同。Deep PCA将第一层和第二层的特征融合后作为提取到的特征。相当于进行了层间特征融合。而PCANet仅仅使用了第二层的输出特征作为提取到的深度特征。没有层间特征融合的思想。
2、算法流程
在算法设计方面Deep PCA要比PCANet简单很多,因此我们重点描写叙述PCANet的算法流程。然后在针对他们之间的差异进行讨论。PCANet的算法流程例如以下:

具体的算法描写叙述參见PCANet中文版。这里概括的描写叙述一下关键算法流程。首先是第一层的PCA映射分解:

然后是在第二层,以第一层的输出为输入,再次进行一次PCA映射分解:


然后取第二层的映射输出,进行哈希编码:

然后进行直方图编码。作为特征输出:

以上是PCANet的算法流程。接下来我们介绍Deep PCA的算法流程:
首先对训练样本进行ZCA白化:



然后在第一层,进行一次PCA映射:

然后在第二层。以第一层的结果为输出。再次进行一次PCA映射:

然后将两次映射的结果融合成特征向量进行输出。特征提取完毕。
分析一下两者在算法层面上的异同点:
(1)预处理方面。Deep PCA首先对训练样本进行了ZCA白化。而PCANet则没有这一步处理过程。
(2)Deep PCA用的是传统的一维PCA。而PCANet则是使用了2DPCA(这点很重要)。
(3)Deep PCA直接将映射结果作为了特征。而PCANet则是将得到的特征先进行哈希编码,再直方图分块编码后,再进行的特征输出,这也造成了两者在输出特征的维数上产生了巨大差异,Deep PCA第一层和第二层分别为500维和150维,而PCANet的特征输出则高达几十万维。
以上就是Deep PCA和PCANet的一些异同点。之前在读论文时感觉这个有点价值,就顺手写了出来。并且在写这篇博客时我貌似有点发烧。并且还恰好被老师批评了一通。因此语言表达可能不到位,可能有几个错别字,大家见谅。
漫谈Deep PCA与PCANet的更多相关文章
- 卷积神经网络的变种: PCANet
前言:昨天和大家聊了聊卷积神经网络,今天给大家带来一篇论文:pca+cnn=pcanet.现在就让我带领大家来了解这篇文章吧. 论文:PCANet:A Simple Deep Learning Bas ...
- XNOR-Net:二值化卷积神经网络
https://www.jianshu.com/p/f9b015cc4514 https://github.com/hpi-xnor/BMXNet BMXNet:基于MXNet的开源二值神经网络实现 ...
- Deep Learning 5_深度学习UFLDL教程:PCA and Whitening_Exercise(斯坦福大学深度学习教程)
前言 本文是基于Exercise:PCA and Whitening的练习. 理论知识见:UFLDL教程. 实验内容:从10张512*512自然图像中随机选取10000个12*12的图像块(patch ...
- Deep Learning 4_深度学习UFLDL教程:PCA in 2D_Exercise(斯坦福大学深度学习教程)
前言 本节练习的主要内容:PCA,PCA Whitening以及ZCA Whitening在2D数据上的使用,2D的数据集是45个数据点,每个数据点是2维的.要注意区别比较二维数据与二维图像的不同,特 ...
- PCANet: A Simple Deep Learning Baseline for Image Classification?----中文翻译
一 摘要 在本文中,我们提出了一个非常简单的图像分类深度学习框架,它主要依赖几个基本的数据处理方法:1)级联主成分分析(PCA);2)二值化哈希编码;3)分块直方图.在所提出的框架中,首先通过PCA方 ...
- Deep Learning学习随记(二)Vectorized、PCA和Whitening
接着上次的记,前面看了稀疏自编码.按照讲义,接下来是Vectorized, 翻译成向量化?暂且这么认为吧. Vectorized: 这节是老师教我们编程技巧了,这个向量化的意思说白了就是利用已经被优化 ...
- Deep Learning 学习笔记(9):主成分分析( PCA )与 白化( whitening )
废话: 这博客有三个月没更新了. 三个月!!!尼玛我真是够懒了!! 这三个月我复习什么去了呢? 托福………… 也不是说我复习紧张到完全没时间更新, 事实上我甚至有时间打LOL. 只是说,我一次就只能( ...
- PCANet: A Simple Deep Learning Baseline for Image Classification?--名词解释
1 上采样与下采样 缩小图像(或称为下采样(subsampled)或降采样(downsampled))的主要目的有两个: 使得图像符合显示区域的大小 生成对应图像的缩略图 下采样原理:对于一幅图像I尺 ...
- 深度学习笔记——PCA原理与数学推倒详解
PCA目的:这里举个例子,如果假设我有m个点,{x(1),...,x(m)},那么我要将它们存在我的内存中,或者要对着m个点进行一次机器学习,但是这m个点的维度太大了,如果要进行机器学习的话参数太多, ...
随机推荐
- uwsgs loading shared libraries: libicui18n.so.58 异常处理
背景 想使用 ningx + uwsgi + flask 搭建 python 应用环境 Python使用的是anaconda3(pyhton 3.6) 依赖包安装完毕,但是执行 uwsgi 的时候出现 ...
- Linux常用命令大全--有关磁盘空间的命令
1.mount 命令的功能是挂载文件系统,可以挂载硬盘.光盘.软盘,也可以挂载NFS网络文件系统 mount -t 设备类型 存放目录 mount IP地址:/所提供的目录 存放目录 (无) 不加任何 ...
- Android开发——获取应用数据/缓存大小并清理缓存
1. 获取应用数据/缓存大小 其中pm为实例化的PackageManager,因为需要遍历所有的已安装的应用.因此需要开启子线程进行处理. 还有需要注意的是,在Android4.2之前getPacka ...
- python编程之API入门: (二)python3中使用新浪微博API
回顾API使用的流程 通过百度地图API的使用,我理解API调用的一般流程为:生成API规定格式的url->通过urllib读取url中数据->对json格式的数据进行解析.下一步,开始研 ...
- Python 单向队列Queue模块详解
Python 单向队列Queue模块详解 单向队列Queue,先进先出 '''A multi-producer, multi-consumer queue.''' try: import thread ...
- zoj 2772 Quick Change
Quick Change Time Limit: 2 Seconds Memory Limit: 65536 KB J.P. Flathead's Grocery Store hires c ...
- Git x SVN 当前工作流程
git-svn 当前工作流程 @ixenos 2018-12-27 21:37:47 前言:用惯了git,再用svn简直反人类,所以……还是用git-svn过渡一下 (由于远程还没有dev,直接坑爹地 ...
- Dividing coins (01背包)
It’s commonly known that the Dutch have invented copper-wire. Two Dutch men were fighting over a nic ...
- 71.mybatis 如何获取插入的id【从零开始学Spring Boot】
[从零开始学习Spirng Boot-常见异常汇总] 在之前的文章已经讲过spring boot集成mybatis了,但是忘记说一个很重要的知识点了,那就是获取获取主键id,这篇文章补充下,sprin ...
- 按Esc按钮关闭layer弹窗
//按Esc关闭弹出框 $(document).ready(function () { }).keydown( function (e) { if (e.which === 27) { layer. ...