计算机视觉读书系列(1)——基本知识与深度学习基础
研三即将毕业,后续的工作可能会偏AI方向的计算机视觉方面,因此准备了两条线来巩固计算机视觉基础。
一个是本系列,阅读经典《Deep Learning for Vision System》,做一些总结跑一些例子,也对应本系列文章
二是OpenCV实践系列,根据官方自学OpenCV使用方法,对应"OpenCV-Python自学系列"。
后续准备在实际项目中引入一些目前的大模型的东西,视觉语言模型在传统CV任务上的理解和实践等。
本期主要包括基础知识和深度学习介绍。本篇主要以概念为主
一、计算机视觉通识
1.1 计算机器视觉
视觉系统:传感设备 + 解释设备
1.2 计算机视觉的应用
略
1.3 计算集视觉处理流程
计算机视觉处理流程:输入数据——预处理——特征提取——机器学习模型。
以图像分类算法为例,其流程为:从视觉设备输入一张图像、对图像进行预处理(标准化、重采样、模糊、旋转、颜色变换等等)、特性提取(输出为特征向量)、将特征喂到分类模型中、输出概率(该概率代表输入相片是该类别的概率)

1.4 图像输入
图像坐标系:原点为最左上角,横着为x,向右为正;竖着为y,向下为正。(注意,在代码张对图像数据,也即矩阵,进行索引时,仍然按照直观上的行列进行索引)。
图像映射:图像时多层矩阵的组合,每个矩阵中的元素值可看作该点坐标的映射,也即z=f(x,y),z表示坐标为(x,y)的像素值。

通道:通常情况下,灰度图像为单通道,取值范围0-255,0为黑色,255为白色。彩色图像由三通道组成,R(红色)G(绿色) B(蓝色)。

1.5 图像预处理
预处理一:将图像由彩色转化为灰度降低计算复杂性。对于那些颜色不是很重要的特征而言,可使用该方法。
预处理二:重采样固定模型输入尺寸。
预处理三:数据增强。
等等。。。
理论:没有一个方法或一个策略能适合于所有的任务。
1.6 特征提取
特征定义:

在机器学习过程中,我们希望将原始数据转换为特征向量(一维向量,能简单表示整个类别),再将特征向量展示于我们的学习算法。
如何选择一个好的特征(如何提取出好的特征)?

传统特征提取和DL的区别:


二、深度学习基础
2.1 理解感知机
感知机的构成主要包括以下几个方面:输入向量、权重向量、神经函数、输出。如图

感知机如何进行学习:感知机通过测试和误差从他的错误中进行学习。
2.2 多层感知机
单层的感知机能力有限(线性问题),无法解决复杂情况的问题。因此使用多层神经元的感知机,也即多层感知机。关于多层感知机的概念需要清楚的是:
隐含层的数量:输入层于输出层之间的网络被称为隐含层,隐含层越多其模型拟合能力越强,但容易过拟合。
激活函数:在某个神经元进行加权求和后进行映射操作,是神经网络具备非线性拟合能力的关键。
误差函数:用于衡量模型的预测结果和真实结果之间差距的函数。
优化器:基于模型现有误差对模型进行调整的优化算法。
Batch-Size:采用MiniBatch方式进行训练的情况下,每个批次的包含样本的多少。
训练轮数:整个训练进行的轮次数。
学习率:(优化过程中)学习速度的控制。
2.3 激活函数
激活函数的目的:往神经网络中引入非线性。
线性激活函数:

步型函数:

Sigmoid函数:将无限连续的变量转移到简单的0-1之间的概率。广泛用于分类中。

softmax函数:对Sigmoid函数的泛化,Sigmoid只能处理单类问题,而sigmoid能处理多类型分类中的概率计算问题。

tanh函数:这个函数在隐含层中表现往往比sigmoid函数更好,因为使用tanh会使得数据的均值更接近于0而不是sigmoid的0.5,使得后续的训练更加简单。


ReLU函数:ReLU函数被认为是目前最优秀的(state-of-the-art)的激活函数。


Leaky ReLU函数:虽然用得不多,但通常略优于ReLU,主要是在小于0是提供了小幅度的导数。

2.4 前馈过程
神经网络的前馈过程,加权求和(矩阵乘法)——激活函数——加权求和——激活函数...

其计算过程可表示为:


表示矩阵乘法可为:

2.5 误差函数
常用的误差函数主要由两大类,MSE(Mean Square Error)和Cross Entropy Error。
MSE主要用于回归问题,用于衡量两个向量在空间中的欧式距离的大小。


交叉熵函数(Cross Entropy Error):量化预测概率和目标概率之间的差距。

参数描述如下:

2.6 优化算法
Batch Gradient Descent:逐步的根据梯度信息对误差进行优化。
梯度:其方向代表了误差下降最快的方向,梯度仅仅提供误差下降的方向信息。

学习率:决定了迭代速度。

Batch GD:将所有数据放在一个Batch中,进行训练,每一个参数更新都是计算了所有训练数据集后的结果。
Stochastic Gradient Descent(SGD):在每次参数更新时只随机选择一组样本数据计算误差。

在实际应用中SGD表现要由于Batch GD。
Mini-Batch Gradient Descent(MBGD):将数据集按一定的尺寸分割为不同批次,每计算一个批次就进行一次参数更新。

其余优化算法:Adam、Adagrad、RMSprop等...
2.7 反向传播
根据链式求导法制对每个参数求偏导,获得梯度,进而计算其参数的改正值。

对网络中某个参数的求解可如下:

相当较为基础,笔记较为简略,欢迎批评交流。
下一期:卷积
共勉。
相关文章:
计算机视觉读书系列(1)——基本知识与深度学习基础
研三即将毕业,后续的工作可能会偏AI方向的计算机视觉方面,因此准备了两条线来巩固计算机视觉基础。 一个是本系列,阅读经典《Deep Learning for Vision System》,做一些总结跑一些例子,也对应本系列文章 二是OpenCV实…...
怎么查看navicat的数据库密码
步骤1:打开navicat连接数据库工具,顶部的文件栏-导出结果-勾选导出密码-导出 步骤2:导出结果使用NotePad或文本打开,找到,数据库对应的的Password"995E66F64A15F6776“”的值复制下来 <Connection ConnectionName"…...
webrtc前端播放器完整案例
https://download.csdn.net/download/jinhuding/89961792...
GORM优化器和索引提示
在使用 GORM 进行数据库操作时,优化器和索引提示可以帮助你提高查询性能。GORM 提供了一些方法来利用这些特性。 优化器提示 优化器提示(Optimizer Hints)是数据库系统提供的功能,用于指导查询优化器如何处理查询。不同的数据库…...
linux驱动-i2c子系统框架学习(1)
可以将整个 I2C 子系统用下面的框图来描述: 可以将上面这一 I2C 子系统划分为三个层次,分别为用户空间、内核空间和硬件层,内核空间就包括 I2C 设备驱动层、I2C 核心层和 I2C 适配器驱动层, 本篇主要内容就是介绍 I2C 子系统框架中…...
元戎启行嵌入式面试题及参考答案
介绍下 CAN 通信原理 控制器局域网(CAN)是一种串行通信协议,主要用于汽车、工业自动化等领域的电子控制单元(ECU)之间的通信。 其通信原理是基于多主站架构。在总线上,多个节点(设备)都可以主动发起通信。CAN 协议使用差分信号来传输数据,通过两条信号线 CAN_H 和 CAN…...
【EasyExcel】EasyExcel导出表格包含合计行、自定义样式、自适应列宽
目录 0 EasyExcel简介1 Excel导出工具类设置自定义表头样式设置自适应列宽添加合计行 2 调用导出工具类导出Excel表3 测试结果 0 EasyExcel简介 在数据处理和报表生成的过程中,Excel是一个非常常用的工具。特别是在Java开发中,EasyExcel库因其简单高效而…...
es数据同步(仅供自己参考)
数据同步的问题分析: 当MySQL进行增删改查的时候,数据库的数据有所改变,这个时候需要修改es中的索引库的值,这个时候就涉及到了数据同步的问题 解决方法: 1、同步方法: 当服务对MySQL进行增删改的时候&…...
apt镜像源制作-ubuntu22.04
# 安装必要的软件 sudo apt-get install -y apt-mirror # 编辑/etc/apt/mirror.list,添加以下内容 set base_path /var/spool/apt-mirror # 指定要镜像的Ubuntu发布和组件-null dir jammy-updates main restricted universe multiverse # 镜像的Ubuntu发布和组件的URL-n…...
libaom 源码分析: 预测编码过程梳理
AV1 预测编码中核心技术 AV1(AOMedia Video 1)作为一种开源的视频编码格式,其预测编码核心技术主要包括以下几个方面: 分区树分割模块: AV1利用多类型分割模式,递归地对图像/视频序列进行分区,以捕捉更丰富的空间信息,从而提升编码效率。这包括新的方向预测分割模式及…...
从0开始学习Linux——Yum工具
往期目录: 从0开始学习Linux——简介&安装 从0开始学习Linux——搭建属于自己的Linux虚拟机 从0开始学习Linux——文本编辑器 上一个章节我们简单了解了Linux中常用的一些文本编辑器,本次教程我们将学习yum工具。 一、Yum简介 Yum(全名…...
【Linux】Linux管道揭秘:匿名管道如何连接进程世界
🌈个人主页:Yui_ 🌈Linux专栏:Linux 🌈C语言笔记专栏:C语言笔记 🌈数据结构专栏:数据结构 🌈C专栏:C 文章目录 1.什么是管道 ?2. 管道的类型2.1 匿…...
【LeetCode】【算法】155. 最小栈
LeetCode 155. 最小栈 题目描述 设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。 实现 MinStack 类: MinStack() 初始化堆栈对象。 void push(int val) 将元素val推入堆栈。 void pop() 删除堆栈顶部的元素。 int …...
3.3 windows,ReactOS系统中页面的换出----1
系列文章目录 文章目录 系列文章目录3.3 页面的换出MiBalancerThread()MmTrimUserMemory()MmPageOutVirtualMemory() 3.3 页面的换出 在前一节中我们看到,如果有映射的页面已经被倒换到磁盘上即倒换文件中,…...
QCustomPlot添加自定义的图例,实现隐藏、删除功能(二)
文章目录 实现步骤:详细代码示例:实现原理和解释:使用方法:其他参考要实现一个支持复选框来控制曲线显示和隐藏的自定义 QCPLegend 类,可以通过继承 QCPLegend 并重写绘制和事件处理方法来实现,同时发出信号通知曲线的状态变更。 实现步骤: 继承 QCPLegend 类,添加绘…...
Linux云计算 |【第五阶段】CLOUD-DAY8
主要内容: 掌握DaemonSet控制器、污点策略(NoSchedule、Noexecute)、Job / CronJob资源对象、掌握Service服务、服务名解析CluterIP(服务名自动发现)、(Nodeport、Headless)、Ingress控制器 一…...
岛屿数量 广搜版BFS C#
和之前的卡码网深搜版是一道题 力扣第200题 99. 岛屿数量 题目描述 给定一个由 1(陆地)和 0(水)组成的矩阵,你需要计算岛屿的数量。岛屿由水平方向或垂直方向上相邻的陆地连接而成,并且四周都是水域。…...
hive切换表底层文件类型以及分隔符
1、改底层文件存储类型,但是一般只会在数据文件与期望类型一致的时候使用,比如load等方式时发现建表时没指定对这样的,因为这个语句不会更改具体的底层文件内容,只改元数据 ALTER TABLE 表名 SET FILEFORMAT 希望类型;2、更改数据…...
ChatGPT o1与GPT-4o、Claude 3.5 Sonnet和Gemini 1.5 Pro的比较
全新的ChatGPT o1模型(代号“Strawberry”)是OpenAI的最新进展,专注于以前的AI模型难以应对的领域:高层次推理、数学和复杂编程。OpenAI设计o1模型以花费更多时间思考问题,使其在需要逐层推理的任务中提高准确性。本文…...
asp.net文件防盗链
URLRewriter实现 可以参考下面的文章 代码 .net framework 新建asp.net framework的web项目,新建AntiTheftChainHandler using System.Web;namespace AntiTheftChainStu01.Handler {public class AntiTheftChainHandler : IHttpHandler{public bool IsReusable…...
C++_核心编程_多态案例二-制作饮品
#include <iostream> #include <string> using namespace std;/*制作饮品的大致流程为:煮水 - 冲泡 - 倒入杯中 - 加入辅料 利用多态技术实现本案例,提供抽象制作饮品基类,提供子类制作咖啡和茶叶*//*基类*/ class AbstractDr…...
从零实现富文本编辑器#5-编辑器选区模型的状态结构表达
先前我们总结了浏览器选区模型的交互策略,并且实现了基本的选区操作,还调研了自绘选区的实现。那么相对的,我们还需要设计编辑器的选区表达,也可以称为模型选区。编辑器中应用变更时的操作范围,就是以模型选区为基准来…...
条件运算符
C中的三目运算符(也称条件运算符,英文:ternary operator)是一种简洁的条件选择语句,语法如下: 条件表达式 ? 表达式1 : 表达式2• 如果“条件表达式”为true,则整个表达式的结果为“表达式1”…...
postgresql|数据库|只读用户的创建和删除(备忘)
CREATE USER read_only WITH PASSWORD 密码 -- 连接到xxx数据库 \c xxx -- 授予对xxx数据库的只读权限 GRANT CONNECT ON DATABASE xxx TO read_only; GRANT USAGE ON SCHEMA public TO read_only; GRANT SELECT ON ALL TABLES IN SCHEMA public TO read_only; GRANT EXECUTE O…...
leetcodeSQL解题:3564. 季节性销售分析
leetcodeSQL解题:3564. 季节性销售分析 题目: 表:sales ---------------------- | Column Name | Type | ---------------------- | sale_id | int | | product_id | int | | sale_date | date | | quantity | int | | price | decimal | -…...
html css js网页制作成品——HTML+CSS榴莲商城网页设计(4页)附源码
目录 一、👨🎓网站题目 二、✍️网站描述 三、📚网站介绍 四、🌐网站效果 五、🪓 代码实现 🧱HTML 六、🥇 如何让学习不再盲目 七、🎁更多干货 一、👨…...
iOS性能调优实战:借助克魔(KeyMob)与常用工具深度洞察App瓶颈
在日常iOS开发过程中,性能问题往往是最令人头疼的一类Bug。尤其是在App上线前的压测阶段或是处理用户反馈的高发期,开发者往往需要面对卡顿、崩溃、能耗异常、日志混乱等一系列问题。这些问题表面上看似偶发,但背后往往隐藏着系统资源调度不当…...
安卓基础(Java 和 Gradle 版本)
1. 设置项目的 JDK 版本 方法1:通过 Project Structure File → Project Structure... (或按 CtrlAltShiftS) 左侧选择 SDK Location 在 Gradle Settings 部分,设置 Gradle JDK 方法2:通过 Settings File → Settings... (或 CtrlAltS)…...
深度学习之模型压缩三驾马车:模型剪枝、模型量化、知识蒸馏
一、引言 在深度学习中,我们训练出的神经网络往往非常庞大(比如像 ResNet、YOLOv8、Vision Transformer),虽然精度很高,但“太重”了,运行起来很慢,占用内存大,不适合部署到手机、摄…...
系统掌握PyTorch:图解张量、Autograd、DataLoader、nn.Module与实战模型
本文较长,建议点赞收藏,以免遗失。更多AI大模型应用开发学习视频及资料,尽在聚客AI学院。 本文通过代码驱动的方式,系统讲解PyTorch核心概念和实战技巧,涵盖张量操作、自动微分、数据加载、模型构建和训练全流程&#…...
