失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 计算机视觉computer vision(CV) - 笔记1

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

时间:2024-07-09 02:26:17

相关推荐

计算机视觉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.训练与评估¶

配置训练过程:

# 配置优化方法,损失函数和评价指标

pile(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、模型的保存与恢复

如果觉得《计算机视觉computer vision(CV) - 笔记1》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。