我正在尝试运行来自GitHub 项目的每个对象计数应用程序,使用排序算法。由于特定的错误,我无法运行它们中的任何一个,并附上了错误截图。有人能帮我修复这个问题吗?
我正在尝试运行来自GitHub 项目的每个对象计数应用程序,使用排序算法。由于特定的错误,我无法运行它们中的任何一个,并附上了错误截图。有人能帮我修复这个问题吗?
linear_assignment
函数在0.21版本已经弃用,在0.23版本将被移除,但是sklearn.utils.linear_assignment_
可以被替换为scipy.optimize.linear_sum_assignment
。
您可以使用以下代码:
from scipy.optimize import linear_sum_assignment as linear_assignment
你可以直接运行该文件,无需更改代码。
pip install scikit-learn==0.22.2
scipy.optimize.linear_sum_assignment
并不是 完美的替代品:
我担心 linear_sum_assignment 不等同于 linear_assignment,后者实现了“最大值”匹配策略而不是“完全匹配”策略,即在跟踪问题中,可能会丢失一个旧的标志性点并出现一个新的检测。我们不需要进行完整的分配,只需要尽可能地匹配。
在尝试将其放入基于 SORT 的 yolo 跟踪代码中时,我已经发现这一点,替换后代码出了问题(我很幸运,否则我将从实验中得到错误的结果而没有意识到……)
相反,我建议将模块本身复制到 sklearn 的最新版本中,并包含在你的代码中。
https://github.com/scikit-learn/scikit-learn/blob/0.22.X/sklearn/utils/linear_assignment_.py
例如,如果你将此文件复制到一个 utils
目录中,则可以使用 from utils.linear_assignment_ import linear_assignment
引入它。
pip
安装 lap
和可选的 scipy
;def linear_assignment(cost_matrix):
try:
import lap
_, x, y = lap.lapjv(cost_matrix, extend_cost=True)
return np.array([[y[i], i] for i in x if i >= 0])
except ImportError:
from scipy.optimize import linear_sum_assignment
x, y = linear_sum_assignment(cost_matrix)
return np.array(list(zip(x, y)))
scikit-learn
的问题,与deep-learning
、yolo
或者object-detection
没有任何关系 - 请勿添加无关的标签。 - desertnaut