🎉博客主页:小智_x0___0x_
🎉欢迎关注:👍点赞🙌收藏??留言
🎉系列专栏:好书分享
🎉代码仓库:小智的代码仓库
计算机视觉有多先进?开一开特斯拉就知道了。深度学习技术已在人脸识别、交互式仿真和医学成像方面取得令人兴奋的突破,但最让人心潮澎湃的当属自动驾驶技术。如今,自动驾驶的汽车已经能在高速路上畅意驰骋并对各种复杂路况做出灵活反应了。
计算机如何“理解”它所“看到”的东西?本书试图将深度学习应用于计算机视觉以回答该问题。本书仅用高中代数知识阐明视觉直觉背后的概念。你将了解如何使用深度学习架构来构建视觉系统应用程序,以实现图像生成和人脸识别功能。
主要内容:
第Ⅰ部分 深度学习基础
1 章 概述3
1.1 计算机视觉 4
1.1.1 视觉感知的定义 4
1.1.2 视觉系统 4
1.1.3 感知设备 6
1.1.4 解译设备 7
1.2 CV 应用 8
1.2.1 图像分类 9
1.2.2 目标检测与定位10
1.2.3 生成艺术(风格迁移) 11
1.2.4 图像生成11
1.2.5 人脸识别12
1.2.6 图片推荐系统13
1.3 计算机视觉管道概览 14
1.4 图像输入 15
1.4.1 图像的函数表达16
1.4.2 计算机读取图像17
1.4.3 彩色图像17
1.5 图像处理 19
1.6 特征提取 21
1.6.1 计算机视觉中特征的定义22
1.6.2 有用特征的定义23
1.6.3 手动与自动的特征提取25
1.7 分类器学习算法 27
1.8 本章小结 28
第2 章 深度学习和神经网络 29
2.1 理解感知机 30
2.1.1 感知机的定义31
2.1.2 感知机的学习机制34
2.1.3 单层感知机的局限性35
2.2 多层感知机 36
2.2.1 多层感知机架构37
2.2.2 关于隐藏层38
2.2.3 隐藏层的设计38
2.2.4 本节内容拓展40
2.3 激活函数 41
2.3.1 线性转移函数42
2.3.2 Heaviside 阶跃函数(二元分类器) 43
2.3.3 Sigmoid/logistic函数43
2.3.4 Softmax 函数46
2.3.5 双_3恄黖衉J曲正切函数
2.5.1 误差函数的定义55
2.5.2 误差函数的意义55
2.5.3 误差为正的必要性55
2.5.4 均方误差损失函数56
2.5.5 交叉熵损失函数57
2.5.6 关于误差和权重的补充说明58
2.6 优化算法 59
2.6.1 优化的定义59
2.6.2 批梯度下降62
2.6.3 随机梯度下降67
2.6.4 小批梯度下降68
2.6.5 梯度下降总结68
2.7 反向传播 69
2.7.1 反向传播的定义70
2.7.2 反向传播总结72
2.8 本章总结 73
第3 章 卷积神经网络75
3.1 使用MLP 进行图像分类 76
3.1.1 输入层76
3.1.2 隐藏层78
3.1.3 输出层78
3.1.4 组合78
3.1.5 MLP 处理图像的缺点80
3.2 CNN 架构 82
3.2.1 概述83
3.2.2 特征提取详解84
3.2.3 分类详解85
3.3 CNN 的基本组件 85
3.3.1 卷积层86
3.3.2 池化层或下采样92
3.3.3 全连接层96
3.4 使用CNN 进行图像分类 98
3.4.1 构建模型体系架构98
3.4.2 参数(权重)的数量100
3.5 添加dropout 层以避免过拟合 101
3.5.1 过拟合定义101
3.5.2 dropout 层定义102
3.5.3 dropout 层的重要意义102
3.5.4 dropout 层在CNN架构中的位置103
3.6 彩色(3D)图像的卷积 104
3.6.1 彩色图像的卷积105
3.6.2 计算复杂度的变化107
3.7 练习项目:彩色图像分类 109
3.8 本章总结 118
第4 章 构造DL 项目以及超参数调优119
4.1 定义性能指标 120
4.1.1 选择评价模型的最佳指标120
4.1.2 混淆矩阵120
4.1.3 精确度和召回率121
4.1.4 F1 得分122
4.2 设计基准模型 122
4.3 为训练准备数据 124
4.3.1 划分数据集124
4.3.2 数据处理125
4.4 评估模型并解释其性能 127
4.4.1 诊断过拟合和欠拟合127
4.4.2 绘制学习曲线129
4.4.3 练习项目:构建、训练和评估网络129
4.5 网络改进和超参数调优 132
4.5.1 收集更多数据与超参数调优132
4.5.2 参数与超参数133
4.5.3 神经网络超参数133
4.5.4 网络架构134
4.6 学习和优化 135
4.6.1 学习率及其衰减策略135
4.6.2 找到最佳学习率的系统性方法138
4.6.3 学习率衰减和自适应学习138
4.6.4 小批大小139
4.7 优化算法 141
4.7.1 动量梯度下降142
4.7.2 Adam 142
4.7.3 训练轮数和早停标准143
4.7.4 Early stopping144
4.8 正则化技术 144
4.8.1 L2 正则化145
4.8.2 Dropout 层146
4.8.3 数据增强146
4.9 批归一化 147
4.9.1 协变量偏移问题148
4.9.2 神经网络中的协变量偏移148
4.9.3 批归一化的工作原理149
4.9.4 批归一化在keras 中的实现150
4.9.5 批归一化回顾151
4.10 练习项目:实现高准确度的图像分类 151
4.11 本章小结 157
第Ⅱ部分 图像分类和检测
第5 章 先进的CNN 架构 161
5.1 CNN 设计模式 162
5.2 LeNet-5 164
5.2.1 LeNet 架构164
5.2.2 LeNet-5 在Keras 中的实现165
5.2.3 设置学习超参数167
5.2.4 LeNet 在MNIST 数据集上的性能168
5.3 AlexNet 168
5.3.1 AlexNet 网络架构169
5.3.2 AlexNet 的新特性169
5.3.3 Keras 中的AlexNet实现171
5.3.4 设置学习超参数174
5.3.5 AlexNet 的性能174
5.4 VGGNet 175
5.4.1 VGGNet 新特性175
5.4.2 VGGNet 配置176
5.4.3 学习超参数179
5.4.4 VGGNet 性能179
5.5 Inception 和GoogLeNet 179
5.5.1 Inception 新特性180
5.5.2 Inception 模块:Naive 版181
5.5.3 Inception 模块与维数约减182
5.5.4 Inception 体系架构184
5.5.5 GoogLeNet 的Keras实现185
5.5.6 学习参数190
5.5.7 Inception 在CIFAR数据集上的性能190
5.6 ResNet 191
5.6.1 ResNet 新特性191
5.6.2 残差块193
5.6.3 keras 中的ResNet实现195
5.6.4 学习超参数197
5.6.5 ResNet 在CIFAR数据集上的性能197
5.7 本章小结 198
第6 章 迁移学习199
6.1 迁移学习的必要性 200
6.2 迁移学习的定义 201
6.3 迁移学习的工作原理 207
6.3.1 神经网络如何学习特征208
6.3.2 网络后期提取的特征的可迁移性210
6.4 迁移学习方法 210
6.4.1 使用预训练网络作为分类器210
6.4.2 使用预训练网络作为特征提取器212
6.4.3 微调213
6.5 选择合适的迁移学习方法 215
6.5.1 场景1:目标数据集较小且与源数据集相似215
6.5.2 场景2:目标数据集较大且与源数据集相似216
6.5.3 场景3:目标数据集较小且与源数据集不同216
6.5.4 场景4:目标数据集较大且与源数据集不同216
6.5.5 迁移学习场景总结216
6.6 开源数据集 217
6.6.1 MNIST 217
6.6.2 Fashion-MNIST 218
6.6.3 CIFAR 218
6.6.4 ImageNet 219
6.6.5 MS COCO 221
6.6.6 Google OpenImages222
6.6.7 Kaggle222
6.7 项目1:预训练网络作为特征提取器 222
6.8 项目2:微调 228
6.9 本章小结 235
第7 章 使用R-CNN、SSD 和YOLO进行目标检测 237
7.1 目标检测的通用框架 238
7.1.1 候选区域239
7.1.2 网络预测240
7.1.3 非极大值抑制(NMS) 241
7.1.4 目标检测器的评价指标241
7.2 R-CNN 244
7.2.1 R-CNN 244
7.2.2 Fast R-CNN 248
7.2.3 Faster R-CNN 250
7.2.4 R-CNN 家族总结256
7.3 SSD(Single-shotdetector) 259
7.3.1 SSD 架构总览259
7.3.2 基础网络261
7.3.3 多尺度特征层263
7.3.4 NMS266
7.4 YOLO(you only lookonce)(320) 267
7.4.1 YOLO v3 的工作机制268
7.4.2 YOLOv3 架构270
7.5 项目:在自动驾驶中应用SSD 网络 272
7.5.1 步骤1:构建模型274
7.5.2 步骤2:模型配置275
7.5.3 步骤3:创建模型276
7.5.4 步骤3:加载数据276
7.5.5 步骤5:训练模型278
7.5.6 步骤6:可视化损失279
7.5.7 步骤7:预测280
7.6 本章小结 281
第Ⅲ部分 生成模型与视觉嵌入
第8 章 生成对抗网络285
8.1 GAN 架构 286
8.1.1 Deep convolutionalGANs(DCGANs) 288
8.1.2 鉴别器模型288
8.1.3 生成器模型290
8.1.4 训练GAN 293
8.1.5 GAN 极小极大值函数296
8.2 评估GAN 模型 297
8.2.1 Inception score298
8.2.2 Fréchet inception distance(FID)298
8.2.3 评估方案选择299
8.3 GAN 的主流应用 299
8.3.1 文本生成图像(Text-tophotosynthesis)299
8.3.2 图像翻译(Pix2PixGAN) 300
8.3.3 图像超分辨率GAN(SRGAN)301
8.3.4 准备好动手了吗302
8.4 练习项目:构建自己的GAN 302
8.5 本章小结 311
第9 章 DeepDream 和神经风格迁移 313
9.1 打开CNN 的黑盒 314
9.1.1 CNN 工作原理回顾314
9.1.2 CNN 特征可视化315
9.1.3 特征可视化工具的实现318
9.2 DeepDream 321
9.2.1 DeepDream 算法的工作原理322
9.2.2 DeepDream 的Keras实现324
9.3 神经风格迁移 327
9.3.1 内容损失329
9.3.2 风格损失(styleloss) 330
9.3.3 总变分损失(total varianceloss)332
9.3.4 网络训练332
9.4 本章小结 333
第10 章 视觉嵌入335
10.1 视觉嵌入的应用 336
10.1.1 人脸识别337
10.1.2 图片推荐系统337
10.1.3 目标重识别系统339
10.2 学习嵌入 340
10.3 损失函数 341
10.3.1 问题建立和形式化342
10.3.2 交差熵损失342
10.3.3 对比损失343
10.3.4 三元组损失344
10.3.5 损失的简单实现和运行分析345
10.4 挖掘信息数据 347
10.4.1 数据加载器347
10.4.2 信息型数据挖掘:寻找有用的三元组349
10.4.3 Batch All(BA)350
10.4.4 Batch Hard(BH) 351
10.4.5 batch weighted(BW)353
10.4.6 Batch Sample(BS)354
10.5 练习项目:训练嵌入网络 355
10.5.1 时尚圈:查找相似的衣服356
10.5.2 车辆重识别356
10.5.3 实现357
10.5.4 测试训练的模型358
10.6 突破准确度的限制 362
10.7 本章小结 363
参考文献 365
附录A 369
A.1 下载代码库 369
A.2 安装Anaconda 369
A.3 设置DL 环境 370
A.3.1 手动设置你的开发环境370
A.3.2 使用本书的repo 中的conda 环境371
A.3.3 保存和加载环境372
A.4 设置AWS EC2 环境 372
A.4.1 创建AWS 账号372
A.4.2 远程连接到此实例373
A.4.3 运行JupyterNotebook374