内容简介
第1篇 基础知识
第1章 引言
1.1 人工智能的新焦点——深度学习
1.1.1 人工智能——神话传说到影视漫画
1.1.2 人工智能的诞生
1.1.3 神经科学的研究
1.1.4 人工神经网络的兴起
1.1.5 神经网络的第一次寒冬
1.1.6 神经网络的第一次复兴
1.1.7 神经网络的第二次寒冬
1.1.8 2006年——深度学习的起点
1.1.9 生活中的深度学习
1.1.10 常见深度学习框架简介
1.2 给计算机一双眼睛——计算机视觉
1.2.1 计算机视觉简史
1.2.2 2012年——计算机视觉的新起点
1.2.3 计算机视觉的应用
1.2.4 常见计算机视觉工具包
1.3 基于深度学习的计算机视觉
1.3.1 从ImageNet竞赛到A1phaGo战胜李世石——计算机视觉超越人类
1.3.2 GPU和并行技术——深度学习和计算视觉发展的加速器
1.3.3 基于卷积神经网络的计算机视觉应用
第2章 深度学习和计算机视觉中的基础数学知识
2.1 线性变换和非线性变换
2.1.1 线性变换的定义
2.1.2 高中教科书中的小例子
2.1.3 点积和投影
2.1.4 矩阵乘法的几何意义(1)
2.1.5 本征向量和本征值
2.1.6 矩阵乘法的几何意义(2)
2.1.7 奇异值分解
2.1.8 线性可分性和维度
2.1.9 非线性变换
2.2 概率论及相关基础知识
2.2.1 条件概率和独立
2.2.2 期望值、方差和协方差
2.2.3 熵
2.2.4 最大似然估计(Maximum Likelihood Estimation,MLE)
2.2.5 KL散度(Kullback-Leibler divergence)
2.2.6 KL散度和MLE的联系
2.3 维度的诅咒
2.3.1 采样和维度
2.3.2 高维空间中的体积
2.3.3 高维空间中的距离
2.3.4 中心极限定理和高维样本距离分布的近似
2.3.5 数据实际的维度
2.3.6 局部泛化
2.3.7 函数对实际维度的影响
2.3.8 PCA——什么是主成分
2.3.9 PCA——通过本征向量和本征值求主成分
2.3.10 PCA——通过主成分分析降维
2.3.11 PCA——归一化和相关性系数
2.3.12 PCA——什么样的数据适合PCA
2.3.13 其他降维手段
2.4 卷积
2.4.1 点积和卷积
2.4.2 一维卷积
2.4.3 卷积和互相关
2.4.4 二维卷积和图像响应
2.4.5 卷积的计算
2.5 数学优化基础
2.5.1 最小值和梯度下降
2.5.2 冲量(Momentum)
2.5.3 牛顿法
2.5.4 学习率和自适应步长
2.5.5 学习率衰减(Learning Rate Decay)
2.5.6 AdaGrad:每个变量有自己的节奏
2.5.7 AdaDelta的进一步改进
2.5.8 其他自适应算法
2.5.9 损失函数
2.5.10 分类问题和负对数似然
2.5.11 逻辑回归
2.5.12 Softmax:将输出转换为概率
2.5.13 链式求导法则
第3章 神经网络和机器学习基础
3.1 感知机
3.1.1 基本概念
3.1.2 感知机和线性二分类
3.1.3 激活函数
3.2 神经网络基础
3.2.1 从感知机到神经网络
3.2.2 最简单的神经网络二分类例子
3.2.3 隐层神经元数量的作用
3.2.4 更加复杂的样本和更复杂的神经网络
3.3 后向传播算法
3.3.1 求神经网络参数的梯度
3.3.2 计算图(Computational Graph)
3.3.3 利用后向传播算法计算一个神经网络参数的梯度
3.3.4 梯度消失
3.3.5 修正线性单元(ReLU)
3.3.6 梯度爆炸
3.3.7 梯度检查(gradient check)
3.3.8 从信息传播的角度看后向传播算法
3.4 随机梯度下降和批量梯度下降
3.4.1 全量数据(full-batch)梯度下降
3.4.2 随机梯度下降(SGD)和小批量数据(mini-batch)
3.4.3 数据均衡和数据增加(data augmentation)
3.5 数据、训练策略和规范化
3.5.1 欠拟合和过拟合
3.5.2 训练误差和测试误差
3.5.3 奥卡姆剃刀没有免费午餐
3.5.4 数据集划分和提前停止
3.5.5 病态问题和约束
3.5.6 L2规范化(L2 Regularization)
3.5.7 L1规范化(L1 Regulaization)
3.5.8 集成(Ensemble)和随机失活(Dropout)
3.6 监督学习、非监督学习、半监督学习和强化学习
3.6.1 监督学习、非监督学习和半监督学习
3.6.2 强化学习(reinforcement learning)
第4章 深度卷积神经网络
4.1 卷积神经网络
4.1.1 基本概念
4.1.2 卷积层和特征响应图
4.1.3 参数共享
4.1.4 稀疏连接
4.1.5 多通道卷积
4.1.6 激活函数
4.1.7 池化、不变性和感受野
4.1.8 分布式表征(Distributed Representation)
4.1.9 分布式表征和局部泛化
4.1.10 分层表达
4.1.11 卷积神经网络结构
4.2 LeNet——第一个卷积神经网络
4.3 新起点——AlexNet
4.3.1 网络结构
4.3.2 局部响应归一化(Local ResponseNormalization,LRN)
4.4 更深的网络——GoogLeNet
4.4.1 1×1卷积和Network In Network
4.4.2 Inception结构
4.4.3 网络结构
4.4.4 批规一化(Batch Normalization,BN)
4.5 更深的网络——ResNet
4.5.1 困难的深层网络训练:退化问题
4.5.2 残差单元
4.5.3 深度残差网络
4.5.4 从集成的角度看待ResNet
4.5.5 结构更复杂的网络
第2篇 实例精讲
第5章 Python基础
5.1 Python简介
5.1.1 Python简史
5.1.2 安装和使用Python
5.2 Python基本语法
5.2.1 基本数据类型和运算
5.2.2 容器
5.2.3 分支和循环
5.2.4 函数、生成器和类
5.2.5 map、reduce和filter
5.2.6 列表生成(list comprehension)
5.2.7 字符串
5.2.8 文件操作和pickle
5.2.9 异常
5.2.10 多进程(multiprocessing)
5.2.11 os模块
5.3 Python的科学计算包——NumPy
5.3.1 基本类型(array)
5.3.2 线性代数模块(1inalg)
5.3.3 随机模块(random)
5.4 Python的可视化包——matplotlib
5.4.1 2D图表
5.4.2 3D图表
5.4.3 图像显示
第6章 OpenCV基础
6.1 OpenCV简介
6.1.1 OpenCV的结构
6.1.2 安装和使用OpenCV
6.2 Python-OpenCV基础
6.2.1 图像的表示
6.2.2 基本图像处理
6.2.3 图像的仿射变换
6.2.4 基本绘图
6.2.5 视频功能
6.3 用OpenCV实现数据增加小工具
6.3.1 随机裁剪
6.3.2 随机旋转
6.3.3 随机颜色和明暗
6.3.4 多进程调用加速处理
6.3.5 代码:图片数据增加小工具
6.4 用OpenCV实现物体标注小工具
6.4.1 窗口循环
6.4.2 鼠标和键盘事件
6.4.3 代码:物体检测标注的小工具
第7章 Hello World!
7.1 用MXNet实现一个神经网络
7.1.1 基础工具、NVIDIA驱动和CUDA安装
7.1.2 安装MXNet
7.1.3 MXNet基本使用
7.1.4 用MXNet实现一个两层神经网络
7.2 用Caffe实现一个神经网络
7.2.1 安装Caffe
7.2.2 Caffe的基本概念
7.2.3 用Caffe实现一个两层神经网络
第8章 最简单的图片分类——手写数字识别
8.1 准备数据——MNIST
8.1.1 下载MNIST
8.1.2 生成MNIST的图片
8.2 基于Caffe的实现
8.2.1 制作LMDB数据
8.2.2 训练LeNet-5
8.2.3 测试和评估
8.2.4 识别手写数字
8.2.5 增加平移和旋转扰动
8.3 基于MXNet的实现
8.3.1 制作Image Recordio数据
8.3.2 用Module模块训练LeNet-5
8.3.3 测试和评估
8.3.4 识别手写数字
第9章 利用Caffe做回归
9.1 回归的原理
9.1.1 预测值和标签值的欧式距离
9.1.2 EuclideanLoss层
9.2 预测随机噪声的频率
9.2.1 生成样本:随机噪声
9.2.2 制作多标签HDF5数据
9.2.3 网络结构和Solver定义
9.2.4 训练网络
9.2.5 批量装载图片并利用GPU预测
9.2.6 卷积核可视化
第10章 迁移学习和模型微调
10.1 吃货必备——通过Python采集美食图片
10.1.1 通过关键词和图片搜索引擎下载图片
10.1.2 数据预处理——去除无效和不相关图片
10.1.3 数据预处理——去除重复图片
10.1.4 生成训练数据
10.2 美食分类模型
10.2.1 迁移学习
10.2.2 模型微调法(Finetune)
10.2.3 混淆矩阵(Confusion Matrix)
10.2.4 P-R曲线和ROC曲线
10.2.5 全局平均池化和激活响应图
第11章 目标检测
11.1 目标检测算法简介
11.1.1 滑窗法
11.1.2 PASCAL VOC、mAP和IOU简介
11.1.3 Selective Search和R-CNN简介
11.1.4 SPP、ROI Pooling和Fast R-CNN简介
11.1.5 RPN和FasterR-CNN简介
11.1.6 YOLO和SSD简介
11.2 基于PASCAL VOC数据集训练SSD模型
11.2.1 MXNet的SSD实现
11.2.2 下载PASCALVOC数据集
11.2.3 训练SSD模型
11.2.4 测试和评估模型效果
11.2.5 物体检测结果可视化
11.2.6 制作自己的标注数据
第12章 度量学习
12.1 距离和度量学习
12.1.1 欧氏距离和马氏距离
12.1.2 欧式距离和余弦距离
12.1.3 非线性度量学习和Siamese网络
12.1.4 Contrastive Loss:对比损失函数
12.2 用MNIST训练Siamese网络
12.2.1 数据准备
12.2.2 参数共享训练
12.2.3 结果和可视化
12.2.4 用ι-SNE可视化高维特征
第13章 图像风格迁移
13.1 风格迁移算法简介
13.1.1 通过梯度下降法进行图像重建
13.1.2 图像风格重建和Gram矩阵
13.1.3 图像风格迁移
13.2 MXNet中的图像风格迁移例子
13.2.1 MXNet的风格迁移实现
13.2.2 对图片进行风格迁移