ImageNet classification with deep convolutional neural networks
创始人
2024-03-04 18:15:51
0

 使用深度卷积神经网络进行ImageNet图像分类

目录

1.引言

2.网络结构

2.1 小细节

 2.2 代码部分

3. 创新点

3.1 非线性激活函数ReLU(提速)

3.2 多GPU训练(提速)

3.3局部响应归一化(增强泛化能力,已不再使用)

3.4重叠池化(轻微防止过拟合/提高准确率,不再使用)

3.5 数据增强(防止过拟合)

3.6 dropout

4.参考


1.引言

    2012年被认为是深度学习复兴之始,当时来自多伦多大学的Hinton(深度学习三巨头之一)和他的学生Alex Krizhevsky提出了一个名叫“AlexNet”的神经网络结构,该结构在当年的ImageNet LSVRC-2012竞赛一举夺冠,并以此开启了深度学习的热潮。

2.网络结构

网络包含8个层:前5层为卷积层,后3层为全连接层,最后一个全连接层的输出被送到一个1000路的softmax分类器。

2.1 小细节

  • 原论文中,AlexNet的输入图像尺寸是224x224x3,但是实际图像尺寸为227x227x3。
  • 因为计算量太大,使用了两台GPU进行训练,并只在确定的层之间交互(注意看卷积核映射虚线:第2、第4和第5个卷积层的内核,仅连接到位于同一GPU上的前一层中的内核映射,第三个卷积层的内核连接到第二层的所有内核映射。)

 (最好跟着流程算一遍)

 2.2 代码部分

#01:定义网络结构:在__init__构造函数中申明各个层的定义,在forward中实现层之间的连接关系
class AlexNet(nn.Module):def __init__(self,num_classes):super().__init__()self.conv1=nn.Sequential(nn.Conv2d(in_channels=3, out_channels=96, kernel_size=11, stride=4, padding=0),nn.BatchNorm2d(96), #BN加在激活函数前面或后面nn.ReLU(inplace=True), #inplace=True将上层网络传递下来的tensor直接进行修改,来节省运算内寸nn.MaxPool2d(kernel_size=3, stride=2))self.conv2=nn.Sequential(nn.Conv2d(in_channels=96, out_channels=256, kernel_size=5, stride=1,padding=2), nn.BatchNorm2d(256),nn.BatchNorm2d(256)nn.ReLU(inplace=True),nn.MaxPool2d(3,2))self.conv3=nn.Sequential(nn.Conv2d(in_channels=256,out_channels=384,kernel_size=3,stride=1,padding=1),nn.BatchNorm2d(384),nn.ReLU(inplace=True))self.conv4=nn.Sequential(nn.Conv2d(in_channels=384,out_channels=384,kernel_size=3,stride=1,padding=1),nn.BatchNorm2d(384),nn.ReLU(inplace=True))self.conv5=nn.Sequential(nn.Conv2d(in_channels=384,out_channels=256,kernel_size=3,padding=1),nn.BatchNorm2d(256),nn.ReLU(inplace=True),nn.MaxPool2d(3,2))self.fc=nn.Sequential(nn.Linear(in_features=9216,out_features=4096),nn.ReLU(inplace=True),nn.Dropout(0.5),nn.Linear(in_features=4096, out_features=4096),nn.ReLU(inplace=True),nn.Dropout(0.5),nn.Linear(in_features=4096, out_features=num_classes),)def forward(self,x):x=self.conv1(x)x=self.conv2(x)x=self.conv3(x)x=self.conv4(x)x=self.conv5(x)x=x.view(x.size(0),-1) #x=torch.flatten(x,start_dim=1)x=self.fc(x)return x

3. 创新点

3.1 非线性激活函数ReLU(提速)

ReLU的收敛速度要快于sigmoid与tanh,因为后两者存在饱和区,在饱和区的梯度变化缓慢甚至出现梯度消失

3.2 多GPU训练(提速)

单个GPU的内存限制了网络的训练规模,采用多GPU协同训练,可以大大提高AlexNet的训练速度。

3.3局部响应归一化(增强泛化能力,已不再使用)

  • a_{x,y}^{i}表示第i片特征图在位置(x,y)运用激活函数 ReLU 后的输出。n 是同一位置上临近的 feature map 的数目,N 是特征图的总数。
  • 参数 k,n,α,β 都是超参数。k=2,n=5,α=10-4,β=0.75。
  • k是为了防止分母为0

举一个例子:

i = 10, N = 96 时,第 i=10 个卷积核在位置(x,y)处的取值为a_{x,y}^{i} ,它的局部响应归一化过程如下:用 a_{x,y}^{i}除以第 8、9、10、11、12 片特征图位置(x,y)处的取值平方求和。

也就是跨通道的一个 Normalization 操作 

      局部响应归一化(local response normalization,LRN)的思想来源于生物学中的“侧抑制”,是某个神经元受到刺激而产生兴奋时,再刺激相近的神经元,则后者所发生的兴奋对前者产生的抑制作用。也就是说,侧抑制是指相邻的感受器之间能够互相抑制的现象。采用LRN的目的是为了将数据分布调整到合理的范围内,便于计算处理,从而提高泛化能力。

3.4重叠池化(轻微防止过拟合/提高准确率,不再使用)

AlexNet 全部使用最大池化的方式,避免了平均池化所带来的模糊化的效果,并且步长 < 池化核的大小,这样一来池化层的输出之间会有重叠和覆盖,提升了特征的丰富性。论文采用参数stride=2,kernelsize=3

此前的 CNN 一直使用平均池化的操作。

3.5 数据增强(防止过拟合)

alexnet中采用两种数据增强的策略

  • 训练时从256x256的原图中随机提取224x224的图片以及水平翻转,数据集扩大了2048倍

2048 = ( 256 - 224 ) * ( 256 - 224 ) * 2

    即一张256x256的图像随机裁剪出224x224的图像有( 256 − 224 ) ∗ ( 256 − 224 ) 种可能,再做一次水平翻转则有( 256 − 224 ) ∗ ( 256 − 224 ) ∗ 2 = 2048 种可能

       在测试时,网络通过提取5个224*224的块(四个角的图像块和中心的图像块)和他们的水平映射(因此总计10个图像块)来做预测,并将网络Softmax层在10个块上作的预测进行平均。

  • 改变训练集图片RGB通道的强度,在此之前需要对原始RGB图像进行主成分分析

[I_{xy}^{R},I_{xy}^{G},I_{xy}^{B}]=[I_{xy}^{R},I_{xy}^{G},I_{xy}^{B}]^{T}+[p1,p2,p3][a1\lambda 1,a2\lambda 2,a3\lambda 3]^{T}

p_{i},\lambda i 为RGB像素值的3x3协方差矩阵,a_{i}是均值为0标准差为0.1的高斯扰动。个人推测应该是先对RGB图像resize成3x(256x256),归一化后根据协方差公式得到3x3矩阵,再利用奇异值分解得到特征值λ和特征向量p


3.6 dropout

alexnet在前两层全连接层前使用了dropout,以0.5的概率使得每个隐藏层的神经元输出0,既不参与前向传播,也不参与反向传播。这种方法弱化了神经元之间的依赖性。 

4.参考:


1、【深度学习论文 01-1】AlexNet论文翻译 - 最菜程序员Sxx - 博客园

2、卷积神经网络超详细介绍_呆呆的猫的博客-CSDN博客_卷积神经网络

3、目标识别基础——alexnet模型(代码复现详解)_哔哩哔哩_bilibili

4、AlexNet 中的 LRN(Local Response Normalization) 是什么 - 知乎

5、AlexNet深度学习图像分类算法_哔哩哔哩_bilibili

6、AlexNet pytorch实现_明天一定早睡早起的博客-CSDN博客_pytorch实现alexnet

相关内容

热门资讯

常用商务英语口语   商务英语是以适应职场生活的语言要求为目的,内容涉及到商务活动的方方面面。下面是小编收集的常用商务...
六年级上册英语第一单元练习题   一、根据要求写单词。  1.dry(反义词)__________________  2.writ...
复活节英文怎么说 复活节英文怎么说?复活节的英语翻译是什么?复活节:Easter;"Easter,anniversar...
2008年北京奥运会主题曲 2008年北京奥运会(第29届夏季奥林匹克运动会),2008年8月8日到2008年8月24日在中华人...
英语道歉信 英语道歉信15篇  在日常生活中,道歉信的使用频率越来越高,通过道歉信,我们可以更好地解释事情发生的...
六年级英语专题训练(连词成句... 六年级英语专题训练(连词成句30题)  1. have,playhouse,many,I,toy,i...
上班迟到情况说明英语   每个人都或多或少的迟到过那么几次,因为各种原因,可能生病,可能因为交通堵车,可能是因为天气冷,有...
小学英语教学论文 小学英语教学论文范文  引导语:英语教育一直都是每个家长所器重的,那么有关小学英语教学论文要怎么写呢...
英语口语学习必看的方法技巧 英语口语学习必看的方法技巧如何才能说流利的英语? 说外语时,我们主要应做到四件事:理解、回答、提问、...
四级英语作文选:Birth ... 四级英语作文范文选:Birth controlSince the Chinese Governmen...
金融专业英语面试自我介绍 金融专业英语面试自我介绍3篇  金融专业的学生面试时,面试官要求用英语做自我介绍该怎么说。下面是小编...
我的李老师走了四年级英语日记... 我的李老师走了四年级英语日记带翻译  我上了五个学期的小学却换了六任老师,李老师是带我们班最长的语文...
小学三年级英语日记带翻译捡玉... 小学三年级英语日记带翻译捡玉米  今天,我和妈妈去外婆家,外婆家有刚剥的`玉米棒上带有玉米籽,好大的...
七年级英语优秀教学设计 七年级英语优秀教学设计  作为一位兢兢业业的人民教师,常常要写一份优秀的教学设计,教学设计是把教学原...
我的英语老师作文 我的英语老师作文(通用21篇)  在日常生活或是工作学习中,大家都有写作文的经历,对作文很是熟悉吧,...
英语老师教学经验总结 英语老师教学经验总结(通用19篇)  总结是指社会团体、企业单位和个人对某一阶段的学习、工作或其完成...
初一英语暑假作业答案 初一英语暑假作业答案  英语练习一(基础训练)第一题1.D2.H3.E4.F5.I6.A7.J8.C...
大学生的英语演讲稿 大学生的英语演讲稿范文(精选10篇)  使用正确的写作思路书写演讲稿会更加事半功倍。在现实社会中,越...
VOA美国之音英语学习网址 VOA美国之音英语学习推荐网址 美国之音网站已经成为语言学习最重要的资源站点,在互联网上还有若干网站...
商务英语期末试卷 Part I Term Translation (20%)Section A: Translate ...