TLD跟踪算法介绍
共 1953字,需浏览 4分钟
·
2022-05-16 08:12
点击上方“小白学视觉”,选择加"星标"或“置顶”
重磅干货,第一时间送达
TLD跟踪算法介绍
TLD(Tracking-Learning-Detection)是一种长时视频对象跟踪算法,首先要在视频一帧中指明对象位置,Tracking完成在视频的每一帧中跟踪对象;Dtection完成对象外形与轮廓最小化塑造,需要时用来修正跟踪对象; Learning完成对Detection的量化评估,通过机器学习方法来减低与避免Detection再发生类似错误,常用为P-N 专家学习方法,P是负责估算漏检测模型、N是负责虚警率模型估算。以上几个就是TLD算法简单概述。下面是TLD算法的相关细节。
跟踪(Tracking)
长时跟踪算法常见的有两种方法一种是基于移动跟踪,另外一种是基于对象检测,一般来说基于对象检测的算法计算耗时都会比基于跟踪的算法长。跟踪主要是通过算法来预测对象移动,一般来说跟踪需要一个初始化标定,然后就会很快速的计算得到移动对象的平滑轨迹,另外一方面跟踪容易导致每帧之间都会产生累积误差,最终的结果就是导致算法错误而让跟踪对象跑出相机可视范围之内。对象跟踪主要任务是预估对象移动,常见的方法有基于光流、轮廓、关键特征点、人工模型等。常见的对象跟踪方法有两类
基于连续帧的对象移动
模板跟踪,其中模板有可以分为静态与自适应模板两种
检测(Detection)
TLD时候工作的对象检测方法常见的有两种
局部图像特征。基于特征的方法主要是分为如下三个子步骤
基于特征的方法,要求首先知道跟踪对象的几何位置
基于滑动窗口
基于滑动窗口的方法对输入每帧图像进行不同窗口尺寸的扫描,检测每个窗口下覆盖图像区域(Patch)是否包含待检测目标。为了达到实时检测的效果,滑动窗口通常采用级联分类策略与积分图快速计算方法。通常图像中背景窗口数目远远大于对象窗口数目,级联分类器通过不同Stage在早期拒绝超过大多数的背景区域,对剩下的区域(Patch)进行更加深入的特征匹配实现对象分类。基于级联分类器方法都要求离线或者在线的一定数量样本训练,然后才可以使用。
学习(Learning)
可以将跟踪数据分类提供给检测器,用来提供下一帧的跟踪精度,同时还可以重新初始化检测器,从而避免跟踪过程频繁失败的情况发生。学习方法应该满足如下条件
当跟踪失败时候,要处理相应的视频流帧图像
绝对不能在视频帧中没有跟踪对象的情况下降低检测精度
满足实时计算条件
对象学习的方法分为两类
机器学习(Machine Learning)常见的方法有EM、Self-Learning、Co-Training等半监督学习方法。
P-N学习(P-N Learning),是一种现在学习方法,目的是提供TLD过程中的检测环节性能,在每帧视频流中,通过估算当前的检测准确率与错误率,然后更新检测器,避免错误的进一步发生。
总结与更多信息
跟TLD关系最密切的一个跟踪算法是Median Flow跟踪算法,而这两个算法的作者拥有同一个作者(Zdenek Kalal),TLD跟踪阶段常见的是基于光流或者Median Flow实现。OpenCV3.1.0在扩展模块中有TLD与Median Flow跟踪算法实现,此外OpenTLD是个开发源代码的c++ TLD算法库,想进一步研究的可以去深入读一下。TLD最适合在跟踪对象被遮挡,不连续出现情况下,进行长时跟踪的应用场合。
下载1:OpenCV-Contrib扩展模块中文版教程 在「小白学视觉」公众号后台回复:扩展模块中文教程,即可下载全网第一份OpenCV扩展模块教程中文版,涵盖扩展模块安装、SFM算法、立体视觉、目标跟踪、生物视觉、超分辨率处理等二十多章内容。 下载2:Python视觉实战项目52讲 在「小白学视觉」公众号后台回复:Python视觉实战项目,即可下载包括图像分割、口罩检测、车道线检测、车辆计数、添加眼线、车牌识别、字符识别、情绪检测、文本内容提取、面部识别等31个视觉实战项目,助力快速学校计算机视觉。 下载3:OpenCV实战项目20讲 在「小白学视觉」公众号后台回复:OpenCV实战项目20讲,即可下载含有20个基于OpenCV实现20个实战项目,实现OpenCV学习进阶。 交流群
欢迎加入公众号读者群一起和同行交流,目前有SLAM、三维视觉、传感器、自动驾驶、计算摄影、检测、分割、识别、医学影像、GAN、算法竞赛等微信群(以后会逐渐细分),请扫描下面微信号加群,备注:”昵称+学校/公司+研究方向“,例如:”张三 + 上海交大 + 视觉SLAM“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进入相关微信群。请勿在群内发送广告,否则会请出群,谢谢理解~