【论文笔记】—AlexNet—2012-ACM

论文介绍

AlexNet为计算机视觉奠定了基础。

AlexNet在ImageNet 2012图像分类竞赛中获得了top-5误差15.3%的冠军成绩,首次将深度学习和卷积神经网络用于大规模图像数据集分类,远远优于第二名(top-5错误率为26.2%)和之前的算法,引起巨大轰动。自此之后,计算机视觉开始广泛采用深度卷积神经网络,模型性能日新月异,并迁移泛化到其它计算机视觉任务。

AlexNet采用ReLU激活函数、双GPU模型并行、LRN局部响应归一化、重叠最大池化、数据增强、Dropout正则化等技巧。作者Hinton获得2019年图灵奖。

​题目:ImageNet Classification with Deep Convolutional Neural Networks

DOI:10.1145/3065386

时间:2012
期刊:Communications of the ACM
机构:多伦多大学
作者:Hinton和他的学生Alex Krizhevsky

论文链接:https://dl.acm.org/doi/10.1145/3065386
代码链接:https://chsasank.com/vision/_modules/torchvision/models/alexnet.html

AlexNet网络构架

规律:输入的图片从一个又高又宽又扁的一个形状,慢慢变为了一个宽和高都很小,但是很长的一个张量,这是说空间信息被压缩了,也就是从一开始的224变为了后面的13,也就是13中的一个像素能表示之后一大片像素。通道数变多也就是变长了,通道数可以理解为对于一个模式的识别,例如通道数为192那么说明可以识别图中192个模式,例如猫腿、爪子这种模式。所以说整个过程就是空间信息被压缩,但是语义信息空间慢慢增加。

总结:整个过程就是一张图片,经过模型处理变为了一个4096维的向量,这个向量可以把中间的语义信息表示出来。机器学习可以认为是一个压缩知识的过程;具体来讲就是我们原始的一个图片,文字或者视频输入到一个模型中,这个模型就会把它压缩为一个向量,这个向量机器可以识别,用来实现别的任务,例如分类等等。

AlexNet层的顺序:

1、Conv—ReLU—LRN —MaxPooling

2、八个学习层 = 5个卷积层 + 3个全连接层。

3、重叠最大池化在LRN层和第5卷积层之后。

4、最后一层全连接层的输出是1000维softmax的输入,softmax会产生1000类标签的分布。

数据集的预处理:
首先,对大小不一的图像进行下采样,短边缩放到256,再裁剪一个256x256的图像。
然后,从每个像素中减去在训练集上计算的平均 RGB 值,输入网络中的是以0为均值的RGB图片。中心化的预处理,可以减少对噪声的敏感性。

AlexNet参数分布:比较均匀
左图:经过每一层图片的尺寸、卷积核的个数、卷积核的大小、步长、填充圈数

经过第一个卷积层后图片大小的计算:N=(W-F+2P)/S+1,即(224-11+2x2)/4+1=55.25,当遇到图像边长计算后不为整数时,在Pytorch卷积过程中自动取整,直接将填充后的输入图像最后一行及最后一列给忽略掉,以保证N为整数。经Pytorch自动取整后N0=227。

 

ReLU激活函数:

sigmoid、tanh饱和激活函数(输入x过大或者过小,输出局限在一个很小的区域,不能再进行变化)会造成梯度消失,影响学习效率。
非线性神经元称为修正线性单元(ReLU),ReLU不饱和的非线性激活函数简单且训练速度快所以用的多。

图1-使用ReLU的四层卷积神经网络在CIFAR-10数据集上达到25%的训练误差比使用tanh神经元的等价网络(虚线)快六倍。

双GPU模型并行:

图片太多无法在一个GPU上训练,所以把网络切开训练。每个GPU各有一半的神经元。上下两部分各自训练各自的,各有各的参数核,结构都是一样的。

GPU只在特定的层进行通信:例如:第3层的核会将第2层的所有核映射作为输入。然而,第4层的核只将位于相同GPU上的第3层的核映射作为输入。

定性评估1:

GPU1训练得到的48个卷积核(图3上部分):提取边缘、频率、方向、特征
GPU2训练得到的48个卷积核(图3下部分):提取颜色特征

偏浅层的神经元学习的是一些纹理、方向等;
偏深层的神经元则是学到的是全局点,例如一个手、一个头之类的。

LRN局部响应归一化:

ReLU层之后应用了LRN层得到了一个更好的效果。
同一位置不需要太多高激活的神经元,起到侧向抑制的效果。

分子:第i个feature map上(x,y)的值
αβ:常数
n:近邻通道数
k:防止分母为0
N:feature map通道数(本层卷积核个数)
普通沿所有通道归一化:(k, α, β, n)=(0,1,1,N)

AlexNet归一化参数:(k, α, β, n)=(2,0.0001,0.75,5)

减少过拟合方法1:重叠最大池化(步长<池化窗口)
重叠最大池化在LRN层之后和第5卷积层之后。

如图:深色是重叠的部分(步长=2<池化窗口=3)

减少过拟合方法2:数据增强(扩充数据集)
最简单也是最常见的方法是使用保留标签的变换人为地放大数据集。

1、水平翻转、随机裁剪:通过从256×256图像中随机提取224×224的图像,并在这些提取的图像上训练我们的网络来实现这一点。这将使我们的培训集的规模增加了2048倍。但是有个问题也不能说就是2048倍,因为很多图片都是相似的。

2、光度/颜色变换:采用PCA的方式对RGB图像的channel进行了一些改变,使图像发生了一些变化,从而扩大了数据集。

该数据增强方法是用Python代码在CPU上完成,当GPU训练上一轮的时候下一轮的数据增强已经做好,不需要存在硬盘上,放在内存和显存就可以。

减少过拟合方法3:DropOut(代价:两倍时间)
随机的将隐藏层的输出以50%的概率设为0,相当于一个L2的正则化。

训练阶段:每一个batch随机掐死一半的神经元(将神经元的输出设置为0,阻断其前向传播和反向传播)
预测阶段:保留所有神经元预测结果乘0.5

Dropout会以0.5的概率对每个隐层神经元的输出设为0。那些“失活的”的神经元不再进行前向传播并且不参与反向传播。因此每次输入时,神经网络会采样一个不同的架构,但所有架构共享权重。这个技术减少了复杂的神经元互适应,因为一个神经元不能依赖特定的其它神经元的存在。因此,神经元被强迫学习更鲁棒的特征,它在与许多不同的其它神经元的随机子集结合时是有用的。在测试时,我们使用所有的神经元但它们的输出乘以0.5,对指数级的许多失活网络的预测分布进行几何平均,这是一种合理的近似。

Dropout为什么能够减少过拟合?

1、减少神经元之间的联合依赖适应性
2、模型集成,P=0.5,意味着2^n个共享权重的潜在网络
3、记忆随机抹去,不再死记硬背
4、有性繁殖,每个基因片段都要与来自另一个随机个体的基因片段协同工作
5、稀疏性
6、数据增强:总能找到一张图片使神经网络中间结果与DropOut后相同,相当于增加这张图片到数据集。

带动量的随机梯度下降法训练模型:

损失函数=多分类交叉熵损失函数+L2正则化(让权重尽可能的小,权重过大意味着潜在的过拟合)

在原来的损失函数中加了L2正则化(在优化项中变成权重衰减项0.0005),先计算一个动量的变量,然后让权重加上动量的变量。

实验结果

表1-CNN网络在ILSVRC-2010测试集上的对比结果。斜体是其它人取得的最好结果。

表2-ILSVRC-2012验证集和测试集的误差对比。

斜线是其它人取得的最好的结果。带星号的是“预训练的”对ImageNet 2011秋季数据集进行分类的模型。
结论:AlexNet在ImageNet 2012图像分类竞赛中获得了top-5误差15.3%的冠军成绩。

自此之后,计算机视觉开始广泛采用深度卷积神经网络,模型性能日新月异,并迁移泛化到其它计算机视觉任务。

定性评估2:(说明能够捕获图像的语义信息)

图4左上:正确预测(即使是不在图像中心的目标也能被网络识别,例如左上角的小虫)
图4左下:错误预测(能把比较接近的类别预测出来)。
图4右边:网络提取出语义信息(南瓜、狗),而不是原始像素信息(颜色)。
(第一列测试集中的图片,其他列展示了6张训练图像,这些图像在最后一个4096隐藏层所激活的特征向量与测试图像的特征向量有最小的欧氏距离。)
图4右边第二行和第五行:不同姿态的图像
图4右边第三行和第四行:各种角度/光照的图像

另一个研究可视化网络所学知识的方法是考虑最后一个4096维隐层所激活的特征向量。如果两张图的向量欧氏距离很小,我们可以说很大程度上神经网络认为它们是相似的。图4展示了五张测试集中的图片,以及按照上述方法找出的分别与这五张图最相似的6张训练集图片。注意在像素尺度上,找出来的训练集图片不一定在L2上和第一列的测试集图片很相似。比如,找出来的狗狗和大象摆出了不同的造型。我们用更多的测试集图片支持证明了这一观点。

参考资料AlexNet深度学习图像分类算法

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: CDC-ACM驱动是一种USB设备驱动程序,用于安装和连接支持CDC ACM规范的通信设备。在Windows 7操作系统中,CDC-ACM驱动程序已经预装,但如果您的USB设备无法正常工作,您可以尝试手动更新或重新安装驱动程序。 首先,在Windows 7操作系统中,您可以通过设备管理器找到CDC-ACM驱动程序。打开设备管理器,找到您的USB设备,右键单击并选择“属性”,然后切换到“驱动程序”选项卡。如果您看到“当前驱动程序”一栏中没有CDC-ACM驱动程序,您可以在此处选择“更新驱动程序”选择CDC-ACM驱动程序并安装。 如果您的USB设备无法连接到计算机,您可以尝试重新安装CDC-ACM驱动程序。首先,您可以从设备制造商的网站下载最新版本的CDC-ACM驱动程序,或者从Windows更新程序中查找更新。然后,您可以将USB设备插入电脑,然后双击CDC-ACM驱动程序进行安装。按照安装向导的指示进行操作,完成驱动程序的安装后,您可以重新连接您的USB设备并测试其是否能够正常工作。 总之,CDC-ACM驱动程序是Windows 7预装的USB设备驱动程序之一。如果您的USB设备无法正常工作,您可以通过更新或重新安装驱动程序来解决问题。如果您有任何疑问或困难,建议您查看设备制造商的帮助文档或寻求专业的技术支持。 ### 回答2: CDC-ACM驱动是一种用于连接设备的万能串行总线设备驱动程序,可用于Windows 7操作系统。常见的CDC-ACM设备包括USB调制解调器、串行数字摄像头、商用POS终端等。 安装CDC-ACM驱动前,需要确认系统已经启用了自动驱动程序安装功能。打开设备管理器,在“通用串行总线控制器”下看到“CDC-ACM设备”或其他相关设备,说明驱动已经被正确识别。如果未自动识别,可以手动安装驱动。 手动安装驱动的步骤是,首先下载安装程序,解压缩后通过设备管理器找到对应设备,右键选择“更新驱动程序软件”,选择“浏览计算机以查找驱动程序软件”,选择解压文件夹中的.inf文件并进行安装。安装完成后,重新插拔设备即可。 总之,CDC-ACM驱动是连接设备的重要工具,对于无法识别的设备或需要手动更新驱动程序的情况,可以采取手动安装驱动的方式进行操作。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值