图片的存储是一个很大的矩阵,如果是一个带颜色的图片,矩阵则是三维的(RGB三个听到)通道,每个通道对应一个矩阵。其中每个数的范围在1~256之间
一、图像识别
基于图像分类,即有对应的概率。比如一张猫的照片,识别出来,有多高的概率是我们判定的类别
1、挑战:
(1)视角不同(Viewpoint variation):每个事物旋转或侧视之后,最后的构图可能完全不相同
(2)尺寸大小不统一(Scale variation):相同内容的图片,图片可大可小
(3)变形(Deformation):很多大小在特殊情况下,有特殊的摆放和形状(如人坐着、躺着)
(4)光线等干扰/幻想(Occlusion、Illuminate conditions)
(5)背景干扰(Background clutter)
(6)同类内的差异(Intra-class variation)(比如椅子:靠椅、餐椅......)
2、数据驱动型学习
喂大量的数据样本给机器学习,让它决定是哪个类别,而不是先告诉它是什么。
3、K最近邻法(KNN)
现在很少用,很耗内存,速度比较慢。而且KNN做图像识别,准确度不高,还需要记录全部训练集的数据。
(1)找到训练集中最近的N个,以它们中最多的类别为结果,需要衡量样本之间的距离。
曼哈顿距离:
欧式距离:
余弦距离:
(2)K最近邻判定做图像识别:
N折的交叉验证(cross validation):N次,N-1折做训练集,一折用做验证集,再取平均
4、线性分类器(Logistic Regression、Linear SVM)
(1)线性分类器的理解:空间划分
wx+b是空间的点
(2)线性分类器的理解:模板匹配
- w的每一行可以看做是其中一个类别的模板
- 每类得分,实际上是像素点和模板匹配度
- 模板匹配的方式是内积计算
(3)损失函数(或代价函数,或客观度)
- 给定W,可以由像素映射到类目得分
- 可以调整参数/权重w,使得映射结果和实际类别吻合
- 损失函数是用来衡量吻合度的
损失函数1:hinge loss/支持向量机损失
对于训练集中的第i张图片数据xi,在w下会有一个得分结果向量f(xi,w)。第j类的得分为f(xi,w)j,则在该样本上的损失函数又下格式计算得到
其中delta看做是一个标准或一个门槛或一条警戒线
a.如果是线性模型,则可简化为:
b.加正则化项
损失函数2:互熵损失(Softmax分类器)一般情况下,Caffe中的CNN中的最后一层都是用的Softmax
对于训练集中的第i张图片数据xi,在w下有一个得分向量Fyi(注意是一个向量),则损失函数记作:
两种损失函数的