图片的存储是一个很大的矩阵,如果是一个带颜色的图片,矩阵则是三维的(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个,以它们中最多的类别为结果,需要衡量样本之间的距离。

曼哈顿距离:

图像识别 Python 算法 图像识别 csdn_图像识别 Python 算法

欧式距离:

图像识别 Python 算法 图像识别 csdn_KNN_02

余弦距离:

图像识别 Python 算法 图像识别 csdn_KNN_03


(2)K最近邻判定做图像识别:

N折的交叉验证(cross validation):N次,N-1折做训练集,一折用做验证集,再取平均

图像识别 Python 算法 图像识别 csdn_损失函数_04

4、线性分类器(Logistic Regression、Linear SVM)

(1)线性分类器的理解:空间划分

wx+b是空间的点

图像识别 Python 算法 图像识别 csdn_KNN_05

(2)线性分类器的理解:模板匹配

  • w的每一行可以看做是其中一个类别的模板
  • 每类得分,实际上是像素点和模板匹配度
  • 模板匹配的方式是内积计算

(3)损失函数(或代价函数,或客观度)

  • 给定W,可以由像素映射到类目得分
  • 可以调整参数/权重w,使得映射结果和实际类别吻合
  • 损失函数是用来衡量吻合度的

损失函数1:hinge loss/支持向量机损失


对于训练集中的第i张图片数据xi,在w下会有一个得分结果向量f(xi,w)。第j类的得分为f(xi,w)j,则在该样本上的损失函数又下格式计算得到


图像识别 Python 算法 图像识别 csdn_数据_06

其中delta看做是一个标准或一个门槛或一条警戒线


a.如果是线性模型,则可简化为:



图像识别 Python 算法 图像识别 csdn_数据_07


b.加正则化项


图像识别 Python 算法 图像识别 csdn_数据_08




损失函数2:互熵损失(Softmax分类器)一般情况下,Caffe中的CNN中的最后一层都是用的Softmax


对于训练集中的第i张图片数据xi,在w下有一个得分向量Fyi(注意是一个向量),则损失函数记作:


图像识别 Python 算法 图像识别 csdn_KNN_09


两种损失函数的





图像识别 Python 算法 图像识别 csdn_数据_10