如何逐帧跟踪检测到的对象

信息处理 计算机视觉 人脸检测 视觉跟踪
2022-02-18 19:28:58

我想跟踪视频流中的人脸(如安全摄像头),但我遇到了问题。我正在使用 Haar 分类器来查找人脸并将检测到的人脸发送到系统以识别被检测到的人(这样我就可以在人脸下显示他们的名字)。问题是识别一个人需要一秒钟以上的时间,太慢而且没有必要在每一帧都进行,因为同一个人往往会留下来。

  • 什么是逐帧跟踪人员的好方法?我正在考虑存储每个人的方法,然后在下一帧中试图找到检测到的与他们所在位置非常接近的人脸,但这并不能很好地工作,因为人脸可以跳过帧,移动超出我的预期,或者“跳跃”面临交换谁是谁。

  • 有没有公​​认的方法来解决这个问题?

  • 有什么方法可以克服这个问题?
1个回答

正如您所注意到的,对象检测是一项相对繁重的任务。在每一帧中检测对象(在您的情况下为人脸)将是繁琐且计算量巨大的。因此,您需要采用对象跟踪技术。跟踪算法有很多种,其中,KLT 和 mean-shift 是两种比较流行的算法。KLT 基于对象特征(角,..)工作,但均值偏移(通常)是基于图像强度实现的。就个人而言,我建议为您的应用程序使用均值偏移,因为我认为在图像序列中面部颜色会比面部的一般特征(角、边缘、..)更独特。您可能需要添加的唯一一件事是通过您的对象检测算法验证跟踪器,每 50 帧以确保跟踪器的良好功能。

有关实现,请参见:

http://opencv-python-tutroals.readthedocs.io/en/latest/py_tutorials/py_video/py_meanshift/py_meanshift.html

均值偏移

http://www.pyimagesearch.com/2015/09/14/ball-tracking-with-opencv/