神经网络与深度学习-卷积神经网络基础

本文介绍了深度学习平台PyTorch的基本概念和使用,包括张量、计算图,以及线性回归的简单示例。接着,深入讲解了卷积神经网络的基础,包括LeNet-5网络的结构和误差反向传播,以及AlexNet和VGG-16等经典网络结构。此外,还讨论了常用的图像数据集如MNIST、CIFAR10和ImageNet。
摘要由CSDN通过智能技术生成

1. 深度学习平台介绍

1.1. 深度学习平台简介

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

1.2. PyTorch 简介

  • PyTorch是一个Python的深度学习库。它最初由Facebook人工智能研究小组开发,而优步的Pyro软件则用于概率编程
  • 最初,PyTorch由Hugh Perkins开发,作为基于Torch框架的LusJIT的Python包装器。PyTorch在Python中重新设计和实现Torch,同时为后端代码共享相同的核心C库
  • 除了Facebook之外,Twitter、GMU和Salesforce等机构都采用了PyTorch
  • 到目前,据统计已有80%的研究采用PyTorch,包括Google

PyTorch 和TensorFlow2 的对比:

在这里插入图片描述
PyTorch 资源:

  • 60分钟快速入门:jianshu.com/p/889dbc684622
  • 官方教程:https://www.pytorch123.com/
  • 动手学深度学习:https://zh-v2.d2l.ai/
  • Deep learning with pytorch: https://pytorch.org/assets/deeplearning/Deep-Learning-with-PyTorch.pdf

1.3. PyTorch基本使用

1.3.1. 基本概念

张量(Tensor):

是一个物理量,对高维(维数 ≥ 2) 的物理量进行“量纲分析” 的一种工具。简单的可以理解为:一维数组称为矢量,二维数组为二阶张量,三维数组为三阶张量…

计算图:

用“结点”(nodes)和“线”(edges)的有向图来
描述数学计算的图像。“节点” 一般用来表示施加的数学操作,但也可以表示数据输入的起点
/输出的终点,或者是读取/写入持久变量的终点。“线”表示“节点”之间的输入/输出关系。这些数据“线”可以输运“size可动态调整”的多维数据数组,即“张量”(tensor)

在这里插入图片描述

  • 使用 tensor 表示数据
  • 使用 Dataset、DataLoader 读取样本数据和标签
  • 使用变量 (Variable) 存储神经网络权值等参数
  • 使用计算图 (computational graph) 来表示计算任务
  • 在代码运行过程中同时执行计算图

1.3.2. 简单示例

构建简单的计算图,每个节点将零个或多个tensor作为输入,产生一个tensor作为输出。PyTorch中,所见即为所得,tensor的使用和numpy中的多维数组类似:

在这里插入图片描述

1.3.3. 线性回归

100个散点样本,求出回归方程
定义网络:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2. 卷积神经网络基础

2.1. 近代史

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.2. 基本概念

全连接网络: 链接权过多,难算难收敛,同时可能进入局部极小值,也容易产生过拟合问题。e.g. 输入为96x96图像,要学习100个特征

局部连接网络: 顾名思义,只有一部分权值连接。
部分输入和权值卷积

特征提取:

在这里插入图片描述
填充(Padding): 也就是在矩阵的边界上填充一些值,以增加矩阵的大小,通常用0或者复制边界像素来进行填充

在这里插入图片描述
步长(Stride): 如图步长为2

在这里插入图片描述
多通道卷积: 如RGB

在这里插入图片描述
多通道卷积: 如RGB

在这里插入图片描述
池化(Pooling): 使用局部统计特征,如均值或最大值。解决特征过多问题

在这里插入图片描述
卷积神经网络结构:

  • 构成:由多个卷积层和下采样层构成,后面可连接全连接网络
  • 卷积层:k个滤波器
  • 下采样层:采用mean或max
  • 后面:连着全连接网络

在这里插入图片描述
学习算法:

在这里插入图片描述
在这里插入图片描述

3. LeNet-5网络

3.1. 网络介绍

网络提出:

在这里插入图片描述

网络结构:

在这里插入图片描述

3.2. 网络结构详解

C1层:

  • 6个Feature map构成
  • 每个神经元对输入进行5*5卷积
  • 每个神经元对应55+1个参数,共6个feature map,2828个神经元,因此共有(55+1)6(2828)=122,304连接

S2层(Pooling层):

在这里插入图片描述
C3层(卷积层):

在这里插入图片描述

S4层:

与S2层工作相同

C5层:

  • 120个神经元
  • 每个神经元同样对输入进行5*5卷积,与S4全连接
  • 总连接数(5516+1)*120=48120

F6层:

  • 84个神经元
  • 与C5全连接
  • 总连接数(120+1)*84=10164

输出层:

  • 由欧式径向基函数单元构成
  • 每类一个单元
  • 输出RBF单元计算输入向量和参数向量之间的欧式距离

网络结构:

在这里插入图片描述
网络说明:

  • 与现在网络的区别
    • 卷积时不进行填充(padding)
    • 池化层选用平均池化而非最大池化
    • 选用Sigmoid或tanh而非ReLU作为非线性环节激活函数
    • 层数较浅,参数数量小(约为6万)
  • 普遍规律
    • 随网络深入,宽、高衰减,通道数增加
      在这里插入图片描述

3.3. 误差反向传播

经典BP算法:

如果当前是输出层:
δ i [ L ] = a i ( 1 − a i ) e i \delta_i^{[L]}=a_i(1-a_i)e_i δi[L]=ai(1ai)ei
隐含层(按从后向前顺序更新):
δ i [ l ] = [ ∑ j + 1 m w j i [ l + 1 ] ] ( a i [ l − 1 ] ) \delta_i^{[l]}=\left[\sum\limits^m_{j+1}w_{ji}^{[l+1]} \right](a_i^{[l-1]}) δi[l]=[j+1mwji[l+1]](ai[l1])
a j [ 0 ] = x j a_j^{[0]}=x_j aj[0]=xj

卷积NN的BP算法:下采样层

如果当前是卷积层,下一层为下采样层,误差如何从下采样层回传
假设为2*2核平均池化

在这里插入图片描述
在这里插入图片描述
如果当前是下采样层,下一层为卷积层,误差如何从卷积回传
假设为2*2核卷积

在这里插入图片描述
局部误差如何从卷积层传到下采样层

在这里插入图片描述

3.4. 网络结构可视化

可视化 (https://adamharley.com/nn_vis/cnn/3d.html)

在这里插入图片描述

3.5. LeNet5代码实现

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

4. 基本卷积神经网络

4.1. AlexNet

网络提出:

在这里插入图片描述
网络结构:

在这里插入图片描述
网络说明:

  • 网络一共有8层可学习层——5层卷积层和3层全连接层

  • 改进

    • 池化层均采用最大池化
    • 选用ReLU作为非线性环节激活函数
    • 网络规模扩大,参数数量接近6000万
    • 出现“多个卷积层+一个池化层”的结构
  • 普遍规律

    • 随网络深入,宽、高衰减,通道数增加
  • 左侧:连接数;右侧:参数

在这里插入图片描述
**改进:输入样本: **

  • 最简单、通用的图像数据变形的方式
    • 从原始图像(256,256)中,随机的crop出一些图像(224,224)。【平移变换,crop】
    • 水平翻转图像。【反射变换,flip】
    • 给图像增加一些随机的光照。【光照、彩色变换,color jittering】

在这里插入图片描述
改进:激活函数:

  • 采用ReLU替代 Tan Sigmoid
  • 用于卷积层与全连接层之后

在这里插入图片描述
改进:Dropout:

  • 在每个全连接层后面使用一个 Dropout 层,以概率 p 随机关闭激活函数

在这里插入图片描述
改进:双GPU策略:

  • AlexNet使用两块GTX580显卡进行训练,两块显卡只需要在特定的层进行通信

在这里插入图片描述
详细解释:以第一层conv1为例:

  • relu1:max(0,𝑥),作为激活函数紧
    接在卷积层后面
  • norm1:局部响应归一化LRN,LRN层作用不大,在CNN中并不常用
  • pool1:采用max pooling,pooling核大小为3×3

stride为2,即pooling核的步长是2,
即2倍降采样
此处的pool1层是有交叠的池化层,即
pooling核在相邻位置有重叠

在这里插入图片描述
在这里插入图片描述
在ILSVRC-2010上,top-1错误率为37.5%,top-5错误率为17.0%。上图是对96个
11113的卷积核进行可视化

4.2. VGG-16

可视化:

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
网络结构:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

参数数量变化:

在这里插入图片描述
网络说明:

  • 网络说明
    • 网络规模进一步增大,参数数量约为1.38亿
    • -由于各卷积层、池化层的超参数基本相同,整体结构呈现出规整的特点。
  • 普遍规律
  • 随网络深入,高和宽衰减,通道数增多。

4.3. 残差网络

非残差网络的缺陷:

在这里插入图片描述
残差网络的优势:

在这里插入图片描述

梯度消失问题:

在这里插入图片描述

在这里插入图片描述

残差块:

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
残差网络:

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

  • 普通网络的基准模型受VGG网络的启发
  • 卷积层主要有3×3的过滤器,并遵循两个简单的设计规则:①对输出特征图的尺寸相同的各层,都有相同数量的过滤器; ②如果特征图的大小减半,那么过滤器的数量就增加一倍,以保证每一层的时间复杂度相同。
  • ResNet模型比VGG网络更少的过滤器和更低的复杂性。ResNet具有34层的权重层,有36亿FLOPs,只是VGG-19(19.6亿FLOPs)的18%。

在这里插入图片描述
在这里插入图片描述

5. 常用数据集

5.1. MNIST

MNIST 数据集主要由一些手 写数字的图片和相应的标签组成,图片一共有 10 类,分别对应从 0~9

在这里插入图片描述
原始的 MNIST 数据库一共包含下面 4 个文件

在这里插入图片描述
MNIST数据集是由0〜9手写数字图片和数字标签所组成的,由60000个训练样本和10000个测试样本组成,每个样本都是一张28 * 28像素的灰度手写数字图片

在这里插入图片描述

MNIST数据集加载:
在这里插入图片描述
Fashion-MNIST数据集:

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

以下是数据集中的类,以及来自每个类的10个随机图像:

在这里插入图片描述

5.2. CIFAR 10数据集

CIFAR-10数据集:

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

以下是数据集中的类,以及来自每个类的10个随机图像:

在这里插入图片描述

5.3. PASCAL VOC数据集

PASCAL VOC数据集:

  • PASCAL的全称是Pattern Analysis, Statistical Modelling and
    Computational Learning
  • VOC的全称是Visual Object Classes
  • 目标分类(识别)、检测、分割最常用的数据集之一
  • 第一届PASCAL VOC举办于2005年,2012年终止。常用的是
    PASCAL 2012
  • 一共分成20类:
    • person
    • bird, cat, cow, dog, horse, shee
    • aeroplane, bicycle, boat, bus, car, motorbike, train
    • bottle, chair, dining table, potted plant, sofa, tv/monitor
  • 文件格式:

在这里插入图片描述
标注格式:

里面是图像对应的XML标注信息描述,每张图像有一个与之对应同名
的描述XML文件,XML前面部分声明图像数据来源,大小等元信息,
举例如下:

在这里插入图片描述

Pascal VOC2012 Main中统计的训练、验证、验证与训练、测试图像:

在这里插入图片描述

20类图像实例:

在这里插入图片描述

5.4. MS COCO数据集

MS COCO数据集:

  • PASCAL的全称是Microsoft Common Objects in Context,起源
    于微软于2014年出资标注的Microsoft COCO数据集
  • 数据集以scene understanding为目标,主要从复杂的日常场景中
    截取
  • 包含目标分类(识别)、检测、分割、语义标注等数据集
  • ImageNet竞赛停办后,COCO竞赛就成为是当前目标识别、检
    测等领域的一个最权威、最重要的标杆
  • 官网:http://cocodataset.org
  • 提供的标注类别有80 类,有超过33 万张图片,其中20 万张有
    标注,整个数据集中个体的数目超过150 万个。
    • 人:1类
    • 交通工具:8类,自行车,汽车等
    • 公路常见:5类,信号灯,停车标志等
    • 动物:10类,猫狗等
    • 携带物品:5类,背包,雨伞等
    • 运动器材:10类,飞盘,滑雪板,网球拍等。
    • 厨房餐具:7类,瓶子,勺子等
    • 水果及食品:10类
    • 家庭用品:7类,椅子、床,电视等
    • 家庭常见物品:17类,笔记本,鼠标,遥控器等

MS COCO数据集示例:

在这里插入图片描述

5.5. ImageNet数据集与ILSVRC

ImageNet数据集:

  • 始于2009年,李飞飞与Google的合作:“ImageNet: A Large-Scale Hierarchical Image Database”
  • 总图像数据:14,197,122
  • 总类别数:21841
  • 带有标记框的图像数:1,034,908

在这里插入图片描述

ISLVRC 2012子数据集:

  • 训练集:1,281,167张图片+标签
  • 类别数:1,000
  • 验证集:50,000张图片+标签
  • 测试集:100,000张图片

在这里插入图片描述

6. 利用现有资源-利用现成框架

在这里插入图片描述

7. 总结

经典网络: 以“一个或多个卷积层+一个池化层“作为一个基本单元进行堆叠,在网络尾部使用全连接层,最后以Softmax为分类器,输出结果。

残差网络: 在普通网络的基础上,将浅层的激活项通过支路直接传向深层,克服深层神经网络中梯度消失的问题,为训练极深的神经网络提供便利。

数据集: 常见的数据集包括VOC和COCO;ImageNet较大

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值