02.图像分类任务介绍&线性分类器(上).1080P

 (0)摘要

# 课程内容

 (1)图像分类任务

 (2)所面临的问题

 (3)数据驱动的图像分类的方法

 (4)图像分类任务的评价指标

 (5)开始设计---图像表示和分类器决策         (此处才是干货)

 (6)开始设计---损失函数(上)


# 学如逆水行舟,不进则退

(1)图像分类任务

# (1)什么是图像分类任务。 

# 面临的问题:

# (2)语义鸿沟

# (3)视角问题 

# (4)光照问题

# (5)尺度问题 

# (6)遮挡问题

# (7)形变问题

# (8)背景杂波

# (9)类内形变 

# (10)运动模糊


(2)数据驱动的图像分类的方法

# (1)概览

# (2)分类器设计与学习,那么我们这里只是一个大致的概览,之后会对其中的内容进行更加细节的讲解。

                 1)图像表示

                2)分类器

                3)损失函数

                4)优化函数---迭代优化法 

                5)训练过程


(3)图像分类任务的评价指标

# (1)图像分类任务的评价指标

#(2)Imagenet,top-1 指标,要求第一个标签预测就是对的,才算对,如果第一个预测不对,但是第二个预测对了,那么还是错的;而 top-5 指标就是,只要预测的有一个是对的就是对的。Imagenet 用的是 top-5 的指标。【视频45:00处开始温习即可】

# (3)数据集准备,cifar 10 是最简单的数据集了,以此为例讲解深度学习。该数据集中,每一张图片是 32x32x3 的格式。

#(4)设计概览,我们首先是准备好数据集,然后进行数据预处理,数据预处理主要是基于像素来表示图像,我们一般采用向量的形式来表示。

 #(5)图像类型,二进制图像就是非黑即白、灰度图像就是像素值介于0-255之间的值,使用 1 Byte 来表示、彩色图像就是 RGB ,得用 3 个 Byte 来记录。

        1)黑白图像

        2)灰度图像

         

         3)彩色图像,其实就是 RGB 三个通道的叠加。


 (5)开始设计---图像表示和分类器决策

# (1)输入的定义

                1)大多数分类算法都要求输入的是向量

               

                2)最简单的将图像转换为向量的方式,就是将图片每一个通道的 rgb值堆叠起来,展开成一个向量。具体的示例如下图所示。

                 3)cifar 10 的表示,那么根据上面的表示,我们可以对cifar 10 进行展开,其实有点 flatten 操作的感觉。可以这么理解。

                4)从线性分类器开始,因为线性分类器是神经网络的基础,也是支持向量机的基础。在小样本环境下,支持向量机是绝对的王者;在大样本的情况下,神经网络是绝对的王者。(上述只能说是之一)

                5)线性分类器的定义,其实就是一个线性的映射,比较直观的理解就是,y=f(x),f(x)=kx+b这种映射(其实这种说法可能不够严谨)。


# (2)线性分类器决策

                1)如下图所示,设第 i 个类的线性分类器为 f_{i}(x,w_{i}) = w_{i}^{T}x + b_{i}, i=1,...,c 。那么我们首先来说 f_{i}(x,w_{i}) ,这就是第 i 类的线性映射,其中 x 代表输入的 d 维图像向量,c 为类别个数,x = \begin{pmatrix} x1\\ x2\\ ...\\ \end{pmatrix}_{d \times 1} ,而 w 代表的本身意思就是权值向量,其形状 w = \begin{pmatrix} w11& ...& ...& w1d& \\ w21 & ... & ... & w2d& \\ & ...& ...& & \\ wi1& ...& ... & wid& \\ & ...& ... & &\\ wc1& ...& ... & wcd& \end{pmatrix}_{c\times d} ,那么第 i 个类别的权值矩阵,就是其中一列的向量值,也就是 w_{i} = \begin{pmatrix} wi1 & wi2 & ... & wid \end{pmatrix}^{T}, 然后我们再看到等式右边的 w_{i}^{T}x + b_{i} ,这样就很好理解了,也就是 w_{i}^{T}x = \begin{pmatrix} wi1 & wi2& ...& wid \end{pmatrix}_{1\times d}\begin{pmatrix} x1\\ x2\\ ...\\ xd \end{pmatrix}_{d\times1}  ,最后的偏置 b ,其中 b = \begin{pmatrix} b1\\ b2\\... \\bc \end{pmatrix}_{c\times1} 。那么我们更进一步的说,实际上就是矩阵运算,即 f(x,W) = WX + B = \begin{pmatrix} w11& ...& ...& w1d& \\ w21 & ... & ... & w2d& \\ & ...& ...& & \\ wi1& ...& ... & wid& \\ & ...& ... & &\\ wc1& ...& ... & wcd& \end{pmatrix}\begin{pmatrix} x1\\ x2\\ ...\\...\\...\\ xd \end{pmatrix} + \begin{pmatrix} b1\\ b2\\... \\...\\..\\bc \end{pmatrix} = \begin{pmatrix} s1\\ s2\\... \\...\\..\\sc \end{pmatrix} , 其中  S = \begin{pmatrix} s1\\ s2\\... \\...\\..\\sc \end{pmatrix} 是每一个类别的分数向量。由此,我们就可以讲解这个决策规则了,也就是说 f_{i}(x) > f_{j} , \forall j \neq i 的意思就是如果一个输入图像在第 i 类的分数最大,那么这个图像就属于第 i 类,也就是对应的 argmax(S) 。

               

                2)线性分类器示例,我们根据上面的讲解,来实际的操作一下整个决策过程。如下图所示,给定一个三分类的任务,那么现有一张待分类图片(很轻易的知道其真值是猫),我们讲解线性分类器如何进行决策的,这里类别 i = 1,2,3  。

               

                3)首先我们假定输入的图片,只包含  4 个像素,那么我们将其展成向量,那么就变成如下所示了,其实就是按行展开,亦即展开的向量就是 x = \begin{pmatrix} 56\\ 231\\ 24\\ 2 \end{pmatrix}

                4)然后我们结合前面线性分类器决策的知识,使用权值矩阵 w ,乘以 x ,那么实际上的权值矩阵为 w = \begin{pmatrix} w_{1}^{T}\\ w_{2}^{T}\\ w_{3}^{T} \end{pmatrix}_{3\times4}  ,偏置向量为b = \begin{pmatrix} b1\\ b2\\ b3 \end{pmatrix},分数向量为 f= \begin{pmatrix} f_{1}\\ f_{2}\\ f_{3} \end{pmatrix} ,从而有 wx = \begin{pmatrix} w_{1}^{T}\\ w_{2}^{T}\\ w_{3}^{T} \end{pmatrix}\begin{pmatrix} 56\\ 21\\ 24\\ 2 \end{pmatrix} +\begin{pmatrix} b1\\ b2\\ b3 \end{pmatrix} = \begin{pmatrix} f_{1}\\ f_{2}\\ f_{3} \end{pmatrix} ,显然 argmax(f) 即可知道最后的分类结果,那么一个好的分类器,肯定是 argmax(f) = f_{2} 。这里面,我们的权值矩阵的行数,其实就是分类的个数。同时,我们也明晰了线性分类器的矩阵表示。

                5)更进一步,我们说说 cifar 10 数据集的矩阵表示。其实就和上面的矩阵表示是相同的。


# (3)权值矩阵到底是什么

                1)在说完了线性分类器后,我们进一步的说说权值矩阵 w 到底是什么?我们以 cifar 10 为例,如下所示。事实上,权值矩阵就是一个模板,下面的可视化结果我们可以看到,如 w_{2} 是 汽车的权值矩阵,很直观的感觉就是一个汽车的轮廓,那一部车的图片与之相乘的时候,分数肯定是更大的(说实话这个得意会也比较浅显,如果非要展开的话,我们需要举一个车和猫的例子,来乘以这样的权值矩阵来验证),那么这也解释了,为什么线性分类器能够实现分类,其实就是学习这样的模板,使得对应类别的模板更像这个类,即得分更大。再如 w_{8} 是马类,这个权值矩阵记录了两个马头,实际上就是学习的时候学到了左边有马头和右边有马头的情况,一个有趣的理解是两个马头也是自适应的折中。模板的理解是建立在线性分类器上的。

                2)线性分类器的决策边界,决策边界其实在高维空间里面就是一个超平面,这样的超平面能够把不同的类别给分开。比如汽车这一类为例,那么分类平面之上的即为汽车,越往上则越高,反之,如果在分类平面下的得分越低,就不属于汽车这一类了。


(6)开始设计---损失函数(上)

# (1)如何衡量分类器对当前样本的效果好坏

                1)如下图所示,分类器 1 将输入图片分类为了猫,而分类器 2 则分为了船类。显然分类器 1 的性能是好的。如何去判断和优化分类器的性能,这就需要损失函数了。

                2)损失函数的概述,其实就判断预测值 \widehat{Y} 和真实值 Y 之间的差距,然后根据差距的大小来更新我们的权值参数,也就是权值矩阵。具体的概述如下:

                3)损失函数的定义。如下所示,这是一个损失函数的模型。其中,f(x_{i},W) 中的 x_{i} 是数据集中的第 i 张图片,W 就是相应的权值矩阵,从而 f(x_{i},W) 就是在 W 矩阵下,第 i 张图片根据映射 f 的预测值 \widehat{Y}y_{i} 是第 i 张图片的真实值 Y。 具体的损失函数其实是 L_{i} ,那么 L_{i}[ f(x_{i},W), y_{i}] 就是在 L_{i} 映射下的 \widehat{Y}损失值 Y之间的差距。那么 L 的意思是总的平均损失,也就是所有数据集的平均损失。


# (2)多类支持向量机损失(折页损失)

                1)折页损失的定义。有了前面的讲解,我们来讲解折页损失。首先是 s_{ij} 的定义就是第 i 个样本(其实就是图片啦)在第 j 个类别上面的预测分数;然后 f_{j}(x_{i},w_{j},b_{j})  映射中,x_{i} 为第 i 个样本,w_{j} 第 j 个类别的权值矩阵(其实就是 w_{j}^T 的意思),b_{j} 是第 j 个类别的偏置值,需要配合前面我说的矩阵表示来理解,从而我们就很容易理解 s_{ij} 的意思了,也就是第 i 个图片乘以第 j 类别的权值矩阵得到的预测分数(也就是所谓的线性分类器的分数)。最后就是 s_{yi} 在这里的定义就是第 i 个样本乘以它真正属于的类别的权值矩阵,即 w_{j}^Tx_{i}  (比如说这第 i 个样本的真值是猫,它乘以猫这一类的权值矩阵,所得到的分数,另外 y_{i} 的意思也可以理解为这个第 i 个类别)。 

                2)我们继续看上面的图,有了刚才的讲解,我们就可以定义多类支持向量机的损失了,注意,这里是 L_{i} ,然后 j\neq y_{i} 的意思就是,反正这个 j 就不是 y_{i} (i)类。我们来看 s_{yi} \geq s_{ij} +1 (+1 其实是加保险的意思,就是确保一定是大一点) ,其实不太好理解,那如果我们先看 s_{yi} < s_{ij} +1 呢,也就是说第 i 个图片在第 j 个类别的权值矩阵上的得分大于第 i 张图片的真实类别权值矩阵的得分,那显然是有误差的,这个时候就有损失了,那么损失就是 s_{ij} - s_{yi} +1 ,这个损失就是我们拿具体这个误差的大小作为损失值。现在再来看  s_{yi} \geq s_{ij} +1 就是第 i 张图片乘以其真实类别的权值矩阵得到的分数,大于该图片与其他类别权值矩阵相乘的分数,那么这个损失就是 0 了。从而就是  \sum_{j\neq y_{i}}max(0, s_{ij} - s_{yi} + 1) 注意啊,这是要求和的,然后是一张图片的损失值。

                3)来看一个实例,具体的就不讲解了,一看便知。


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值