privious courses: cs131 fundations and applications
http://vision.stanford.edu/teaching/cs131_fall1415/schedule.html
没有找到视频,only一些materials,有空的话可以看看
CS231A · Computer Vision: from 3D reconstruction to recognition
http://web.stanford.edu/class/cs231a/resources.html
module1 image classification:(计算机视觉中的核心问题之一)
http://cs231n.github.io/classification/
challenges:
viewpoint variation (视角变换)scale variation(规模、大小的变换) illumination(光照)deformation(形变)occlusion(遮挡)background clutter (背景杂乱)intra-class variation(类内变化)
由于如上原因,用硬编码的算法来做图像的识别是很困难的,so 基于数据驱动(data-driven)
pipeline:(将一个代表图片的像素数组贴上标签)
1.输入(训练集,带有标签的图片集)
2.学习(训练分类器/学习模型 用训练集来学习每一个类长什么样)
3.评估(和金标准比较)
Nearest Neighbor Classifier:(实际上几乎不用)
数据集:CIFAR-10,训练集 50000张32*32 测试集10000张,有十个类
图左 数据集的示例图像 图右:第一列是测试图像,每一行是用逐像素区别的nn找到的在训练集中最像的十幅图(pixel-wise difference)
算法:将每一幅的测试图像和训练集里的所有比较,选出离他最近的那一幅。受背景影响大。怎样衡量两幅图的相似性?easy way 对像素进行比较,算像素间的差别。对距离的衡量有两种,L1,曼哈顿距离 L2,欧氏距离
L2 distance
k-nearest neighbour(KNN) :
找到最近的几个点,在根据这几个点里面哪种最多判定这个该属于哪一类。是一个归类的算法,K-means是聚类。 对outliers更鲁棒。
白色区域表示是被模糊划分的(eg 有两个类的voting是一样的)
k值的选取:
验证集(hyperparameter的调整) 一定不要再测试集上调整hyperparamater!!!(这样肯定overfit)
eg CIFAR-10,训练集49000,验证集 1000,将验证集作为一个假的测试集来使,这样调整hyperparameter的大小,选出最优的。交叉验证(数据量小的时候,不是简单的随机选上述1000,而是说用迭代的方式,然后看平均的效果)eg
每个都有五个结果,取平均。然而在实际中,交叉验证不常用,代价太大了。一般情况下,50%-90%是训练集,剩下的是验证集。hperparameter的数量越多,验证集一般也大。如果数据unbalance,验证集里面的样本太少,那么会考虑交叉验证,有3倍5倍10倍的。
NN 分类器的优缺点:实现简单,easy train ,hard test.这个简直不能忍受,和CNN完全相反 。低维的时候可能还会用,可是,图像是高维啊。
further reading :
1.A Few Useful Things to Know about Machine Learning
, where especially section 6 is related but the whole paper is a warmly recommended reading.
2.
Recognizing and Learning Object Categories
, a short course of object categorization at ICCV 2005.
introduction:
贝叶斯定理:用先验概率来预测后验概率
bag-of-words model:
module 1 linear classification:
score funcion: map raw data to class score
cost function: 预测值和金标准之间的差异度量