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

2023-10-27

6- 深度学习: 图像搜索

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

深度学习: 图像搜索

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

可视化商品推荐

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

mark
mark

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

文本搜素不能帮助我们

mark
mark

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

神经网络

特征是机器学习的关键

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

mark
mark

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

图像分类

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

mark
mark

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

分出狗狗的品种。

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

数据有很多种表现形式:

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

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

线性分类器

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

mark
mark

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

mark
mark

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

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

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

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

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

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

mark
mark
mark
mark

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

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

  • 第一行时值小于0

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

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

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

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

mark
mark

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

mark
mark

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

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

解决XOR问题: 添加一层

mark
mark

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

mark
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和新的建模学习算法使它如虎添翼

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

图像特征

特征 = 局部探测器

  • 组合在一起构成预测
  • 现实中,特征都是很底层的
mark
mark

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

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

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

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

  • 组合在一起构成分类器
mark
mark

角落探测器

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

SIFT特征

mark
mark

典型图像分类方法

mark
mark

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

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

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

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

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

mark
mark

深度学习: 自动学习特征

mark
mark

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

mark
mark

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

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

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

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

深度学习的性能

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

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

99.5%准确率(IDSIA团队)

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

每个字符97.8%准确率

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

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

mark
mark

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

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

mark
mark

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

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

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

计算机视觉中的深度学习

识别图片中狗的品种

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

mark
mark

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

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

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

检索相似图像

mark
mark

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

深度学习的挑战

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

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

潜在更多的影响

深度学习工作流

mark
mark

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

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

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

很多技巧可以让结果更好

  • 不同类型的层和连接
  • 可以提供高准确率
mark
mark

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

深度学习的劣势

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

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

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

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

标准图片分类方法

mark
mark

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

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

很老的方法

mark
mark

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

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

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

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

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

神经网络学习了什么?

mark
mark

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

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

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

转换学习细节

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

mark
mark

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

mark
mark

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

mark
mark

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

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

mark
mark

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

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

mark
mark

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

垃圾回收

mark
mark

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

深度学习总结

mark
mark

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

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

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

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

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

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

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

我们学到了

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

深度学习实践

见jupyter notebook

深度学习图片检索工具

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

6-机器学习启蒙- 深度学习: 图像搜索 的相关文章

随机推荐

  • 我的油画作品

    原创油画作品 樱花 规格 30x40cm 原创油画作品 山峰 规格 30x40cm 原创油画作品 In the garden 规格 80x60cm 其它作品
  • python 图像识别男女_用机器学习来做人脸性别识别

    在传统编程中 图像识别一直是一个难点 虽然人能轻松做到 但是用逻辑来描述这个过程 并转换成程序是很难的 机器学习的出现让图像识别技术有了突破性的进展 卷积神经网络的出现 又使图像识别更上了一次层次 卷积神经网络由一个或多个卷积层和顶端的全连
  • 为了预测股票,我用TensorFlow深度学习了股市数据

    完整源码可在微信公众号 01二进制 后台回复 股市分析 获取 阅读此文前建议先阅读 找对象的过程中 我竟然理解了什么是机器学习 前言 相信大家这几天或多或少的都开始关注到股市了 虽然我还不是很懂里面的一些套路 但是从最近各个公众号的推送里面
  • 无盘服务器chkdsk *: /f)修复命令,巧用CHKDSK命令修复U盘文件或目录损坏问题

    巧用CHKDSK命令修复U盘文件或目录损坏问题 U盘是我们常用的随身移动存储工具 我们平时在使用U盘时难免会出现那么几次 直接拔出U盘 结果导致 U盘的文件或目录损坏且无法读取 U盘里的任何内容都无法打开了 有些朋友认为是磁盘出现坏道直接舍
  • 详解C语言中的stdin,stdout,stderr

    我们在写C程序时经常遇到printf fprintf perror 这些东西到底有什么作用 说到这不得不提及stdin stdout stderr 想想 我们在用C去写文件时的操作 File fp fopen 这个fp就是我们向系统申请的
  • android浏览网页,Android学习之通过Intent实现浏览网页

    大家好 在这里和大家分享我刚刚学到的知识 通过Intent打开网页 首先 打开布局文件中main xml 创建为LinearLayout布局 并且创建一个EditText和Button控件 具体代码如下 android orientatio
  • Jmockit 静态方法mock

    类中存在刷新 初始化等静态方法时 编写单元测试案例 示例 被测试类 public class MethodClass public static void refresh init
  • 智能合约编写之Solidity的设计模式

    前 言 随着区块链技术发展 越来越多的企业与个人开始将区块链与自身业务相结合 区块链所具有的独特优势 例如 数据公开透明 不可篡改 可以为业务带来便利 但与此同时 也存在一些隐患 数据的公开透明 意味着任何人都可以读取 不可篡改 意味着信息
  • 【新手向】如何在npm上发布属于自己的包

    课程内容来自黑马程序员的网课 供博主自己检索知识和复习用 当然如果能帮助到你就更好了 作为一个程序员 你一定下载过各式各样的包来自己的项目实现更多功能 但是如何自己发布包呢 建立属于自己的包 第一步 你需要建立一个包 建立包很简单 只要满足
  • 数据科学与大数据分析之项目2-聚类

    聚类 项目介绍 项目开始 项目介绍 文件TreeDB csv包含258个树种的描述 数据由XX市议会开放空间和环境服务部管理处提供 已提供数据集作为公共空间最佳树木选择合作项目的一部分 假设你是该项目团队的一员 进一步假设你决定参与聚类分析
  • java image 透明_Java 生成半透明照片

    在许多实际运用中 我们常常需要将一张照片 图片 装换成半透明后再显示或保存 下面我们就来看看如何使用Java来生成 转换一张照片到半透明 1 基本思路 1 打开一张图片 BufferedImage imageOpen ImageIO rea
  • php密码输入密码,php打开页面输入密码的代码

    直接复制以下代码到模板 文件或者PHP文件 当打开页面时就得输入密码 写模板内容页时候也可以试用 把密码部分当做变量对应后台写入即可 更多功能自己想象
  • ubuntu下 jupyter登录上了 新建python3连接失败

    近期在使用anaconda jupyter的时候发现自己在新建jupyter文件的时候一直报连接错误 所以为了解决此问题做了如下两种方法 第一步 pip uninstall tornado pip install tornado 5 1 1
  • (四)Vue和React的编码方式对比----样式处理及样式污染

    经过3篇文章后我们可以编写一些简单的HTML结构并渲染只页面 可是前端重要的是什么 是样式 前端是给用户看的 所以样式处理也是很重要的一件事 如果一个前端静态效果都写不好 那多丢人 所以本篇介绍一下React和Vue的样式处理方式 以及一个
  • JS —— js中的节流与防抖

    文章目录 前言 一 节流 1 什么是节流 2 做节流可解决什么问题 3 如何做节流 二 防抖 1 什么是防抖 2 做防抖可解决什么问题 3 如何做防抖 总结 前言 最近有同学问到节流与防抖的相关知识点 于是乎 四处查资料 找一找 看一看 终
  • vuepress项目部署出现样式丢失,图片加载失败的问题

    之前在尝试部署vuepress项目时 出现了样式丢失 图片加载失败的问题 具体情况请继续往下看 本地测试 完全正常 在本地测试时的样式都是正常显示的 GitHub部署 样式丢失 打包部署到GitHub上时 布局和样式就完全乱了 同时还有一堆
  • 10、docker 安装 tomcat

    一 docker 环境下安装中间件总体步骤 搜索镜像 拉取镜像 查看镜像 启动镜像 服务端口映射 但其实 docker run 的时候 就会帮我们去配置的 registry 拉取镜像了 也就是 搜索镜像 这一步 其实是可有可无的 二 安装
  • Form 表单内有多个元素的使用方式

    产品中常有的一个需求 输入框后面有描述文案或其他组件 我们可能这样写
  • Java进阶:用案例源码解析EventLoopGroup,面试真题解析

    一 前言 有句话 正因为你优秀 所以难以卓越 刚开始听这句话还在上学 既不卓越 也不优秀 甚至可能还有点笨 但突然从某次爬到班级的前几名后 开始喜欢上了这种感觉 原来前面的风景是如此灿烂 优秀和卓越差的不是一个等级 当你感觉自己优秀后 还能
  • 6-机器学习启蒙- 深度学习: 图像搜索

    6 深度学习 图像搜索 github https github com mtianyan graphLabStartedML 深度学习 图像搜索 基于图片的相似度来选购商品 可视化商品推荐 我想买双新鞋 但是 mark 符合我的风格 我又感