[Point Cloud] 点云分析中的EMD(Earth Mover's Distance)距离

点云分析中的EMD(Earth Mover’s Distance)距离

EMD(Earth Mover’s Distance)距离介绍

EMD距离,又叫做推土机距离,也叫作Wasserstein距离。个人理解,EMD距离是离散化的Wasserstein距离,而Wasserstein距离是描述两个连续随机变量的EMD距离。二者数学思想是相同的,但是所描述的对象和应用场景稍有区分。由于个人正在做关于点云数据的一些研究,因此这篇文章记录的仅仅是EMD距离相关的数学描述,不讨论Wasserstein距离。

EMD距离的出处是2000年发表在IJCV上的“The Earth Mover’s Distance as a Metric for Image Retrieval”一文。最初是作为一种度量用来判断两张图像之间的相似度,也就是用来做图像检索工作的。这里,我们从文章中对于EMD的定义出发,最后引出在许多点云分析文章中使用的EMD做出了哪些假设和简化。

Signature
Signature的数学定义为: s j = ( m j , w j ) {\bm{s_j} = (\bm{m_j}, w_j)} sj=(mj,wj),代表着一个features组的聚类, m j \bm{m_j} mj代表这个聚类类别的平均值mean或者模式mode, w j w_j wj代表着图像中属于这个类别的像素的占比(在图像处理中),也就是对应类别的权重weight。Histogram也是统计类别以及占比的统计学工具,但是相比之下,Histogram的类别分割是等比的,而Signature是相对灵活的。比如,统计数组{1,2,3,4,2,1,3,4,5,1,1,2,3,4}的Histogram,则会得到1有多少个数字,2有多少个数字…,如果用Signature在统计,则可以划分成属于{1,2,3}这个集合的数字有多少,属于{4,5}这个集合的数字有多少。Signature比Histogram更加灵活,这也提出Signature这个数学概念的意义。

Earth Mover’s Distance
假设有两组Signatures, P = ( p 1 , w p 1 ) , . . . , ( p m , w p m ) P={(p_1, w_{p1}), ..., (p_m, w_{pm})} P=(p1,wp1),...,(pm,wpm) Q = ( q 1 , w q 1 ) , . . . , ( q n , w q n ) Q={(q_1, w_{q1}), ..., ({q_n, w_{qn})}} Q=(q1,wq1),...,(qn,wqn) P P P中有 m m m个类别, Q Q Q中有 n n n个类别。我们可以将两个集合中的 p p p看作砂矿, q q q则是砂石仓库, w p i w_{pi} wpi为每一个砂矿包含的砂石数量, w q j w_{qj} wqj是每一个仓库能容纳砂石数量。再引入距离矩阵 D \bm{D} D m × n m×n m×n维),其中 d i j d_{ij} dij代表从 p i p_i pi q j q_j qj之间的距离,一般为欧氏距离。再定义工作流Flow,记为矩阵 F \bm{F} F m × n m×n m×n维),其中 f i j f_{ij} fij代表从 p i p_i pi q j q_j qj之间搬运砂石的数量,所以随后的总工作量为:
W O R K = ( P , Q , F ) = ∑ i = 1 m ∑ j = 1 n d i j f i j WORK=(P,Q,\bm{F})=\sum_{i=1}^{m}\sum_{j=1}^{n}d_{ij}f_{ij} WORK=(P,Q,F)=i=1mj=1ndijfij
另外,对于 f i j f_{ij} fij是有条件限制的:

  1. f i j ≥ 0 f_{ij}\geq0 fij0 ,其中 1 ≤ i ≤ m , 1 ≤ j ≤ n 1\leq i\leq m, 1\leq j\leq n 1im,1jn,这条约束说明砂石只能从 p p p运向 q q q,不能反向。
  2. ∑ j = 1 n f i j ≤ w p i \sum_{j=1}^{n}f_{ij} \leq w_{pi} j=1nfijwpi,其中 1 ≤ i ≤ m 1\leq i\leq m 1im,这条约束说明从 p i p_i pi砂矿运出的砂石不能超过该矿蕴含的砂矿总量。
  3. ∑ i = 1 m f i j ≤ w q j \sum_{i=1}^{m}f_{ij} \leq w_{qj} i=1mfijwqj,其中 1 ≤ j ≤ n 1\leq j\leq n 1jn,这条约束说明运入 q j q_j qj仓库的砂石数量不能超过该仓库的最大容纳量。
  4. ∑ i = 1 m ∑ j = 1 n f i j = min ⁡ ( ∑ i = 1 m w p i , ∑ j = 1 n w q j ) \sum_{i=1}^{m}\sum_{j=1}^{n}f_{ij} = \min(\sum_{i=1}^{m}w_{pi}, \sum_{j=1}^{n}w_{qj}) i=1mj=1nfij=min(i=1mwpi,j=1nwqj),这条约束说明,整个工作完成时,搬运的总砂石数量要么是所有砂矿的储量总和,要么是所有仓库的容纳量总和。

最终的EMD距离定义就是归一化之后的工作量:
E M D ( P , Q ) = ∑ i = 1 m ∑ j = 1 n d i j f i j ∑ i = 1 m ∑ j = 1 n f i j EMD(P,Q)=\frac {\sum_{i=1}^{m}\sum_{j=1}^{n}d_{ij}f_{ij}} {\sum_{i=1}^{m}\sum_{j=1}^{n}f_{ij}} EMD(P,Q)=i=1mj=1nfiji=1mj=1ndijfij

点云分析中的EMD距离

假设 P P P Q Q Q为两个点集,假设:两个点集所包含的点的数量相等,数量记为N
这个假设决定了EMD距离中的 w p i w_{pi} wpi w q j w_{qj} wqj始终保持一致,为 1 N \frac 1 N N1。换句话说,这个假设保证了两个点集中的所有点的地位是平等的,这也符合点云分析中的前提,即点云特征与点的顺序置换无关。由于所有的权重均为 1 N \frac 1 N N1,所以:
∑ i = 1 N ∑ j = 1 N f i j = min ⁡ ( ∑ i = 1 N w p i , ∑ j = 1 N w q j ) = min ⁡ ( N ⋅ 1 N , N ⋅ 1 N ) = 1 \sum_{i=1}^{N}\sum_{j=1}^{N}f_{ij} = \min(\sum_{i=1}^{N}w_{pi}, \sum_{j=1}^{N}w_{qj})=\min(N·\frac 1N,N·\frac 1N)=1 i=1Nj=1Nfij=min(i=1Nwpi,j=1Nwqj)=min(NN1,NN1)=1
∑ i = 1 N ∑ j = 1 N d i j f i j = N ⋅ 1 N ∑ i = 1 N ∑ j = 1 N d i j = ∑ i = 1 N ∑ j = 1 N d i j \sum_{i=1}^{N}\sum_{j=1}^{N}d_{ij}f_{ij} =N·\frac 1 N\sum_{i=1}^{N}\sum_{j=1}^{N}d_{ij}=\sum_{i=1}^{N}\sum_{j=1}^{N}d_{ij} i=1Nj=1Ndijfij=NN1i=1Nj=1Ndij=i=1Nj=1Ndij
因此,EMD距离改写为:
E M D ( P , Q ) = ∑ i = 1 N ∑ j = 1 N d i j EMD(P,Q)={\sum_{i=1}^{N}\sum_{j=1}^{N}d_{ij}} EMD(P,Q)=i=1Nj=1Ndij
也就是说,其实在神经网络中选择EMD作为损失函数时,就是寻找在点集 P P P Q Q Q中寻找一个一一对应的关系使得EMD最小,即:
min ⁡ E M D ( P , Q ) = min ⁡ ∑ i = 1 N ∑ j = 1 N d i j \min EMD(P,Q)=\min \sum_{i=1}^{N}\sum_{j=1}^{N}d_{ij} minEMD(P,Q)=mini=1Nj=1Ndij
其实,也就是一般在论文中看到的那样:
L o s s E M D ( P , Q ) = min ⁡ ϕ : P → Q ∑ x ∈ P ∣ ∣ x − ϕ ( x ) ∣ ∣ 2 Loss_{EMD}(P,Q)=\min_{\phi:P\to Q}\sum_{x\in P} \mid\mid x-\phi(x)\mid\mid_2 LossEMD(P,Q)=ϕ:PQminxPxϕ(x)2
就是在点集 P P P Q Q Q中间找到一个双射 ϕ \phi ϕ,将两个点集一一对应起来,使得二者计算欧式距离的和最小。这就是一般我们在点云补全等论文中看到的EMD作为损失函数形式的由来了。

  • 11
    点赞
  • 42
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
### 回答1: emd距离是指两个概率分布之间的差异度量,专门用于衡量两个分布之间需要通过最小代价转移来匹配的差异程度。而Matlab是一种常用的编程软件,可以用于进行数据处理、算法开发等工作。 在Matlab,计算emd距离可以借助一些工具箱或自定义函数来实现。例如,可以使用Matlab自带的Statistics and Machine Learning Toolbox的`emd`函数来计算emd距离。这个函数可以接受两个输入参数,分别为表示两个概率分布的向量,并返回它们之间的emd距离。 在使用`emd`函数时,需要首先确保数据的格式正确。通常可以将概率分布转化为一维向量,其每个元素表示对应的概率值。然后将这两个向量作为输入传递给`emd`函数,即可得到它们之间的emd距离。 此外,还可以使用第三方函数包来计算emd距离,如`pyemd`包。这个包可以通过调用Python解释器来实现。首先需要在Matlab调用Python解释器,并安装`pyemd`包。然后,可以通过调用`pyemd`的函数来计算emd距离,传入对应的概率分布作为参数。 综上所述,Matlab提供了多种方法和工具来计算emd距离。不论是使用自带的函数还是第三方函数包,都可以满足计算emd距离的需求。通过使用Matlab的强大功能,我们可以方便地进行emd距离的计算和应用。 ### 回答2: emd距离全称为Earth Mover's Distance,又称为汉明顿距离,是一种用于度量两个概率分布之间差异的算法。它可以用于解决一些图像处理、机器学习和计算机视觉等领域的问题。 EMD距离在Matlab有多种实现方式。其一个常用的方法是通过调用Image Processing Toolboxemd函数来计算。该函数基于最小距离算法,使用线性编程技术求解两个分布之间的最小距离,返回值为两个分布之间的EMD距离。 在Matlab计算EMD距离的步骤如下: 1. 首先,需要准备两个概率分布作为输入。可以使用Matlab的统计工具对数据进行统计分析得到概率分布,也可以直接输入已有的概率分布数据。 2. 然后,调用emd函数并传入两个概率分布作为参数,即可计算得到它们之间的EMD距离。 3. 最后,根据实际需要对距离结果进行解释和应用。 Matlab的emd函数还支持其他可选参数,比如可以指定两个分布之间的距离矩阵,以及在计算考虑约束条件等。此外,Matlab还有其他一些函数可以进行EMD距离的计算,如pdist2和emd_hat等等。 总之,EMD距离是一种用于衡量两个概率分布差异的重要指标,Matlab提供了方便的工具来计算和应用这个距离。 ### 回答3: emd距离Earth Mover's Distance)是一种用于衡量两个概率分布之间差异的指标。它在计算机视觉、图像处理等领域广泛应用。 Matlab是一种面向科学与工程计算的高级编程语言和环境,能够进行数值计算、数据可视化和算法开发等任务。 在Matlab,可以使用一些函数来计算emd距离。其emd函数是一个常用的用于计算两个概率分布之间的emd距离的函数。它的基本用法是首先构建两个概率分布的直方图,并将它们作为输入传递给emd函数,然后该函数会返回这两个分布之间的emd距离。 具体而言,使用emd函数时,需要提供两个直方图向量作为输入,这些直方图向量表示待比较的两个概率分布。同时,还需要指定其他参数,比如距离矩阵。距离矩阵是用于计算两个直方图之间的距离的,它通常根据直方图元素之间的欧氏距离或者其他定义好的距离计算方法进行构建。 通过调用emd函数,可以得到两个概率分布之间的emd距离。这个距离值越小,表示两个分布越相似;反之,距离值越大,表示两个分布越不同。 总之,通过Matlab提供的emd函数,我们可以方便地计算两个概率分布之间的emd距离,用于度量它们之间的差异。这对于分析、比较和处理不同的概率分布具有重要意义。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值