计算机视觉与人工智能 北京邮电大学 鲁鹏
p1 前言
图像处理与计算机视觉区别:
图像处理的输入和输出都是图像,输入和输出之间的最大的区别是改善了图像之间人们需要改善的一部分,例如图像增亮,去噪,去模糊等。
计算机视觉的输入是图像,输出不仅限与图像,比如输入的图像可以输出语义标签,或者是图像三维场景的结构信息,强调的输出更多的是内容的输出,不仅限于感官的输出。
计算机视觉的目标
跨越“语义鸿沟”建立像素到语义的映射
图像中包含何种信息
1.三维场景的结构信息
2.语义信息
深度学习三要素
算法,算力,数据
p2 线性分类器
分类模型
基于规则的方法是否可行
通过硬编码的方式识别猫或其他类
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Y4Gy5WC6-1625653249862)(https://ftp.bmp.ovh/imgs/2021/06/a73fde643845db74.jpg)]
通过硬编码的方法识别猫或者其他类,是一件很困难的事。
数据驱动的图像分类方法
1.数据集构建
2.分类器设计与学习
3.分类器决策
分类器的设计与学习
图像表示
1.像素表示
2.全局特征表示(如GIST):在图像上面抽出一些频率特征,适合全局特征,适合风景类,城市建筑等分类,不适合小事物的分类。
3.局部特征表示(如SIFT特征+词袋模型):可以更好的处理有遮挡的情况,将图片分成区块,然后进行分类。
分类模型
近邻分类器
贝叶斯分类器
线性分类器(主要讲)
支持向量机分类器
神经网络分类器(主要讲)
随机森林
Adaboost
损失函数
0-1损失
多类支持向量机损失
交叉熵损失
L1损失
L2损失
优化算法
1.一阶方法(主要讲)
梯度下降
随机梯度下降
小批量随机梯度下降
2.二阶方法
牛顿法(主要讲)
BFGS
L-BFGS
训练过程
数据集划分
数据预处理
数据增强
欠拟合和过拟合
减小算法复杂度
使用权重正则项
使用droput正则化
超参数调整
模型集成
图像分类任务的评价指标
正确率=分对的样本数/全部样本数
错误率=1-正确率
TOP1指标与TOP5指标
TOP1指标:假设对一个图像有5个预测标签,其中在分析对错的时候只看第一个预测的标签,第一个预测的标签的正确与否就决定了整个算法是否正确。
TOP5指标:同样,TOP5的意思就是指标为前5个预测标签,只要这5个预测标签里面有对的就算整个算法的预测是正确的。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2wQVAn6x-1625653249869)(https://ftp.bmp.ovh/imgs/2021/06/29af847d41d04d5b.jpg)]
图像类型
1.二进制图像
计算机将图像读取为矩阵。矩阵内部的值为0或1。
2.灰度图像
同样将图像读取为矩阵,矩阵内部的值的范围为0到255,即256个值。其中0代表黑色,255代表白色,中间的值的颜色在黑色和白色之间。
3.彩色图像
彩色图像可以分为3个通道,即RGB,其中三个字母分别代表红色,绿色,蓝色。
大多数的分类算法都要求输入向量。
图像表示
将图像转换成向量的方法很多,这里介绍一种简单的方法,直接将图像矩阵转换成向量,表示为
这里面,rgb就是每个像素点对应的rgb值。
线性分类器的定义
线性分类器是一种线性映射,将输入的图像特征映射为类别分数。
线性分类器的决策:
其中,图片左侧的表达式叫做线性分类器的矩阵表示,通过将权值矩阵W,图像向量X值,和偏置b,带入计算可以得到最终的表达式的值,分类目标中表达式的最终的值最大的数所对应的物体就代表最终的预测。
例题
问题:CIFAR10数据集分类任务的分类器,W,x,b的维度是多少?
回答:CIFAR10有10个类别且图像大小为32*32*3,因此:
x是图像向量,其维度为3072维;
W是权值矩阵,其维度为10*3072维;
b是偏置矩阵,其维度为10*1的向量;
f是得分向量,其维度为10*1的向量;
线性分类器的权值向量
直观的理解权值矩阵,权值可以看成是一种模板,输入图像与评估模板的匹配程度越高,分类器的输出的分数就越高。
线性分类器的决策边界
分数等于0的线就是决策面,即线性分类器的矩阵表达式的值为0。
损失函数
损失函数的定义
损失函数搭建了模型性能与模型参数之间的桥梁,指导模型参数优化。
损失函数是一个函数,用于度量给定分类器的预测值与真实值的不一致程度,其输出通常是一个非负实数。
其输出的非负实数值可以作为反馈信号来对分类器参数进行调整,以降低当前实例所对应的损失值,提升分类器的分类效果。
多类支持向量机损失
例子:
正则项与超参数
接下来对正则项损失和超参数进行介绍:
正则项损失:
超参数:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9Psz9pbp-1625653249878)(https://ftp.bmp.ovh/imgs/2021/06/c537ef636aca619d.jpg)]
L2正则项:
L2正则项中将分类器输出的值进行平方取平均值,L2正则损失对大数据权值进行惩罚,喜欢分散权值,鼓励分类器将所有维度的特征都用起来,而不是强烈的依赖其中少数几维特征。
L1正则项是将分类器的输出值取绝对值然后相加取平均值,然后弹性网络正则项类似于将两者混合,其中一部分的分类器输出取绝对值,一部分的分类器输出取平方。
正则项让权值有了偏好。正则损失的目的是防止模型在训练集上面学习得太好,即过拟合。
优化算法
什么是优化
参数优化是机器学习的核心步骤之一,它利用损失函数的输出值作为反馈信号来调整分类器参数,以提升分类器对训练样本的预测性能。
损失函数L是一个与参数W有关的函数,优化的目标就是找到使损失函数L达到最优的那组参数W,最直接的方法就是让L对W进行求导,令其导数等于0,就可以找到最优的那组参数W。
通常,L形式比较复杂,很难从这个等式直接求解出W!
梯度下降算法,随机梯度下降算法及小批量梯度下降算法
梯度下降方法是一种简单而高效的迭代优化方法。
可以理解为向负梯度方向走,学习率是算法中很重要的一部分。
下面是梯度下降算法的整体思路结构:
梯度计算的方法:
1.数值法
即一维变量,函数求导,也就是数学中的求导计算,整个计算过程计算量大,不精确。
2.解析法
即求数学中的梯度,特点是精确,速度快,导数函数推导易错、
数值梯度有什么作用?
答:求梯度的时候一般使用解析梯度,而数值梯度主要用于解析梯度的正确性校验。
接下来介绍随机梯度下降算法和小批量梯度下降算法:
训练过程
数据集划分
将数据集划分为训练集和数据集,训练数据用于寻找最优分类器,评估模型用于评测泛化能力。
需要处理的是超参数的问题,所以就需要将数据集分为训练集,验证集,测试集。
训练集用于给定的超参数时分类器参数的学习。
验证集用于选择超参数。
测试集评估泛化能力。
K折交叉验证:
如果数据很少的话,验证集包含的样本就会过少,就无法在统计上代表数据。或者由于随机性使得模型性能差别很大。几折就是将数据分成几份的意思。下面是K折验证的主要方法,打乱数据要比不打乱数据的随机性更好一些。
数据预处理
数据预处理包括去均值,归一化,去相关,白化等操作。