大家好,我是Sonhhxg_柒,希望你看完之后,能对你有所帮助,不足请指正!共同学习交流
个人主页-Sonhhxg_柒的博客_CSDN博客
欢迎各位→点赞 + 收藏⭐️ + 留言
系列专栏 - 机器学习【ML】 自然语言处理【NLP】 深度学习【DL】
foreword
✔说明⇢本人讲解主要包括Python、机器学习(ML)、深度学习(DL)、自然语言处理(NLP)等内容。
如果你对这个系列感兴趣的话,可以关注订阅哟
文章目录
AlexNet 概述
VGG16概述
Inception概述
GoogLeNet 检测
ResNet 概述
R-CNN 概述
图像分割
基于聚类的分割
基于图的分割
选择性搜索
区域提案
特征提取
图像分类
边界框回归
Fast R-CNN 概述
Faster R-CNN 概述
GAN 概述
GNN 概述
光谱 GNN
强化学习概述
迁移学习概述
概括
卷积神经网络( CNN ) 是计算机视觉中用于分类和检测对象的最广泛使用的工具。CNN 通过堆叠许多不同的线性和非线性函数层将输入图像映射到输出类或边界框。线性函数由卷积层、池化层、全连接层和 softmax 层组成,而非线性层是激活函数。神经网络有许多不同的参数和权重因子,需要针对给定的问题集进行优化。随机梯度下降和反向传播是训练神经网络的两种方式。
在第 4 章“图像深度学习”中,您学习了一些基本的编码技能来构建和训练神经网络,并了解了神经网络不同层内特征图的视觉转换。在本章中,您将深入了解神经网络架构和模型背后的理论,并理解诸如深度神经网络饱和、梯度消失问题、大参数集导致的过度拟合等关键概念。这将帮助您为研究目的创建自己的有效模型,并遵循接下来几章中将这些理论应用于代码的主题。
本章涵盖的主题如下:
AlexNet由 Alex Krizhevsky、Ilya Sutskever 和 Geoffrey E. Hinton 于 2012 年在题为ImageNet Classification with Deep Convolutional Neural Networks的论文中介绍。原始论文可在http://www.cs.utoronto.ca/~ilya/pubs/2012/imgnet.pdf找到。
这是第一次成功引入优化的 CNN 模型,以解决计算机视觉问题,涉及对来自许多不同类别(超过 22,000 个)的大量图像(超过 1500 万张)进行分类。在 AlexNet 之前,计算机视觉问题主要通过传统的机器学习方法来解决,通过收集更大的数据集并改进模型和技术以最大程度地减少过拟合来进行增量改进。
CNN 模型根据前五名错误率对错误率进行分类,这是给定图像的真实类别不在前五名预测类别中的实例的百分比。AlexNet 以 15.3% 的错误率前五名赢得了 2012 ILSVRC(ImageNet 大规模视觉识别挑战赛),大大领先于错误率 26.2% 的前五名的第二名。AlexNet 架构如下图所示:
AlexNet的基本思想总结如下:
以下代码导入了运行 TensorFlow 后端所需的所有函数。该模型导入Sequential模型,在 Keras 中是一层层的模型结构:
from __future__ import print_function
import keras
from keras.models import Sequential
from keras.layers import Dense, Dropout, Activation, Flatten
from keras.layers import Conv2D, MaxPooling2D, ZeroPadding2D
from keras.layers.normalization import BatchNormalization
from keras.regularizers import l2
以下代码加载 CIFAR 数据集。
数据集由训练和测试图像组成,这些图像将用于开发模型(训练)和验证其结果(测试)。每个数据集都有两个参数x和y,分别代表图像的宽度 ( x ) 和高度 ( y ):
from keras.datasets import cifar10
(x_train, y_train), (x_test, y_test) = cifar10.load_data()
神经网络有许多不同的参数,需要优化——这些也称为模型常数。F或 AlexNet,它们如下:
让我们将输入向量转换为二进制类矩阵,因为在此示例中我们有两个类:
y_train = keras.utils.to_categorical(y_train, num_classes)
y_test = keras.utils.to_categorical(y_test, num_classes)
# 初始化模型
model = Sequential()
下表描述了不同 AlexNet 模型层的 TensorFlow 代码。后续章节会介绍其他模型,但创建模型的基本思路类似:
Convolution and Pooling 1
model.add(Conv2D(96, (11, 11), input_shape=x_train.shape[1:],
padding='same', kernel_regularizer=l2(l2_reg)))
model.add(BatchNormalization())
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2))
Convolution and Pooling 2
model.add(Conv2D(256, (5, 5), padding='same'))
model.add(BatchNormalization())
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
Convolution and Pooling 3
model.add(ZeroPadding2D((1, 1)))
model.add(Conv2D(512, (3, 3), padding='same'))
model.add(BatchNormalization())
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
Convolution and Pooling 4
model.add(ZeroPadding2D((1, 1)))
model.add(Conv2D(1024, (3, 3), padding='same'))
model.add(BatchNormalization())
model.add(Activation('relu'))
以下列表中描述了关键模型配置参数。这应该为您提供训练神经网络模型需要优化的参数的高级概述:
以下代码展示了如何在 Keras 中的模型编译期间使用优化器:
model.compile(loss = 'categorical_crossentropy',
optimizer = keras.optimizers.Adadelta(),
metrics = ['accuracy'])
模型构建完成后,模型必须通过上述方法编译后才能用于预测(model.predict())。
在 2012 年 AlexNet 成功之后,越来越多的研究人员致力于改进 AlexNet 的 CNN 架构以提高准确性。焦点转移到更小的窗口大小、更小的过滤器和更小的步幅。VGG16 由 Karen Simonyan 和 Andrew Zisserman 于 2014 年在题为“用于大规模图像识别的深度卷积网络”的论文中提出。该论文可以在https://arxiv.org/abs/1409.1556阅读。
该模型在 ILSVRC-2014 的 ImageNet 中实现了 92.7% 的前五名测试准确率。
VGG16 架构如下图所示:
VGG16的基本思想总结如下:
在引入初始层之前,大多数 CNN 架构都有一个标准配置——堆叠(串联)卷积、归一化、最大池化和激活层,然后是全连接和 softmax 层。这种架构导致神经网络的深度增加,但存在两个主要缺点:
初始模型通过从密集网络移动到稀疏矩阵并将它们聚类以形成密集子矩阵来解决这两个问题。
初始模型也称为 GoogLeNet。它是由 Christian Szegedy、Wei Liu、Yangqing Jia、Pierre Sermanet、Scott Reed、Dragmir Anguelov、Dumitru Erhan、Vincent Vanhoucke 和 Andrew Rabinovich 在题为Going Deeper with Convolutions的论文中介绍的。盗梦空间的名称来自于林敏、陈强、严水成的论文网络中的网络和著名的网络模因我们需要更深入。初始论文和Network in Network论文的链接如下:
在论文Network In Network中,作者没有在输入图像上使用传统的线性滤波器,而是构建了一个微神经网络,并以类似于 CNN 的方式将其滑过输入图像。通过将这些层中的几个堆叠在一起来构建深度神经网络。微神经网络(也称为多层感知器)由多个具有激活函数的全连接层组成,如下图所示:
左图显示了传统 CNN 中的线性滤波器,将输入图像连接到下一层。右图显示了微网络,由多个全连接层组成,后跟一个将输入图像连接到下一层的激活函数。这里的inception层是NIN的逻辑顶点,描述如下:
上图显示,在 3 x 3 和 5 x 5 层之前使用 1 x 1 层会导致大约 30% 的降维,从 672(左图(a))到 480(右图(b)) . 下图显示了完整的初始网络。下图中间部分描述的完整inception层太大,一页都放不下,所以已经压缩了。不要试图在这里阅读图表的每个元素,而是要了解重复内容的整体概念。inception层的关键重复模块被放大了,如下图的顶部和底部所示:
该网络由以下部分组成:
下图说明了 CNN 过滤器及其在初始网络中的相应连接:
在上图中,深度连接层既可以连接到最大池层,也可以直接连接到 1 x 1 卷积层。无论哪种方式,之后的计算都遵循与上图所示相同的模式。
inception网络(也称为GoogLeNet )改进了循环卷积神经网络(R-CNN)的两阶段层(基于颜色、纹理、大小和形状的区域提议,然后是 CNN 进行分类)提议。
首先,它用改进的 CNN 初始值取代了 AlexNet。接下来,通过将选择性搜索(在 R-CNN 中)方法与多框预测相结合以提高对象边界框召回率,改进了区域提议步骤。区域提议减少了大约 60%(从 2,000 到 1,200),同时将覆盖率从 92% 增加到 93%,导致单个模型案例的平均精度提高了 1%。总体而言,准确率从 40% 提高到 43.9%。
ResNet 由 Kaiminh He、Xiangyu Zhang、Shaoquing Ren 和 Jian Sun 在题为Deep Residual Learning for Image Recognition 的论文中介绍,旨在解决深度神经网络随着深度增加的精度下降问题。这种退化不是由过度拟合引起的,而是由于在某个临界深度之后,输出丢失了输入的信息,因此输入和输出之间的相关性开始发散,导致不准确性增加。该论文可在https://arxiv.org/abs/1512.03385找到。
ResNet-34 实现了 5.71% 的 top-5 验证错误,优于 BN-inception 和 VGG。ResNet-152 实现了 4.49% 的前五位验证错误。六个不同深度的模型的集成实现了 3.57% 的前五验证误差,并在 ILSVRC-2015 中获得第一名。ILSVRC 代表 ImageNet 大规模视觉识别竞赛;它评估了 2010 年至 2017 年的对象检测和图像分类算法。
ResNet的主要特点描述如下:
上图有以下特点:
完整的 ResNet 模型如下图所示:
此处显示的 ResNet 模型比视觉几何组 (VGG)网络具有更少的过滤器和更低的复杂性。不使用辍学。各种神经网络模型的性能比较如下图所示:
上图显示以下内容:
区域特定的 CNN ( R-CNN ) 是由 Ross Girshick、Jeff Donahue、Trevor Darrell 和 Jitendra Malik 在一篇题为“用于准确对象检测和语义分割的丰富特征层次结构”的论文中介绍的。它是一种简单且可扩展的目标检测算法,与 VOC2012 之前的最佳结果相比,平均精度提高了 30% 以上。该论文可以在https://arxiv.org/abs/1311.2524阅读
整个对象检测模型分为图像分割、基于选择性搜索的区域提议、使用 CNN 和分类的特征提取以及使用支持向量机 (SVM)形成边界框,如下图所示:
上图 显示了将道路上的汽车和自行车的输入图像转换为对象检测边界框的各个步骤。
在以下部分中,将详细描述这些步骤中的每一个。
图像分割是将图像表示为多个区域。分割图像中的每个区域都具有相似的特征,例如颜色、纹理和强度。
K- means 是一种无监督机器学习技术,可根据质心将相似数据分组。K- means 聚类算法的关键步骤概述如下:
有许多可用的基于图的分割方法,但这里为 R-CNN 描述的方法是 Pedro Felzenszwalb 和 Daniel Huttenlocher 在题为Efficient Graph-Based Image Segmentation的论文中介绍的方法。该论文可以在http://people.cs.uchicago.edu/~pff/papers/seg-ijcv.pdf阅读。
该方法涉及将图像表示为图形(本章的 GNN 概述部分给出了详细说明),然后从图中选择边,其中每个像素都链接到图中的节点并通过边连接到相邻像素. 边缘上的权重表示像素之间的差异。分割标准基于由边界分隔的图像的相邻区域的可变性程度。通过评估阈值函数来定义边界,该阈值函数表示沿边界的像素之间的强度差异与相邻像素之间的强度差异。基于区域之间边界的存在,分割被定义为粗略或精细。
物体检测的主要挑战是在图像中找到物体的精确位置。图像中不同空间方向的多个对象使得很难找到图像中对象的边界。例如,一个物体可以被遮盖并且只能部分看到——例如一个人站在汽车后面;我们可以看到汽车和汽车上方的人的身体。使用选择性搜索来解决这个问题。它将整个图像划分为许多分割区域。然后它使用自下而上的方法将相似的区域组合成更大的区域。选择性搜索使用生成的区域来查找对象的位置。选择性搜索使用贪心算法根据大小、颜色和纹理将区域迭代地组合在一起。选择性搜索中使用的步骤解释如下:
选择性搜索之后是区域提议,将在下一节中描述。
在这个阶段,该算法使用前面描述的选择性搜索方法来提取大约 2,000 个与类别无关的区域建议。 与类别无关的区域建议用于识别图像中的多个区域,以便每个对象由图像中的至少一个区域很好地表示。人类通过定位图像中的对象来自然地做到这一点,但对于机器来说,需要确定对象的位置,然后需要将其与图像中的适当区域进行匹配以检测对象。
与图像分类不同,检测涉及图像定位,以便可以创建一个适当的区域来包围对象以检测该区域内的特征。基于选择性搜索方法选择合适的区域,该方法通过基于颜色搜索然后根据纹理、大小和形状搜索来计算相似区域。
特征提取是将相似的特征(如边、角和线)分组为特征向量。例如,特征向量将图像的维度从 227 x 227 (~51,529) 降低到 4,096。每个区域提案,无论其大小,首先通过膨胀和扭曲转换为 227 x 227 的大小。这是必需的,因为 AlexNet 的输入图像大小为 227 x 227。使用 AlexNet 从每个区域提取 4,096 个特征向量。特征矩阵为 4,096 x 2,000,因为我们为每个图像有 2,000 个区域建议。
原则上,R-CNN 可以将任何 CNN 模型(例如 AlexNet、ResNet、Inception 或 VGG)作为输入,只要修改输入图像大小以适应网络的图像大小即可。R-CNN 的作者将 AlexNet 和 VGG16 作为 R-CNN 的输入进行了比较,发现 VGG16 的准确率提高了 8%,但与 AlexNet 相比,所需时间延长了 7 倍。
在通过 AlexNet 进行特征提取之后,图像的分类涉及将特征向量通过特定于类的线性 SVM 以对区域提议中对象的存在进行分类。使用 SVM 是一种有监督的机器学习方法,它为每个特征向量分配权重和偏差,然后画一条线将对象分成特定的类。分离是通过确定每个向量与线的距离然后定位线以使分离距离最大来完成的。
边界框回归预测图像中对象的位置。在 SVM 之后,开发了一个线性回归模型来预测边界框检测窗口的位置和大小。对象的边界框由四个锚值定义,[ x , y , w , h ],其中x是边界框原点的x坐标,y是边界框原点的y坐标,w是宽度边界框的高度, h是边界框的高度。
回归技术试图通过调整四个锚值中的每一个来将预测值与地面实况(目标)值进行比较,从而最小化边界框预测中的误差。
R-CNN 在目标检测方面比之前的任何方法都取得了更显着的改进,但速度很慢,因为它对每个区域提议都在 CNN 上执行了前向传递。此外,训练是一个多阶段的管道,包括首先针对区域提议优化 CNN,然后运行 SVM 进行对象分类,然后使用边界框回归器绘制边界框。同样是 R-CNN 的创建者 Ross Girschick 提出了一种称为快速 R-CNN 的模型,以使用单阶段训练方法来改进检测。下图展示了fast R-CNN的架构:
fast R-CNN中使用的步骤如下:
所有网络权重都使用反向传播进行训练,计算和内存在前向和后向传播之间共享,用于损失和权重计算;这将大型网络中的训练时间从 84 小时(R-CNN)减少到 9.5 小时(快速 R-CNN)。Fast R-CNN 使用 softmax 分类器而不是 SVM (R-CNN)。softmax 的平均精度略优于 SVM,如下表所示,针对小型 (S)、中型 (M) 和大型 (L) 网络:
VOC07 |
S |
M |
L |
SVMs | 56.3 |
58.7 |
66.8 |
Softmax | 57.1 |
59.2 |
66.9 |
SVM 和 softmax 之间的结果差异很小,说明与使用 SVM 的多阶段训练相比,使用 softmax 进行一次微调就足够了。提案数量超过 4,000 会导致平均精度下降约 1%,而当提案数量在 2,000 到 4,000 之间时,它们实际上会导致精度提高约 0.5%。
R-CNN 和 Fast R-CNN 都依赖于选择性搜索方法来开发 2,000 个区域的提议,这导致每张图像的检测率为 2 秒,而最有效的检测方法为每张图像 0.2 秒。Shaoquing Ren、Kaiming He、Ross Girshick 和 Jian Sun 写了一篇题为Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks to Improvement the R-CNN Speed and Accuracy for Object Detection 的论文。你可以在https://arxiv.org/abs/1506.01497阅读这篇论文。
下图展示了 Faster R-CNN 的架构:
关键概念如下表所示:
Faster R-CNN 中的目标检测网络类似于 fast R-CNN。下图展示了一些使用faster R-CNN的物体检测输出:
上图展示了使用更快的 R-CNN 模型进行的推理。在第 10 章,使用 R-CNN、SSD 和 R-FCN 进行目标检测,您将学习如何自己生成这种类型的图形。左图是使用 TensorFlow Hub 的预训练模型生成的,而右图是通过训练我们自己的图像然后开发我们自己的模型生成的。
上图中所示的高精度是通过遵循以下列表中概述的技术获得的:
为了训练 RPN,根据与训练数据的交集重叠( IoU )为每个锚框分配一个二进制类标签。IoU 用于衡量物体检测的准确性。在第 7 章,使用 YOLO 进行目标检测中对其进行了详细描述。现在,您知道 IoU 是衡量两个边界框之间重叠面积与其并集面积之比就足够了。这意味着 IOU = 1,这意味着两个完整的边界框重叠,所以你只能看到一个,而当 IoU = 0 时,这意味着两个边界框是完全分开的。
二元类级别具有正样本和负样本,具有以下属性:
用于回归的特征具有相同的空间大小(高度和宽度)。在实际图像中,特征大小可以不同。这是通过使用不同的回归比例和纵横比使用不同的边界框大小来考虑的。RPN 和目标检测之间的卷积特征使用以下原则共享:
R-CNN、fast R-CNN和faster R-CNN的对比如下表所示:
参数 |
R-CNN | Fast R-CNN | Faster R-CNN |
Input | Image | Image | Image |
输入图像处理 |
基于像素相似度的图像分割 |
输入图像被馈送到 CNN 以生成卷积特征图。 |
输入图像被馈送到 CNN 以生成卷积特征图。 |
区域提案 |
使用对分割图像的选择性搜索生成 2K 区域建议。 |
使用卷积特征图的选择性搜索生成 2K 区域建议。 |
区域提议是使用区域提议网络( RPN ) 生成的。该 CNN 使用一个 60 x 40 的滑动窗口,用于具有 9 个锚框(3 个比例和 3 个纵横比)的特征图的每个位置。 |
翘曲成固定尺寸 |
从区域提议中,每个区域都被扭曲成固定大小以输入到 CNN。 |
使用 RoI 池化层中的最大池化将区域建议扭曲成一个固定大小的正方形。 |
使用 RoI 池化层将区域建议扭曲为固定大小的正方形。 |
特征提取 |
每次将每张图像固定大小的 2K 扭曲区域建议馈送到 CNN。 |
2K 扭曲区域被馈送到两个分支,每个分支都由一个全连接层组成。 |
2K 扭曲区域被馈送到全连接层。 |
检测(Detection) | CNN 的输出被传递到 SVM 以进行分类,然后由边界框回归器生成边界框。 |
全连接层的一个输出被传递到 softmax 层进行分类,另一个输出到边界框回归器以生成边界框。 |
全连接层的一个输出被传递到 softmax 层进行分类,另一个输出到边界框回归器以生成边界框。 |
CNN 类型 | AlexNet | VGG 16 |
ZFNet 或 VGGNet。ZFNet 是 AlexNet 的修改版本。 |
区域提案 |
选择性搜索用于生成约 2,000 个区域建议。 |
选择性搜索用于生成约 2,000 个区域建议。 |
CNN 用于生成约 21,500 个区域建议(约60 x 40 x 9)。 |
卷积操作 |
每张图像进行 2K 次卷积操作。 |
每个图像都进行一次卷积操作。 |
每个图像都进行一次卷积操作。 |
区域提议和检测 |
区域提议和检测是解耦的。 |
区域提议和检测是解耦的。 |
区域提议和检测是耦合的。 |
训练时间 |
84 小时 |
9 小时 |
150 小时 |
测试时间 |
49 秒 |
2.43 秒 |
0.2 秒 |
地图 (VOC 2007) |
66 |
66.9 |
66.9 |
上表清楚地展示了 R-CNN 算法的演进过程以及在提高其准确性的同时加快算法速度的方法。以下是我们从上表中学到的一些关键点:
生成对抗网络( GAN ) 是一类学习估计数据概率分布的 CNN。GAN 由两个相互竞争的连接神经网络组成,称为生成器和鉴别器。生成器根据图像特征的噪声输入生成人工图像,判别器将人工图像与真实图像进行比较,以确定图像为真实的概率。概率信息被传递到图像输入以在下一阶段学习。下图说明了 GAN 的机制:
GAN算法的分步说明如下:
二元分类器损失函数称为交叉熵损失函数,表示为-(y log(p) + (1-y) log(1-p)),其中p是概率,y是期望值.
GAN 的类型很多(超过 20 种)已经存在,并且几乎每个月都在开发更多类型。以下列表涵盖了 GAN 的两个主要重要变体:
GAN的一些实际用例列举如下:
图神经网络( GNN ) 将 CNN 学习扩展到图数据。图可以表示为节点和边的组合,其中节点表示图的特征,边连接相邻节点,如下图所示:
在此图像中,节点由实心白点表示,边缘由连接点的线表示。
以下等式描述了图表的关键参数:
将图转换为由节点、边和节点之间的关系组成的向量称为图嵌入。嵌入向量可以用以下等式表示:
以下列表描述了上述等式的元素:
如果H , X是通过堆叠所有状态和所有特征构建的向量,那么您可以为 GNN 迭代状态编写以下等式:
上述一般等式根据 GNN 的类型推导出为各种形式。有两个主要分类:光谱 GNN 和非光谱 GNN。
Spectral GNN 最初由 Joan Bruna、Wojciech Zaremba、Arthus Szlam 和 Yann LeCun 在题为Spectral Networks and Deep Locally Connected Networks on Graphs的论文中提出。您可以在https://arxiv.org/pdf/1312.6203v3.pdf找到论文的详细信息。
Spectral GNN 是傅里叶域中的卷积。谱 GNN 可以用以下等式表示:
以下列表描述了上述等式的元素:
Kipf 和 Welling(在他们的文章Semi-Supervised Classification With Graph Convolution Networks, ICLR 2017 中)进一步简化了这一点,以解决以下过拟合问题:
使用以下重整化进一步简化了这一点:
下图说明了 GNN 的架构:
GNN 层聚合来自其邻居的特征信息,并应用 ReLU 激活、池化、全连接和 softmax 层对图像中的不同特征进行分类。
强化学习是一种机器学习,其中代理通过根据累积的过去奖励信号的反馈预测奖励(或结果)来学习在当前环境中采取行动。Q- learning 由 Christopher Watkins 在题为Learning from Delayed Rewards的论文中介绍,是强化学习中最流行的算法之一。Q意味着质量——这是给定动作产生奖励的价值:
下图说明了强化学习的概念。代理在某种状态下采取行动以产生行动,从而产生奖励。动作价值随着时间的推移而提高以最大化奖励:
代理从一个状态 ( s t ) 开始,观察一系列观察结果,采取行动 ( a t ) 并获得奖励。
下面的累积值函数被最大化以在Q学习方法中找到所需的输出:
以下列表描述了上述等式的主要特征:
由于Q学习在估计的动作值上包含一个最大化步骤,它往往会高估值。
在强化学习中,卷积网络可用于创建能够在复杂情况下获得积极奖励的智能体动作。这个概念首先由 Mnih 等人提出。在 2015 年发表的一篇题为《通过深度强化学习实现人类水平控制》的论文中。可在https://web.stanford.edu/class/psych209/Readings/MnihEtAlHassibis15NatureControlDeepRL.pdf找到本文的详细信息。
这包括三个卷积层和一个全连接隐藏层。请注意,在强化学习中,卷积网络的解释与监督学习不同。在监督学习中,CNN 用于将图像分类为不同的类别;在强化学习中,图像代表一种状态,CNN 用于创建代理在该状态下执行的动作。
到目前为止,我们已经学会了通过单独设计工作来解决特定任务来构建 CNN 架构。神经网络模型是深度密集型的,需要大量的训练数据、训练运行和调优的专业知识才能达到高精度;然而,作为人类,我们并不是从零开始学习一切——我们向他人学习,我们向云(互联网)学习。当我们试图分析的新类的数据不足时,迁移学习很有用,但在类似的类中有大量预先存在的数据。每个 CNN 模型(AlexNet、VGG16、ResNet 和 inception)都在 ImageNet ILSVRC 竞赛数据集上进行了训练。ImageNet 是一个包含 22,000 个类别中超过 1500 万张标记图像的数据集。ILSVRC 使用 ImageNet 的一个子集,在 1,000 个类别中的每个类别中包含大约 1,000 个图像。
在迁移学习中,可以修改为其他情况开发的预训练模型,以用于我们的特定情况来预测我们自己的类别。我们的想法是选择我们已经研究过的 CNN 架构,例如 AlexNet、VGG16、ResNet 和 inception,冻结一两层,更改一些权重,并输入我们自己的数据来对类别进行预测。在第 4 章“图像深度学习”中,我们了解了 CNN 如何查看和解释图像。
这些学习将用于构建迁移学习,所以让我们总结一下我们在第 4 章“图像深度学习”中的 CNN 可视化中学到的一些关键点:
现在我们理解了这些概念,我们将能够欣赏以下常用的迁移学习方法:
1.移除并交换 softmax 层:
2.微调 ConvNet。为了减少过度拟合,请保持一些较早的层固定,并且只微调网络的更高级别部分。正如我们在第 4 章“图像深度学习”中的可视化示例中所见,最后一层非常抽象,并且针对特定数据集进行了调整,因此冻结整个模型并将 softmax 更改为步骤 1的新 softmax可能会导致在更高的不准确性。为了提高准确性,最好从 CNN 中间训练您的自定义图像——这样,全连接层之前的最后几层将具有特定于您的应用程序的特征,这将导致更高的预测准确性。在第 6 章中,使用迁移学习进行视觉搜索,我们将对这个概念进行编码,并看到从 CNN 中间附近开始训练的准确性提高。
在本章中,我们了解了不同卷积网络 (ConvNet) 的架构,以及如何将 ConvNet 的不同层堆叠在一起以将各种输入分类为预定义的类。我们学习了不同的图像分类模型,例如 AlexNet、VGGNet、Inception 和 ResNet,它们为什么不同,它们解决了什么问题,以及它们的总体相似之处。
我们了解了对象检测方法,例如 R-CNN,以及它如何随着时间的推移转化为快速且更快的 R-CNN 以进行边界框检测。本章介绍了两个新模型,GAN 和 GNN,作为两组新的神经网络。本章以对强化学习和迁移学习的介绍结束。我们了解到,在强化学习中,代理与环境交互以根据奖励学习最优策略(例如在交叉路口左转或右转),而在迁移学习中,预训练模型(例如 VGG16)可以用于通过优化 CNN 的后期层来基于新数据派生一个新类。
在下一章中,您将学习如何使用迁移学习来训练您自己的神经网络,然后使用经过训练的网络执行视觉搜索。