Python,Bytetrack ,lap.lapjv,匈牙利匹配

news2025/1/20 12:00:21

lap.lapjv貌似是一个比匈牙利算法快的算法。
函数的参数:
如果是非方阵,extend_cost需要是True。
cost_limit,小于等于这个数值的分配代价才会分配。


def lapjv(*args, **kwargs): # real signature unknown
    """
    Solve linear assignment problem using Jonker-Volgenant algorithm.
    
        Parameters
        ----------
        cost: (N,N) ndarray
            Cost matrix. Entry `cost[i, j]` is the cost of assigning row `i` to
            column `j`.
        extend_cost: bool, optional
            Whether or not extend a non-square matrix. Default: False.
        cost_limit: double, optional
            An upper limit for a cost of a single assignment. Default: `np.inf`.
        return_cost: bool, optional
            Whether or not to return the assignment cost.
    
        Returns
        -------
        opt: double
            Assignment cost. Not returned if `return_cost is False`.
        x: (N,) ndarray
            Assignment. `x[i]` specifies the column to which row `i` is assigned.
        y: (N,) ndarray
            Assignment. `y[j]` specifies the row to which column `j` is assigned.
    
        Notes
        -----
        For non-square matrices (with `extend_cost is True`) or `cost_limit` set
        low enough, there will be unmatched rows, columns in the solution `x`, `y`.
        All such entries are set to -1.
    """
    pass

一个例子:

import lap
import numpy as np


def linear_assignment(cost_matrix, thresh):
    if cost_matrix.size == 0:
        return np.empty((0, 2), dtype=int), tuple(range(cost_matrix.shape[0])), tuple(range(cost_matrix.shape[1]))
    matches, unmatched_a, unmatched_b = [], [], []
    cost, x, y = lap.lapjv(cost_matrix, extend_cost=True, cost_limit=thresh)
    print(cost)
    for ix, mx in enumerate(x):
        if mx >= 0:
            matches.append([ix, mx])
    unmatched_a = np.where(x < 0)[0]
    unmatched_b = np.where(y < 0)[0]
    matches = np.asarray(matches)
    return matches, unmatched_a, unmatched_b


print(linear_assignment(np.array([[0.9, 0.3, 0.4],
                                  [0.4, 0.7, 0.2]]), 0.5))

输出:(array([[0, 1],
[1, 2]]), array([], dtype=int64), array([0], dtype=int64))

在这里插入图片描述

如果:

print(linear_assignment(np.array([[0.9, 0.3, 0.4, 0.3],
                                  [0.4, 0.7, 0.2, 0.3],
                                  [0.3, 0.5, 0.6, 0.3],]), 0.5))

输出:

0.8
(array([[0, 1],
       [1, 2],
       [2, 0]]), array([], dtype=int64), array([3], dtype=int64))

在Bytetrack中,所有轨迹和所有框都计算匹配得分,然后1减去匹配得分就是这里的分配代价矩阵。

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

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

相关文章

彻底掌握Protobuf编码原理与实战

目录 1.类型2.VARINT 2.1 无符号数2.2 有符号数3.定长 3.1 I64类型3.2 I32类型4.LEN5.代码 学习这些有什么用&#xff1f; - 如果你是后端开发者&#xff0c;掌握这个对工作非常有用 - 如果你是求职者&#xff0c;面试时可以临危不惧 1.类型 最近看到有直接操作wire type相关的…

【Roop】+【Rope】+【Rope Crystal】项目情况和原始仓库

Roop【停止更新】 &#x1f517;s0md3v/roop: one-click face swap (github.com) 是的&#xff0c;就是之前介绍过的&#xff0c;特别火的那个。 作者说不干就不干了。 Rope (Space worm) &#x1f517;Em1tSan/Rope-neurogen: GUI-focused roop (github.com) 基于roop增强的…

ava spring cloud 企业工程管理系统源码+二次开发+定制化服务

鸿鹄工程项目管理系统 Spring CloudSpring BootMybatisVueElementUI前后端分离构建工程项目管理系统 1. 项目背景 一、随着公司的快速发展&#xff0c;企业人员和经营规模不断壮大。为了提高工程管理效率、减轻劳动强度、提高信息处理速度和准确性&#xff0c;公司对内部工程管…

【EI征稿】第二届机械电子工程与人工智能国际学术会议(MEAI 2023)

第二届机械电子工程与人工智能国际学术会议&#xff08;MEAI 2023&#xff09; The 2nd International Conference on Mechatronic Engineering and Artificial Intelligence 2023年第二届机械电子工程与人工智能国际学术会议&#xff08;MEAI 2023&#xff09;计划将于2023年…

软件系统兼容性测试都要注意哪些问题?

兼容性 软件兼容性测试具有相同的含义&#xff0c;它是任何第三方 Web 应用程序测试服务不可分割的一部分。在众多不同的设置中&#xff0c;最重要的是完全的客户满意度&#xff0c;并且可以通过全面的兼容性测试来达到最佳效果。众所周知&#xff0c;软件质量保证是克服 IT 挑…

Leetcode646. 最长数对链

Every day a Leetcode 题目来源&#xff1a;646. 最长数对链 解法1&#xff1a;动态规划 定义 dp[i] 为以 pairs[i] 为结尾的最长数对链的长度。 初始化时&#xff0c;dp 数组需要全部赋值为 1。 计算 dp[i] 时&#xff0c;可以先找出所有的满足 pairs[i][0]>pairs[j]…

Python学习 -- pickle模块和configparser模块

当在Python中需要进行数据的序列化和反序列化、以及配置文件的读写时&#xff0c;pickle 模块和 configparser 模块是两个非常有用的标准库。以下是关于这两个模块的详细使用方式&#xff0c;包括示例代码。 pickle 模块 pickle 模块用于序列化和反序列化Python对象&#xff…

verilog学习笔记7——PMOS和NMOS、TTL电路和CMOS电路

文章目录 前言一、PMOS和NMOS1、NMOS2、PMOS3、增强型和耗尽型4、两者面积大小 二、CMOS门电路1、非门2、与非门3、或非门4、线与逻辑5、CMOS传输门6、三态门 三、TTL电路四、TTL电路 VS CMOS电路五、数字电平六、使用CMOS电路实现逻辑函数1、上拉网络 PUN2、下拉网络 PDN3、实…

嵌入式新手应该怎么学?

嵌入式新手应该怎么学? 对于嵌入式新手来说&#xff0c;知道一点嵌入式&#xff0c;知道嵌入式大概是做什么的&#xff0c;不是很懂&#xff0c;所以要熟悉掌握嵌入式的概念。我们可以看到网上或者书上很多解释&#xff1a;嵌入式系统是针对某个应用&#xff0c;软硬件可裁减的…

Qemu支持ATF + u-boot + linux kernel

qemu环境搭建及ATF/u-boot/linux kernel的编译等&#xff0c;参考 从零开始搭建qemu调试环境 - 知乎 ATF编译: wmxwmx-VirtualBox:~/work/arm-trusted-firmware$ cat build-atf.sh export ARCHarm64 export CROSS_COMPILE/home/wmx/Downloads/gcc-linaro-7.4.1-2019.02-x86_…

无涯教程-JavaScript - IMCSCH函数

描述 IMCSCH函数以x yi或x yj文本格式返回复数的双曲余割。 复数的双曲余割定义为双曲正弦的倒数,即 csch(z) 1 /出生(z) 语法 IMCSCH (inumber)争论 Argument描述Required/OptionalInumberA complex number for which you want the hyperbolic cosecant.Required Not…

Python基础教程:索引和切片

前言 嗨喽&#xff0c;大家好呀~这里是爱看美女的茜茜呐 索引&#xff08;下标&#xff09; 索引又称下标&#xff0c;用来表示可迭代对象中的某个元素的位置。 用正整数表示的索引值&#xff0c;从左向右定位&#xff0c;从 0 开始计数&#xff0c;如 0&#xff0c;1&#…

HarmonyOS/OpenHarmony(Stage模型)应用开发组合手势(二)并行识别

并行识别组合手势对应的GestureMode为Parallel。并行识别组合手势中注册的手势将同时进行识别&#xff0c;直到所有手势识别结束。并行识别手势组合中的手势进行识别时互不影响。 以在一个Column组件上绑定点击手势和双击手势组成的并行识别手势为例&#xff0c;由于单击手势和…

韶音耳机是哪个国家的品牌,韶音耳机属于什么档次

在如今耳机产品层出不穷的时代&#xff0c;许多品牌纷纷推陈出新&#xff0c;打造出更具创新性的耳机产品。其中&#xff0c;韶音耳机可谓引人注目。然而&#xff0c;对于韶音耳机这个品牌&#xff0c;仍有许多朋友并不熟悉。比如说&#xff0c;韶音耳机是哪个国家的品牌呢&…

数字孪生和GIS的结合如何改变现代农业?

数字孪生技术和地理信息系统&#xff08;GIS&#xff09;是两个独立但高度互补的领域&#xff0c;它们的结合在农业领域具有巨大的潜力&#xff0c;可以带来巨大的改变。在这篇文章中&#xff0c;我们将讨论数字孪生技术和GIS系统如何协同作用&#xff0c;为农业带来创新和可持…

缓存淘汰算法-LRU

目录 前言 一、LRU 算法 二、LRU 算法图解 三、LRU 算法实现 四、LRU 算法分析 五、LRU 算法改进方案 前言 我们常用缓存来提升数据查询速度&#xff0c;由于缓存容量有限&#xff0c;当缓存容量到达上限&#xff0c;就需要删除部分数据挪出空间&#xff0c;这样新数据才…

IP175LLF基本参数和引脚图

特性 宽工作温度范围IP175LLF(0C至70C) IP175LLFI(-40C至85C)内置5个MAC和4个PHY 每个端口可配置为10base-t、100Base-TX 最多2K个MAC地址支持自极性10Mbps 汽车MDI-MDIX 支持1个MII/RMII端口Layer2-4多字段分类器 支持8-MultiField输入支持交通政策支持多字段过滤器 支…

【word技巧】如何在word文件中方框打对勾?

Word文件制作了调查问卷或者信息表之类的文件&#xff0c;总是少不了有需要打勾的选项&#xff0c;如果打印成了纸质文件打勾就简单了&#xff0c;但是在word文件中应该如何在方框中打√符号呢&#xff1f;今天分享三个方法。 方法一&#xff1a; 先输入一个大写的R&#xff…

MES生产管理系统的五个关键组件

MES管理系统在当今制造业中发挥着越来越重要的作用。它是一种先进的生产管理系统&#xff0c;旨在连接企业资源计划&#xff08;ERP&#xff09;系统和生产现场之间的信息桥梁。在本文中&#xff0c;我们将探讨在制造过程中实施MES管理系统时需要考虑的几个关键因素。 首先&…

【漏洞复现】金和OA C6任意文件读取漏洞

漏洞描述 金和OA协同办公管理系统C6软件共有20多个应用模块&#xff0c;160多个应用子模块&#xff0c;涉及的企业管理业务包括协同办公管理、人力资源管理、项目管理、客户关系管理、企业目标管理、费用管理等多个业务范围&#xff0c;从功能型的协同办公平台上升到管理型协同…