CV

深度学习

简介、CV定义、tensorflow

Posted by 新宇 on July 16, 2020

一、深度学习简介

1. 什么是深度学习

机器学习是实现人工智能的一种途径,深度学习是机器学习的一个子集,也就是说深度学习是实现机器学习的一种方法。

  • 传统机器学习算术依赖人工设计特征,并进行特征提取,
  • 深度学习方法不需要人工,而是依赖算法自动提取特征。
    • 深度学习模仿人类大脑的运行方式,从经验中学习获取知识。这也是深度学习被看做黑盒子,可解释性差的原因。
  • 深度学习领域
    • 智能手机
    • 语音识别
    • 机器翻译
    • 拍照翻译
    • 自动驾驶

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’)