斯坦福CS231n笔记(二):Image Classification

第二讲:Image Classification

Image Classification:a core task of CV, 主要用来区分图片种类,打标签。

Problem1: semantic gap语义鸿沟问题
图像分类想要处理pixel表单中的大量数字并进行分类
challenges: viewpoint variation(比如相机的一系列操作可以使得图片完全不同),illumination光线问题,deformation 形变的问题,occlusion,background clutter,Intraclass variation。对这些challenges(干扰)需要有较强的鲁棒性,所以说分类任务是非常复杂的。

An image classifier: ①原来是不可扩展的分类方法。② 现在机器学习框架中用data-driven approach,训练分类器

First Classifier : Nearest Neighbor Classifier

近邻算法:记住所有的训练集以及label,对测试集需要浏览所有训练集图片。
Define distance measure(距离超参数):
① L1(Manhattan) distance,矢量化代码
② L2(Euclidean) distance
算法缺点:speed depend on size of train dataset,linearly slowdown。
intant training and expensive test evaluation,而CNN完全相反,不管训练集多大,一直做恒量计算。

KNN:
K值是一个超参数,K越大,分类边缘越平滑。

下面这一小部分是参数选择的思路,cross-validation

What is the best distance to use?
What is the best value of K to use?
--> how do we set the hyperparameters?-->无法确定
思路:对大量参数进行试验-->try what hyper parameters work best-->bad idea,容易出现overfitting
--->对于test data有节制使用,验证算法对于除测试集之外的其他数据的泛化程度-->validation data验证集-->corss-validation

实际上,KNN on images never used!!!
原因:效率低,而且基于整张图片的距离矩阵会非常的unintutive,高维度的就更恐怖

Approximate Nearest Neighbor:使得近邻算法分类器加速

Linear Classification:

从这边开始学习卷积神经网络,通过一系列有关线性分类的课程最终建立一个用于图像分析的卷积网络。

获取分类的方法:parametric approach

这个构造函数输入为image pixel matrix,输出为class number。我们要做的是定义这个函数,从线性函数开始到神经网络再到卷积神经网络。
线性函数:
x:stretch it out a long vector ( from a pixel matrix to long column vector )
参数W为权重,b为偏置。
W中每个参数代表对应的pixel对这个class的影响
在这个分类器中有10个分类器并行运算,相互独立,分别位于W矩阵的每一行。
Question1:What does the linear classifier do, in English? 所有的分数都是一个所有像素点值的加权值
对线性分类器的解释:
狭义解释是类似于模板匹配
线性分类器不能同时获取所有的模型
把图片看成高维度空间中的点,每个图片都是一个点,线性分类器是在描述这个像素在维度空间上的线性决策边界,高维空间对应图片能取到哪些像素密度值
Question2:What would be a very hard set of classes for a linear classifier to distinguish?

下一节Loss function:定量的测定分类器工作的好坏,用来找到能清楚分开所有图片的W分类器

原文地址:https://www.cnblogs.com/amberdata/p/8450214.html