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

本文涉及的产品
图像搜索,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|
目录
相关文章
|
机器学习/深度学习 存储 搜索推荐
深度学习表征的不合理有效性——从头开始构建图像搜索服务(一)
还在为搜索引擎的工作原理感到困惑吗?看完本篇就可以自己动手构建搜图服务了。
5137 1
|
机器学习/深度学习 搜索推荐 计算机视觉
深度学习表征的不合理有效性——从头开始构建图像搜索服务(二)
还在为搜索引擎的工作原理感到困惑吗?看完本篇就可以自己动手构建搜图服务了。
2390 0
|
8天前
|
机器学习/深度学习 人工智能
深度学习中的正则化技术及其应用
【9月更文挑战第8天】在深度学习的探索之旅中,正则化技术如同指南针,引导我们穿越过拟合的迷雾。本文将深入浅出地介绍几种常见的正则化方法,并通过实际代码示例揭示它们如何在模型训练中发挥作用。从L1和L2正则化的基本概念出发,到Dropout技术的随机性之美,再到数据增强的多样性魅力,我们将一起见证这些技术如何提升模型的泛化能力。你将发现,正则化不仅是防止过拟合的技术手段,更是深度学习艺术的一部分。让我们开始这段探索之旅,解锁深度学习中正则化的奥秘。
29 10
|
7天前
|
机器学习/深度学习 人工智能 监控
深度学习在图像识别中的应用与挑战
随着人工智能的迅猛发展,深度学习技术在多个领域展现出强大的潜力和价值。特别是在图像识别方面,深度学习不仅推动了技术的边界,也带来了新的商业机会和社会效益。本文将探讨深度学习在图像识别领域的应用,分析其面临的主要挑战,并提出未来可能的发展方向。通过实例和数据支持,我们将深入了解这项技术如何改变我们的工作和生活方式。
|
2天前
|
机器学习/深度学习 算法 计算机视觉
深度学习在图像识别中的应用与挑战
随着人工智能技术的飞速发展,深度学习在图像识别领域的应用日益广泛。本文将探讨深度学习技术在图像识别中的基本原理、主要算法以及面临的挑战和未来发展趋势。通过对现有技术的深入分析,本文旨在为研究人员和工程师提供有价值的见解和建议。
|
2天前
|
机器学习/深度学习 边缘计算 算法
深度学习在图像处理中的应用与挑战
本文探讨了深度学习在图像处理领域的应用,特别是在图像识别、分类和分割等方面取得的突破。同时,文章也讨论了当前深度学习模型在这些任务中面临的主要挑战,如数据隐私问题、计算资源消耗以及模型的可解释性等。通过分析具体的案例研究,本文旨在为读者提供对深度学习技术实际应用及其局限性的全面了解。
|
4天前
|
机器学习/深度学习 人工智能 PyTorch
深度学习在图像识别中的应用与实践
【9月更文挑战第13天】本文将探讨深度学习技术在图像识别领域的应用,并通过实际案例展示其在解决复杂图像处理问题中的强大能力。我们将从基础概念出发,逐步深入到深度学习模型的构建、训练以及调优过程,旨在为读者提供一套完整的图像识别解决方案。通过本文,您将了解到如何利用深度学习技术提升图像识别的准确率和效率,以及如何将这些技术应用于实际项目中。
|
5天前
|
机器学习/深度学习 人工智能 计算机视觉
深度学习在图像识别中的应用与挑战
【9月更文挑战第11天】本文将深入探讨深度学习技术在图像识别领域的广泛应用及其面临的主要挑战。通过分析深度学习模型的工作原理和实际案例,揭示其在提高图像处理效率和准确度方面的巨大潜力。同时,讨论数据隐私、模型泛化能力和计算资源限制等关键问题,为读者提供全面而深入的视角。
|
3天前
|
机器学习/深度学习 传感器 算法
深度学习在图像识别中的应用
本文将探讨深度学习在图像识别中的应用,通过分析深度学习的基本概念、常用模型以及其在图像识别中的具体应用案例,帮助读者了解这一前沿技术。同时,我们还将讨论深度学习在图像识别中的优势与挑战,并展望其未来发展方向。
|
2天前
|
机器学习/深度学习 监控 自动驾驶
深度学习在图像识别中的应用与挑战
本文探讨了深度学习在图像识别领域的现状、应用和未来发展方向。首先介绍了深度学习的基本概念和常用模型,然后详细讨论了卷积神经网络(CNN)在图像识别中的具体应用及其优势。接着,文章分析了当前面临的主要技术挑战及可能的解决方案。最后,展望了深度学习在未来图像识别中的潜力和前景。
12 1