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

本文涉及的产品
图像搜索,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|
目录
相关文章
|
机器学习/深度学习 存储 搜索推荐
深度学习表征的不合理有效性——从头开始构建图像搜索服务(一)
还在为搜索引擎的工作原理感到困惑吗?看完本篇就可以自己动手构建搜图服务了。
5147 1
|
机器学习/深度学习 搜索推荐 计算机视觉
深度学习表征的不合理有效性——从头开始构建图像搜索服务(二)
还在为搜索引擎的工作原理感到困惑吗?看完本篇就可以自己动手构建搜图服务了。
2404 0
|
12天前
|
机器学习/深度学习 算法 计算机视觉
深度学习在图像识别中的应用与挑战
【10月更文挑战第18天】 本文深入探讨了深度学习在图像识别领域的应用,分析了其技术优势和面临的主要挑战。通过具体案例和数据支持,展示了深度学习如何革新图像识别技术,并指出了未来发展的方向。
117 58
|
3天前
|
机器学习/深度学习 数据采集 人工智能
AI赋能教育:深度学习在个性化学习系统中的应用
【10月更文挑战第26天】随着人工智能的发展,深度学习技术正逐步应用于教育领域,特别是个性化学习系统中。通过分析学生的学习数据,深度学习模型能够精准预测学生的学习表现,并为其推荐合适的学习资源和规划学习路径,从而提供更加高效、有趣和个性化的学习体验。
35 8
|
3天前
|
机器学习/深度学习 监控 自动驾驶
深度学习在图像识别中的应用与挑战
本文探讨了深度学习在图像识别领域的应用现状,分析了其面临的主要技术挑战和解决方案。通过对比传统方法和深度学习模型的优势,揭示了深度学习如何推动图像识别技术的发展,并展望了未来的研究方向。
|
7天前
|
机器学习/深度学习 算法 计算机视觉
深度学习在图像识别中的应用与挑战
【10月更文挑战第22天】 本文深入探讨了深度学习在图像识别领域的应用,分析了其技术原理、优势以及面临的挑战。通过实例展示了深度学习如何推动图像识别技术的发展,并对未来趋势进行了展望。
20 5
|
8天前
|
机器学习/深度学习 人工智能 自然语言处理
深度学习在图像识别中的应用与挑战
【10月更文挑战第20天】 随着人工智能技术的不断发展,深度学习已经在许多领域展现出强大的应用潜力。本文将探讨深度学习在图像识别领域的应用,以及面临的挑战和可能的解决方案。通过分析现有的研究成果和技术趋势,我们可以更好地理解深度学习在图像识别中的潜力和局限性,为未来的研究和应用提供参考。
33 7
|
5天前
|
机器学习/深度学习 PyTorch TensorFlow
深度学习在图像识别中的革命性应用
本文探讨了深度学习技术在图像识别领域中的应用,重点分析了卷积神经网络(CNN)的工作原理及其对图像处理的影响。通过对比传统图像识别方法和深度学习方法,展示了深度学习如何显著提高了图像识别的准确率和效率。文章还简要介绍了一些著名的深度学习框架,如TensorFlow和PyTorch,并讨论了它们在实际应用中的优势。
|
9天前
|
机器学习/深度学习 TensorFlow 算法框架/工具
深度学习在图像识别中的应用
【10月更文挑战第21天】本文将探讨深度学习技术在图像识别领域的应用。我们将介绍深度学习的基本原理,并展示如何使用Python和TensorFlow库实现一个简单的图像识别模型。通过这个示例,我们将了解深度学习如何帮助计算机“看”世界,并展望其在未来的应用前景。
19 5
|
12天前
|
机器学习/深度学习 数据安全/隐私保护 计算机视觉
深度学习在图像识别中的应用与挑战
本文探讨了深度学习在图像识别领域的应用,并分析了其面临的主要挑战。通过介绍卷积神经网络(CNN)的基本原理和结构,本文阐述了深度学习如何提高图像识别的准确性和效率。同时,本文也讨论了深度学习模型在处理大规模数据集时遇到的过拟合问题、计算资源需求以及数据隐私保护等挑战。通过对比传统图像识别方法和深度学习方法的优缺点,本文旨在为读者提供一个全面的视角,了解深度学习在图像识别领域的潜力和局限性。