深度学习经典网络解析图像分类篇(三):ZFNet

本文涉及的产品
云解析 DNS,旗舰版 1个月
全局流量管理 GTM,标准版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介:  ZFNet在2013年 ILSVRC 图像分类竞赛获得冠军,错误率11.19% ,比去年的AlexNet降低了5%,ZFNet是由 Matthew D.Zeiler 和 Rob Fergus 在 AlexNet 基础上提出的大型卷积网络。ZFNet解释了为什么卷积神经网络可以在图像分类上表现的如此出色,以及研究了如何优化卷积神经网络。ZFNet提出了一种可视化的技术,通过可视化,我们就可以了解卷积神经网络中间层的功能和分类器的操作,这样就就可以找到较好的模型。ZFNet还进行消融实验来研究模型中的每个组件,它会对模型有什么影响。

1.背景介绍


 ZFNet在2013年 ILSVRC 图像分类竞赛获得冠军,错误率11.19% ,比去年的AlexNet降低了5%,ZFNet是由 Matthew D.Zeiler 和 Rob Fergus 在 AlexNet 基础上提出的大型卷积网络。ZFNet解释了为什么卷积神经网络可以在图像分类上表现的如此出色,以及研究了如何优化卷积神经网络。ZFNet提出了一种可视化的技术,通过可视化,我们就可以了解卷积神经网络中间层的功能和分类器的操作,这样就就可以找到较好的模型。ZFNet还进行消融实验来研究模型中的每个组件,它会对模型有什么影响。


 对应论文《Visualizing and Understanding Convolutional Networks》


91802a20725946bba019fb23d18309fa.png


2. ZFNet网络


2.1 ZFNet网络架构


 ZFNet网络结构和AlexNet保持一致,但是卷积核的大小和步长发生了变化。


 主要改进:


  ➢ 将第一个卷积层的卷积核大小改为了7×7。

  -➢ 将第二、第三个卷积层的卷积步长都设置为2。

  ➢ 增加了第三、第四个卷积层的卷积核个数。



21ed0433220f4864ad7536569fb7f45c.png


0a467c104d514fe0a39faa4420f2c9fc.png


2.2 ZFNet要点


2.1 通过反卷积可视化


 可视化可以理解卷积网络的操作需要解释中间层的特征活动。ZFNet提出了一种新颖的方法来将这些活动映射回输入像素空间,显示最初在特征映射中引起给定激活的输入模式。ZFNet使用反卷积网络(deconvnet)实现此映射。反卷积网络可以被认为是一个使用相同组件(过滤,池化)的逆向的卷积模型,即不是将像素映射到特征,而是将特征映射到像素。,它们不会用于任何学习能力,仅作为对已经训练好的卷积网络的探索。


6dbce3ae39124ee6b35098aba15784cf.png


  如上图所示,为了检查一个卷积网络,网络的每个层都附有一个反卷积网络,提供了一条返回图像像素的连续路径。首先,将输入图像呈现给卷积网络并通过所有层计算特征。为了检查给定卷积网络的激活,我们将图层中的所有其他激活设置为零,并将特征图作为输入传递给附加的反卷积网络层。然后我们依次反池化、纠正和过滤以重建下面的层中的活动,从而产生所选择的激活。 然后重复这一过程,直到达到输入像素空间。


 反池化:池化的逆运算,但可以用一组转换变量switch在每个池化区域中通过记录最大值的位置来获得一个近似逆。在反卷积网中,反池化操作使用这些转换来放置上述最大值的位置,保存激活的位置,其余位置都置0。


 纠正:卷积网中使用非线性的ReLU来修改特征图来确保特征图总是正值。为了获得在每层的有效(也应该是正值)的特征重建,也在反卷积网中利用了ReLU。


 滤波:反卷积网中利用卷积网中的相同的滤波器的转置应用到纠正过的特征图中,而不是上层的输出。也就是对滤波器进行水平方向和垂直方向的翻转。从高层向下投影使用转换变量switch,这个转化变量switch产生自向上的卷积网的最大池化操作。由于重建由一个单独的激活获得,因此也就只对应于原始输入图像的一小块。


 可视化结果:


 下图显示了培训完成后模型的特征可视化。 可以发现通过CNN学习后,学习到的是具有辨别性的特征,比如要我们区分人脸和狗,那么通过CNN学习后,背景部位的激活度基本很少,我们通过可视化就可以看到我们提取到的特征忽视了背景,而是把关键的信息给提取出来了。Layer 1、Layer 2学习到的特征基本上是颜色、边缘等低层特征;Layer 3学习到的是纹理特征,比如上面的一些网格纹理;Layer 4学习到的则是比较有区别性的特征,比如狗;Layer 5学习到的则是具有辨别性关键特征。


dc23e7f8bd474e26b3a2ced4d709204b.png


2.2 CNN的平移和缩放不变性


 不变性意味着即使目标的外观发生了某种变化,但是你依然可以把它识别出来。平移是一种几何变换,表示把一幅图像或一个空间中的每一个点在相同方向移动相同距离。比如对图像分类任务来说,图像中的目标不管被移动到图片的哪个位置,得到的结果(标签)应该是相同的,这就是卷积神经网络中的平移不变性。

为什么CNN具有平移不变性?


 简单地说,卷积+最大池化约等于平移不变性。

 卷积:图像经过平移,相应的特征图上的表达也是平移的。

池化:比如最大池化,它提取感受野中的最大值,如果最大值被移动了,但是仍然在这个感受野中,那么池化层也仍然会输出相同的最大值。


CNN层数越高不变性越强,但是不具有旋转不变性。


 下图按行顺序分别为对5类图像进行不同程度的垂直方向上的平移、尺度变换、旋对输出结果影响的分析图。a1为原始变换图像,a2是原始图片的欧氏距离,a3是经过7层变换后的图片的欧氏距离,a4是变换后图片被正确分类的概率图。


b5325efa93594341b4592752d952d2aa.png


2.3 可视化特征学习的过程


 下图显示了,在网络训练过程中,每一层学习到的特征是怎么变化的,上面每一整张图片是网络的某一层特征图,然后每一列有8个小图片,分别表示网络epochs次数为:1、2、5、10、20、30、40、64的特征图:


86117228e1c443838b18f419d0e61775.png


1.仔细看每一层,在迭代的过程中的变化,出现了sudden jumps;


2.从层与层之间做比较,我们可以看到,低层在训练的过程中基本没啥变化,比较容易收敛,高层的特征学习则变化很大。


3.从高层网络conv5的变化过程,我们可以看到,刚开始几次的迭代epochs,基本变化不是很大,但是到了40~50的迭代epochs的时候,变化很大。


556b5b9beabd4f76bd03e34a6bb16b3d.png


 再上图中(a):经过裁剪的图片经过第一个卷积层后的特征可视化图。一个特征占主导地位。(b):AlexNet在卷积后的第一层特征。(c):ZFNet在卷积后的第一层特征。较小的步长(2 vs 4)和卷积核尺寸(7x7 vs 11x11)导致更多有效特征和更少的无效特征。(d):AlexNet在第二层卷积后特征的可视化。(e):ZFNet第二层卷积后特征的可视化。它们更干净,没有(d)中可见的混叠伪影。


2.4 卷积的工作原理


 CNN到底是如何来学习图像特征的?如果给一张狗的照片,背景是家具,那么卷积是如何确定狗在图像中的位置的?ZFNet进行了消融实验:使用用灰色方块覆盖场景的不同部分

 

4ba6851f9bcc4e3b87bfefa8c29ce70d.png


 上图使用了三个测试示例,a列是原始被遮盖的图像,b列是被灰色小方块掩盖后的网络结构中第五层的特征图,c列是把第五层的特征图(b)反卷积的可视化图像,我们可以看到每幅图像的特征区域。d列为正确分类概率的图,e列是分类的概率。


 更进一步探究在深度模型中如何对同一类物体的不同图像进行一致性分析:


 对五张不同种类的小狗的图片的不同区域(依次遮挡住左眼,右眼,鼻子等)进行掩盖,然后进行分析观察探究深度模型是对一类物体的那部分进行一致性分析的过程:


902bcfa80a3342269f5c62e852f2091d.png


7a6d2aab3c2f4c96882992572ef3f345.png


 在5个不同的狗图像中的不同物体部分的对应性。眼睛和鼻子的得分较低 (与随机物体部分相比),这表明模型隐含地建立了某种形式的对应关系,在模型的第5层,各部分的对应关系。在第7层,这些分数更加相似,也许是由于上层试图区分不同品种的狗。

这表明底层判别的是一类物体共有的部分,而高层判别的是类别中不同的品种这种更高维的部分。


3. ZFNet总结


 ZFNet的结构与AlexNet一致,为什么能够下降五个点?这让我们对神经网络里面的每一个神经元或者卷积在做什么有了更深入的理解。


 ZFNet将第一个卷积层大小改成7×7了,原来是11×11,第一个卷积层大大小改小了以后,最大作用就是能感受更细致的东西,我们知道11×11是大尺度的模板,它检测的一般都是比较粗旷粒度的系列的特征,比较细节的特征一般不太看,所以这个时候呢第一层卷积用大模板去套的时候就丢掉了很多细节信息。所以ZFNet将第一个卷积层大小改成7×7为后面层的更好的特征学习奠定了基础。


 ZFNet增加了第三层和第四层卷积核个数。通过反卷积可视化以后发现,第三层、第四层的卷积核已经有一些语义概念的这种结构元素了,就是他那个描述的元素,就像前面几幅图刚才看到前面那个他们有一定的结构,有意义、有语义信息了。如果这个时候我的卷积核的个数太少了,能记住的语义结构就很少,就是能学习到的语义结构就很少,如果这一层有512个卷积核的话,就能描述512种模式结构。如果这一层只有384个卷积核,那我能描述的结构只有384个,这么多物体只记得384个模板不太够用。所以ZFNet扩张了这一层的卷积核的个数,当然这不是拍脑袋想的,是他发现了这一层第三层和第四层已经开始不再是基元,结果我们认为世界的基元总是很少的,它的组合能组合出任意复杂的东西,所以基元不需要那么多东西,但是到了高层概念以后,他已经有基元组合的概念。已经有很多了,组合起来东西有很多种,结果你仅靠384个是记不住的。


 总体上来说,ZFNet反卷积操作实现对中间层的可视化,ZFNet针对可视化结果对网络结构进行改进

目录
相关文章
|
4天前
|
机器学习/深度学习 并行计算 PyTorch
图像检测【YOLOv5】——深度学习
Anaconda的安装配置:(Anaconda是一个开源的Python发行版本,包括Conda、Python以及很多安装好的工具包,比如:numpy,pandas等,其中conda是一个开源包和环境管理器,可以用于在同一个电脑上安装不同版本的软件包,并且可以在不同环境之间切换,是深度学习的必备平台。) 一.Anaconda安装配置. 1.首先进入官网:https://repo.anaconda.com,选择View All Installers. 2.打开看到的界面是Anaconda的所以安装包版本,Anaconda3就代表是Python3版本,后面跟的是发行日期,我选择了最近的2022
41 28
|
2天前
|
机器学习/深度学习 人工智能 TensorFlow
深度学习入门:理解卷积神经网络(CNN)
【9月更文挑战第14天】本文旨在为初学者提供一个关于卷积神经网络(CNN)的直观理解,通过简单的语言和比喻来揭示这一深度学习模型如何识别图像。我们将一起探索CNN的基本组成,包括卷积层、激活函数、池化层和全连接层,并了解它们如何协同工作以实现图像分类任务。文章末尾将给出一个简单的代码示例,帮助读者更好地理解CNN的工作原理。
15 7
|
3天前
|
机器学习/深度学习 自然语言处理 计算机视觉
深度学习之文本引导的图像编辑
基于深度学习的文本引导的图像编辑(Text-Guided Image Editing)是一种通过自然语言文本指令对图像进行编辑或修改的技术。
21 8
|
5天前
|
机器学习/深度学习 自然语言处理 并行计算
深度学习之图像描述生成
基于深度学习的图像描述生成(Image Captioning)是一种将计算机视觉与自然语言处理结合的任务,其目标是通过自动生成自然语言来描述输入的图像。该技术能够理解图像中的视觉内容,并生成相应的文本描述,广泛应用于视觉问答、辅助盲人、自动视频字幕生成等领域。
20 7
|
1天前
|
机器学习/深度学习 自动驾驶 搜索推荐
深度学习之探索神经网络、感知器与损失函数
在当今的数字化时代,深度学习作为一种强大的机器学习技术,正在迅速改变着我们的生活方式。无论是智能推荐系统、自动驾驶车辆还是语音识别应用,深度学习都在背后默默地发挥作用。
8 1
|
4天前
|
存储 安全 算法
网络安全与信息安全的全方位解析
在现代社会,随着信息技术的飞速发展,网络安全和信息安全问题日益凸显。本文将通过浅显易懂的语言和具体的实例,全面解析网络安全漏洞、加密技术以及安全意识等方面的知识,帮助读者提升对网络安全与信息安全的认知和应对能力。
|
5天前
|
机器学习/深度学习 监控 并行计算
深度学习之生物网络推理
基于深度学习的生物网络推理利用深度学习技术来解析和理解生物网络(如基因调控网络、代谢网络、蛋白质-蛋白质相互作用网络等)的复杂关系和动态行为。
18 5
|
4天前
|
机器学习/深度学习 编解码 自然语言处理
深度学习中的对抗生成网络
本文深入探讨了深度学习中的一种重要模型——对抗生成网络(GAN)。通过详细介绍其基本原理、结构组成以及训练过程,揭示了GAN在数据生成方面的独特优势。同时,文章还讨论了GAN在图像处理、自然语言处理等领域的广泛应用,并指出了其面临的挑战及未来发展方向。
11 2
|
5天前
|
机器学习/深度学习 人工智能 自然语言处理
探索AI的奥秘:深度学习与神经网络
【9月更文挑战第11天】本文将深入探讨人工智能的核心领域——深度学习,以及其背后的神经网络技术。我们将从基础理论出发,逐步深入到实践应用,揭示这一领域的神秘面纱。无论你是AI领域的初学者,还是有一定基础的开发者,都能在这篇文章中获得新的启示和理解。让我们一起踏上这场探索之旅,揭开AI的神秘面纱,体验深度学习的魅力。
|
6天前
|
机器学习/深度学习 人工智能 TensorFlow
深入骨髓的解析:Python中神经网络如何学会‘思考’,解锁AI新纪元
【9月更文挑战第11天】随着科技的发展,人工智能(AI)成为推动社会进步的关键力量,而神经网络作为AI的核心,正以其强大的学习和模式识别能力开启AI新纪元。本文将探讨Python中神经网络的工作原理,并通过示例代码展示其“思考”过程。神经网络模仿生物神经系统,通过加权连接传递信息并优化输出。Python凭借其丰富的科学计算库如TensorFlow和PyTorch,成为神经网络研究的首选语言。
11 1