6-机器学习启蒙- 深度学习: 图像搜索

6- 深度学习: 图像搜索

github: https://github.com/mtianyan/graphLabStartedML

深度学习: 图像搜索

基于图片的相似度来选购商品

可视化商品推荐

我想买双新鞋,但是。。。

6-机器学习启蒙- 深度学习: 图像搜索_第1张图片
mark

符合我的风格,我又感兴趣的鞋子真不容易

文本搜素不能帮助我们

6-机器学习启蒙- 深度学习: 图像搜索_第2张图片
mark

搜素时装鞋,只能找到一双我们觉得有意思的。而我想找的是真正有个性不同的鞋子
可我又不知道用什么关键字搜索,用图像的特征找到相似的鞋子

神经网络

特征是机器学习的关键

在做机器学习时我们一般会有输入值,比如情感分析中的评价语句

6-机器学习启蒙- 深度学习: 图像搜索_第3张图片
mark

目标;重新检视分类器,但是应用更复杂的非线性特征

图像分类

我们的目标是从一个图像出发。

6-机器学习启蒙- 深度学习: 图像搜索_第4张图片
mark

输入图像的像素,输出预测的对象值。

分出狗狗的品种。

特征指的是我们的数据的表现形式,我们把他们当做输入送入分类器。

数据有很多种表现形式:

  • 比如文字,就可以用词袋模型和tf-idf的形式。
  • 对于图片也有很多其他的表现形式。

神经网络: 学习"非常" 非线性的特征

线性分类器

线性分类器区分开正类和负类

6-机器学习启蒙- 深度学习: 图像搜索_第5张图片
mark

分类器的图表示: 用于定义神经网络

6-机器学习启蒙- 深度学习: 图像搜索_第6张图片
mark

对于每一个特征变量我们都有一个与之对应的特征节点,直到第d个特征变量。

对于我们要预测的输出值y我们也有一个节点来对应。

将特征节点与权重相乘然后累加得到分数。

分值大于零时我们输入1,分值小于0时我们输出0

小型线性分类器,小型神经网络或单层神经网络。

线性分类器可以表示什么?

6-机器学习启蒙- 深度学习: 图像搜索_第7张图片
mark
mark
mark

逻辑的或运算可以用线性分类器来表示。

定义一个打分函数,在后三行的情况下输出正值,值大于0即可。

  • 第一行时值小于0

权重为 -0.5 1 1 时满足条件。

与运算,只有x1 和x2 都等于1的时候才能大于0

单层神经网络来表示逻辑与运算和或运算。

线性分类器不能表示什么?

6-机器学习启蒙- 深度学习: 图像搜索_第8张图片
mark

在这个函数中没有哪条线能将加号,减号分割开。

mark
mark

异或运算: 任何事情的反例

我们之前讲过的线性特征就不够用了,我们需要一些非线性的特征

解决XOR问题: 添加一层

mark
mark

XOR结果为1的情况是x1为真,x2为假 或 x1为假,x2为真时

6-机器学习启蒙- 深度学习: 图像搜索_第9张图片
mark

添加两个单元。z1,z2

我们要做的是建立一个神经网络:

  • 不能直接输入x1,x2预测y,但是它能预测中间值z1,z2
  • 然后我们再通过中间值来预测y

与运算:

z1:节点1的权重-0.5, x1权重1,因为是not x2权重-1
z2: 节点1权重-0.5, x1权重-1,x2权重1

此时当x1 x2全为真时: x1*1为1 x2*1为-1加起来为0,而我们需要的值是此时小于0.所以常数项-0.5

其他情况略。

神经网络

对数据进行多层次的变换。

有多层的线性和非线性变换

mark
mark

神经网络已经被发明接近50年了

  • 在90年代进入低谷

大约十年前,最近几年有了大的复兴

  • 在一些典型问题的准确率大大提升
  • 大量的数据集,(计算能力)gpu和新的建模学习算法使它如虎添翼

深度学习在计算机视觉中的应用

图像特征

特征 = 局部探测器

  • 组合在一起构成预测
  • 现实中,特征都是很底层的
6-机器学习启蒙- 深度学习: 图像搜索_第10张图片
mark

鼻子探测器,眼睛探测器,嘴巴探测器。

如果每个探测器都探测成功,就可以通过这个小型神经网络做出预测这是个人脸。

典型的局部探测器寻找图像中的局部兴趣点

图像特征: 局部兴趣点的组合

  • 组合在一起构成分类器
6-机器学习启蒙- 深度学习: 图像搜索_第11张图片
mark

角落探测器

有很多手工构造的特征被用于寻找兴趣点

SIFT特征

6-机器学习启蒙- 深度学习: 图像搜索_第12张图片
mark

典型图像分类方法

6-机器学习启蒙- 深度学习: 图像搜索_第13张图片
mark

根据sift特征被激活的地方构成向量。这些特征在有些地方激活,有些地方不激活

这跟寻找一篇文章的单词是类似的。

图像特定的地方有没有特定的角,然后就可以把这些信息输入到分类器

线性识别分类器: 告诉我们是否是人脸

挑战在于这些人工的特征很难设计

6-机器学习启蒙- 深度学习: 图像搜索_第14张图片
mark

深度学习: 自动学习特征

mark
mark

输入到一个三层的神经网络

6-机器学习启蒙- 深度学习: 图像搜索_第15张图片
mark

识别这些局部神经探测器,每一层都会发现这些特征。在不同的层次探测不同的图像性质。

  • 第一个探测器作用:
    • 找到对角线的边缘
    • 中间是从另外一个方向抓取对角线边缘
    • 最后一个抓取过渡特征,从深色到绿色的变化
  • 第二个探测器: 会把这些对角线边缘综合起来形成更复杂的探测器

发现弯弯曲曲的线,一些角

  • 第三个探测器会更为复杂,识别出脸蛋

深度学习的性能

应用深度学习神经网络的结果示例

  • 德国交通信号识别问题
mark
mark

99.5%准确率(IDSIA团队)

  • 房屋门牌号识别(google 街景)
mark
mark

每个字符97.8%准确率

ImageNet2012竞赛: 120万张训练图像,1000种类别

对于图片进行分类,不是识别是不是一条狗,而是这个狗是啥品种的问题

6-机器学习启蒙- 深度学习: 图像搜索_第16张图片
mark

superVision团队采用了深度神经网络,大幅度超过对手

大大提高了大家对于深度学习网络在计算机视觉领域应用的兴趣。

6-机器学习启蒙- 深度学习: 图像搜索_第17张图片
mark

8层的神经网络,有6000万个参数

获得这种惊人的结果需要:

  1. 新的学习算法
  2. GPU实现

计算机视觉中的深度学习

识别图片中狗的品种

利用深度学习进行景物解析

6-机器学习启蒙- 深度学习: 图像搜索_第18张图片
mark

每个像素进行分类,发现特定的区域。天空区域,草坪区域。

这类景物解析,也称为场景理解。

神经网络对于这种需求非常有效

检索相似图像

6-机器学习启蒙- 深度学习: 图像搜索_第19张图片
mark

我们输入一张自己中意的鞋子的图片,输出风格等类似的鞋子的图片

深度学习的挑战

使学习特征成为可能,而不是手动的去调节

卓越的性能提升:
- 计算机视觉
- 语音识别
- 一些文本分析

潜在更多的影响

深度学习工作流

6-机器学习启蒙- 深度学习: 图像搜索_第20张图片
mark

需要大量的标注数据,包含哪种狗。(人工标注)

  • 划分训练集和验证集。学习深度神经网络之后进行验证。

验证发现不符合,我们又需要进行修改模型。我们需要不停的迭代

很多技巧可以让结果更好

  • 不同类型的层和连接
  • 可以提供高准确率
6-机器学习启蒙- 深度学习: 图像搜索_第21张图片
mark

不同特征的层和很多复杂的细节。

深度学习的劣势

为了达到高准确率,需要非常多的数据
计算特别昂贵
非常难调节模型
- 架构的选择(层数)
- 参数类型
- 元参数
- 学习算法

昂贵的计算成本+太多的选择 = 模型非常难以调节

深度特征: 深度学习 + 迁移学习

帮助建立神经网络,甚至当你没有很多数据的时候都可以建立。

标准图片分类方法

6-机器学习启蒙- 深度学习: 图像搜索_第22张图片
mark

我们能不能从数据中学习特征。

迁移学习: 应用一个任务的数据来帮助学习其他任务

很老的方法

6-机器学习启蒙- 深度学习: 图像搜索_第23张图片
mark

在你拥有很多的数据的时候,训练神经网络。

如果我们有一个区分猫和狗的任务,我们训练了一个八层1600个参数的复杂网络。
最后我们得到了一个非常准确的猫狗分类器。

假如我们有了新的任务,此时我们只拥有很少量的数据。检测椅子大象,相机等

我们使用从猫狗神经网络中学习到的特征再加上一个简单的分类器,来获取一个对于101个类别上的高准确率

这就是迁移学习,我们在猫狗中学习到的特征可以被迁移到新的任务中。

神经网络学习了什么?

6-机器学习启蒙- 深度学习: 图像搜索_第24张图片
mark

我们更改一下学习方法。对于猫狗分类而言这个网络非常准确。
最后的几层: 主要用于猫和狗的分类。

就跟之前例子中最后一层进行颜色检测

中间的层很一般化,代表角落检测,弯弯曲曲的画面等。

转换学习细节

对于任务2,要预测101个类别,只需要学习神经网络的末端

6-机器学习启蒙- 深度学习: 图像搜索_第25张图片
mark

把最后这一块中专门针对猫和狗的部分剔除掉。

6-机器学习启蒙- 深度学习: 图像搜索_第26张图片
mark

保持前面各层的权重固定。

6-机器学习启蒙- 深度学习: 图像搜索_第27张图片
mark

利用这些特征再加上一个简单的分类器。

我们就能用很少的椅子汽车大象等图片数据来训练一个模型

6-机器学习启蒙- 深度学习: 图像搜索_第28张图片
mark

注意分割点,后面的层可能太特定于任务了

应用深度特征的迁移学习流程

6-机器学习启蒙- 深度学习: 图像搜索_第29张图片
mark

深度特征的通用性有多强?

垃圾回收

6-机器学习启蒙- 深度学习: 图像搜索_第30张图片
mark

垃圾车挨个回收路径优化。

深度学习总结

6-机器学习启蒙- 深度学习: 图像搜索_第31张图片
mark

以前的回归,分类,机器学
输入图像和相应的标签,标签是要么是一只猫,要么是一只狗,或者是一个房子。

特征提取: 采用深度特征进行特征提取。

输出的是图片和图片的深度特征X

使用机器学习模型来分类这类特征。拿出我们预测的标签y帽子和真正的标签y。在性能度量中。

y y帽子 性能度量取决于你的任务。(我们本次的任务中使用了分类准确率)

这时的w帽子才是真正的逻辑回归的权重参数

机器学习要做的是保证分类准确率,尝试改变和更新w帽子来使准确率更高

我们学到了

  • 描述多层神经网络模型
  • 解释在计算机视觉中特征作为局部探测器的作用
  • 神经网络和手动构建的特征的关系
  • 描述了深度学习获得成功的一些场景
  • 深度学习模型的优势和劣势
  • 应用转换学习的概念
  • 应用一个领域训练的神经网络作为特征来构建另一个领域的模型
  • 应用深度特征构建图像检索工具

深度学习实践

见jupyter notebook

深度学习图片检索工具

你可能感兴趣的:(6-机器学习启蒙- 深度学习: 图像搜索)