神经网络与深度学习(3)

一、基本卷积神经网络

1. AlexNet

论文传送门:http://cs.toronto.edu/~fritz/absps/imagenet.pdf

AlexNet 的网络结构如上图所示,1个输入层(227*227*3),224据说是写论文时的笔误,5个卷积层(C1、C2、C3、C4、C5)、3个全连接层。AlexNet的出现,在深度学习的历史上具有里程碑的意义,其证实了深度学习在解决复杂模式识别问题上的巨大潜力,同时也促进了GPU等并行计算技术在AI领域的广泛应用。

主要创新点
(1)深层架构

AlexNet采用了比早期神经网络更深的结构,它包含8层(包括5个卷积层和3个全连接层),证明了通过增加网络层次可以提取更复杂、更高层次的特征表示,并显著提高了图像识别任务的性能。

AlexNet网络结构
图1  AlexNet网络结构

如图1所示,其左侧为连接数,右侧为参数。

(2)输入样本

对图像数据采取水平翻转,随机裁剪,光照或彩色变换等操作,有效提升了模型的泛化能力。

但是如上图所示目标,其不采取上下翻转的方式,因上下翻转不符合物体在实际中存在的状态。

(3)激活函数

采取ReLU替代Tan Sigmoid;

用于卷积层与全连接之后;

传统的神经网络普遍使用Sigmoid或者tanh等非线性函数作为激励函数,然而它们容易出现梯度弥散梯度饱和的情况。以Sigmoid函数为例,如下图所示,当输入的值非常大或者非常小的时候,值域的变化范围非常小,使得这些神经元的梯度值接近于0(梯度饱和现象)。由于神经网络的计算本质上是矩阵的连乘,一些近乎于0的值在连乘计算中会越来越小,导致网络训练中梯度更新的弥散现象,即梯度消失。

而ReLU不存在这种缺陷,其不会出现值域变化小的问题。

(4)Dropout

在每个全连接层后面使用一个 Dropout 层,以概率 p 随机关闭激活函数,将某些神经元的计算结果乘0,这个神经元就不参与前向和后向传播,就如同在网络中被删除了一样,同时保持输入层与输出层神经元的个数不变,然后按照神经网络的学习方法进行参数更新。在下一次迭代中,又重新随机删除一些神经元(置为0),直至训练结束。通过降低模型复杂度避免了过拟合现象。

(5)双GPU策略

受当时硬件水平限制,AlexNet训练作者使用了双GPU,这是工程上的一种创新做法。双GPU网络的训练时间比单GPU网络更少,分别将top-1和top-5错误率分别降低了1.7%和1.2%。

2. VGG-16

VGG研究卷积网络深度的初衷是了解卷积网络的深度如何影响大规模图像分类和识别的准确性和准确性。VGG网络采用连续小卷积核(3*3)和池化层构建深度神经网络,网络深度可以达到16层或19层,其中VVG-16和VGG-19最为著名。“16”表示网络中总共的权重层数,包括13个卷积层和3个全连接层。

其网络规模进一步增大,参数数量约为1.38亿

由于各卷积层、池化层的超参数基本相同,整体结构呈现出规整的特点。

3. 残差网络

(1)非残差网络的缺陷

a. 梯度消失

在传统的深度神经网络中,随着网络层数的增加,反向传播过程中的梯度逐渐变小。这意味着网络的底层参数更新缓慢,甚至停滞,导致难以训练深层网络。这是因为在梯度反向传播的过程中,梯度经过多次连续的乘法操作,导致梯度值指数级地减小。

b. 梯度爆炸

与梯度消失相反,有时梯度可能会在反向传播过程中变得非常大,导致参数更新过大,使得模型不稳定或无法收敛。

(2)解决办法

残差网络通过引入跳跃连接(skip connections),允许网络学习残差函数,即学习输入与输出之间的差异,从而更容易地训练出深层的网络。其中残差网络的基本单元是残差块,其出入与输出之间的关系可以表示为:

输出 = 输入+残差函数

残差块的目标是学习到残差函数,而不是直接学习输入到输出的映射。这样的设计允许网络更轻松地学习到恒等映射(identity mapping),即使是在非常深的网络中也能够保持较好的性能。通过引入残差连接,残差网络可以轻松地训练数百甚至数千层的网络,而不会出现梯度消失或梯度爆炸的问题。这使得残差网络成为了许多计算机视觉任务中的重要工具,例如图像分类、目标检测和语义分割等。

二、常用数据集

1. MNIST数据集

MNIST 数据集主要由一些手 写数字的图片和相应的标签组成,图片一共有10类,数据集是由0〜9手写数字图片和数字标签所组成的,由60000个训练样本和10000个测试样 本组成,每个样本都是一张28 * 28像素的灰度手写数字图片。

MNIST数据集加载

def load_data_fashion_mnist(batch_size, resize=None): #@save
    """下载Fashion-MNIST数据集,然后将其加载到内存中。"""
    trans = [transforms.ToTensor()]
    if resize:
        trans.insert(0, transforms.Resize(resize))
    trans = transforms.Compose(trans)
    mnist_train = torchvision.datasets.FashionMNIST(
        root="../data", train=True, transform=trans, download=True)
    mnist_test = torchvision.datasets.FashionMNIST(
        root="../data", train=False, transform=trans, download=True)
    return (data.DataLoader(mnist_train, batch_size, shuffle=True,
                            num_workers=get_dataloader_workers()),
            data.DataLoader(mnist_test, batch_size, shuffle=False,
                            num_workers=get_dataloader_workers()))

2. Fashion-MNIST数据集

FashionMNIST 是一个替代 MNIST 手写数字集 的图像数据集。它是由 Zalando旗下的研究部门提供,涵盖了来自10种类别的共7万个不同商品的正面图片。FashionMNIST 的大小、格式和训练集/测试集划分与原始的 MNIST 完全一致。60000/10000的训练测试数据划分,28x28 的灰度图片。你可以直接用它来测试你的机器学习和深度学习 算法性能,且不需要改动任何的代码。

3. CIFAR-10数据集

CIFAR-10数据集由10个类的60000个32x32彩色图像组成,每个类有6000个图像。有50000个训练图像和10000个测试图像。数据集分为五个训练批次和一个测试批次,每个批次有10000 个图像。测试批次包含来自每个类别的恰好1000个随机选择的 图像。

4. PASCAL VOC数据集

PASCAL VOC数据集包含的物体类别包括:飞机、自行车、鸟类、船只、瓶子、公交车、汽车、猫、椅子、牛、餐桌、狗、马、摩托车、人、盆栽植物、绵羊、沙发、火车、电视/监视器共20类。每个图像都有相应的XML文件,其中包含了该图像中物体的位置和类别标注信息。这些标注信息对于目标检测任务至关重要,可以帮助训练模型学习物体的位置和类别。

5. MS COCO数据集

MS COCO数据集主要用于目标检测、语义分割、实例分割和图像字幕生成等计算机视觉任务。它涵盖了80个常见的物体类别,包括人、动物、交通工具、家具等。每个图像都有相应的JSON格式的标注文件,其中包含了物体的位置、类别、分割信息以及图像字幕等。这些标注信息对于训练模型学习物体的位置、边界和语义信息至关重要。

6. ImageNet数据集

ImageNet数据集主要用于图像分类任务,即将图像分为不同的类别。始于2009年,李飞飞与Google的合作“ImageNet: A Large-Scale Hierarchical Image Database”。每个类别都与一个唯一的WordNet ID相关联,这些类别涵盖了广泛的物体、动物和场景。mageNet数据集包含超过1400万张图像,分为1000个不同的类别。每个类别大约有1000张图像,其中包括许多不同的图像样本,以反映现实世界中物体的不同姿态、光照条件和背景。

三、深度学习视觉应用

1. 评价指标

(1)算法评估相关概念

TP: 被正确地划分为正例的个数,即实际为正例且被分类器划分为正例的实例数

FP: 被错误地划分为正例的个数,即实际为负例但被分类器划分为正例的实例数

FN:被错误地划分为负例的个数,即实际为正例但被分类器划分为负例的实例数

TN: 被正确地划分为负例的个数,即实际为负例且被分类器划分为负例的实例数

混淆矩阵

P(精确率): 𝑇𝑃/(𝑇𝑃 + 𝐹𝑃),标识“挑剔”的程度

R(召回率): 𝑇𝑃/(𝑇𝑃 + 𝐹𝑁)。召回率越高,准确度越低 标识“通过”的程度

精度(Accuracy): (𝑇𝑃 + 𝑇𝑁)/(𝑇𝑃 + 𝐹𝑃 + 𝑇𝑁 + 𝐹𝑁)

(2)置信度与准确率

调整阈值可改变准确率或召回值,对应某阈值,前四个样本(左侧)被分类为飞机 改变阈值会改变划分,进一步影响准确率或召回值。

可以通过改变阈值(也可以看作上下移动蓝色的虚线),来选择 让系统识别能出多少个图片,当然阈值的变化会导致Precision与 Recall值发生变化。比如,把蓝色虚线放到第一张图片下面,也就 是说让系统只识别出最上面的那张飞机图片,那么Precision的值就 是100%,而Recall的值则是20%。如果把蓝色虚线放到第二张图片 下面,也就是说让系统只识别出最上面的前两张图片,那么 Precision的值还是100%,而Recall的值则增长到是40%。

2. 目标检测与YOLO

YOLO(You Only Look Once),一般图片中,大多数位置都不存在目标。可以确定那些更有可能出现目标的位置,再有针对性的用CNN进 行检测——两步法(Region Proposal),但是两步法依然很费时!进一步减少出现目标的位置,而且将目标分类检测和定位问题 合在一个网络里——一步法(YOLO)。

(1)网格化检测
  • 一步法算法通常将输入图像划分为固定大小的网格,每个网格单元负责预测边界框和对应的类别概率。
  • 这种网格化检测使得算法能够同时检测图像中不同位置和大小的目标。
(2)目标定位
  • 一步法算法通过在每个网格单元内预测边界框的坐标来定位目标。
  • 通常采用边界框的中心坐标、宽度和高度来表示目标的位置,使用回归方法来预测这些参数。
(3)目标分类
  • 一步法算法在每个网格单元内同时预测目标的类别概率。
  • 这通常通过使用softmax函数将网络输出转换为类别概率分布来实现。
(4)损失函数设计
  • 一步法算法通常设计了一种联合训练的损失函数,同时考虑目标存在的置信度、边界框坐标的误差以及类别预测的误差。
  • 这种损失函数的设计可以使得模型在训练过程中同时关注目标的位置和类别,从而提高检测的准确性。

3. 语义分割

FCN是目前广泛使用的基本语义分割网络,其中语义分割就是找到同一画面中的不同类型目标区域。

FCN网络结构

网络结构分为两个部分:全卷积部分和反卷积部分。全卷积部分借用了一些 经典的CNN网络,并把最后的全连接层换成卷积,用于提取特征,形成热点 图;反卷积部分则是将小尺寸的热点图上采样得到原尺寸的语义分割图像。

参考文献

【CNN】AlexNet——开启深度学习从0到1的时代_alexnet为什么推动了深度学习-CSDN博客

  • 8
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值