陆地移动距离的python实现

陆地移动距离的python实现

Earth Mover s Distance,即陆地移动距离,是一种度量准则。光线变化能引起颜色直方图的漂移,引起颜色值位置发生变化,这时候一些直方图的比较匹配策略失效。EMD算法本身是一个通用的算法,它实际上度量的是怎样讲一个直方图的形状转变为另一个直方图的形状,包括直方图的部分(或全部)到一个新的位置,可以在直方图任何维的直方图上进行这种度量。
代码中的输入是我们要度量的直方图!

class EarthMoversDistanceLoss(nn.Module):
    def __init__(self):
        super().__init__()

    def forward(self, x, y):
        # input has dims: (Batch x Bins)
        bins = x.size(1)
        r = torch.arange(bins)
        s, t = torch.meshgrid(r, r)
        tt = t >= s

        cdf_x = torch.matmul(x, tt.float().cuda())
        cdf_y = torch.matmul(y, tt.float().cuda())

        return torch.sum(torch.square(cdf_x - cdf_y), dim=1)
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值