【问题标题】:CSRT algorithm not updating targetCSRT 算法不更新目标
【发布时间】:2019-07-14 01:51:21
【问题描述】:

我正在使用 OPENCV 内置跟踪器 CSRT 进行对象检测和跟踪,我发现它最适合使用,但我在这里有疑问,当目标超出框架时,它仍然在目标出现时他跟踪的最后一个位置有一个边界框回到框架它不会跟踪它。从 OPENCV 文档中我知道这是短期跟踪器,但是有什么方法可以知道目标现在不在框架中我使用了这个命令

success, boxes = multiTracker.update(frame)
print("Success",success)

知道它是否会生成 false 但不会。我必须使用此算法进行实时跟踪。此外,我不愿意使用 Yolo 或 TF 等高级 ML 库,所以如果有人可以提供帮助或提供更好的跟踪器。

【问题讨论】:

    标签: python opencv image-processing video-tracking


    【解决方案1】:

    我还在使用 openCV (C++) 的 CSRT 跟踪器。 在我看来,你有两个选择:

    1) 您可以编写一个算法来检测对象是否仍在边界框中。为此,您可以从 openCV 的跟踪模块(参见 CSRTImpl::estimate_new_position)的 trackerCSRT.cpp 中实现的方法中获取灵感。在这个函数中,params.psr_threshold 表示被跟踪对象丢失或不丢失的阈值。因此,如果您编写类似的算法,您将能够确定您的对象是否不在您的边界框中(在此算法中,psr_threshold

    2) 我推荐的第二个选项是使用函数 CSRT::create(const CSRT::Params &parameters) 初始化您的 CSRT 跟踪器,并将更高的值传递给 psr_threshold(例如 0.1)以便拥有跟踪器哪个更敏感。在这种情况下,您的跟踪器不会继续跟踪空白区域,而是会返回 false(目标丢失),这已经是一种改进。 根据您的应用程序,您将需要实施一些措施以在视频中再次找到目标。现在,这称为长期跟踪。

    祝你好运

    【讨论】:

    • 你能在 python 中找到这个吗?
    • 根据文档,CSRT::create(const CSRT::Params &parameters) 的 python 等效函数是 retval = cv.TrackerCSRT_create( ) 所以你不能在 Python 中使用自己的参数进行初始化。这意味着解决方案 2 对您不起作用。解决方案是在 Python 中编写一个算法来检测跟踪器何时丢失了目标(通过从 C++ 算法中获得灵感,但它很长,并且不确定你是否拥有 Python 中可用的所有函数来执行此操作)。抱歉,openCV Python 中跟踪器的实现是有限的!
    猜你喜欢
    • 2021-10-13
    • 1970-01-01
    • 2016-12-03
    • 1970-01-01
    • 1970-01-01
    • 2013-04-06
    • 2012-07-20
    • 2012-12-04
    • 1970-01-01
    相关资源
    最近更新 更多