目标跟踪问题定义
目标跟踪分为密集跟踪(a series detections)和稀疏跟踪(estimation+common sense)。前者本质上对每一帧进行检测,需要更大的计算量,实时性差。所以,一般目标跟踪问题都是指的稀疏跟踪:对检测目标位置进行估计,处理估计位置附近的像素区域,得到待跟踪区域的精确位置,实时性较强。
目标跟踪算法简述
传统目标跟踪算法按照建模方式的区别分为生成式模型和判别式模型两类(前者对输入输联合分布进行建模,后者直接根据输入输出关系进行拟合,后者可解释性更差,但是一般效果更好)。
生成式模型
常见的生成式模型:
- LK光流:假定目标灰度在短时间内保持不变,同时目标领域内的速度向量场变化缓慢
- KLT:通过匹配角点(或者颜色,外形或者更复杂的特征)实现目标的跟踪
- L1跟踪器:把跟踪看做一个稀疏近似问题,通过求解L1范数最小化实现对目标的跟踪。
- SIFT/SURF/MESR等局部特征来描述物体,实现目标的跟踪
- 卡尔曼/粒子滤波/meanshif等各类滤波器:根据观测值进和状态转移方程进行位置预测
判别式模型
- 线性判别分析:利用线性判别分析自适应地选择对当前背景和目标最具区分力的颜色特征,分出目标,之上随后引入各类分类器
- 采用支持向量机和AdaBoost等机器学习方法区分背景和目标。
- Harr+Boosting
- TLD:在线Ferns检测目标,在线随机森林算法进行目标跟踪
- Struck算法:利用结构化的支持向量机SVM直接输出跟踪目标
- 回归判别模型:
回归模型的思路:基于原始目标位置p附近进行采样,训练回归器(采用HOG或者其他局部特征),能够计算小窗口采样的响应。利用当前帧回归器计算计算下一帧p附近的采样的响应,响应最强的采样作为本帧的位置。
- KCF:详情参考KCF解析,KCF的特点是采用样本循环移位来代替采样(通过排列矩阵相乘实现),目的是进行加速。其中的算法技巧包括:核空间的岭回归将分类器的非线性问题转为线性问题,通过循环矩阵进行傅里叶变换,将原始转换的时间复杂度从o4->o3。
深度学习方法
详情参考:基于深度学习的视频目标检测综述
- T-CNN:基于时间序列管道实现目标检测、跟踪框架,具体分为管道提取模块和管道分类以及重打分模块
- Flow-Guided Feature Aggregation:基于Flownet提取光流,实现相邻帧的光流特征的融合,最后进行aggregation得到检测结果
- Association LSTM:将相邻帧的特征进行stack然后通过LSTM(两层)进行时序特征下的检测框回归
- Aligned Spatial-Temporal Memory:与LSTM的优势咸鱼其为双向的循环卷积网络,能够利用前后更多帧数。
- MANet:同步提取深度特征和相邻的帧的光流特征,实现了深度特征和光流特征的校准(像素级别和实例级别)