目标跟踪基础:两张图片相似度算法

news2024/11/24 23:42:39

本文来自公众号“AI大道理”

 ——————

目标跟踪就是在时序帧中搜索目标的过程,本质上就是检索。

不管是传统的目标跟踪中的生成模型和判别模型,还是用深度学习来做目标跟踪,本质上都是来求取目标区域与搜索区域的相似度,这就是典型的多输入。

目标跟踪为什么需要相似度?

在跟踪中,下一帧的目标要和上一帧的目标做一个匹配,才能确定是同一个目标。那么同样是行人,如何确定检测框是同一个目标呢?

可以对检测框的目标与上一针所有检测框目标进行相似度匹配。

当然其他的根据检测框的位置,中心点的距离等等都存在不稳定性。

图像的相似度度量存在的困难主要在:

  • 相似度的比较依赖图像结构。L2距离等度量逐像素的比较相似度,忽视了图像的结构信息,因此不适合比较图像的相似度。

  • 上下文相关。比如红色的圆和红色的正方形更像还是和蓝色的圆更像?

  • 相似度有可能不满足距离的定义。

一、相似度算法

1、传统算法

  • 余弦相似度

  • 哈希算法

  • 直方图

  • 互信息

  • 均方误差(MSE)算法

  • SSIM结构相似性

  • 特征匹配

2、深度学习算法

  • 孪生网络

  • SimGNN

  • Graph kernel

二、传统相似度算法

2.1 余弦相似度

余弦相似度是一种常用的衡量向量之间相似度的方法,它可以用于计算两个向量之间的夹角的余弦值。

在图像相似度计算中,可以将图像转换为特征向量,然后使用余弦相似度来比较这些特征向量的相似程度。

余弦相似度的计算公式如下:

其中,A和B分别表示两个向量,·表示向量的点积,||A||和||B||表示向量的范数(即向量的长度)。

余弦相似度的取值范围在 -1 到 1 之间,值越接近 1 表示两个向量越相似,越接近 -1 表示两个向量越不相似,接近 0 表示两个向量之间没有明显的相似性或差异。

在图像相似度计算中,可以将图像转换为特征向量(如使用卷积神经网络提取的特征向量),然后计算这些特征向量之间的余弦相似度来衡量图像的相似性。

2.2 哈希算法

在图片相似度算法中,哈希算法也被广泛应用。

图像哈希算法通过将图像转换为固定长度的哈希值,从而实现图像的相似度比较和检索。

以下是两种常见的图像哈希算法:

  • 平均哈希(Average Hash):平均哈希算法将图像缩小为一个固定的大小(如8x8像素),然后将图像转换为灰度图像,并计算图像的平均灰度值。接下来,将每个像素的灰度值与平均灰度值进行比较,将比平均灰度值大的像素标记为1,比平均灰度值小的像素标记为0。最终,将这些二进制结果组合成一个固定长度的哈希值,用于表示图像。通过比较两个图像的哈希值的汉明距离(Hamming Distance),可以评估图像的相似度,距离越小表示图像越相似。

  • 感知哈希(Perceptual Hash):感知哈希算法借助离散余弦变换(Discrete Cosine Transform,DCT)来提取图像的频率特征。它首先将图像转换为灰度图像,并调整图像的大小为固定的尺寸(如32x32像素)。然后,对调整后的图像应用DCT,并保留低频分量。接下来,根据DCT系数的相对大小,将图像转换为一个二进制哈希值。通过计算两个图像哈希值的汉明距离,可以衡量图像的相似度。

这些哈希算法主要适用于简单的图像相似度比较和快速图像检索任务。

它们具有计算效率高、哈希值固定长度、对图像变换具有一定鲁棒性等优点。

然而,由于哈希算法的特性,它们对于图像的细微变化或者复杂场景下的相似度比较可能存在一定的局限性。

2.3 直方图

直方图是一种常用的图片相似度算法,它可以用来衡量两张图片在颜色分布上的相似度。

直方图算法通过统计图像中不同颜色的像素数量,并以直方图的形式呈现,进而进行图像相似度的比较。

直方图算法计算图片相似度的步骤:

  • 图像预处理:将图像转换为灰度图像或彩色图像,并根据需要进行尺寸调整。

  • 计算直方图:对于灰度图像,直方图表示不同灰度级别的像素数量。对于彩色图像,可以分别计算各个通道(如红、绿、蓝)的直方图。直方图可以使用固定的桶(bin)或者动态的自适应桶来表示。

  • 直方图比较:对于两张图片的直方图,可以使用不同的距离或相似度度量方法来进行比较。常见的度量方法包括欧氏距离、曼哈顿距离、巴氏距离等。

  • 相似度评估:根据直方图比较的结果,计算出两张图片之间的相似度得分。得分越高表示两张图片越相似。

直方图算法的优点是简单易懂,计算速度快,并且对于图片的旋转、缩放等变换具有一定的鲁棒性。

然而,直方图算法也有一些局限性,例如它只考虑了颜色分布而忽略了纹理和结构等因素。

2.4 互信息

互信息是一种用于衡量两个随机变量之间相互依赖关系的指标,可以用于计算图片的相似度。

互信息衡量的是两个变量之间的信息共享程度,通过计算它们的联合概率分布和各自概率分布的乘积来评估它们的相关性。

通过计算两个图片的互信息来表征他们之间的相似度,如果两张图片尺寸相同,还是能在一定程度上表征两张图片的相似性的。

但是,大部分情况下图片的尺寸不相同,如果把两张图片尺寸调成相同的话,又会让原来很多的信息丢失,所以很难把握。

两个离散随机变量 X 和 Y 的互信息可以定义为:

其中 p(x,y) 是 X 和 Y 的联合概率分布函数,而p(x)和p(y)分别是 X 和 Y 的边缘概率分布函数。

在连续随机变量的情形下,求和被替换成了二重定积分:

其中 p(x,y) 当前是 X 和 Y 的联合概率密度函数,而p(x)和p(y)分别是 X 和 Y 的边缘概率密度函数。

互信息的取值范围通常是非负的,值越大表示两个变量之间的相关性越高,也可以理解为两张图片的相似度越高。

互信息算法可能对图像的纹理、结构等细节不敏感,因此在某些情况下可能无法准确地反映图像的相似度。

2.5 均方误差(MSE)算法

均方误差(Mean Squared Error,MSE)是一种常用的图片相似度算法,用于衡量两张图片之间的差异程度。

该算法通过计算两张图片对应像素之间的差值的平方,并求取平均值来得到相似度评分。

MSE的值越小表示两张图片越相似,值为0表示完全相同。

MSE算法只考虑像素级别的差异,可能无法准确地捕捉图像的纹理、结构等细节。

MSE的计算公式:

2.6 SSIM结构相似性

结构相似性指数是一种用于衡量两张图片之间结构相似性的指标。

与均方误差(MSE)相比,SSIM更能捕捉图像的结构信息和感知差异。

SSIM的计算方法考虑了亮度、对比度和结构三个方面的差异。

SSIM公式:

SSIM取值范围[0, 1],值越大,表示图像失真越小。

公式:

uX、uY分别表示图像X和Y的均值,σX、σY分别表示图像X和Y的标准差,σXσX、σYσY分别表示图像X和Y的方差。σXY代表图像X和Y协方差。C1,C2和C3为常数,是为了避免分母为0而维持稳定。通常取C1=(K1L)^2, C2=(K2L)^2, C3=C2/2, 一般地K1=0.01, K2=0.03, L=255( 是像素值的动态范围,一般都取为255)

对于比较不同字体的字形相似度,可以考虑使用SSIM算法。因为SSIM算法更注重图像的结构相似性,它更好地检测出字形上的细微差异。

SSIM取值范围[0, 1],值越大,表示图像失真越小。

2.7 特征匹配

特征匹配是一种常用的图片相似度算法,它基于图像中的特征点来计算相似度。

特征匹配算法步骤:

  • 提取特征点:使用特征提取算法(如SIFT、SURF、ORB等)从两张图片中提取特征点。这些特征点可以是图像中具有鲁棒性和独特性的局部区域。

  • 描述特征点:对于每个特征点,使用特征描述算法(如SIFT、SURF、ORB等)计算其特征描述子。描述子是对特征点周围区域的图像信息进行编码,用于表示该特征点的特征信息。

  • 特征匹配:将第一张图片中的特征点与第二张图片中的特征点进行匹配。匹配算法通常基于描述子之间的相似度度量(如欧氏距离、汉明距离等),找到两张图片中相似的特征点对。

  • 计算相似度:根据匹配到的特征点对,可以计算相似度指标(如匹配点对的数量、相似度得分等)来衡量两张图片之间的相似度。更多时候,还会使用一些筛选机制,例如RANSAC算法进行外点去除,以提高匹配的准确性。

特征匹配算法对图片中的局部特征进行有效的匹配和比较,相对于像素级的方法能更好地处理图像中的变换、缩放、旋转等变换操作。

特征匹配算法的性能受到图像质量、变换、遮挡、光照等因素的影响。

三、深度学习算法

3.1 Siamese

Siamese网络是一种神经网络结构,主要用于处理相似度比较或度量学习任务。

它的设计灵感来源于孪生兄弟(Siamese Twins),因为网络的结构呈现出两个相同的分支,共享参数并共同学习。

Siamese网络的主要特点是通过共享权重的方式处理输入的两个样本,然后将它们的表示进行比较或度量,输出它们的相似度分数。

这使得Siamese网络在处理两张图片的相似度非常有效。

Siamese网络的训练过程通常涉及两个主要步骤:

  1. 正样本和负样本对生成:从训练数据集中生成正样本对和负样本对。正样本对包含相同类别的样本,负样本对包含不同类别的样本。

  2. 训练网络:使用正样本对和负样本对作为输入,通过最小化损失函数(如对比损失函数、三元组损失函数等)来训练Siamese网络。损失函数的目标是使正样本对的相似度得分高于负样本对的相似度得分。

在推理阶段,Siamese网络可以通过将两个输入样本分别通过共享的分支来计算它们的表示,然后使用相似度度量方法(如欧氏距离、余弦相似度等)来计算它们的相似度得分。

Siamese网络的优点在于能够学习样本之间的相似性,并且对于训练数据中不平衡的类别分布也相对较为鲁棒。

Siamese网络由于最后一层使用 sigmoid 激活函数,它输出一个范围在 0 到 1 之间的值。

接近 1 的相似度得分意味着两个输入是相似的,接近 0 的相似度得分意味着两个输入不相似。

3.2 SimGNN

SimGNN是基于图神经网络(Graph Neural Network,GNN)的一种模型,用于处理图数据的相似度计算任务。

SimGNN是一种基于端到端神经网络的方法,它试图学习一个函数来将一对图映射到一个相似度分数。 

SimGNN的全称是"Similarity Graph Neural Network",它旨在学习图数据中节点之间的相似度。

相似度图可以被用来解决各种任务,例如推荐系统中的物品相似度计算、文本匹配中的句子相似度计算等。

SimGNN的核心思想是通过图神经网络的方式对图数据进行表示学习,然后通过学到的表示来计算节点之间的相似度。

SimGNN步骤:

  • 图数据表示:将图数据表示为节点特征矩阵和邻接矩阵的组合形式。节点特征矩阵用于表示每个节点的特征向量,邻接矩阵表示图中节点之间的连接关系。

  • 图神经网络模型:使用图神经网络模型(如Graph Convolutional Network,Graph Attention Network等)对图数据进行表示学习。这些模型通过迭代地聚合节点周围的信息来更新节点的表示。

  • 相似度计算:基于学到的节点表示,通过定义相似度度量方法(如余弦相似度、点积相似度等)来计算节点之间的相似度。

SimGNN的优点在于能够利用图数据中的结构信息和节点特征,进行有效的相似度计算。

SimGNN在推荐系统、文本匹配、社交网络分析等领域具有广泛的应用。

3.3 Graph kernel

Graph kernels(图核)是一类用于计算图数据相似度的方法。

在机器学习和图分析领域,图数据常用于表示复杂的关系和结构,如社交网络、化学分子和推荐系统等。

图核方法旨在衡量不同图之间的相似性或距离。

图核方法基于图的结构和属性信息,通过将图数据映射到一个高维的向量空间中进行计算。这样可以使用向量空间中的传统机器学习算法来进行图的比较和分类。

常见的图核方法包括以下几种:

  • 子图同构核(Graph Isomorphism Kernel):该方法比较两个图中的所有子图,通过计算子图之间的同构关系来衡量图的相似度。

  • 核向量机(Kernelized Support Vector Machines):该方法通过使用核函数将图数据映射到一个高维空间,并在该空间中使用支持向量机(SVM)来进行分类或回归任务。

  • 图编辑距离核(Graph Edit Distance Kernel):该方法基于图编辑距离,衡量两个图之间的编辑操作(如添加节点、删除节点、修改边等)的相似度。

  • 直接计算核(Direct Computation Kernels):该方法直接计算两个图之间的相似度或距离,而不依赖于图的映射或编辑操作。常见的直接计算核包括图谱核(Graphlet Kernel)、子图核(Subgraph Kernel)等。

四、总结

在目标跟踪中,相似度计算是用来度量当前帧中的目标与跟踪器所预测的目标之间的相似程度。

基于相似度的计算结果,可以用于确定当前帧中最可能的目标位置或更新跟踪器的状态。

常用的相似度计算方法在目标跟踪中的应用:

  1. 基于外观的相似度计算:

    • 均方差(Mean Squared Error,MSE):计算目标区域与跟踪器所预测的目标区域之间的像素值差异。

    • 结构相似性指数(Structural SIMilarity,SSIM):综合考虑目标区域的亮度、对比度和结构相似性。

    • 基于直方图的相似度:通过计算目标区域的颜色直方图或梯度直方图之间的差异来度量相似度。

  2. 基于运动的相似度计算:

    • 光流相似度:通过计算目标区域内像素的运动向量与跟踪器预测的运动向量之间的差异来度量相似度。

    • 运动模型相似度:通过比较目标区域的运动模型(如线性模型或卡尔曼滤波器预测模型)与跟踪器预测的运动模型之间的差异来度量相似度。

  3. 基于深度学习的相似度计算:

    • 使用卷积神经网络(Convolutional Neural Networks,CNN):将目标区域和跟踪器预测的目标区域输入到预训练的CNN中,通过计算它们的特征向量之间的距离或相似度来度量相似度。

    • 使用Siamese网络:利用孪生网络结构,将目标区域和跟踪器预测的目标区域分别输入到共享的网络分支中,通过比较它们的表示向量之间的距离或相似度来度量相似度。

这些相似度计算方法的选择取决于目标跟踪任务的特点、可用数据和计算要求。

通常,通过实验和评估来选择最适合特定任务的相似度计算方法。

 ——————

浅谈则止,细致入微AI大道理

扫描下方“AI大道理”,选择“关注”公众号

—————————————————————

 

—————————————————————

投稿吧   | 留言吧

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/721356.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C# 依赖倒置原则(DIP)

目录 一,引子 1.1 传统的程序架构 1.2 依赖倒置 1.3 依赖倒置的作用 二,依赖注入 一,引子 1.1 传统的程序架构 在程序执行过程中,传统的程序架构如图: 可以看到,在传统的三层架构中,层与…

CSS的学习4(盒子模型及浮动)

CSS的学习3:http://t.csdn.cn/xDxIJ 盒子模型 网页布局过程 先准备好相关的网页元素,网页元素基本都是盒子Box利用CSS设置好盒子样式,然后摆放到相应位置往盒子里面装内容 封装周围的HTML元素: 边框(border&#…

[网鼎杯 2020 青龙组]AreUSerialz1

代码审计 得到一大串源码&#xff0c;但是不要慌&#xff0c;虽然源码很多&#xff0c;其实题目并不难 这段代码是一个简单的文件读写类 FileHandler&#xff0c;以及一个反序列化函数 unserialize() 的使用。 <?phpinclude("flag.php");highlight_file(__FILE__…

Stable Diffusion 中英文对照中文tag补全

Stable Diffusion是老外做的&#xff0c;因此全部界面都是英文的&#xff0c;因此会对国内很多英语不好的小伙伴来说是一个灾难&#xff0c;不过这里介绍大家一个自定义翻译插件的方法如下图。 还有我们在输入关键词的时候&#xff0c;由于英语水平有限对我们造成阻碍&#xf…

QTTCP客户端服务端通信

目录 网络模块介绍 TCP介绍 TCP 服务端应用实例 TCP 客户端应用实例 运行结果&#xff1a; 网络模块介绍 Qt 网络模块为我们提供了编写 TCP / IP 客户端和服务器的类。它提供了较低级别的类&#xff0c;例 如代表低级网络概念的 QTcpSocket &#xff0c; QTcpServer 和 …

智慧旅游卡APP小程序开发方案

旅游业的蓬勃发展&#xff0c;旅游卡作为一种便捷的旅游支付方式越来越受到人们的喜爱。智慧旅游卡APP小程序开发方案是一种利用微信小程序实现的在线购买旅游卡、查询旅游信息、预约旅游服务等功能的旅游卡APP。下面将详细介绍智慧旅游卡APP小程序的开发方案。 一、智慧旅…

【CDC 2023 Cooperative Aerial Robots Inspection Challenge】

CDC 2023 Cooperative Aerial Robots Inspection Challenge 合作空中机器人检查挑战赛 Install the CARIC packagesRun the flight testThe benchmark designThe UAV fleet CDC 2023 Cooperative Aerial Robots Inspection Challenge 网址 Install the CARIC packages Once t…

旅游卡APP开发解决方案

旅游业的不断发展&#xff0c;旅游卡成为了人们出行时必不可少的一项工具。旅游卡APP开发解决方案旨在为用户提供更加便捷、高效的旅游卡购买和使用体验。下面将详细介绍旅游卡APP开发解决方案的几个方面。 一、旅游卡APP开发解决方案的技术方面 旅游卡APP开发解决方案…

Python pyecharts实时画图自定义可视化经纬度热力图

目录 背景基于pyecharts内置经纬度的热力图基于自定义经纬度的热力图pyecharts库缺点不同地图坐标系区别 WGS-84 - 世界大地测量系统GCJ-02 - 国测局坐标BD-09 - 百度坐标系 背景 在业务数据统计分析中基本都会涉及到各省区的分析&#xff0c;数据可视化是数据分析的一把利器…

事件机制(事件流、事件委托、事件类型)

HTML DOM 允许 JavaScript 对 HTML 事件作出反应。JavaScript 能够在事件发生时执行&#xff0c;比如当用户点击某个 HTML 元素时。 JavaScript与HTML之间的交互是通过事件实现的。事件就是文档或浏览器窗口中发生的一些特定的交互瞬间。 目录 事件是由三部分组成 执行事件的步…

儿童硅胶勺子LFGB标准检测是什么?

食品级硅胶制品的德国食品接触材料测试LFGB标准检测哪些项目&#xff1f; Sensory test感官测试一味道和气味对于与食品接触的整体产品 extractable components in ethanol(Ethanol as compulsory simulant)(must perform)10%酒精萃取法(必做) Extractable component in deioni…

官网能为企业营销增长贡献哪些力量?

官网是门面&#xff0c;同时也具备营销价值&#xff0c;可以带来流量转化成销售线索&#xff0c;影响公司营收&#xff0c;B2B业务是复杂的&#xff0c;客户在选择你之前会长期的研究你的官网&#xff0c;了解你的产品及服务、成功案例、甚至是品牌的创始团队信息&#xff0c;来…

SpringCloud学习1

SpringCloud是分布式微服务架构的 一些列解决方案的集合&#xff0c;SpringBoot是一门单独的技术 ​​​​​​

小心 MybatisPlus 的一个坑与面试题

昨天测试说有个 xx 功能用不了&#xff0c;扔给我一个截图&#xff0c;说有报错&#xff1a; 报错信息就是&#xff1a;Transaction rolled back because it has been marked as rollback-only&#xff0c;很好理解&#xff1a;事务被回滚了&#xff0c;因为它已经被标记了只能…

HttpRunner自动化之请求中带有 headers 的接口和发送POST请求

headers 可通过headers 添加头部信息&#xff0c;如下图 # 发送请求头headers的接口 - config:name: 百度接口用例base_url: https://www.baidu.com- test:name: 发送百度接口的头部信息request:url: /smethod: GETheaders:Accept: text/html,application/xhtmlxml,applicati…

LNMT(linux下nignx+mysql+tomcat(中间件)应用)部署应用、及各服务介绍、部署开源站点jpress

目录 一、环境准备 二、tomcat1和tomcat2服务器&#xff0c;安装配置tomcat 1.tomcat服务器介绍 2.JDK软件介绍 3.查看JDK是否安装 4.tomcat1和tomcat2服务器&#xff0c;安装JDK1.8.0_191&#xff08;JDK必须和nginx版本相适应&#xff0c;不然一直报错&#xff09; 5.安…

【LeetCode】HOT 100(21)

题单介绍&#xff1a; 精选 100 道力扣&#xff08;LeetCode&#xff09;上最热门的题目&#xff0c;适合初识算法与数据结构的新手和想要在短时间内高效提升的人&#xff0c;熟练掌握这 100 道题&#xff0c;你就已经具备了在代码世界通行的基本能力。 目录 题单介绍&#…

源启数据资产管理平台助力金融机构加速数据资产化过程

自2000年左右&#xff0c;金融行业开始做数据管理。从数据仓库到数据治理、数据应用&#xff0c;再到后来的大数据&#xff0c;以及今天的数据管理。我们把这个时期总结成数据资产化时代&#xff0c;或者叫国产化时代。 为什么有两个名字&#xff1f;数据资产化时代是因为国家…

关于PID闭环控制中上位机与下位机通讯代码的解析分享(一)

下位机接收数据代码&#xff08;以STM32单片机为例&#xff09;与上位机发送数据C#代码分享 1、下位机代码&#xff1a; /*** brief 接收的数据处理* param void* return -1&#xff1a;没有找到一个正确的命令.*/ int8_t receiving_process(void) {uint8_t frame_data[…

虚幻引擎程序化资源生成框架PCG 之 常用撒点方法小结

PCG真好玩&#xff0c;门槛很低&#xff0c;天花板很高 文章目录 前言1. 基本撒点1.1 Landscape上撒点1.2 使用射线检测在地表面撒点1.3 使用曲线撒点1.3.1 沿曲线撒点1.3.2 在闭合曲线内部撒点 1.4 在StaticMesh表面撒点 2. 进阶撒点2.1 在闭合曲线内部放射状撒点2.2 在Mesh表…