Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
D_ACMER
apachecn-dl-zh
提交
1059527b
A
apachecn-dl-zh
项目概览
D_ACMER
/
apachecn-dl-zh
与 Fork 源项目一致
Fork自
OpenDocCN / apachecn-dl-zh
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
A
apachecn-dl-zh
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
1059527b
编写于
9月 02, 2020
作者:
W
wizardforcel
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
2020-09-02 18:17:17
上级
62f5ead4
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
20 addition
and
20 deletion
+20
-20
docs/dl-cv/01.md
docs/dl-cv/01.md
+9
-9
docs/dl-cv/02.md
docs/dl-cv/02.md
+11
-11
未找到文件。
docs/dl-cv/01.md
浏览文件 @
1059527b
...
...
@@ -117,11 +117,11 @@ L1 惩罚权重的绝对值,并趋于使权重为零。 L2 惩罚权重的平
SGD 与梯度下降相同,区别在于 SGD 每次仅用于部分数据训练。 该参数称为小批量大小。 从理论上讲,甚至可以使用一个示例进行训练。 在实践中,最好尝试各种数字。 在下一部分中,我们将讨论比标准 ANN 在图像数据上更有效的卷积神经网络。
访问
[
https://yihui.name/animation/example/grad-desc/
](
https://yihui.name/animation/example/grad-desc/
)
,可以很好地看到凸面和非凸面的梯度下降情况。
访问
[
这里
](
https://yihui.name/animation/example/grad-desc/
)
,可以很好地看到凸面和非凸面的梯度下降情况。
# 在 TensorFlow 游乐场玩
TensorFlow 游乐场是神经网络的交互式可视化。 访问
[
http://playground.tensorflow.org/
](
http://playground.tensorflow.org/
)
,方法是通过更改参数来查看前面提到的术语如何协同工作。 这是操场的屏幕截图:
TensorFlow 游乐场是神经网络的交互式可视化。 访问
[
这里
](
http://playground.tensorflow.org/
)
,方法是通过更改参数来查看前面提到的术语如何协同工作。 这是操场的屏幕截图:
![](
img/2a57f080-1ddb-4c9d-b3d0-201bc792caad.png
)
...
...
@@ -155,7 +155,7 @@ TensorFlow 游乐场中的仪表板
CNN 是任何计算机视觉深度学习模型中最重要的组成部分。 毫不夸张地说,没有 CNN,任何计算机都不可能拥有视觉。 在下一部分中,我们将讨论几个可用于一些应用程序的高级层。
访问
[
https://www.youtube.com/watch?v=jajksuQW4mc
](
https://www.youtube.com/watch?v=jajksuQW4mc
)
,以获取有关 CNN 和最大池操作的出色可视化。
访问
[
这里
](
https://www.youtube.com/watch?v=jajksuQW4mc
)
,以获取有关 CNN 和最大池操作的出色可视化。
# 递归神经网络(RNN)
...
...
@@ -249,7 +249,7 @@ GP-GPU 是一种特殊的硬件,可加快训练深度学习模型的训练过
# 计算机统一设备架构-CUDA
CUDA 是 NVIDIA 使用 GPU 的并行特性提供的 API 层。 安装此驱动程序后,还将安装硬件驱动程序。 首先,
从 NVIDIA 门户网站下载
`CUDA`
库:
[
https://developer.nvidia.com/cuda-downloads
](
https://developer.nvidia.com/cuda-downloads
)
。
CUDA 是 NVIDIA 使用 GPU 的并行特性提供的 API 层。 安装此驱动程序后,还将安装硬件驱动程序。 首先,
[
从 NVIDIA 门户网站下载`CUDA`库
](
https://developer.nvidia.com/cuda-downloads
)
。
按照页面上的说明进行操作,下载驱动程序,然后按照安装说明进行操作。 这是 Ubuntu CUDA 的屏幕截图和安装说明:
...
...
@@ -261,7 +261,7 @@ CUDA 是 NVIDIA 使用 GPU 的并行特性提供的 API 层。 安装此驱动
# CUDA 深度神经网络-CUDNN
`CUDNN`
库为深度学习算法提供了原语。 由于此软件包由 NVIDIA 提供,因此对其硬件进行了高度优化,并且运行速度更快。 该软件包提供了几种用于深度学习的标准例程。 著名的深度学习库(例如
`tensorflow`
,
`caffe`
等)使用这些软件包。 在下一节中,将提供安装
`CUDNN`
的说明。 您可以从
NVIDIA 门户网站
[
https://developer.nvidia.com/rdp/cudnn-download
](
https://developer.nvidia.com/rdp/cudnn-download
)
下载
`CUDNN`
。
`CUDNN`
库为深度学习算法提供了原语。 由于此软件包由 NVIDIA 提供,因此对其硬件进行了高度优化,并且运行速度更快。 该软件包提供了几种用于深度学习的标准例程。 著名的深度学习库(例如
`tensorflow`
,
`caffe`
等)使用这些软件包。 在下一节中,将提供安装
`CUDNN`
的说明。 您可以从
[
NVIDIA 门户网站
](
https://developer.nvidia.com/rdp/cudnn-download
)
下载
`CUDNN`
。
用户帐户是必需的(免费注册)。
...
...
@@ -284,7 +284,7 @@ Python 是任何数据科学应用程序的实际选择。 它拥有最大的社
*
Python 3.x 避免了原始实现中的许多设计缺陷
*
与普遍的看法相反,Python3.x 具有与 Python 2.x 一样多的数据科学支持库。
在本书中,我们将使用 Python 版本 3。 转到
[
https://www.python.org/downloads/
](
https://www.python.org/downloads/
)
,然后根据操作系统下载版本 3。 按照下载链接中给出的步骤安装 Python。 安装 Python 后,必须安装
**pip3**
,以方便安装 Python 软件包。 然后通过输入以下命令安装几个 Python 软件包,以便以后可以安装
`OpenCV`
和
`tensorflow`
:
在本书中,我们将使用 Python 版本 3。 转到
[
这里
](
https://www.python.org/downloads/
)
,然后根据操作系统下载版本 3。 按照下载链接中给出的步骤安装 Python。 安装 Python 后,必须安装
**pip3**
,以方便安装 Python 软件包。 然后通过输入以下命令安装几个 Python 软件包,以便以后可以安装
`OpenCV`
和
`tensorflow`
:
```
py
sudo
pip3
install
numpy
scipy
scikit
-
learn
pillow
h5py
...
...
@@ -306,7 +306,7 @@ Python 是任何数据科学应用程序的实际选择。 它拥有最大的社
sudo
apt
-
get
install
python
-
opencv
```
对于其他操作系统,可以在
[
https://opencv.org/
](
https://opencv.org/
)
找到类似的步骤。 它是跨平台的,针对 CPU 密集型应用程序进行了优化。 它具有多种编程语言的接口,并且受 Windows,Ubuntu 和 Mac 支持。
对于其他操作系统,可以在
[
这里
](
https://opencv.org/
)
找到类似的步骤。 它是跨平台的,针对 CPU 密集型应用程序进行了优化。 它具有多种编程语言的接口,并且受 Windows,Ubuntu 和 Mac 支持。
# TensorFlow 库
...
...
@@ -372,7 +372,7 @@ Hello, TensorFlow!
让我们再看一个示例,以了解会话和图形的工作方式。
访问
[
https://github.com/rajacheers/DeepLearningForComputerVision
](
https://github.com/rajacheers/DeepLearningForComputerVision
)
获取本书中所有示例的代码。 该代码将根据章节进行组织。 您可以提出问题并在存储库中获得帮助。
访问
[
这里
](
https://github.com/rajacheers/DeepLearningForComputerVision
)
获取本书中所有示例的代码。 该代码将根据章节进行组织。 您可以提出问题并在存储库中获得帮助。
# TensorFlow 示例,将两个数字相加
...
...
@@ -478,7 +478,7 @@ TensorFlow Serving 是 TensorFlow 中的工具,专为灵活的部署环境而
sudo
apt
-
get
install
tensorflow
-
model
-
server
```
有关如何使用服务的逐步说明,将在
[
第 3 章
](
../Text/03.html
)
,
*图像检索*
中进行介绍。 请注意,仅在 Ubuntu 中即可轻松安装 Serving; 对于其他操作系统,请参考
[
https://www.tensorflow.org/serving/setup
](
https://www.tensorflow.org/serving/setup
)
。 下图说明了 TensorFlow Serving 和 TensorFlow 在生产环境中如何交互:
有关如何使用服务的逐步说明,将在
[
第 3 章
](
../Text/03.html
)
,
*图像检索*
中进行介绍。 请注意,仅在 Ubuntu 中即可轻松安装 Serving; 对于其他操作系统,请参考
[
这里
](
https://www.tensorflow.org/serving/setup
)
。 下图说明了 TensorFlow Serving 和 TensorFlow 在生产环境中如何交互:
![](
img/54fe6552-5ba5-4270-ab85-74a753389c05.png
)
...
...
docs/dl-cv/02.md
浏览文件 @
1059527b
...
...
@@ -78,7 +78,7 @@ optimiser = tf.train.GradientDescentOptimizer(
softmax 和交叉熵是从
`tf.nn`
程序包一起计算的,该程序包还有其他几种有用的方法。
`tf.train`
有几个优化器,在这里,我们使用香草梯度下降。 您可以访问 TensorFlow API 文档以了解其他可选参数。 到目前为止,已定义了占位符,变量和操作,但尚未填充张量。
阅读 TensorFlow 中提供的
优化程序列表,网址为
[
https://www.tensorflow.org/api_guides/python/train
](
https://www.tensorflow.org/api_guides/python/train
)
。 Adam 优化器对于计算机视觉应用程序特别有用。 它通常会收敛得更快,因此我们不需要定义学习率。 有关优化器的理论总结,请访问
[
http://ruder.io/optimizing-gradient-descent
](
http://ruder.io/optimizing-gradient-descent
)
。
阅读 TensorFlow 中提供的
[
优化器列表
](
https://www.tensorflow.org/api_guides/python/train
)
。 Adam 优化器对于计算机视觉应用程序特别有用。 它通常会收敛得更快,因此我们不需要定义学习率。 有关优化器的理论总结,请访问
[
这里
](
http://ruder.io/optimizing-gradient-descent
)
。
# 用数据训练模型
...
...
@@ -458,7 +458,7 @@ Accuracy of test data: 0.9902
![](
img/da904c50-2447-4537-833a-d31218cbfe5a.png
)
数据集大小,标签数量和图像大小类似于
`MNIST`
。 可以在
[
https://github.com/zalandoresearch/fashion-mnist
](
https://github.com/zalandoresearch/fashion-mnist
)
上找到更多详细信息。 您可以运行先前学习的模型并检查准确性。
数据集大小,标签数量和图像大小类似于
`MNIST`
。 可以在
[
这个页面
](
https://github.com/zalandoresearch/fashion-mnist
)
上找到更多详细信息。 您可以运行先前学习的模型并检查准确性。
# ImageNet 数据集和竞争
...
...
@@ -476,7 +476,7 @@ ImageNet 是具有 14,197,122 图像,21,841 个同义词集索引的计算机
# AlexNet 模型
**AlexNet**
是第一本引起人们对计算机视觉深度学习的广泛兴趣的出版物。 Krizhevsky 等。 (
[
https://papers.nips.cc/paper/4824-imagenet-classification-with-deep-convolutional-neural-networks.pdf
](
https://papers.nips.cc/paper/4824-imagenet-classification-with-deep-convolutional-neural-networks.pdf
)
)提出了 AlexNet,它一直是先驱和影响力 在这个领域里
。 该模型赢得了 ImageNet 2013 挑战。 错误率是 15.4%,明显优于下一个。 该模型是具有五个卷积层的相对简单的体系结构。 面临的挑战是对 1,000 种对象进行分类。 图像和数据包含 1500 万条带注释的图像,其中包含 22,000 多个类别。 其中,只有 1,000 个类别用于比赛。 AlexNet 使用 ReLU 作为激活功能,发现它的训练速度比其他激活功能快几倍。 该模型的架构如下所示:
[
**Krizhevsky 等人**
](
https://papers.nips.cc/paper/4824-imagenet-classification-with-deep-convolutional-neural-networks.pdf
)
提出了 AlexNet(是第一个引起人们对计算机视觉深度学习的广泛兴趣的作品),它一直是这个领域里的先驱和影响力
。 该模型赢得了 ImageNet 2013 挑战。 错误率是 15.4%,明显优于下一个。 该模型是具有五个卷积层的相对简单的体系结构。 面临的挑战是对 1,000 种对象进行分类。 图像和数据包含 1500 万条带注释的图像,其中包含 22,000 多个类别。 其中,只有 1,000 个类别用于比赛。 AlexNet 使用 ReLU 作为激活功能,发现它的训练速度比其他激活功能快几倍。 该模型的架构如下所示:
![](
img/ee056ac4-3d0d-47df-ac96-5e2f6988c91b.png
)
...
...
@@ -496,7 +496,7 @@ ImageNet 是具有 14,197,122 图像,21,841 个同义词集索引的计算机
# Google Inception-V3 模型
**Inception-V3**
是 Szegedy 等人提出的。 (
[
https://arxiv.org/pdf/1409.4842.pdf
](
https://arxiv.org/pdf/1409.4842.pdf
)
)
,并介绍了具有更好泛化方法的初始概念。 该架构在 2014 年赢得了 ImageNet 竞赛的冠军。它旨在提高速度和尺寸的效率。 它的参数比 AlexNet 小 12 倍。 初始阶段是构建宏体系结构的微体系结构。 每个隐藏层都有一个较高级别的图像表示。 在每一层,我们可以选择使用池化或其他层。 初始使用多个内核,而不是使用一种类型的内核。 平均池之后是各种大小的卷积,然后将它们合并在一起。
[
**Inception-V3** 是 Szegedy 等人提出的
](
https://arxiv.org/pdf/1409.4842.pdf
)
,并介绍了具有更好泛化方法的初始概念。 该架构在 2014 年赢得了 ImageNet 竞赛的冠军。它旨在提高速度和尺寸的效率。 它的参数比 AlexNet 小 12 倍。 初始阶段是构建宏体系结构的微体系结构。 每个隐藏层都有一个较高级别的图像表示。 在每一层,我们可以选择使用池化或其他层。 初始使用多个内核,而不是使用一种类型的内核。 平均池之后是各种大小的卷积,然后将它们合并在一起。
可以基于数据学习内核参数。 使用多个内核,该模型可以检测较小的特征以及较高的抽象度。 1 x 1 卷积将减少特征,从而减少计算量。 这将在推理过程中占用较少的 RAM。 以下是最简单形式的启动模块,其中包含具有各种内核大小和池化的卷积选项:
...
...
@@ -516,17 +516,17 @@ ImageNet 是具有 14,197,122 图像,21,841 个同义词集索引的计算机
# Microsoft ResNet-50 模型
**ResNet**
是 He 等人提出的。 (
[
https://arxiv.org/pdf/1512.03385.pdf
](
https://arxiv.org/pdf/1512.03385.pdf
)
)
,并在 2015 年赢得了 ImageNet 竞赛。此方法表明可以训练更深的网络。 网络越深,精度变得越饱和。 这甚至不是由于过拟合或由于存在大量参数,而是由于减少了训练误差。 这是由于无法反向传播梯度。 可以通过以下方法将梯度直接发送到带有残差块的更深层来克服:
[
**ResNet** 是 He 等人提出的
](
https://arxiv.org/pdf/1512.03385.pdf
)
,并在 2015 年赢得了 ImageNet 竞赛。此方法表明可以训练更深的网络。 网络越深,精度变得越饱和。 这甚至不是由于过拟合或由于存在大量参数,而是由于减少了训练误差。 这是由于无法反向传播梯度。 可以通过以下方法将梯度直接发送到带有残差块的更深层来克服:
![](
img/ff1c06f1-c254-4602-9b50-91cf9402df05.png
)
每两层相连,形成一个残留块。 您可以看到训练是在各层之间传递的。 通过这种技术,反向传播会将错误带到较早的层。
可以
从
[
https://github.com/tensorflow/tensorflow/tree/r1.4/tensorflow/python/keras/_impl/keras/applications
](
https://github.com/tensorflow/tensorflow/tree/r1.4/tensorflow/python/keras/_impl/keras/applications
)
使用模型定义。 定义了模型中的每一层,并且
`ImageNet`
数据集上的预训练权重可用
。
可以
使用来自
[
这里
](
https://github.com/tensorflow/tensorflow/tree/r1.4/tensorflow/python/keras/_impl/keras/applications
)
的模型定义,它定义了模型中的每一层,并且提供
`ImageNet`
数据集上的预训练权重
。
# SqueezeNet 模型
Iandola 等人介绍了
**SqueezeNet**
模型。 (
[
https://arxiv.org/pdf/1602.07360.pdf
](
https://arxiv.org/pdf/1602.07360.pdf
)
)
,以减少模型尺寸和参数数量。
[
Iandola 等人介绍了 **SqueezeNet** 模型
](
https://arxiv.org/pdf/1602.07360.pdf
)
,以减少模型尺寸和参数数量。
通过使用 1 x 1 过滤器替换 3 x 3 过滤器,使网络变得更小,如下所示:
...
...
@@ -540,9 +540,9 @@ Iandola 等人介绍了 **SqueezeNet** 模型。 ( [https://arxiv.org/pdf/1602
经 Iandola 许可复制 等。
# 空间
变压
器网络
# 空间
转换
器网络
Jaderberg 等人提出的
**空间变压器网络**
。 (
[
https://arxiv.org/pdf/1506.02025.pdf
](
https://arxiv.org/pdf/1506.02025.pdf
)
)尝试在传递到 CNN 之前对图像进行转换。 这与其他网络不同,因为它尝试在卷积之前修改图像。 该网络学习参数以变换图像。 学习用于
**仿射变换**
的参数。 通过应用仿射变换,可以实现
**空间不变性**
。 在以前的网络中,空间不变性是通过最大池化层实现的。 空间变压
器网络的位置如下所示:
Jaderberg 等人提出的
[
**空间转换器网络**
](
https://arxiv.org/pdf/1506.02025.pdf
)
尝试在传递到 CNN 之前对图像进行转换。 这与其他网络不同,因为它尝试在卷积之前修改图像。 该网络学习参数以变换图像。 学习用于
**仿射变换**
的参数。 通过应用仿射变换,可以实现
**空间不变性**
。 在以前的网络中,空间不变性是通过最大池化层实现的。 空间转换
器网络的位置如下所示:
![](
img/177e14e5-4bc8-4b5c-9e0f-754188739941.png
)
...
...
@@ -550,7 +550,7 @@ Jaderberg 等人提出的**空间变压器网络**。 ( [https://arxiv.org/pdf
# DenseNet 模型
DenseNet 是 Huang 等人提出的 ResNet 的扩展。 (
[
https://arxiv.org/pdf/1608.06993.pdf
](
https://arxiv.org/pdf/1608.06993.pdf
)
)
。 在 ResNet 块中,上一层通过求和合并到下一层。 在 DenseNet 中,上一层通过串联合并到下一层。 DenseNet 将所有层连接到上一层,将当前层连接到下一层。
[
DenseNet 是 Huang 等人提出的 ResNet 的扩展
](
https://arxiv.org/pdf/1608.06993.pdf
)
。 在 ResNet 块中,上一层通过求和合并到下一层。 在 DenseNet 中,上一层通过串联合并到下一层。 DenseNet 将所有层连接到上一层,将当前层连接到下一层。
在下图中,可以看出要素图是如何作为输入提供给其他层的:
...
...
@@ -572,7 +572,7 @@ DenseNet 是 Huang 等人提出的 ResNet 的扩展。 ( [https://arxiv.org/pd
# 准备数据
为了进行分类,我们将从
**kaggle**
下载数据并以适当的格式存储。 注册并登录
[
www.kaggle.com
](
http://www.kaggle.com
)
并转到
[
https://www.kaggle.com/c/dogs-vs-cats/data
](
https://www.kaggle.com/c/dogs-vs-cats/data
)
。 从该页面下载
`train.zip`
和
`test1.zip`
文件。
`train.zip`
文件包含 25,000 张宠物数据图像。 我们将仅使用部分数据来训练模型。 具有更多计算能力的读者,例如
**图形处理单元**
(
**GPU**
),可以使用比建议的更多的数据。 运行以下脚本以重新排列图像并创建必要的文件夹:
为了进行分类,我们将从
**kaggle**
下载数据并以适当的格式存储。 注册并登录
[
Kaggle
](
http://www.kaggle.com
)
并转到
[
猫狗大战
](
https://www.kaggle.com/c/dogs-vs-cats/data
)
。 从该页面下载
`train.zip`
和
`test1.zip`
文件。
`train.zip`
文件包含 25,000 张宠物数据图像。 我们将仅使用部分数据来训练模型。 具有更多计算能力的读者,例如
**图形处理单元**
(
**GPU**
),可以使用比建议的更多的数据。 运行以下脚本以重新排列图像并创建必要的文件夹:
```
py
import
os
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录