谈谈基于深度学习的图像搜索

本文涉及的产品
图像搜索,7款服务类型 1个月
简介: 本文介绍了人脸识别技术及其应用,其中详细描述了向量化和余弦相似度的概念。人脸识别通过摄像头获取面部信息并与数据库中的信息对比,判断用户身份。向量化包括基于特征和基于卷积神经网络的方法,而余弦相似度则用于计算两个向量之间的相似程度,值越接近1表示越相似。通过具体实例和公式推导,展示了如何计算向量间的余弦相似度。

1.引入

人脸识别(Human Face Recognition)是使用应用软件中鉴别软件的操作者是不是期待的操作者的一种普遍的技术,用户通过用户名和密码的方法正在逐渐被人脸识别的方法所取代。操作者通过摄像头获取使用软件者的面部信息,与存在数据库中面部基础信息进行比对,然后判断软件的操作者是不是期待的操作者。类似于这样的技术还有声音识别(通过声音鉴别发声者是不是你),视频识别(通过视频寻找你是不是在这个视频中)等。这些应用在人工智能深度学习中都属于向量搜索的技术范畴,现在给大家简单介绍一下向量搜索。

2.人脸识别的案例

一般而言基础信息中的图像、音频、视频信息通过向量化存储在数据库中。比如一张面部照片存储在数据库中是一个经过向量化处理过的数据,而且这个向量化数据高达上千维,比如A=[1.34,5.43,9.12,2.11,323.80,…,43.01,711.20];在使用这个软件的时候,获取的实时脸部图像信息也通过相同的向量化算法转为一个向量数据。比如是B=[2.56,7.43,6.43,2.28,78.68,…,120.04,11.37];然后获得向量A与向量B的余弦相似度进行辨别,如果余弦相似度接近1,表明人脸识别成功;否则认为识别失败。下面分别来介绍一项向量化和余弦相似度两个概念。

3.向量化

向量化是把图像、音频、视频信息转换为向量的方法。向量化的方法主要分为基于特征的向量化方法和基于卷积神经网络的向量化两种方法。

基于特征的向量化方法主要是通过提取图像的色彩、纹理、形状等特征,然后将这些特征转化为向量。由于基于特征的向量化方法在处理复杂、模糊的图像时效果不太理想,所以一般不使用。

基于卷积神经网络的向量化可以自动学习从原始像素到高级语义特征的映射关系,从而提取出更加复杂和抽象的特征。这些特征向量不仅包含了图像的底层信息,还包含了高级的语义信息,因此可以更好地表示图像的内容。

深入了解基于特征的向量化和基于卷积神经网络的向量化需要具备高等数学的知识,在这里不进行介绍,有兴趣的同学可以寻找相关资料学习。

4.余弦相似度

4.1余弦相似度与余弦相似度公式

余弦相似度即计算向量A与向量B夹角的余弦值,如果这个值接近1,表明被识别两个对象相似;否则认为识别两个对象不相似。余弦相似度公式为:

对于向量A与B,cos(θ)=A·B/|A|*|B|。

假设一个二维向量A与B:

向量A(x1,y1,…,m1);

向量B(x2,y2,…,m2);

向量A(x1,y1,…,m1)与向量B(x2,y2,…,m2)夹角为θ。

那么:

cos(θ)=A·B/|A|*|B|=(x1x2+y1y2+…+m1m2)/(x12+y12+…+m12)1/2*(x22+y22+…+m22)1/2

4.2 一个例子

比如向量A[1,2,3],向量B[4,5,6],那么

代码语言:javascript

复制

cosθ=A·B/|A|*|B|

由于:

代码语言:javascript

复制

A·B=1*4+2*5+3*6=4+10+18=32
|A|*|B|=(1*1+2*2+3*3)1/2*(4*4+5*5+6*6)1/2
=(1+4+9)1/2*(16+25+36)1/2
=141/2*771/2
=3.74*8.77
=32.8

那么:

代码语言:javascript

复制

cosθ=A·B/|A|*|B|=32/32.8=0.98

所以向量A[1,2,3]与向量B[4,5,6]余弦相似度接近于1,这两个向量相似。

4.3余弦相似度公式的证明

下面分别通过平面几何和解析几何的方法来证明两个二维向量的余弦相似度公式。

4.3.1平面几何方法来证明

构造如下图形:

通过长边,得知:

代码语言:javascript

复制

cos(α-β)=cos(θ)=cos(α)cos(β)+sin(α)sin(β)

对于向量A(x1,y1)夹角为α

所以

代码语言:javascript

复制

cos(α)=x1/|A|; sin(α)=y1/|A|

对于向量B(x2,y2)夹角为β

所以:

代码语言:javascript

复制

cos(β)=x2/|B|; sin(β)=y2/|B|

因此:

代码语言:javascript

复制

cos(α)cos(β) = x1/|A|*x2/|B|=x1x2/|A||B|
sin(α)sin(β) =y1/|A|*y2/|B|=y1y2/|A||B|
cos(θ)=cos(α)cos(β)+sin(α)sin(β)
      =x1x2/|A||B|+y1y2/|A||B|
      =(x1x2+y1y2)/|A||B|
      =A·B/|A||B|

4.3.2解析几何方法来证明

如下图所示:

对于向量A(x1,y1)夹角为α,对于向量B(x2,y2)夹角为β。

现在让向量A(x1,y1)与向量B(x2,y2)逆时针旋转β(由于β是逆时针方向的。现在顺时针方向旋转β角度,所以为逆时针旋转-β角度),使得向量B与X轴重合。

A(x1,y1) 顺时针旋转β后得到:

代码语言:javascript

复制

A′(x1cos(-β)-y1sin(-β),x1sin(-β)+y1cos(-β))
B′(|B|,0)

由于

代码语言:javascript

复制

cos(-β)= cos(β);sin(-β)=- sin(β)

所以

代码语言:javascript

复制

A′(x1cos(β)+y1sin(β),-x1sin(β)+y1cos(β))
B′(|B|,0)

A′与B′的夹角为α-β即θ。

所以

代码语言:javascript

复制

cos(θ)=(x1cos(β)+y1sin(β))/|A|

由于

代码语言:javascript

复制

cos(β)= x2/|B|
sin(β)= y2/|B|
cos(θ)=(x1cos(β)+y1sin(β))/|A|
      =(x1x2/|B|+y1y2/|B|)/|A|
      =(x1x2+y1y2)/|A||B|
       = A·B/|A||B|
目录
相关文章
|
机器学习/深度学习 存储 搜索推荐
深度学习表征的不合理有效性——从头开始构建图像搜索服务(一)
还在为搜索引擎的工作原理感到困惑吗?看完本篇就可以自己动手构建搜图服务了。
5142 1
|
机器学习/深度学习 搜索推荐 计算机视觉
深度学习表征的不合理有效性——从头开始构建图像搜索服务(二)
还在为搜索引擎的工作原理感到困惑吗?看完本篇就可以自己动手构建搜图服务了。
2397 0
|
7天前
|
机器学习/深度学习 数据采集 自然语言处理
深度学习在自然语言处理中的应用与挑战
本文探讨了深度学习技术在自然语言处理(NLP)领域的应用,包括机器翻译、情感分析和文本生成等方面。同时,讨论了数据质量、模型复杂性和伦理问题等挑战,并提出了未来的研究方向和解决方案。通过综合分析,本文旨在为NLP领域的研究人员和从业者提供有价值的参考。
|
8天前
|
机器学习/深度学习 存储 人工智能
深度学习在图像识别中的应用与挑战
【9月更文挑战第27天】本文将深入探讨深度学习技术如何革新了图像识别领域,并分析当前面临的主要挑战。通过简明扼要的介绍,我们将揭示深度学习模型如何超越传统方法,以及它们在实际应用中的限制和未来发展方向。
|
3天前
|
机器学习/深度学习 算法 算法框架/工具
深度学习在图像识别中的应用及代码示例
【9月更文挑战第32天】本文将深入探讨深度学习在图像识别领域的应用,包括其原理、技术、优势以及挑战。我们将通过一个简单的代码示例,展示如何使用深度学习技术进行图像识别。无论你是初学者还是有经验的开发者,都可以从中获得启发和帮助。让我们一起探索这个充满无限可能的领域吧!
16 8
|
1天前
|
机器学习/深度学习 人工智能 自动驾驶
深度学习在图像识别中的应用与挑战
【9月更文挑战第34天】在人工智能的浪潮中,深度学习技术以其强大的数据处理能力成为科技界的宠儿。特别是在图像识别领域,深度学习模型如卷积神经网络(CNN)已展现出惊人的性能。本文将深入探讨深度学习在图像识别领域的应用,分析其面临的主要挑战,并分享一些实用的编程技巧。无论你是深度学习的初学者还是资深开发者,这篇文章都将为你提供宝贵的知识和技能。
|
5天前
|
机器学习/深度学习 算法框架/工具 计算机视觉
深度学习在图像识别中的应用
【9月更文挑战第30天】本文将深入探讨深度学习技术在图像识别领域的应用。我们将首先介绍深度学习的基本原理,然后通过一个实际的代码示例,展示如何使用深度学习进行图像识别。最后,我们将讨论深度学习在图像识别中的优势和挑战。
|
8天前
|
机器学习/深度学习 算法框架/工具 计算机视觉
深度学习在图像识别中的应用
【9月更文挑战第27天】本文将探讨深度学习技术如何改变图像识别领域。我们将通过实际案例和代码示例,展示深度学习模型如何从原始像素中学习和提取特征,以及如何使用这些特征进行准确的图像分类。
29 10
|
2天前
|
机器学习/深度学习 TensorFlow 算法框架/工具
深度学习中的图像识别技术及其应用
【9月更文挑战第33天】本文将深入探讨深度学习在图像识别领域的应用,并展示如何通过实际代码实现一个简单的图像识别模型。我们将从基本原理出发,逐步引入关键技术和实现方法,最终通过一个实例来演示整个过程。
|
4天前
|
机器学习/深度学习 边缘计算 人工智能
深度学习在图像识别中的应用与挑战
【9月更文挑战第31天】本文深入探讨了深度学习技术在图像识别领域的应用,并分析了面临的主要挑战。从深度学习的基本概念出发,逐步展开到图像识别的具体应用案例,包括面部识别、自动驾驶车辆的视觉系统等。同时,文章也指出了数据集偏差、模型泛化能力以及计算资源限制等问题,并讨论了可能的解决方向。
下一篇
无影云桌面