1、图像分类
1、图像分类
- 什么是图像分类任务,它有哪些应用场合?
- 图像分类任务有哪些难点?
- 基于规则的方法是否可行?
- 什么是数据驱动的图像分类范式?
- 常用的分类任务评价指标是什么?
图像分类任务
——根据图像信息中所反映的不同特征,把不同类别的图像区分开来。
即 从已知的类别标签集合中为给定的输入图片选定一个类别标签。
具体应用场景
比如给了一张狗狗图片,我们应该做什么?
- 给这张图打个标签——狗狗
- 给了一张植物的图片,给上标签——牵牛花
- 所以常常用于语言文字不好描述,但是想要知道这个东西是什么的情况
就像我们手机打开,可以拍花识别,并牵引出一连串的链接和特点。
搜索——去了解柴犬的特点
识别——不论是哪个角度,都能辨别出来这个狗狗是柴犬
图像分类任务有哪些难点?

难点——跨越“语义鸿沟”建立像素到语义的映射
-
视角
-
光照
-
人物远近
-
遮挡
-
形变
-
背景杂波(保护色、吉利服)
-
类内形变(咱都是凳子)
-
运动模糊
- 曝光时间很长,一个像素记录了鸟的多个动作信息:

把对应的难点进行拆解,才能逐个击破。
基于规则的方法否可行?
通过硬编码的方式识别猫或其他类
def classify_image( image ):
#Do something magical here
return class_label
例如

- 提取边缘,以角点去比较信息。
- 那很牛逼的猫都能站着的猫,你能再这样判断吗
- 所以,通过硬编码识别,是一件非常困难的事情
- 因为猫的形变太多,不适合。
- 适合一些的变化不大的:人脸
数据提供的图像分类范式
三步走
- 数据集构建
- 分类器设计与学习
- 分类器决策
数据集
数据集标签的分类
无监督的——有很多数据,但是没有标签,希望从数据里面找到一些规律
有监督的数据集————每个图像都有标签,将来给我新的的图片我就可以从以前的数据里学到,来识别哪个是哪个标签。
我们这里更强调的是有监督的数据集。
数据集构建
也就是通过数据去找规律,也就是一般来说的机器学习。
首先要有数据:
- 要识别猫,我们要给他标签是猫
- 要有各种各样的图片和标签
- 每一个图片都给他一个类别标签
- 每个都是有标签的,给我一个新的图片,那以后就通过这个去学习分类
- 然后进行分类器的设计与学习
- 我要从数据中归纳出规律,把数据模型中位置的参数给填上
- 最终让这个分类器能够对未知的东西去进行决策,这就成功了
分类器设计与实现的四个环节
- 图像表示
- 分类模型:对图像进行预测
- 不论好坏都会得到一个预测值
- 损失函数
- 通过损失值与真实值进行比较
- 如果不行就去优化算法,然后让这个损失函数个人爬
- 然后我们就去更新参数,使得模型参数优化
- 让损失值越来越小,达到一定程度的时候,就正好OK,大功告成。
- 优化算法

成型以后直接进行分类

图像表示方法
- 像素表示
- 我们这节课要讲的呢,就是像素表示
- 全图特征表示(GIST)【适合城市风景等等大场景的】
- 因为是全图特征,所以是需要全图的像素参与运算,对于要考虑比较细致的问题,就不适用
- 局部特征表示(SIFT特征+词袋模型)
- 从图像中抽取一百个典型的区块
- 适合细节的。
- 比如判断一个人发烧了,我们要的应该要什么特征?身高体重吗?还是红白细胞数量?所以如果全部送进去,这个图像就会非常困难的抽取特征。
分类器
- 近邻分类器
- 贝叶斯分类器
- 线性分类器
- 支撑向量机分类器
- 神经网络分类器
- 随机森林
- Adaboost
学习视觉,也就是学习各种分类器,由于每种都有自己的优势和缺陷,所以要学习各种的原理,以便于打磨,帮助我们改进。
损失函数
- 0-1损失
- 多类支撑向量机损失
- 交叉嫡损失
- L1损失
- L2损失
优化方法
一阶方法
- 梯度下降
- 随机梯度下降
- 小批量随机梯度下降
二阶方法
- 牛顿法
- BFGS
- L-BFGS
训练过程
- 数据集划分
- 数据预处理
- 数据增强
- 让分类器在各个角度看我们的数据样本
- 欠拟合与过拟合【过拟合:训练得很好,80%、90%成功率,一拉出去就是20%、30% 欠拟合:怎么做都失败】
- 减小算法复杂度
- 使用权重正则项
- 使用droput正则化
- 超参数调整
- 模型集成
- 能不能用多个模型,让这个系统更好一些?
常用的图像分类任务的评价指标
- 正确率(accuracy) = 分对的样本数/全部样本数
- 错误率(error rate) = 1-正确率
TOP1与TOP5指标

imgNet大赛,在他们那个数据集上超过了人类,但是他们使用的是TOP5的方式,人类的识别能力是在5%左右,机器的识别力是在3%左右,但是也仅限于是在那个数据集。



