目录 第1章深度学习基础/1 1.1人工智能概述1 1.1.1人工智能在各领域中的应用1 1.1.2人工智能、机器学习和深度学习3 1.2深度学习的基本原理5 1.2.1神经元5 1.2.2人工神经网络8 1.2.3反向传播算法11 1.2.4神经网络的数据结构——张量18 1.3卷积神经网络18 1.3.1卷积层19 1.3.2池化层21 1.3.3归一化层21 1.3.4全连接层22 1.3.5Softmax函数22 1.3.6损失函数23 1.3.7卷积神经网络的特点24 1.3.8卷积神经网络的发展25 1.4迁移学习26 1.5模型训练超参数27 1.6深度学习在计算机视觉中的典型应用28 1.7数据集29 1.7.1数据集的划分30 1.7.2数据集的预处理30 1.7.3数据集的标注33 1.7.4常用数据集35 1.8深度学习框架47 1.9深度学习的计算特点47 第2章深度学习的计算平台/49 2.1神经网络计算加速芯片512.1.1神经网络的计算特点51 2.1.2神经网络的计算芯片52 2.2TPU架构与原理54 2.2.1谷歌TPU架构与原理56 2.2.2算能TPU架构与原理61 2.3算能TPU硬件架构及产品形态63 2.3.1算能TPU的芯片硬件架构63 2.3.2算能TPU的产品形态65 2.4算能TPU软件架构65 2.4.1实时视频流处理方案66 2.4.2深度学习软件开发工具包67 2.4.3离线模型转换68 2.4.4在线模型推理69 2.4.5自定义算子69 2.4.6模型量化加速70 2.4.7高级接口编程库70 〖1〗深度学习算法与实践目录〖3〗〖3〗第3章深度学习编程环境操作基础/72 3.1Linux入门72 3.1.1Linux系统的安装简介72 3.1.2Linux系统的常用命令73 3.1.3Linux的文本编辑器75 3.2Python入门75 3.2.1Python环境的安装和使用75 3.2.2PyCharm集成开发环境的安装和使用76 3.2.3常用Python库79 3.2.4Python虚拟环境79 3.3TensorFlow入门81 3.3.1TensorFlow的安装81 3.3.2TensorFlow的基本操作82 3.3.3使用TensorFlow实现手写数字识别85 3.4PyTorch入门87 3.4.1PyTorch的安装87 3.4.2PyTorch的基本操作88 3.4.3使用PyTorch实现手写数字识别89 3.5SE5平台开发环境92 3.5.1SE5应用系统开发的硬件环境92 3.5.2SE5应用系统开发的软件环境93 第4章图像分类/96 4.1图像分类任务介绍96 4.2典型分类网络解析97 4.2.1LeNet5手写数字识别神经网络97 4.2.2AlexNet图像分类网络99 4.2.3VGGNet图像分类网络102 4.2.4GoogLeNet图像分类网络106 4.2.5ResNet残差图像分类网络110 4.2.6DenseNet密集连接卷积网络115 4.2.7SENet压缩激励图像分类网络119 4.3实践项目一: 基于LeNet5神经网络的手写数字识别120 4.3.1实践项目内容120 4.3.2微调的LeNet5网络结构121 4.3.3TensorFlow 2.x框架下程序实现122 4.3.4LeNet5模型训练和测试过程125 4.3.5LeNet5网络模型在SE5上的部署125 4.4实践项目二: 基于ResNet神经网络的猫狗分类130 4.4.1实践项目内容130 4.4.2Dogs vs. Cats数据集简介130 4.4.3ResNet18网络结构130 4.4.4PyTorch框架下程序实现132 4.4.5ResNet18模型训练和测试过程136 4.4.6ResNet18网络模型在SE5上的部署137 第5章目标检测/142 5.1目标检测任务介绍142 5.1.1目标检测任务142 5.1.2预备知识143 5.1.3评估准则147 5.2两阶段目标检测算法150 5.2.1RCNN150 5.2.2Fast RCNN151 5.2.3Faster RCNN152 5.3单阶段目标检测算法160 5.3.1YOLOv1160 5.3.2YOLOv2165 5.3.3YOLOv3172 5.3.4YOLOv4175 5.3.5YOLOv5180 5.3.6FCOS185 5.3.7DETR188 5.4实践项目: 基于YOLOv5s的目标检测190 5.4.1实践项目内容190 5.4.2YOLOv5s网络结构190 5.4.3PyTorch框架下程序实现190 5.4.4YOLOv5s网络模型训练和测试过程196 5.4.5YOLOv5s网络模型在SE5上的部署197 第6章语义分割/200 6.1语义分割任务介绍200 6.1.1语义分割任务200 6.1.2预备知识200 6.1.3评估准则201 6.2典型语义分割网络203 6.2.1FCN203 6.2.2UNet205 6.2.3SegNet206 6.2.4PSPNet208 6.2.5ICNet210 6.2.6DeepLab系列214 6.3实践项目: 基于ICNet的语义分割217 6.3.1实践项目内容217 6.3.2数据集217 6.3.3ICNet网络结构218 6.3.4TensorFlow框架下程序实现218 6.3.5ICNet网络模型训练和测试过程226 6.3.6ICNet网络模型在SE5上的部署227 第7章实例分割/230 7.1实例分割任务介绍230 7.1.1实例分割任务230 7.1.2评估准则230 7.2典型实例分割网络231 7.2.1Mask RCNN231 7.2.2YOLACT与YOLACT++237 7.2.3SOLO和SOLOv2243 7.3实践项目: 基于Mask RCNN的实例分割251 7.3.1实践项目内容251 7.3.2Mask RCNN网络结构251 7.3.3TensorFlow框架下程序实现251 7.3.4Mask RCNN网络测试过程256 7.3.5Mask RCNN网络模型在SE5上的部署256 第8章人脸检测与识别/258 8.1人脸检测与识别任务介绍258 8.1.1人脸检测与识别及其应用258 8.1.2人脸识别系统构成258 8.1.3常用数据集介绍259 8.1.4评估准则260 8.2人脸检测网络262 8.2.1MTCNN人脸检测网络262 8.2.2RetinaFace人脸检测网络264 8.3人脸对齐268 8.4人脸特征提取网络269 8.4.1人脸特征提取网络原理269 8.4.2FaceNet272 8.4.3ArcFace/InsightFace275 8.5实践项目一: 基于PC的MTCNN+ArcFace实时人脸检测和识别281 8.5.1实践项目内容281 8.5.2PyTorch框架下程序实现281 8.5.3人脸识别系统测试290 8.6实践项目二: 基于SE5的RetinaFace+FaceNet实时人脸检测和识别291 8.6.1实践项目内容291 8.6.2系统方案291 8.6.3PyTorch框架下程序实现292 8.6.4人脸识别系统测试297 第9章循环神经网络/299 9.1循环神经网络原理299 9.1.1循环神经网络299 9.1.2长短期记忆网络301 9.1.3门控循环单元网络302 9.1.4双向循环神经网络303 9.2实践项目: 基于LSTM的股票预测304 9.2.1实践项目内容304 9.2.2数据集304 9.2.3股票预测方法304 9.2.4TensorFlow框架下程序实现306 9.2.5LSTM网络模型训练和测试过程311 9.2.6LSTM网络模型在SE5上的部署312 参考文献/3151.1人工智能概述1 1.1.1人工智能在各领域中的应用1 1.1.2人工智能、机器学习和深度学习3 1.2深度学习的基本原理5 1.2.1神经元5 1.2.2人工神经网络8 1.2.3反向传播算法11 1.2.4神经网络的数据结构——张量18 1.3卷积神经网络18 1.3.1卷积层19 1.3.2池化层21 1.3.3归一化层21 1.3.4全连接层22 1.3.5Softmax函数22 1.3.6损失函数23 1.3.7卷积神经网络的特点24 1.3.8卷积神经网络的发展25 1.4迁移学习26 1.5模型训练超参数27 1.6深度学习在计算机视觉中的典型应用28 1.7数据集29 1.7.1数据集的划分30 1.7.2数据集的预处理30 1.7.3数据集的标注33 1.7.4常用数据集35 1.8深度学习框架47 1.9深度学习的计算特点47 第2章深度学习的计算平台/49 2.1神经网络计算加速芯片512.1.1神经网络的计算特点51 2.1.2神经网络的计算芯片52 2.2TPU架构与原理54 2.2.1谷歌TPU架构与原理56 2.2.2算能TPU架构与原理61 2.3算能TPU硬件架构及产品形态63 2.3.1算能TPU的芯片硬件架构63 2.3.2算能TPU的产品形态65 2.4算能TPU软件架构65 2.4.1实时视频流处理方案66 2.4.2深度学习软件开发工具包67 2.4.3离线模型转换68 2.4.4在线模型推理69 2.4.5自定义算子69 2.4.6模型量化加速70 2.4.7高级接口编程库70 〖1〗深度学习算法与实践目录〖3〗〖3〗第3章深度学习编程环境操作基础/72 3.1Linux入门72 3.1.1Linux系统的安装简介72 3.1.2Linux系统的常用命令73 3.1.3Linux的文本编辑器75 3.2Python入门75 3.2.1Python环境的安装和使用75 3.2.2PyCharm集成开发环境的安装和使用76 3.2.3常用Python库79 3.2.4Python虚拟环境79 3.3TensorFlow入门81 3.3.1TensorFlow的安装81 3.3.2TensorFlow的基本操作82 3.3.3使用TensorFlow实现手写数字识别85 3.4PyTorch入门87 3.4.1PyTorch的安装87 3.4.2PyTorch的基本操作88 3.4.3使用PyTorch实现手写数字识别89 3.5SE5平台开发环境92 3.5.1SE5应用系统开发的硬件环境92 3.5.2SE5应用系统开发的软件环境93 第4章图像分类/96 4.1图像分类任务介绍96 4.2典型分类网络解析97 4.2.1LeNet5手写数字识别神经网络97 4.2.2AlexNet图像分类网络99 4.2.3VGGNet图像分类网络102 4.2.4GoogLeNet图像分类网络106 4.2.5ResNet残差图像分类网络110 4.2.6DenseNet密集连接卷积网络115 4.2.7SENet压缩激励图像分类网络118 4.3实践项目一: 基于LeNet5神经网络的手写数字识别120 4.3.1实践项目内容120 4.3.2微调的LeNet5网络结构121 4.3.3TensorFlow 2.x框架下程序实现121 4.3.4LeNet5模型训练和测试过程124 4.3.5LeNet5网络模型在SE5上的部署125 4.4实践项目二: 基于ResNet神经网络的猫狗分类129 4.4.1实践项目内容129 4.4.2Dogs vs. Cats数据集简介129 4.4.3ResNet18网络结构130 4.4.4PyTorch框架下程序实现131 4.4.5ResNet18模型训练和测试过程135 4.4.6ResNet18网络模型在SE5上的部署136 第5章目标检测/141 5.1目标检测任务介绍141 5.1.1目标检测任务141 5.1.2预备知识142 5.1.3评估准则146 5.2两阶段目标检测算法149 5.2.1RCNN149 5.2.2Fast RCNN150 5.2.3Faster RCNN151 5.3单阶段目标检测算法159 5.3.1YOLOv1159 5.3.2YOLOv2164 5.3.3YOLOv3171 5.3.4YOLOv4174 5.3.5YOLOv5179 5.3.6FCOS184 5.3.7DETR188 5.4实践项目: 基于YOLOv5s的目标检测189 5.4.1实践项目内容189 5.4.2YOLOv5s网络结构190 5.4.3PyTorch框架下程序实现191 5.4.4YOLOv5s网络模型训练和测试过程195 5.4.5YOLOv5s网络模型在SE5上的部署197 第6章语义分割/200 6.1语义分割任务介绍200 6.1.1语义分割任务200 6.1.2预备知识200 6.1.3评估准则201 6.2典型语义分割网络203 6.2.1FCN203 6.2.2UNet205 6.2.3SegNet206 6.2.4PSPNet207 6.2.5ICNet210 6.2.6DeepLab系列214 6.3实践项目: 基于ICNet的语义分割217 6.3.1实践项目内容217 6.3.2数据集217 6.3.3ICNet网络结构218 6.3.4TensorFlow框架下程序实现218 6.3.5ICNet网络模型训练和测试过程226 6.3.6ICNet网络模型在SE5上的部署227 第7章实例分割/230 7.1实例分割任务介绍230 7.1.1实例分割任务230 7.1.2评估准则230 7.2典型实例分割网络231 7.2.1Mask RCNN231 7.2.2YOLACT与YOLACT++237 7.2.3SOLO和SOLOv2243 7.3实践项目: 基于Mask RCNN的实例分割251 7.3.1实践项目内容251 7.3.2Mask RCNN网络结构251 7.3.3TensorFlow框架下程序实现251 7.3.4Mask RCNN网络测试过程256 7.3.5Mask RCNN网络模型在SE5上的部署256 第8章人脸检测与识别/258 8.1人脸检测与识别任务介绍258 8.1.1人脸检测与识别及其应用258 8.1.2人脸识别系统构成258 8.1.3常用数据集介绍259 8.1.4评估准则260 8.2人脸检测网络262 8.2.1MTCNN人脸检测网络262 8.2.2RetinaFace人脸检测网络264 8.3人脸对齐268 8.4人脸特征提取网络269 8.4.1人脸特征提取网络原理269 8.4.2FaceNet272 8.4.3ArcFace/InsightFace275 8.5实践项目一: 基于PC的MTCNN+ArcFace实时人脸检测和识别281 8.5.1实践项目内容281 8.5.2PyTorch框架下程序实现281 8.5.3人脸识别系统测试290 8.6实践项目二: 基于SE5的RetinaFace+FaceNet实时人脸检测和识别291 8.6.1实践项目内容291 8.6.2系统方案291 8.6.3PyTorch框架下程序实现292 8.6.4人脸识别系统测试297 第9章循环神经网络/299 9.1循环神经网络原理299 9.1.1循环神经网络299 9.1.2长短期记忆网络301 9.1.3门控循环单元网络302 9.1.4双向循环神经网络303 9.2实践项目: 基于LSTM的股票预测304 9.2.1实践项目内容304 9.2.2数据集304 9.2.3股票预测方法304 9.2.4TensorFlow框架下程序实现306 9.2.5LSTM网络模型训练和测试过程311 9.2.6LSTM网络模型在SE5上的部署312 参考文献/315