又到了无聊的写博客的时间了,因为电脑在跑程序。眼下无事可做。我认为把昨天我看的一些论文方面的知识拿出来和大家分享一下。

  美其名曰我是在研究”深度学习“。只是因为本人是穷屌丝一个,买不起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的更多相关文章

  1. 卷积神经网络的变种: PCANet

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

  2. XNOR-Net:二值化卷积神经网络

    https://www.jianshu.com/p/f9b015cc4514 https://github.com/hpi-xnor/BMXNet  BMXNet:基于MXNet的开源二值神经网络实现 ...

  3. Deep Learning 5_深度学习UFLDL教程:PCA and Whitening_Exercise(斯坦福大学深度学习教程)

    前言 本文是基于Exercise:PCA and Whitening的练习. 理论知识见:UFLDL教程. 实验内容:从10张512*512自然图像中随机选取10000个12*12的图像块(patch ...

  4. Deep Learning 4_深度学习UFLDL教程:PCA in 2D_Exercise(斯坦福大学深度学习教程)

    前言 本节练习的主要内容:PCA,PCA Whitening以及ZCA Whitening在2D数据上的使用,2D的数据集是45个数据点,每个数据点是2维的.要注意区别比较二维数据与二维图像的不同,特 ...

  5. PCANet: A Simple Deep Learning Baseline for Image Classification?----中文翻译

    一 摘要 在本文中,我们提出了一个非常简单的图像分类深度学习框架,它主要依赖几个基本的数据处理方法:1)级联主成分分析(PCA);2)二值化哈希编码;3)分块直方图.在所提出的框架中,首先通过PCA方 ...

  6. Deep Learning学习随记(二)Vectorized、PCA和Whitening

    接着上次的记,前面看了稀疏自编码.按照讲义,接下来是Vectorized, 翻译成向量化?暂且这么认为吧. Vectorized: 这节是老师教我们编程技巧了,这个向量化的意思说白了就是利用已经被优化 ...

  7. Deep Learning 学习笔记(9):主成分分析( PCA )与 白化( whitening )

    废话: 这博客有三个月没更新了. 三个月!!!尼玛我真是够懒了!! 这三个月我复习什么去了呢? 托福………… 也不是说我复习紧张到完全没时间更新, 事实上我甚至有时间打LOL. 只是说,我一次就只能( ...

  8. PCANet: A Simple Deep Learning Baseline for Image Classification?--名词解释

    1 上采样与下采样 缩小图像(或称为下采样(subsampled)或降采样(downsampled))的主要目的有两个: 使得图像符合显示区域的大小 生成对应图像的缩略图 下采样原理:对于一幅图像I尺 ...

  9. 深度学习笔记——PCA原理与数学推倒详解

    PCA目的:这里举个例子,如果假设我有m个点,{x(1),...,x(m)},那么我要将它们存在我的内存中,或者要对着m个点进行一次机器学习,但是这m个点的维度太大了,如果要进行机器学习的话参数太多, ...

随机推荐

  1. 《算法导论》 — Chapter 8 线性时间排序

    序 到目前为止,关于排序的问题,前面已经介绍了很多,从插入排序.合并排序.堆排序以及快速排序,每一种都有其适用的情况,在时间和空间复杂度上各有优势.它们都有一个相同的特点,以上所有排序的结果序列,各个 ...

  2. Vijos 1308 埃及分数(迭代加深搜索)

    题意: 输入a.b, 求a/b 可以由多少个埃及分数组成. 埃及分数是形如1/a , a是自然数的分数. 如2/3 = 1/2 + 1/6, 但埃及分数中不允许有相同的 ,如不可以2/3 = 1/3 ...

  3. django1.11 启动错误:Generator expression must be parenthesized

    错误信息: Unhandled exception in thread started by <function check_errors.<locals>.wrapper at 0 ...

  4. AutoItLibrary之键盘操作(send)

    最近有人问到我键盘操作用什么库?用到库里面的哪个方法?我在这里总结一下,第一次写,有片面的地方还请指出,一块进步.1.首先,用到的库是AutoItLibrary,用到的方法是send:按F5可用看到 ...

  5. Python 迭代器&生成器,装饰器,递归,算法基础:二分查找、二维数组转换,正则表达式,作业:计算器开发

    本节大纲 迭代器&生成器 装饰器  基本装饰器 多参数装饰器 递归 算法基础:二分查找.二维数组转换 正则表达式 常用模块学习 作业:计算器开发 实现加减乘除及拓号优先级解析 用户输入 1 - ...

  6. tarjan求割边割点

    tarjan求割边割点 内容及代码来自http://m.blog.csdn.net/article/details?id=51984469 割边:在连通图中,删除了连通图的某条边后,图不再连通.这样的 ...

  7. [Go]接口的运用

    在Go语言中,不能通过调用new函数或make函数创建初一个接口类型的值,也无法用字面量来表示一个接口类型的值.可以通过关键字type和interface声明接口类型,接口类型的类型字面量与结构体类型 ...

  8. python学习之-项目开发目录规范

    软件目录结构规范有什么好处: 通过规范化,能够更好的控制软件结构,让程序具有更高的可读性. 项目目录组织结构如下: Foo/ # 项目名 --bin/ # 可执行文件目录 --foo # 可执行程序 ...

  9. HDU 5668 Circle

    中国剩余定理. 可以手动模拟一下每一次开始的人的编号和结束的人的编号. 每次删掉一个人,对剩下的人重新编号. 这样一次模拟下来,可以得到n个方程 形如:(u[i]+k)%(n-i+1)=v[i] 化简 ...

  10. Python高级进阶(二)Python框架之Django写图书管理系统(LMS)

    正式写项目准备前的工作 Django是一个Web框架,我们使用它就是因为它能够把前后端解耦合而且能够与数据库建立ORM,这样,一个Python开发工程师只需要干自己开发的事情就可以了,而在使用之前就我 ...