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

本文涉及的产品
图像搜索,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|
目录
相关文章
|
机器学习/深度学习 存储 搜索推荐
深度学习表征的不合理有效性——从头开始构建图像搜索服务(一)
还在为搜索引擎的工作原理感到困惑吗?看完本篇就可以自己动手构建搜图服务了。
5151 1
|
机器学习/深度学习 搜索推荐 计算机视觉
深度学习表征的不合理有效性——从头开始构建图像搜索服务(二)
还在为搜索引擎的工作原理感到困惑吗?看完本篇就可以自己动手构建搜图服务了。
2407 0
|
11天前
|
机器学习/深度学习 人工智能 测试技术
深度学习在图像识别中的应用与挑战
本文探讨了深度学习技术,尤其是卷积神经网络(CNN)在图像识别任务中的最新进展和面临的主要挑战。通过分析不同的网络架构、训练技巧以及优化策略,文章旨在提供一个全面的概览,帮助研究人员和实践者更好地理解和应用这些技术。
45 9
|
8天前
|
机器学习/深度学习 人工智能 算法
深度学习在图像识别中的应用与挑战
本文探讨了深度学习技术在图像识别领域的应用,重点分析了卷积神经网络(CNN)的工作原理及其在处理图像数据方面的优势。通过案例研究,展示了深度学习如何提高图像识别的准确性和效率。同时,文章也讨论了当前面临的主要挑战,包括数据不足、过拟合问题以及计算资源的需求,并提出了相应的解决策略。
|
3天前
|
机器学习/深度学习 人工智能 自然语言处理
深度学习中的卷积神经网络(CNN)及其在图像识别中的应用
本文旨在通过深入浅出的方式,为读者揭示卷积神经网络(CNN)的神秘面纱,并展示其在图像识别领域的实际应用。我们将从CNN的基本概念出发,逐步深入到网络结构、工作原理以及训练过程,最后通过一个实际的代码示例,带领读者体验CNN的强大功能。无论你是深度学习的初学者,还是希望进一步了解CNN的专业人士,这篇文章都将为你提供有价值的信息和启发。
|
3天前
|
机器学习/深度学习 数据采集 测试技术
深度学习在图像识别中的应用
本篇文章将探讨深度学习在图像识别中的应用。我们将介绍深度学习的基本原理,以及如何使用深度学习进行图像识别。我们将通过一个简单的代码示例来演示如何使用深度学习进行图像识别。这篇文章的目的是帮助读者理解深度学习在图像识别中的作用,并学习如何使用深度学习进行图像识别。
|
4天前
|
机器学习/深度学习 算法框架/工具 Python
深度学习在图像识别中的应用
本文将探讨深度学习技术在图像识别领域的应用。我们将介绍深度学习的基本原理,以及如何使用深度学习进行图像识别。我们还将通过一个简单的代码示例来演示如何使用深度学习进行图像识别。
|
3天前
|
机器学习/深度学习 数据采集 边缘计算
深度学习在图像识别中的应用与挑战
本文深入探讨了深度学习在图像识别领域的应用,并分析了当前面临的主要挑战。通过具体案例和数据分析,展示了深度学习技术如何推动图像识别的边界,同时指出了数据质量、模型泛化能力及计算资源等方面的限制因素。文章旨在为研究人员和从业者提供一个关于深度学习在图像识别中应用现状与未来发展方向的全面视角。
|
6天前
|
机器学习/深度学习 算法 大数据
深度学习在医疗影像诊断中的应用
本文探讨了深度学习技术在医疗影像诊断领域的应用,分析了其如何通过提高图像识别精度来辅助医生做出更准确的诊断。文章首先介绍了深度学习的基本概念和关键技术,随后详细阐述了这些技术在处理复杂医疗影像数据时的优势,并通过案例分析展示了深度学习在实际应用中取得的成果。此外,还讨论了当前面临的挑战以及未来的发展趋势。
|
9天前
|
机器学习/深度学习 分布式计算 并行计算
深度学习在图像识别中的应用与挑战
本文深入探讨了深度学习技术在图像识别领域的应用,分析了当前主流的卷积神经网络(CNN)架构,并讨论了在实际应用中遇到的挑战和可能的解决方案。通过对比研究,揭示了不同网络结构对识别准确率的影响,并提出了优化策略。此外,文章还探讨了深度学习模型在处理大规模数据集时的性能瓶颈,以及如何通过硬件加速和算法改进来提升效率。

热门文章

最新文章

下一篇
无影云桌面