计算机视觉computer vision(CV) - 笔记1

深度学习是什么
深度学习是机器学习算法的一种,通过模拟人脑实现相应的功能

深度学习应用场景
手机,机器翻译,自动驾驶,语音识别,医疗,安防等。


计算机视觉任务目标拆分为:

让计算机理解图片中的场景(办公室,客厅,咖啡厅等):where

让计算机识别场景中包含的物体(宠物,交通工具,人等): who

让计算机定位物体在图像中的位置(物体的大小,边界等): what

让计算机理解物体之间的关系或行为(是在对话,比赛或吵架等),以及图像表达的意义(喜庆的,悲伤的等): why and when

那我们在OpenCV阶段,主要学习图像处理,而图像处理主要目的是对图像的处理,比如平滑,缩放等,想、从而为其他任务(比如“计算机视觉”)做好前期工作。

对计算机视觉目标任务的分解,可将其分为三大经典任务:图像分类、目标检测、图像分割
图像检测、分类、分割


图像分类(Classification):即是将图像结构化为某一类别的信息,用"事先确定好的类别(category)"来描述图片。
特征分类
目标检测(Detection):"分类"任务关心"整体",给出的是整张图片的内容描述,而"检测"则关注特定的物体目标,要求同时获得这一目标的"类别信息"和"位置信息"(classification + localization)。
特征识别

图像分割(Segmentation):分割是对图像的"像素级"描述,它赋予每个像素类别(实例)意义,适用于理解要求较高的场景,如无人驾驶中对道路和非道路的分割
识别像素,分割像素,整合像素块
总结:
计算机视觉的定义
让计算机理解图片或者视频中的内容

计算机视觉的任务
图像分类,目标检测,图像分割

计算机视觉的应用场景
人脸识别,视频监控,图片识别分析,辅助驾驶

TensorFlow 2.0 工作流程:
1、使用tf.data加载数据。 使用tf.data实例化读取训练数据和测试数据

2、模型的建立与调试: 使用动态图模式 Eager Execution 和著名的神经网络高层 API 框架 Keras,结合可视化工具 TensorBoard,简易、快速地建立和调试模型;

3、模型的训练: 支持 CPU / 单 GPU / 单机多卡 GPU / 多机集群 / TPU 训练模型,充分利用海量数据和计算资源进行高效训练;

4、预训练模型调用: 通过 TensorFlow Hub,可以方便地调用预训练完毕的已有成熟模型。

5、模型的部署: 通过 TensorFlow Serving、TensorFlow Lite、TensorFlow.js 等组件,可以将TensorFlow 模型部署到服务器、移动端、嵌入式端等多种使用场景;


张量Tensor¶

定义:简单的说:张量概念是矢量概念和矩阵概念的推广,标量是零阶张量,矢量是一阶张量,矩阵(方阵)是二阶张量,而三阶张量则好比立体矩阵,更高阶的张量用图形无法表达。


张量是一个多维数组。 与NumPy ndarray对象类似,tf.Tensor对象也具有数据类型和形状。

tf.Tensors可以保留在GPU中。 TensorFlow提供了丰富的操作库(tf.add,tf.matmul,tf.linalg.inv等),它们使用和生成tf.Tensor。


TF张量基本操作

库导入

import tensorflow as tf
import numpy as np

1.基本方法

创建一个张量
# 创建int32类型的0维张量,即标量
rank_0_tensor = tf.constant(8)
print(rank_0_tensor)
# 创建float32类型的1维张量
rank_1_tensor = tf.constant([5.0, 6.0, 7.0])
print(rank_1_tensor)
# 创建float16类型的二维张量
rank_2_tensor = tf.constant([[5, 6],
                             [7, 8],
                             [9, 10]], dtype=tf.float16)
print(rank_2_tensor)


2.转换成numpy

np.array(rank_2_tensor)
rank_2_tensor.numpy()


3.常用函数¶
我们可以对张量做一些基本的数学运算,包括加法、元素乘法和矩阵乘法等:


# 定义张量x和y
x = tf.constant([[5, 6],
                 [7, 8]])
y = tf.constant([[2, 2],
                 [2, 2]]) 

print(tf.add(x, y), "\n") # 计算张量的和
print(tf.multiply(x, y), "\n") # 计算张量的元素乘法
print(tf.matmul(x, y), "\n") # 计算乘法

张量也可用于各种聚合运算:
tf.reduce_sum()  # 求和
tf.reduce_mean() # 平均值
tf.reduce_max()  # 最大值
tf.reduce_min()  # 最小值
tf.argmax() # 最大值的索引
tf.argmin() # 最小值的索引


4.变量¶
变量是一种特殊的张量,形状是不可变,但可以更改其中的参数。


my_variable = tf.Variable([[1.0, 2.0], [3.0, 4.0]])
我们也可以获取它的形状,类型及转换为ndarray:

print("Shape: ",my_variable.shape)
print("DType: ",my_variable.dtype)
print("As NumPy: ", my_variable.numpy)


tf.keras介绍

tf.keras是TensorFlow 2.0的高阶API接口,为TensorFlow的代码提供了新的风格和设计模式,大大提升了TF代码的简洁性和复用性,官方也推荐使用tf.keras来进行模型设计和开发。


常用模块¶
tf.keras中常用模块如下表所示:

模块    概述
activations    激活函数
applications    预训练网络模块
Callbacks    在模型训练期间被调用
datasets    tf.keras数据集模块,包括boston_housing,cifar10,fashion_mnist,imdb ,mnist
layers    Keras层API
losses    各种损失函数
metircs    各种评价指标
models    模型创建模块,以及与模型相关的API
optimizers    优化方法
preprocessing    Keras数据的预处理模块
regularizers    正则化,L1,L2等
utils    辅助功能实现
1.4.2 常用方法¶
深度学习实现的主要流程:1.数据获取,2,数据处理,3.模型创建与训练,4 模型测试与评估,5.模型预测


keras 操作
1.导入tf.keras库¶

import tensorflow as tf
from tensorflow import keras

2.数据输入¶ 小数据用numpy, 大数据用keras
对于小的数据集,可以直接使用numpy格式的数据进行训练、评估模型,对于大型数据集或者要进行跨设备训练时使用tf.data.datasets来进行数据输入。

3.模型构建¶
简单模型使用Sequential进行构建
Sequential 序贯模型
  序贯模型是函数式模型的简略版,为最简单的线性、从头到尾的结构顺序,不分叉,是多个网络层的线性堆叠。
  Keras实现了很多层,包括core核心层,Convolution卷积层、Pooling池化层等非常丰富有趣的网络结构。
复杂模型使用函数式编程来构建
自定义layers

4.训练与评估¶
配置训练过程:
# 配置优化方法,损失函数和评价指标
model.compile(optimizer=tf.train.AdamOptimizer(0.001),
              loss='categorical_crossentropy',
              metrics=['accuracy'])
模型训练
# 指明训练数据集,训练epoch,批次大小和验证集数据
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)
5.回调函数(callbacks)¶
回调函数用在模型训练过程中,来控制模型训练行为,可以自定义回调函数,也可使用tf.keras.callbacks 内置的 callback :

ModelCheckpoint:定期保存 checkpoints。 LearningRateScheduler:动态改变学习速率。 EarlyStopping:当验证集上的性能不再提高时,终止训练。 TensorBoard:使用 TensorBoard 监测模型的状态。

6.模型的保存和恢复¶
只保存参数
# 只保存模型的权重
model.save_weights('./my_model')
# 加载模型的权重
model.load_weights('my_model')
保存整个模型
# 保存模型架构与权重在h5文件中
model.save('my_model.h5')
# 加载模型:包括架构和对应的权重
model = keras.models.load_model('my_model.h5')
总结

了解Tensorflow2.0框架的用途及流程

1.使用tf.data加载数据

2、模型的建立与调试

3、模型的训练

4、预训练模型调用

5、模型的部署

知道tf2.0的张量及其操作

张量是多维数组。

1、创建方法:tf.constant()

2、转换为numpy: np.array()或tensor.asnumpy()

3、常用函数:加法,乘法,及各种聚合运算

4、变量:tf.Variable()

知道tf.keras中的相关模块及常用方法

常用模块:models,losses,application等

常用方法:

1、导入tf.keras

2、数据输入

3、模型构建

4、训练与评估

5、回调函数

6、模型的保存与恢复

你可能感兴趣的:(计算机视觉CV,计算机视觉,深度学习)