您的位置:首页 > 其它

深度学习与媒体计算① —— 图像分类 (CS231n)

2018-01-22 22:16 369 查看
因为项目的需要,我从去年7月份开始涉足深度学习和媒体计算这个领域,到现在为止算上看各种网课和代码也有了小半年的时间,但是上课期间,很难给自己找出一段完整的时间 (本科生),一直没能系统地做一个积累,再加上也有很长一段时间没更新自己的博客,因此个人准备做一系列连载,把近期的学习内容进行一个记录,虽然很少而且学得不是精,但是也很希望能够和各位朋友一起学习交流。(Jan. 22th. 2018 in Shenyang)

CS231n —— Lecture 2 : Image Classification

图像分类所面临的困难:

1. Viewpoint Variation 视角变化,我们知道图像的本质是一个二维矩阵,对于一个相同对象而言,从不同角度拍摄出来的照片在矩阵层面上都有着非常大差异,因此视角变化带来的困难就是 —— 相同对象,不同的图像表达;

2. Deformation 形变,在 cs231n 的 lecture 2 中举了一个猫的例子,躺着的猫,趴着的猫,以及蜷缩起来的猫。不管是怎样的姿态,对象的本质都是一只猫,但在图像当中我们又如何去发现猫的这一特征呢?

3. Occlusions 遮挡,这件事情在我做项目期间也遇到过,比如说我现在要从照片当中识别一个香蕉,如果这个香蕉被挡住了一大半,我们需要从图像中的残余特征中提取出来关于香蕉的知识或信息;

4. Background Clutter 背景干扰,通俗点讲就是所谓的“撞色”,要识别的实体对象和背景重合度过高,特征提取不明显。而且个人觉得背景中如果存在过多的噪声,也会对特征提取产生一定程度上的干扰;

5. Intra-class Variation 类内的区别,如果一张图像内存在多个同类对象,我们需要做到的是将这几个同类的对象全部识别出来;

6. Illumination Conditions 光照条件,光照对于图像中各个图元的像素级别影响。

因此在最开始人们对于分类的这件事提出了一种最为直接的Idea,我把它称为 Naive Approach (朴素方法)。

Naive
Approach : Discover all features of your target object like angular points and etc. in a 2D image. 在一张二维图像中发现对象当中诸如角点等全部特征。这个算法策略从可执行的角度似乎有些难以实现,最致命的问题就是low efficiency。过低的算法效率。

在此基础之上我们就引入了 Data Driven Approach (数据驱动方法)

数据驱动方法是基于Machine Learning的策略,如下图所示:



不同于Naive Approach中对每一个图像进行大量计算的思想,数据驱动则是通过大量的数据集和学习算法来完成对特征的提取和分析,最后通过对输出层的处理 (Softmax, SVM and etc.) 来完成分类的目标。

Learning Model 的相关内容会在后面继续总结,下面给出的是一些经典的分类模型和算法。

① k-Nearest-Neighbor Algorithm k-近邻算法

引理

L1 ( 两个矩阵对象的 Manhattan Distance )  



L2 ( 两个矩阵对象的 Euclidean Distance )

 


算法的思想:“近朱者赤,近墨者黑”

步骤:

1. 计算测试图像和各个图像之间的距离 (L1或L2);

2. 将距离按照升序排列;

3. 圈定出最近的k个对象,作为测试数据的近邻;

4. 选出频率最高的类别作为测试数据的类别 (投票)。

加权投票法 —— 根据距离远近的加权

 


k的通常取值为
                                                     

 
                 (n 为训练集样本个数)
算法优点:模型简单,编码比较轻便
缺点:开销过大,适合对稀疏事件进行处理
② Softmax Regression :Softmax 回归算法
引理:假定现在存在一个L层的深度神经网络,在第L层中我们的最终输出是通过线性回归完成的,如下式所示



那么softmax回归的作用就是计算测试数据X属于各个可能类别的概率,这么说可能有点拗口,下面给出数学公式
假设存在m种可识别类别C



网络L层的输出为



那么softmax的输出可表示成为



其中



p_i 分别对应每种类的可能性. 
算法流程如下:
1. 计算结果向量   

 (element
wise 逐项运算);
2. 计算                  

 
   ;
3. 输出为              

 
       ;

相关代码将在后续的博客中继续更新

参考文献:
CS231n Lecture 2 Notes Linear Regression CS231n Lecture 2 Notes
CS231n Lecture 2 Notes Image Classification  CS231n Lecture2 Notes

Andrew Ng 的 Deep Learning Course 1 和 Course 2 ,Coursera 和 网易云课堂上都有免费资源
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息