ImageNet Classification with Deep Convolutional Neural Network解读

本文主要是介绍ImageNet Classification with Deep Convolutional Neural Network解读,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

ImageNet Classification with Deep Convolutional Neural Network

本文是Alex和Hinton参加ILSVRC2012比赛的卷积网络论文,本网络结构也是开启Imagenet数据集更大,更深CNN的开山之作,本文对CNN的一些改进成为以后CNN网络通用的结构;在一些报告中被称为Alex-net,之后在Imagenet上取得更好结果的ZF-net,SPP-net,VGG等网络,都是在其基础上修改得到。

摘要:

本文训练了一个大的,深的CNN,去分类高像素的图片。在ILSVRC2010中,top-1和top-5的成绩分别为37.5%和17.0%;这个大的网络包含6千万个参数和65万的神经元;由5个卷基层,3个全连接层和最终分类器构成。利用了RELU,dropout,data augmentation等多种防止过拟合的技术。在ILSVRC-2012中获得了top-5分类准确率为15.3%。

 一,介绍

直到最近,有标记的图片数据集还是比较小,例如NORB,MNIST,CIFAR,Caltech等,由于小数据集上物体变化相对较少,一些的识别方法可以得到不错的结果,尤其是是使用数据增益技术的时候,可以提高识别率。但是现实世界中的物体具有很大的变化,所以想要识别他么需要更大的数据集。ImageNet数据集包含了1500万张高像素图片,大约2万2千类。

……大数据,更多类别,需要更大“容量“的网络;卷积网络就是一个好的选择,局部连接,权值共享等特征,使其参数少,训练容易;而且还可以通过长度,和宽度来控制”容量“。

尽管CNN有很多优势,但是对于高像素图像的分类问题,计算仍然是一个主要的瓶颈。幸运的是,高性能GPU,并行计算,高度优化的2D卷积计算是的训练成为可能。

本文在两个GTX580上训练了5到6天。

二,数据集

ILSVRC使用ImageNet的一个子集,一共1000个类别,每个类别包含大约1000张图片;训练集120万张,验证集5万张,15万张测试集。

三,结构

作者首先描述一些新奇和不一样的结构特征,描述顺序按照估计重要性排列。

3.1 ReLU非线性

模拟神经元输出的标准函数一般是:tanh(x)或者sigmoid(x)函数,由于此类函数在x非常大或者非常小时,函数输出基本不变,所以此类函数成为饱和函数;f(x)=max(0,x),扭曲线性函数,是一种非线性的非饱和函数。在训练时间上,非饱和函数比饱和函数训练更快。而且这种扭曲线性函数,不但保留了非线性的表达能力,而且由于其具有线性性质(正值部分),相比tanh和sigmoid函数在误差反向传递时,不会有由于非线性引起的梯度弥散形象(顶层误差较大,由于逐层递减误差传递,引起低层误差很小,导致深度网络地层权值更新量很小,导致深度网络局部最优)。ReLU的这些性质可以让我们训练更深的网络。

3.2在多个GPU上计算

一个GTX580的内存只有3GB,有限的内存限制了可以在GPU上训练的最大网络。作者把网络一分为二,分配到2个GPU上,通过并行计算来解决。不用通过主机的缓存,当前GPU相互间可以很好进行读写操作。

这里作者有一个小技巧,GPU相互“沟通”;例如,网络中layer-3的filter把layer-2的所有特征图作为输入,而其它卷积层,只从同一个GPU内的上一层特征图作为输入。为什么layer-3把layer-2的全部特征图作为输入而且它层却不这样,这个作者并没有解释理论依据,通过交叉验证实验得来的。最终的结构有点类似Cresian提出的多列卷积网络,但是本文的网络不是完全独立的;这种方式可以提高1.2%的准确率。

3.3局部归一化

ReLU函数,不需要归一化来防止饱和现象,如果没有神经元产生一个正的激活值,学习就会在这个神经元发生;然而,作者发现局部归一化帮助泛化。

局部归一化公式:

\

具体方式:

选取临近的n个特征图,在特征图的同一个空间位置(x,y),依次平方,然后求和,在乘以alpha,在加上K。这个局部归一化方式“what is the best multi-stage architecture for Object Recognition”中的局部归一化方法不同;本文的归一化只是多个特征图同一个位置上的归一化,属于特征图之间的局部归一化(属于纵向归一化),作者命名为亮度归一化;“what……”论文中在特征图之间基础上还有同一特征图内邻域位置像素的归一化(横向,纵向归一化结合);“what……”归一化方法计算复杂,但是没有本文中alpha,k,n等参数,本文通过交叉验证来确定这三个参数;此外,本文的归一化方法没有减去均值,感觉是因为ReLU只对正值部分产生学习,如果减去均值会丢失掉很多信息。

这种归一化方式对结果有1%左右的提升。

3.4重叠Pooling

         本文pooling区域为z*z=3*3,间隔距离为s=2.对比z=2,s=2的无重叠方式,提升0.4%的结果(感觉有点小);此外作者还发现使用重叠pooling,不容易过拟合。

3.5全局结构如图

连接方式:layer-3连接上一层的所有特征图,其他卷基层只连接同一个GPU内的特征图;网络既有全连接又有局部连接,可以看做两个大部分“独立”,局部互联的网络。

局部归一化LRN:第一,和第二层后使用

Max_pooling:第1,2卷积层后使用

ReLU:应用在每个卷基层和最后的fc层。

\

3.1 整体结构

本文的网络结构Alex-net:

Input(224,224,3)→96F1(11,11,3,s=4)→LRN→max-P1(3,3,2)→256F2(3,3,96)→LRN→max-P2(3,3,2)→384F3(3,3,192)→384F4(3,3,192) →256F5(3,3,192)→max-P3(3,3,2)→4096fc1→4096fc2→Classifer1000

上一篇博文“Flexible,high performance convolutional neural networks for image classification”中对CIFAR-10分类的网络结构,Dan-net(个人命名):

Input(32,32,3) →100F1(3,3,0) →max-P1(3,33) →100F2(3,3,0) →max-P2(2,2,2) → 100F3(3,3,0) →max-P3(2,2,2)→300fc1 →100fc2 →Classifer10

在网络结构对比可以看出,本文的Alex-net(或者叫做Krizhevsky-net)就是Dan-net的放大版本,由于ImageNet数据集比CIFAR数据集图片更大,种类更多所以需要增加网络的深度和宽度,来增加网络的容量。

网络具体配置方案,两篇论文的作者并没有给出具体的说明,因为深度网络结构并理论基础并不完善,什么数据集,需要匹配多深多宽的网络,并没有理论依据;感觉这个需要经验和反复的实验来最终确定网络结构。所以在网络结构上两篇网络并不是最优解,但都是可行的,可以说算是满意解吧。卷积阶段的详细结构,filter尺寸,filter个数,间隔距离S这里暂时先不探讨,后面的论文会有探讨。

四,减少过拟合

4.1数据增益

数据增益是最简单的减少过拟合的方法。

方法一:生产平移图像,水平翻转

\

原始图像为一个大图a,想把一短边缩小到256维得到b,然后在b的中心取256*256的正方形图片得到c,然后在c上随机提取224*224的小图片作为训练样本,然后在结合图像水平反转来增加样本达到数据增益。这种增益方法是样本增加了2048倍,允许我们运行更大的网络。

具体操作过程是四部并行:GPU正在训练第n批次数据,同时正在把第n+1批次数据复制到GPU中,同时CPU正在增益第n+2批次数据(此处用python实现),同时正在从硬盘上加载地n+3批次数据。

增溢方法二:调整RGB像素值

这个没有太看明白,貌似是先对一个图片进行主成分分析,然后给RGB分别加上一个量。

\

RGB像素的3*3相关系数矩阵M,对M求特征值lamda(i)和特征向量p(i),alpha(i)是服从高斯分布,标准差为0.1的随机变量。

这种数据增益技术,捕捉了自然图像一个重要的性质,即改变颜色和像素值,物体是不变的。

这种增益技术使得结果有1%的提升。

4.2 Dropout

在fc层应用dropout,fropout是一种通过丢掉神经元的模型平均技术,具体参看前面的博文。

4.3 测试方法

在256*256图片的四角和中心提取5个224*224片段,在水平翻转后形成10个样本,输入网络结果求平均。

5 训练细节

本文使用带动量项的梯度下降法SGD。

批量D=128;动量项v=0.9,权值削减weightdecay wd=0.0005, W服从均值为0,标准差为0.01的高斯分布。、

偏置项:第2,4,5卷基层和两个全连接层的b=1(促进最初阶段ReLU的学习);其它层b=0。

学习率:初始为0.01,当验证集停止提高时,手动缩减学习率(除以10)

\

6 结果

在ILSVRC2012上,单个模型的top-5结果为18.2%;5个模型求平均结果为16.4%。

在本文网络基础上,作者又添加了第6个卷基层,并在整个ImageNet(150万张,22K个类别)上训练这个新的网络,然后再在ILSVR2012上finetuning“训练”这个网络,最后获得了16.6%的准确率,两个模型结果为15.3%。

在一个大的数据集训练网络,然后在另一现对较小的数据上finetuning网络的方式,类似transfer learning,在以后的论文中经常出现。

6.1 “性质”评价

\

从第一个卷基层卷积核可视图可以看出,卷积核具有方向,“频率”选择性,还有一些圆点状的(也有许多死的卷积核后面文章在叙述,训练不完全导致);无论在什么初始值下,值得注意的是两个GPU学习到的卷积核不一样,GPU1学习到的特征不具有没有设么颜色,GPU2学习到的特征大部分制定了颜色,这个比较有意思;相同的结构,学习的卷积核却很不同。

另一个值得注意的地方就是在最后的一个具有4096个神经元的全连接层,通过计算欧氏距离,欧氏距离比较近的图片具有相似的图片对象。说明网络确实提取到了有用的特征,此外作者还介绍可以通过在4096处,通过一个Autoencoder算法,来生产一个维数较少的二元向量,这样就可以通过比较这个维数较小的向量来进行图像检索了。

7 讨论

网络深度很重要,移除任何一个层,都会导致结果下降2%左右。

8一些理解和困惑

首先是佩服三位大牛作者,经验上暂时不说,就是网络结构中的各种交叉验证就够恼人的了,验证LRN阶段的参数,验证两个GPU的互联方式,在验证网络结构;各种验证需要很多的实验;真是佩服大牛的精神。

感觉本文结构上并不是本文最大的创新,感觉最大的贡献在于整合各种技巧;例如ReLU是本文作者hinton10年提出来的改善RBM性能的,把ReLU引入深度CNN中,使得ReLU成为以后深度网络普遍使用的非线性函数,从而在这个领域替代经典的sigmoid,tanh函数。Dropout是hinton12年提出改善深度网络泛化能力;LRN是“what……”论文使用的方法,本该简化改进了该归一化方法;而通过纯监督方法学习深度CNN在上一篇论文中已经证明是有效的;最终通过作者的整合得到一个标准的深度CNN网络,在ILSVR2013和2014的很多论文都是在结构上修改这个网络,从而获得更好的结果。


这篇关于ImageNet Classification with Deep Convolutional Neural Network解读的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/957979

相关文章

poj 2349 Arctic Network uva 10369(prim or kruscal最小生成树)

题目很麻烦,因为不熟悉最小生成树的算法调试了好久。 感觉网上的题目解释都没说得很清楚,不适合新手。自己写一个。 题意:给你点的坐标,然后两点间可以有两种方式来通信:第一种是卫星通信,第二种是无线电通信。 卫星通信:任何两个有卫星频道的点间都可以直接建立连接,与点间的距离无关; 无线电通信:两个点之间的距离不能超过D,无线电收发器的功率越大,D越大,越昂贵。 计算无线电收发器D

MCU7.keil中build产生的hex文件解读

1.hex文件大致解读 闲来无事,查看了MCU6.用keil新建项目的hex文件 用FlexHex打开 给我的第一印象是:经过软件的解释之后,发现这些数据排列地十分整齐 :02000F0080FE71:03000000020003F8:0C000300787FE4F6D8FD75810702000F3D:00000001FF 把解释后的数据当作十六进制来观察 1.每一行数据

Java ArrayList扩容机制 (源码解读)

结论:初始长度为10,若所需长度小于1.5倍原长度,则按照1.5倍扩容。若不够用则按照所需长度扩容。 一. 明确类内部重要变量含义         1:数组默认长度         2:这是一个共享的空数组实例,用于明确创建长度为0时的ArrayList ,比如通过 new ArrayList<>(0),ArrayList 内部的数组 elementData 会指向这个 EMPTY_EL

Spring 源码解读:自定义实现Bean定义的注册与解析

引言 在Spring框架中,Bean的注册与解析是整个依赖注入流程的核心步骤。通过Bean定义,Spring容器知道如何创建、配置和管理每个Bean实例。本篇文章将通过实现一个简化版的Bean定义注册与解析机制,帮助你理解Spring框架背后的设计逻辑。我们还将对比Spring中的BeanDefinition和BeanDefinitionRegistry,以全面掌握Bean注册和解析的核心原理。

GPT系列之:GPT-1,GPT-2,GPT-3详细解读

一、GPT1 论文:Improving Language Understanding by Generative Pre-Training 链接:https://cdn.openai.com/research-covers/languageunsupervised/language_understanding_paper.pdf 启发点:生成loss和微调loss同时作用,让下游任务来适应预训

LLM系列 | 38:解读阿里开源语音多模态模型Qwen2-Audio

引言 模型概述 模型架构 训练方法 性能评估 实战演示 总结 引言 金山挂月窥禅径,沙鸟听经恋法门。 小伙伴们好,我是微信公众号《小窗幽记机器学习》的小编:卖铁观音的小男孩,今天这篇小作文主要是介绍阿里巴巴的语音多模态大模型Qwen2-Audio。近日,阿里巴巴Qwen团队发布了最新的大规模音频-语言模型Qwen2-Audio及其技术报告。该模型在音频理解和多模态交互

文章解读与仿真程序复现思路——电力自动化设备EI\CSCD\北大核心《考虑燃料电池和电解槽虚拟惯量支撑的电力系统优化调度方法》

本专栏栏目提供文章与程序复现思路,具体已有的论文与论文源程序可翻阅本博主免费的专栏栏目《论文与完整程序》 论文与完整源程序_电网论文源程序的博客-CSDN博客https://blog.csdn.net/liang674027206/category_12531414.html 电网论文源程序-CSDN博客电网论文源程序擅长文章解读,论文与完整源程序,等方面的知识,电网论文源程序关注python

速通GPT-3:Language Models are Few-Shot Learners全文解读

文章目录 论文实验总览1. 任务设置与测试策略2. 任务类别3. 关键实验结果4. 数据污染与实验局限性5. 总结与贡献 Abstract1. 概括2. 具体分析3. 摘要全文翻译4. 为什么不需要梯度更新或微调⭐ Introduction1. 概括2. 具体分析3. 进一步分析 Approach1. 概括2. 具体分析3. 进一步分析 Results1. 概括2. 具体分析2.1 语言模型

MonoHuman: Animatable Human Neural Field from Monocular Video 翻译

MonoHuman:来自单目视频的可动画人类神经场 摘要。利用自由视图控制来动画化虚拟化身对于诸如虚拟现实和数字娱乐之类的各种应用来说是至关重要的。已有的研究试图利用神经辐射场(NeRF)的表征能力从单目视频中重建人体。最近的工作提出将变形网络移植到NeRF中,以进一步模拟人类神经场的动力学,从而动画化逼真的人类运动。然而,这种流水线要么依赖于姿态相关的表示,要么由于帧无关的优化而缺乏运动一致性

图神经网络框架DGL实现Graph Attention Network (GAT)笔记

参考列表: [1]深入理解图注意力机制 [2]DGL官方学习教程一 ——基础操作&消息传递 [3]Cora数据集介绍+python读取 一、DGL实现GAT分类机器学习论文 程序摘自[1],该程序实现了利用图神经网络框架——DGL,实现图注意网络(GAT)。应用demo为对机器学习论文数据集——Cora,对论文所属类别进行分类。(下图摘自[3]) 1. 程序 Ubuntu:18.04