一、深度学习简介
1. 什么是深度学习
机器学习是实现人工智能的一种途径,深度学习是机器学习的一个子集,也就是说深度学习是实现机器学习的一种方法。
- 传统机器学习算术依赖人工设计特征,并进行特征提取,
- 深度学习方法不需要人工,而是依赖算法自动提取特征。
- 深度学习模仿人类大脑的运行方式,从经验中学习获取知识。这也是深度学习被看做黑盒子,可解释性差的原因。
- 深度学习主要提取深层次特征,例如CNN通过多重卷积核提取图像特征,RNN通过词向量来表示词语的深层次特征,主要处理非结构化数据
- 传统机器学习主要提取数据之间的约束,和数据之间的表层特征,主要处理结构化数据
- 深度学习领域
- 智能手机
- 语音识别
- 机器翻译
- 拍照翻译
- 自动驾驶
2. 发展历程
二、计算机视觉
1. 定义
- 计算机视觉是指用摄像机和电脑及其他相关设备,对生物视觉的一种模拟。
- 它的主要任务让计算机理解图片或者视频中的内容,就像人类和许多其他生物每天所做的那样。
- 任务目标拆分为:
- 让计算机理解图片中的场景(办公室,客厅,咖啡厅等)
- 让计算机识别场景中包含的物体(宠物,交通工具,人等)
- 让计算机定位物体在图像中的位置(物体的大小,边界等)
- 让计算机理解物体之间的关系或行为(是在对话,比赛或吵架等),以及图像表达的意义(喜庆的,悲伤的等)
- 图像处理是CV的前期工作(比如平滑、转为灰度图、欠采样等等)
2. 常见任务
- 图像分类(Classification):
- 即是将图像结构化为某一类别的信息,用事先确定好的类别(category)来描述图片。
- 目标检测(Detection):
- 分类任务关心整体,给出的是整张图片的内容描述,而检测则关注特定的物体目标,要求同时获得这一目标的类别信息和位置信息(classification + localization)。
- 图像分割(Segmentation):
- 分割是对图像的像素级描述,它赋予每个像素类别(实例)意义,适用于理解要求较高的场景,如无人驾驶中对道路和非道路的分割。
3. 应用场景
3.1 人脸识别
3.2 视频监控
3.3 图片识别分析
3.4 辅助驾驶
三、Tensorflow
1. TensorFlow介绍
2. Tensorflow的安装
- 非GPU版本安装
- pip install tensorflow==2.3.0 -i https://pypi.tuna.tsinghua.edu.cn/simple
- GPU版本安装
- pip install tensorflow-gpu==2.3.0 -i https://pypi.tuna.tsinghua.edu.cn/simple
3. 张量
3.1 基本方法
import tensorflow as tf
import numpy as np
# 创建int32类型的0维张量,即标量
rank_0_tensor = tf.constant(4)
print(rank_0_tensor)
# 创建float32类型的1维张量
rank_1_tensor = tf.constant([2.0, 3.0, 4.0])
print(rank_1_tensor)
# 创建float16类型的二维张量
rank_2_tensor = tf.constant([[1, 2],
[3, 4],
[5, 6]], dtype=tf.float16)
print(rank_2_tensor)
3.2 转换成numpy
np.array(rank_2_tensor)
# 或者
rank_2_tensor.numpy()
3.3 常用函数
# 定义张量a和b
a = tf.constant([[1, 2],
[3, 4]])
b = tf.constant([[1, 1],
[1, 1]])
print(tf.add(a, b), "\n") # 计算张量的和
print(tf.multiply(a, b), "\n") # 计算张量的元素乘法
print(tf.matmul(a, b), "\n") # 计算乘法
3.4 聚合运算
tf.reduce_sum() # 求和
tf.reduce_mean() # 平均值
tf.reduce_max() # 最大值
tf.reduce_min() # 最小值
tf.argmax() # 最大值的索引
tf.argmin() # 最小值的索引
4. Keras
主要用于神经网络的构建和训练
4.1 常用模块
4.2 常用方法
- 导入tf.keras
- import tensorflow as tf
- from tensorflow import keras
- 数据输入
- 对于小的数据集,可以直接使用numpy格式的数据进行训练、评估模型,
- 对于大型数据集或者要进行跨设备训练时使用tf.data.datasets来进行数据输入。
- 训练与评估
- 配置训练过程
- model.compile(optimizer=tf.train.AdamOptimizer(0.001), loss=’categorical_crossentropy’, metrics=[‘accuracy’])
- 模型训练
- model.fit/fit_generator(dataset, epochs=10, batch_size=3, validation_data=val_dataset, )
- 模型评估
- model.evaluate(x, y, batch_size=32)
- 模型预测
- model.predict(x, batch_size=32)
- 配置训练过程
- 回调函数
- ModelCheckpoint:定期保存 checkpoints。
- LearningRateScheduler:动态改变学习速率。
- EarlyStopping:当验证集上的性能不再提高时,终止训练。
- TensorBoard:使用 TensorBoard 监测模型的状态。
- 模型的保存和恢复
- 只保存参数:
- 只保存模型的权重 model.save_weights(‘./my_model’)
- 加载模型的权重 model.load_weights(‘my_model’)
- 保存整个模型:
- 保存模型架构与权重在h5文件中 model.save(‘my_model.h5’)
- 加载模型:包括架构和对应的权重 model = keras.models.load_model(‘my_model.h5’)
- 只保存参数: