机器视觉学习笔记

计算机视觉学习笔记

2022/5/17

部分图文取自北京邮电大学鲁鹏老师PPT,如有侵权即删。
材料来自https://www.bilibili.com/video/BV1V54y1B7K3?p=2

图像分类任务的难点

图像分类:从已知的类别标签集合中为给定的输入图片选定一个类别标签。

  1. 语义鸿沟 ,我们所看到的图像内容,与机器看到的01代码不同,存在最大的问题就是语义的差异,如何建立像素到语义的映射是最难的;在这里插入图片描述

  2. 视角 同一个物体的不同视角的图像,对于你已经训练号的系统来说很可能效果很差,就比如人脸检测系统,如果我的脸稍微侧一点,就可能识别不出来了;

  3. 光照 我们肉眼看到的物体都是光照反射所看到的色彩,光照不同,同一个物体可能展现出差别很大的图像,就如下图所示,企鹅石膏究竟是白色还是黑色?在这里插入图片描述

  4. 尺度 大小是相对的,就比如人距离相机很近的时候,人脸就会很大,如果离得很远就会导致人脸很少,可能识别不出来;

  5. 遮挡 很多情况下我们不一定能够看到物体的全貌,仅仅根据某一些特征,我们就可以分辨出它是什么物体,就如下图,仅仅一段尾巴,我们就知道他是猫,那计算机系统能否识别呢?在这里插入图片描述

  6. 形变 同一种物体可能会有不同的形态,就比如一个动物会有站姿,坐姿,躺姿等等;在这里插入图片描述

  7. 背景杂波 物体颜色可能与背景颜色很相似,在这里插入图片描述

  8. 类内形变 同一类物体,可能会有很多不同的形态,就比如凳子:。在这里插入图片描述

  9. 运动模糊对于动物、车辆等运动物体识别的时候,可能会出现运动模糊的情况。

  10. 类别繁多针对不同的任务,设定类别也不同。

基于规则的分类方法是否可行

已经做过的尝试:
在这里插入图片描述
当然如果我们要把猫的所有形态,所有类别,所有样貌都写进去才可能实现猫的分类,这肯定是不可能的。

数据驱动的图形分类范式

1、数据集构建:有监督、无监督数据集(有无标签)
2、分类器设计与学习:数据中归纳规律,构建数学模型,从数据中学习参数,
3、分类器决策:对未知数据分类。

分类器设计与学习

在这里插入图片描述
图像表示:输入的图像能够被所使用算法所接受,
1、像素表示
2、全局特征表示(GIST,图形频率特征),适用于风景类、室内、城市建筑等大场景分类;
3、局部特征表示(SIFT特征+词袋模型),及比如人脸中提取眼部、嘴部、鼻子等作为一个人的特征,对于可能出现遮挡的图像效果较好。
特征工程的重要性:特征可能很多,但是有用的特征可能很少。
分类模型:选择一个分类模型,能够对输入图像进行预测,会给出一个预测值,通过损失函数与真实值进行计算得到损失值来评估当前模型的效果,并利用优化算法来更新模型参数,使得预测值与真实值差异更小,直到预测值满足使用要求。

  • 近邻分类器
  • 贝叶斯分类器
  • 线性分类器
  • 支持向量机分类器
  • 神经网络分类器
  • 随机森林
  • Adaboost

损失函数:

  • 0-1损失
  • 多类支持向量机损失
  • 交叉熵损失
  • L1损失
  • L2损失

优化算法:

  • 一阶方法
    • 梯度下降
    • 随机梯度下降
    • 小批量随机梯度下降
  • 二阶方法
    • 牛顿法
    • BFGS
    • L-BFGS

训练过程

  • 数据集划分
  • 数据预处理
  • 数据增强:数据量可能不够
  • 欠拟合与过拟合
    • 减小算法复杂度
    • 使用权重正则性
    • 使用dropout正则化
  • 超参数调整:模型设计需要指定的参数,网络深度等等
  • 模型集成

常用的分类任务评价指标

正确率(accuracy) = 分对的样本数/全部样本数
错误率(error rate) = 1- 正确率
Top1指标:
预测了五个标签,如果第一预测错误,那就是错误,第一个对了就是正确的。
Top5指标:
同样预测五个标签,只要里面有一个答案是正确的,那就是正确的。Imagenet大赛中使用的就是Top5指标。

在这里插入图片描述

线性分类器

使用的是CIFAR10数据集

基于像素的图像表示

图像类型
1、二进制图像(Binary),只有黑白。
2、灰度图像(Gray Scale),(0,255),一个像素由一个字节表示,只有一个通道。
3、彩色图像(Color),三个字节表示,三通道RGB等。
大多数分类算法都要求输入向量

基于向量的图像表示

在这里插入图片描述

线性分类器定义

线性分类器是一种线性映射,将输入的图像特征映射成类别分数。

  • 形式简单、易于理解
  • 通过层级结构(神经网络)或高维映射(支持向量机)可以形成功能强大的非线性模型。

第i个类的线性分类器:
f i ( x , w i ) = w i T x + b i f_i(x,w_i)=w^T_ix+b_i fi(x,wi)=wiTx+bi
每个类都有自己的参数w和b
x代表输入的d维图像向量,c代表类别个数
w i = [ w i 1 ⋅ ⋅ ⋅ w i d ] T w_i=[w_{i1} ···w_{id}]^T wi=[wi1wid]T为第i个类别的权值向量, b i b_i bi为偏置
在这里插入图片描述
当输入图像x在i类的分数高于其他类别的时候,就将x分为i类。
举例
在这里插入图片描述
有这样一张图像(灰度图),假设它只有4个向量组成,我们将他表示为x所示的一个列向量,
在这里插入图片描述

假设我们预置的类别有3类,汽车、猫、鸟。那么对应每一个类别都有一个权值w和偏置b,分别通过上式计算得出该图片在每一类的分数,选择分数最高的,也就是f2对应的类别,猫类。这就是线性分类器的决策过程。
在上图中我们可以将所有类别的W看作一个矩阵,我们叫做权值矩阵W, b i b_i bi看作一个向量,叫做偏移向量b,最后的得分看作得分向量f。
在这里插入图片描述
如何理解权值矩阵W中的 w i w_i wi

  • 是指已经学习好了的分类器, w i w_i wi记录了这个类别的平均值,可以把权值当作一个模板,你用来测试的图片和模板中的图像越相似,结果分数也就也大,属于这个类别的可能性也就越大。
  • 从几何角度来考虑, w i w_i wi可以看作类别的分界面,分类任务其实可以看作是找到若干个分界面,能够将不同类别的图像分隔开。分数为0 的线就是决策面
    在这里插入图片描述

    损失函数

    损失函数定义

    分类器在分类表现上会有好有坏,那如何定量表示分类器的效果?
    损失函数搭建了模型性能与模型参数之间的桥梁,指导模型参数优化。
    • 损失函数是一个函数,用于度量给定分类器的预测值与真实值的不一致程度,其输出通常是一个非负实值。
    • 其输出的非负实值可以作为反馈信号来对分类器参数进行调整,以降低当前示例对应的损失值,提升分类器的分类效果。
      在这里插入图片描述

多类支持向量机损失

公式有点小变化
在这里插入图片描述

  • 正确类别的得分比不正确类别的得分高出1分,就没有损失
  • 否则就会产生损失
    在这里插入图片描述
    max(0,·)损失–常被称为折页损失(hingeloss)
    例:假设有3各类别的训练样本各一张,分类器是线性分类器f(x,W)=Wx+b,其中权值W和b一直,分类器的三个样本的打分如下:
    在这里插入图片描述
    那么,当前分类器对于鸟这张图像的损失这样计算:
    L i = ∑ j ≠ y i m a x ( 0 , s i j − s y i + 1 ) L_i = \sum_{j\neq y_i} max(0,s_{ij}-s_{yi}+1) Li=j=yimax(0,sijsyi+1)
    = m a x ( 0 , − 2.3 − 0.6 + 1 ) + m a x ( 0 , 1.9 + 0.6 + 1 ) =max(0,-2.3-0.6+1)+max(0,1.9+0.6+1) =max(0,2.30.6+1)+max(0,1.9+0.6+1)
    = m a x ( 0 , − 1.9 ) + m a x ( 0 , 2.3 ) =max(0,-1.9)+max(0,2.3) =max(0,1.9)+max(0,2.3)
    = 2.3 =2.3 =2.3
    同理,对于第二张、第三张图片的loss:
    在这里插入图片描述
    在这里插入图片描述
    因为第三张图片的分数要高于其他类别1分,所以最后的结果是0,这是分别之间的边界,为了防止类别过于相似。
    在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值