在所有深度网络中,卷积神经网和图像处理最为密切相关,卷积网在很多图片分类竞赛中都取得了很好的效果,但卷积网调参过程很不直观,很多时候都是碰运气。为此,卷积网发明者Yann LeCun的得意门生Matthew Zeiler在2013年专门写了一篇论文,阐述了如何用反卷积网络可视化整个卷积网络,并进行分析和调优。由于课题研究需要使用卷积网,本人凭自己的理解将该文翻译成了中文,内容没有严格对齐原文,水平有限,难免出现大量错误,请大家包涵。
简单总结本文内容:当输入一张图片到卷积网中时,网络会逐级产生特征,但究竟是图片中的哪一部分刺激网络产生了特定特征,没法直接得到;作者想到了一种办法:将产生的特征通过反卷积技术,重构出对应的输入刺激,而重构的刺激只会显示真正有用东西,作者就可以通过分析这些信息来分析模型,实现模型调优。
PCANet: A Simple DeepLearning Baseline for Image Classification?; Tsung-HanChan, Kui Jia, Shenghua Gao, Jiwen Lu, Zinan Zeng, and Yi Ma
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滤波,第三个步骤为二值哈希化的过程;第四部是计算局部直方图的过程。
对于PCA滤波的过程,作者的做法是将训练集中每一幅图像分成大小为k1*k2的图像块,图像块之间可以进行重叠,然后将图像块转化为一个向量,并将同一幅图像的块对应的向量按列排列成一个矩阵(似乎是连接为一个向量,不是矩阵)Xi,然后将所有的训练图片得到的形成一个巨大的矩阵X,然后根据PCA的方法,j个特征向量V,然后将每个特征向量转化为一个大小为k1*k2的矩阵,使用这个矩阵来初始化卷积核,然后进行类似于CNN的卷积操作。第二个PCA滤波的过程也是这样的。(这似乎是用PCA来找到原矩阵中的主要特征,之后卷积就是看原图像中哪些地方包含了这些特征(激活)。做第二次的意思似乎是查激活点的特征)
在第二个PCA滤波之后,进行对输出结果进行二值哈希操作,得到L1*L2个二值化图像,然后L1个输入的图像对应的L2个图像中每个位置对应的像素的值作为一个二进制数的一个位,这样就可以将L1*L2幅图片压缩为L1幅图片。然后将每一幅图分成了B个块,对每个块进行直方图计算,然后将每个直方图连接起来成为一个向量,然后将L1幅图像对应的向量连接起来,作为输入图片的特征。这个就是PCANet特征提取方法。
从上面的算法流程中可以看出,PCANet的训练过程只是在训练集中进行特征向量计算的过程,并没有包括迭代和优化求解的过程,因此,训练过程很快,而测试过程基本上和CNN的前向过程一样。因此,PCANet与CNN区别最大的地方在于卷积核是直接通过PCA计算得到的,而不是像CNN一样通过迭代的过程得到的。
目前,针对不同的视觉识别任务,人们提出了许多各种各样的卷积神经网络结构,并取得了显著效果。例如较为成功的小波散射模型(ScatNet),其通过将卷积核改为小波核来避免算法学习的步骤。然而就是这一简单改动,使其居然能够在手写数字识别和文本识别等方面超过相同层次的卷积网络和深度神经网络,不过它在人脸识别方面表现不佳,难以应对光照变化和遮挡影响。
Human Action Recognition Using a ModifiedConvolutional Neural Network, Ho-Joon Kim, Joseph S. Lee, and Hyun-Seung Yang
这篇对于行为识别的主要处理流程如图1所示,主要流程是:首先进行背景分割,然后进行行为特征描述,接着使用CNN对行为特征进行进一步描述和增加不变性,最后进行分类。
从算法的流程中可以看出,CNN主要是作为特征的进一步提取和增加不变性而加入的,并且作者提出的是使用三维的CNN。这篇文章应该是第一个提出了三维CNN概念的人,后面的文章《3Dconvolutional neural networks for human action recognition》也是使用了这种思想。
Scalable Object Detection usingDeep Neural Networks,CVPR2014
文献主要提出了使用DNN用于物体检测,主要的贡献点有下面三个:
1.将物体检测问题定义为一个多个边框的坐标的回归问题;
2.将边框检测器的训练作为神经网络训练的一部分;
3.对于边界检测的训练过程中,不考虑类别的信息。
感觉这篇文章主要还是在于介绍在ILSVRC2012上面取得好成绩的算法的过程,也就是将DNN用于大规模数据的物体检测中,想要具体实用还需要仔细阅读这篇文章。
NewFeatures and Insights for Pedestrian Detection
文中使用改进的HOG,即HOF和CSS(colorself similarity)特征,使用HIKSVM分类器。
Joint Deep Learning forPedestrian Detection
该算法是与作者另外一篇论文的方法,另外的论文算法做图片扫描,得到矩形框,然后用该方法对矩形框进行进一步确认,以及降低误警率和漏警率。另外的论文是:Multi-StageContextual Deep Learning for Pedestrian Detection
说得难听一点,这篇文章对行人检测没有多大的贡献。仅仅是用深度学习的CNN做candidatewindow的确认。而主要的行人检测的算法还是HOG+CSS+adaboost
Multi-Stage ContextualDeep Learning for Pedestrian Detection
NetworkIn Network.Min Lin, Qiang Chen, Shuicheng Yan
传统的卷积层只是将前一层的特征进行了线性组合,然后经过一个非线性激活。而在文章中,作者提出了使用一个微小的神经网络(主要是多层感知器)来替代普通的卷积过程,当然,这个微小的神经网络也和卷积的权值共享一样,即对于相同的特征层是相同的。
Very Deep Convolutional Networksfor Large-Scale Image Recognition. Karen Simonyan,Andrew Zisserman
三.文献的目的
文献的主要目的在于测试随着深度的加深,卷积神经网络对于大规模图像分类和定位的作用。
四.文献的贡献点
图像分类:
作者通过实验发现,随着卷积层数的增加,卷积神经网络在ILSVRC-2014数据集上面的效果越来越好。
在前面的文章中,有论文表明,使用小的卷积核和小的步长能够取得比较好的效果,并且有论文表明,在训练和测试过程中使用不同比例的图像作为输入,能够获得更好的效果。作者在前面提到的两个基础上,进一步研究深度对于分类正确率的影响。
4.1 两个讨论
作者讨论了下面两点:
1.使用多个卷积核比较小的卷积层直接连接在一起,也能够获得和一个卷积核比较大的卷积层一个样的感受野大小,但是,使用多个卷积核比较小的卷积层不仅能够增加非线性,也能够减少参数的个数。
2.使用大小为1*1的卷积层能够在增加非线性的基础上,不改变感受野的大小。
4.2 训练过程的改进
在训练的过程中,作者先训练了一个层数比较浅的网络A,然后使用网络A的参数初始化其他层数比较深的网络,对于其他参数,都是采用随机初始化的方式进行的,所有的网络的所有参数都在训练过程中进行更新(包括使用网络A的参数进行初始化的参数)。
对于多个比例的训练过程,有两个做法:
1.对于不同的输入比例,训练不同的模型,为了对比,作者做了两个模型,一个是图像的最小边为256,另外一个是最小边为384,对于最小边为384的模型,作者使用最小边为256的模型来进行初始化;
2.使用多个不同比例的图像训练一个模型,这个模型是使用最小边为384的单个模型进行初始化的,然后使用不同比例的图像进行微调。
4.3 测试过程的改进
对于测试而已,主要是按照下面的流程进行:
1.将输入图片的最小边缩放到Q大小;
2.将第一个全连接层替换为7*7的卷积层;将后面的两个全连接层替换为1*1的卷积层(这个作者在文中说和《OverFeat: Integrated Recognition, Localization andDetection using Convolutional Networks.》的做法类似,但是并没有说明卷积核是如何得到的)。通过上面的操作,得到只有一个全是卷积的神经网络,这个网络输出的结果为每一个类别的得分图。
3.为了获得输入图片的不同类别的等分,将前面得到的得分图进行平均。
同时,作者也发现,使用两个模型联合起来进行预测,效果更好
Learning Invariant Features throughTopographic Filter Maps
文献主要提出了一种在稀疏表示的基础上,通过将稀疏系数拓展为一个2D矩阵,然后进行pooling,这样能够产生一个更加鲁棒的特征,同时,为了能够实时进行计算而不是每一次求解稀疏表示的时候都进行优化求解,作者用了一个回归函数来拟合求解稀疏表示的过程,然后将上面的这些扩展全部在优化函数中进行体现,通过求解优化函数,得到上面需要的参数过程。这个过程是一个非监督学习的过程。
作者主要是基于图像块进行处理的,因此,在进行图像识别实验的时候,需要先将图像进行分块,然后将图像块使用回归函数求解出稀疏表示,然后将稀疏表示拓展为2D的形式,进行pooling就可以得到图像块的特征,对于同一个图像的所有图像块都进行这样的操作,最后将所有的特征进行PCA,然后输入到SVM中进行分类。
这篇文章的主要创新点在于将pooling的概念用在了稀疏表示上面,产生了更加鲁棒的特征;对于提出回归函数代替优化求解的过程的想法,个人感觉多少有点猜的成分在里面,因为选择一个合适的回归函数的形式多少是有一些猜的因素在里面。
Combining the Right Features forComplex Event Recognition, ICCV2013
文献主要提出了一种使用图模型的特征选择和融合的方法(到底是如何做的呢?),用于将可以识别不同视频行为的特征进行融合选择,从而能够获得不同类别的一个特征表示,并使用每一个类别的特征进行SVM训练,在测试过程中,使用将每一个SVM得到的结果进行平均,来得到一个最终的结果。
这篇文献使用图模型进行特征选择和融合,不过这个是用于视频行为识别的,这个方法能够成功的前提是不同的视频行为能够通过不同的特征进行鉴别,也就是说不同的特征对于不同的行为的分类能力是不同的,这样才可以通过特征融合进行更好的识别。
这篇文章的算法过程我并没有看懂,但是,这篇文章的主要思路就是如何通过图模型来构建一个来进行特征选择,同时,通过一个结构的得分来进行对这个结构进行更新,直到整个结构收敛。这种方法确实很巧妙,如果要进行小的改进的话,可以在结构得分方面进行改进,如果有作者的代码的话,这方面实现应该不难。
这篇文章给我的另外一个启发就是:要想通过融合特征得到比单个特征好的效果的话,这两个特征必须是对不同的类别分类有较好的效果的,不然两个特征结合起来效果只会比效果差的特征好,而比效果好的特征差,处于两个特征效果的中间。
抓住两个要点:1)选择好的特征来融合2)分别使用各类特征
选择用 and/or图
模型表示:训练集中有N个视频,对应的类为y{-1, 1},对于每个视频提取m个特征集。用核功能Ki(x,x’)表示利用特征i来计算的两个实例的相似性。计算所有实例对(视频对)的核功能,对每个特征集,组成一个矩阵K={K1,K2, …, Km}。
我们的目的是发现一个这些核矩阵的联合方式,来识别事件的类。用and/or图来表示连接。。。。太麻烦了。
另一篇同类文章Complex Event Detection via Event Oriented DictionaryLearning
What is the BestMulti-Stage Architecture for Object Recognition?, KevinJarrett, Koray Kavukcuoglu, Marc’Aurelio Ranzato and Yann LeCun
文章主要是通过实验的方法回答了自己提出的三个问题:1.非线性变换是否影响识别效果;2.使用非监督或者有监督学习到的滤波器是否比随机产生或者人工选择的效果要好;3.级联两个特征提取是否效果比较好。
通过实验对比,作者对于上面三个问题有了回答:
1.实验证明,使用非线性能够显著提高识别效果;
2.使用非监督学习之后再进行监督学习能够获得最好的效果,但是这个最好的效果也仅仅是比单纯使用有监督的效果好一点而已,并不明显;同时,使用有监督和无监督都比使用随机滤波器和人工特征要好;
3.使用两次特征提取(或者说,层级的特征提取)效果要比单独一次特征提取效果要好,这个也就是深度学习的精髓。
DeepPose: Human PoseEstimation via Deep Neural Networks, CVPR2014
1.作者提出了如何使用CNN来进行姿态估计的公式;
2.作者提出了一种使用级联的方式来进行更准确的姿态估计器。
五.解决的问题和作者提出的方法
1.如何使用全局观点获得关节点的坐标的问题,对于每一个关节点,都把整个图像作为输入,同时,使用卷积神经网络来作为全局的特征提取;
2.对于节点的坐标在不同的图像中处理绝对坐标的问题,作者采用在每一个环节中,通过中点,长和宽选择一个boundbox,然后计算节点在bound box中的坐标,从而将绝对坐标转换为统一的坐标;
3.如何实现更高精度的坐标计算问题,作者提出的级联的卷积神经网络,在最初输入时,将图片设定为固定大小,通过缩放的方式将图片缩放到这个大小,在获得初步的节点坐标之后,再在原始图片中根据该坐标选择一定的局部区域,从而实现更高准确度的计算节点的坐标;
PANDA: Pose AlignedNetworks for Deep Attribute Modeling, Ning Zhang, Manohar Paluri,Marc’Aurelio Ranzato, Trevor Darrell, Lubomir Bourdev, CVPR2014
解决人的属性分类问题,同时,也解决使用CNN进行训练时需要大量训练样本的问题。
文献提出了一种结合CNN和Part-base方法的人体属性分类算法,通过将图片划分为小块,从而使得CNN能够更加方便地训练,从而可以从较小的数据集中学习到强大的形态归一化的特征。
五.解决的问题
1.part-based方法只能在图像块中使用底层特征,作者提出了使用CNN作为特征提取器,从而能够学到高层次的特征;
2.CNN需要大量的训练样本进行训练,为了解决这个问题,作者使用每一个poselet的激活值作为一个单独的训练样本;
3.由于人体的不同部分对于相同的信号有不同的反应,因此,使用局部块获得的信息不能表征人的属性,为了解决这个问题,作者在使用局部块获得特征之后,在最后又将这些特征组合起来。
4.由于postlet不能覆盖这个图片以及一些退化的图片而已,拥有较少的poselets检测器,为了解决这个问题,作者提出了将图片中整个人体区域的bounding box区域作为最终的姿态归一化特征的输入。
5.在实验的过程中,作者发现使用整个人体区域的话,需要一个复杂的CNN,因此,作者使用用Imagenet训练的CNN作为整个人体区域的特征提取器。
作者提出了一种使用CNN作为局部区域的特征提取器,然后将提取到的特征进行融合,最后使用线性SVM作为分类器,从而产生属性分类器。
Deepface: Closing the gap to human-levelperformance in face verification, Yaniv Taigman, Ming Yang, Marc’Aurelio Ranzato,Lior Wolf, CVPR2014
1.为了提取底层特征,例如边缘和结构特征,作者使用了在输入层之后使用了两个卷积层和一个MaxPooling层来获得这些特征;
2.为了解决使用太多的pooling层会使得人脸结构和一些细节的缺失,作者只使用了一个maxpooling层;
3.由于对于对齐后的人脸来说,每一个区域所包含的统计信息是不一样的,这与传统的共享权值的卷积有矛盾,为了解决这个问题,作者提出了在特征图的不同位置使用不同的卷积核,也就是在后面的卷积层中,不再使用权值共享;
Discriminative Deep Metric Learning forFace Verification in the Wild,Junlin Hu, Jiwen Lu, Yap-Peng Tan
这篇文献主要是介绍了使用深度神经网络通过学习距离测量矩阵来进行自然环境中的人脸验证,文献的主要贡献点在于使用了深度神经网络进行测量矩阵的学习,通过实验结果可以发现,对于自然环境的人脸验证,文章提出的方法有较高的性能。
DL-SFA: Deeply-Learned Slow Feature Analysisfor Action Recognition,Lin Sun, Kui Jiay, Tsung-Han Chany, Yuqiang Fang, GangWang], Shuicheng Yan
这篇文章主要是将用于视频中行为识别的SFA与深度学习进行结合,虽然说是结合,其实并没有用到深度学习的训练过程,只是将两个SFA进行级联,不过是在级联的过程中,将第一层SFA的核作为3D卷积层的卷积核对视频进行卷积,然后使用了两个maxpooling层,然后再次进行了SFA的学习。
Deep Fisher Kernels – End to End Learningof the Fisher Kernel GMM Parameters,CVPR2014
这篇文献主要讨论的是如何将基于Fisher核的SVM当做一个深度神经网络一样来进行训练,从而能够从训练数据中获得分类器参数和GMM参数。
Multi-source Deep Learning for Human PoseEstimation,CVPr2014
文章将用于人体姿态估计的三种不同的判断标准--混合类型、姿态得分和形变通过深度学习进行融合,从而得到更高层次和抽象的特征,以便更好地用于姿态估计。
文献的另外一个创新点是将三种不同的信息源先分别进行高层次的特征提取,然后再进行融合,这样做是因为这三个信息源具有不同的统计特征,直接进行融合效果不大。
这篇文献中关于信息融合部分的观点,可以考虑用于其他需要不同类型的特征进行融合的场合,可以进行特征进一步抽象后再进行融合,这样可以避免不同统计特性的特征进行融合后产生的信息缺失。
Learning Invariant Feature Hierarchies,Yann LeCun
文章中提到使用卷积PSD作为预训练,能够取得比完全使用监督训练的CNN更好的效果。
文章也提到,理论分析表明,对于Pooling操作而言,如果对于特征是稀疏的且Pooling范围比较小的话,可以使用无穷范式的Pooling过程,对于特征有较小的稀疏性或者Pooling区域比较小的情况,使用平均pooling或者L1、L2 范式的Pooling。在实际使用中,使用L2范式的Pooling是一个比较折中的选择。
FacialExpression Recognition via a Boosted Deep Belief Network, CVPR2014
文献主要提供了一种用于人脸表情识别的boost深度置信网络,由于人脸的表情主要和位置相关,因此,文章先将每一个人脸图片都划分为80个图片小块,然后每个小块分别建立一个深度置信网络,最后将这个80个置信网络进行boost,从而建立一个强分类器。
SwitchableDeep Network for Pedestrian Detection, CVPR2014
1.提出了一个统一的深度模型,将整个人体和人体的不同部分的将特征学习、显著性映射和混合特征表示通过层级结合起来;
2.在传统的CNN上面引入了一个可切换的RBM层;
3.提出了一种类似于EM算法的预训练算法,用于可切换层;
这个方法虽然也是将不同部分的特征进行结合,但是,结合的方式有点不同,每一部分都是通过一个选择层进行了选择之后,才进行的结合,同时,也使用了卷积层作为低层和中层的特征提取,后面才使用了SDN进行融合,相比起原来的方法,使用到了自动学习的特征,也是一个比较好的创新点。
LearningFine-grained Image Similarity with Deep Ranking, CVPR2014
http://blog.csdn.net/sheng_ai/article/details/39723995
文献提出了一种基于深度投票机制的图片细粒度相似性,以及一种在线训练算法。
深度投票机制主要基于三个部分的模型的组合,其中一个是深度卷积神经网络,另外两个是将下采样,卷积层和maxpooling层组合起来的浅层结构。深度结构主要是用于提取强大的不变性和语义级别的特征,而两个浅层结构主要是提取较少的不变性和视觉上的特征。
对于该结构如何进行训练和在线学习部分,没有仔细看,但是,在线学习肯定会是一个好的研究方向。
将高层次结构和低层次结构进行融合,然后作为一个特征进行其他的处理,这个本来是以前人工选择特征时候的做法,现在也出现在深度学习学习到的特征和底层特征之间了。
深度结构学习到的特征一般都是抽象级别比较高的,对于一向应用场景可能并不是使用,例如需要细粒度的地方,因此,可以在需要细粒度的地方融合深度学习学到的抽象特征和浅层结构学习到特征,也许能提高效果。
2006年,hinton提出了在非监督数据上建立多层神经网络的一个有效方法,简单的说,分为两步,一是每次训练一层网络,二是调优,使原始表示x向上生成的高级表示r和该高级表示r向下生成的x'尽可能一致。方法是:
1)首先逐层构建单层神经元,这样每次都是训练一个单层网络。
2)当所有层训练完后,Hinton使用wake-sleep算法进行调优。
Becoming the Expert - Interactive Multi-Class MachineTeaching. Edward Johns, Oisin Mac Aodha, Gabriel J. Brostow
http://www.mamicode.com/info-detail-925602.html
机器教导人学习的过程
1、机器首先展示一张图片A给人看,不告诉图片中物体的真实类别;
2、人对该图片进行判断,给出一个类别答案Ry;
3、机器根据人的判断结果对算法模型M进行更新优化;
4、接着机器将图片A的真实类别Ty告诉人;
5、重复以上步骤,直到学习结束。
总结
脑门开窍了不少,这种方法在在线教育,人机交互中有很大的应用价值。论文贡献:
1、全自动的学习,无需人为干预。类似背单词,在背之中就不知不觉被机器学习到了如何更好的教导人/学生。
2、由于教导的有效性,学习的时间会缩短,即效率会提高。
3、作者提供了一个网站,使得可以学习更多的目标类别和应用到其他的视觉任务重。
Deep Neural Networks Are Easily Fooled: High ConfidencePredictions for Unrecognizable Images