AlexNet

1.前言

  • AlexNet论文
  • 不管是图像分类、目标检测,还是语义分割、人体姿态估计,这些计算机视觉问题都是在AlexNet的基础上使用深度卷积神经网络来提取图像深层特征的
  • 奠定了计算机视觉基本的深度学习方法和模型训练的技巧,现在仍然被借鉴

2.AlexNet架构

  • 从LeNet开始,就奠定了神经网络基础架构:卷积层—池化层—卷积层—池化层—全连接层—输出
  • AlexNet相当于是将LeNet从识别数字到识别大千世界
  • 卷积层可以认为是提取图像的特征,全连接层可以认为是用提取出来的特征进行分类(也就是说对提取出的特征进行融合和汇总)
    在这里插入图片描述

2.1卷积层

  • 首先AlexNet使用了深度卷积神经网络(Deep Convolutional Neural Networks)
    在这里插入图片描述
  • 上图是一通道(也就是灰度图)的卷积操作,想了解卷积的具体内容,可以参考一篇文章带你走进深度学习
  • 中间的3×3的矩阵就是卷积核,对应到下图左侧的大图浅蓝色区域的就是感受野,每次感受野滑动的范围叫做步长,右侧的就是特征图
  • 卷积核的权重是不变的,所以是局部链接,全局共享
    在这里插入图片描述
    点击查看三通道动态效果
  • Kernel(卷积核)是三个通道,在三维的矩阵中进行滑动
  • 仍然是感受野中的像素,卷积核中的权重对应位置相乘,把乘积求和填在Output中,生成特征图
  • 把所有生成的特征图结合在一起传给下一层,就是一次卷积运算

2.2池化层

在这里插入图片描述

  • 我们在特征图(feature map)的每个窗口中取最大值或者平均值,把大的特征图,变成一个小的特征图
  • 这个步骤就称为下采样或者池化操作
  • 取最大值,就是最大池化(Max Pooling)
  • 取平均值,就是平均池化(Aver Pooling)
  • 优点:减少特征图的尺寸,减少计算量,同时可以防止过拟合

2.3全连接层

在这里插入图片描述

  • 将所有的特征图拉成长向量,将长向量输入给全连接神经网络中
  • 全连接神经网络就是每一个神经元都与之前的神经元相连,都有一个权重,经过全连接网络处理之后,得到最终的结果

2.4ReLU激活函数

  • 使用了ReLU激活函数,修正了线性单元
  • 激活函数必须是非线性的
  • ReLU函数当 x x x小于0时都是0,当 x x x大于0时,就是 x x x,不饱和的
    在这里插入图片描述

2.5模型结构与双GPU实现

在这里插入图片描述

  • 把模型并行的放在两个GPU上,每个GPU各自拥有一半的神经元
  • 全连接层每个GPU各自有2048个神经元
  • 输出层是1000个神经元,也就是将图片变成了1000维的向量,1000维就代表了这个图片是1000个中的哪一个,我们从里面挑出最大的一个或者是五个,作为预测结果就完成了分类的任务
    在这里插入图片描述
  • 原图的输出是224×224×3,但是由224经过一层卷积得到的特征图大小是无法计算的,所以应该是227
  • 所有的激活函数都是使用ReLU
  • 在第一层卷积和第二层卷积、第二层卷积和第三层卷积之间还有局部相应归一化LRN
  • 在第二层卷积和第三层卷积使用全部连接,两个GPU之间能够全部连接
  • 在其他层都只能接收同一个GPU从上一层传来的数据
    两个GPU训练出来的卷积核结果是不一样的
    第一个GPU训练得到的48个卷积核是提取边缘、频率、方向和特征
    第二个GPU训练得到的48个卷积核是提取颜色特征

2.6局部响应归一化LRN

在这里插入图片描述

  • 比如我们得到了4个特征图,我们对这4个图的同一个位置进行归一化(比如3)
  • 选择其中三个特征图进行运算,比如橙色的特征图,3作为分子,然后4个特征图的对应位置平方作为分母: 3 3 2 + 3 2 + 2 2 = 0.14
### AlexNet概述 AlexNet是一种深度卷积神经网络,在2012年的ImageNet大规模视觉识别挑战赛(ILSVRC)上取得了显著的成绩[^1]。该模型由Alex Krizhevsky, Ilya Sutskever 和 Geoffrey E. Hinton设计。 ### 架构特点 AlexNet包含了八层带有参数的学习层——五层卷积层和三层全连接层。输入图像尺寸为227×227像素,经过一系列操作最终映射到1000类标签的概率分布上。为了加速训练过程并减少过拟合风险,采用了ReLU激活函数以及Dropout技术来随机丢弃部分节点[^1]。 ```python import torch.nn as nn class AlexNet(nn.Module): def __init__(self, num_classes=1000): super(AlexNet, self).__init__() self.features = nn.Sequential( nn.Conv2d(3, 64, kernel_size=11, stride=4, padding=2), nn.ReLU(inplace=True), nn.MaxPool2d(kernel_size=3, stride=2), # 更多卷积层... ) self.classifier = nn.Sequential( nn.Dropout(), nn.Linear(256 * 6 * 6, 4096), nn.ReLU(inplace=True), nn.Dropout(), nn.Linear(4096, 4096), nn.ReLU(inplace=True), nn.Linear(4096, num_classes), ) def forward(self, x): x = self.features(x) x = x.view(x.size(0), 256 * 6 * 6) x = self.classifier(x) return x ``` ### 实现方式 在实现方面,AlexNet利用GPU的强大计算能力进行了高效的矩阵运算处理。通过使用CUDA库可以在NVIDIA图形处理器上获得更快的速度提升。此外还应用了数据增强方法如水平翻转和平移裁剪等手段扩充训练集规模以提高泛化性能[^1]。 ### 应用场景 作为早期成功的CNN之一,AlexNet被广泛应用于各种计算机视觉任务当中,比如物体检测、分类、分割等领域。它不仅推动了深度学习领域的发展,也为后续更先进的模型提供了宝贵的经验和技术基础[^1]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Simple_learning_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值