这篇笔记主要是对今年ECCV2016上的论文:POI:Multiple Object Tracking with High Performance Detection and Appearance Feature 进行整理. 这篇文章的基本思路是在每帧上用检测器检测行人位置,在每帧之前利用行人检测框的表观特征(Appearance Feature)进行前后帧行人框的匹配,从而实现对行人的跟踪.所以这篇文章的算法算是Tracking by Detection.这篇文章在行人检测器和表观特征提取两处均使用了基于深度学习的方法.并达到了较好的效果.作者给这个跟踪算法起了个叫POI:Person of Interest.

行人检测

一个准确的行人检测器对于跟踪有很大的帮助.POI中使用检测器信息如下:
* 模型:Faster RCNN
* 数据库:使用了多个数据库.包括ImageNet, ETHZ pedestrain dataset, Caltech pedestrain dataset 以及作者自己准备的数据集(接近40w个样本,但并没有公开).
* 策略:作者额外使用了skip pooling [参考文献1]和multi-region[参考文献2]这两个策略提高检测器的效果.

作者在MOT16 train set上对比了Faster RCNN 和 DPM的效果对比.其中添加了skip pooling和multi-region两个策略的Faster RCNN获得了最好的综合效果,如下图所示.

表观特征(Appearance Feature)

表观特征是用来计算行人图像框之间的相似度的.在用理想的表观特征计算时,来自相同个体的图像框的相似度应该很大,而来自不同个体的图像框的相似度应该很小.从而能够通过相似度确定图像框集合之间的对应关系.
* 模型:GoolgeNet的修改版本,输入尺寸为96 * 96,pool5的kernel size从7 * 7换成了3 * 3
* 训练数据:多个person re-id datasets:包括PRW,Market-1501,VIPeR,CUHK03. 包括来自19835个个体的119000对左右patches.
* 训练方法:同时使用softmax和triplet loss. softmax loss用来提高表观特征的区分度, triplet loss 用来保证同个个体的表观特征距离较小
* 相似度计算: 通过特征的余弦距离计算相似度, 余弦距离即计算两个向量夹角的余弦值.完全相关时为1,完全无关时为0

在线跟踪器(Online Tracker)

以上即为POI中在线跟踪器的算法,其中输入和输出为:
* 输入信息:t时刻的图像帧,t时刻图像帧上的检测框集合DtD^t,以及t-1时刻的跟踪框集合Tt−1T^{t-1}
* 输出信息:t时刻的跟踪框集合TtT^t
在Online Tracker中, POI使用Kalman Filter [参考文献3]做动作预测, Kuhn-Munkres 算法[参考文献4]做数据对应(即两个行人框集合之间的对应)

相似矩阵构建(Affinity Matrix Construction)

Kuhn-Munkres算法需要构建相似矩阵来进行两个集合之间的对应,相似矩阵中的元素即两个集合对应数据的相似度. POI中集合了运动,形状,表观特征来计算跟踪集和检测集之间的相似度.其中表观特征即上面讨论的用深度学习模型提取的特征.

affapp(trki,detj)=cosine(feattrki,featdetj)

\begin{aligned} \textit{aff}_{app}(trk_{i},det_{j})= cosine(feat_{trk_{i}},feat_{det_{j}}) \end{aligned}

affmot(trki,detj)=e−w1∗((Xtrki−XdetjWdetj)2+(Ytrki−YdetjHdetj)2)

\begin{aligned} \textit{aff}_{mot}(trk_{i},det_{j})= e^{-w_1 * ((\frac{X_{trk_{i}}-X_{det_{j}}}{W_{det_{j}}})^2+(\frac{Y_{trk_{i}}-Y_{det_{j}}}{H_{det_{j}}})^2)} \end{aligned}

affshp(trki,detj)=e−w2∗(|Htrki−Hdetj|Htrki+Hdetj+|Wtrki−Wdetj|Wtrki+Wdetj)

\begin{aligned} \textit{aff}_{shp}(trk_{i},det_{j})= e^{-w_2 * (\frac{|H_{trk_{i}}-H_{det_{j}}|}{H_{trk_{i}}+H_{det_{j}}} + \frac{|W_{trk_{i}}-W_{det_{j}}|}{W_{trk_{i}}+W_{det_{j}}})} \end{aligned}

affinity(trki,detj)=affapp(trki,detj)∗affmot(trki,detj)∗affshp(trki,detj)

\begin{aligned} \textit{affinity}(trk_{i},det_{j})= \textit{aff}_{app}(trk_{i},det_{j}) * \textit{aff}_{mot}(trk_{i},det_{j}) * \textit{aff}_{shp}(trk_{i},det_{j}) \end{aligned}
affappaff_{app}, affmotaff_{mot}和 affshpaff_{shp}分别对应表观,运动和形状相似度. w1w_1和 w2w_2 为权重参数.

数据对应(Data Association)

跟踪集和检测集的对应使用 Kuhn-Munkres 算法进行. 由于 Kuhn-Munkres 算法倾向于寻找全局最优结果, 因此当一些检测框缺失时可能会出现问题.所以POI算法中使用了两阶段方法, 将检测集合根据分数分为高质量和低质量两部分.先对高质量部分的跟踪框与检测框做对应.然后将成功对应的框对从跟踪和检测集合中去除出去,再对剩下的低质量部分进行对应.

跟踪质量评价标准(Tracking Quality Metric)

POI论文中使用以下公式定义跟踪的质量:

Quality(trackleti)=∑k∈couples(trackleti)affinityklength(trackleti)(1−e−w3∗length(trackleti)√)

\begin{aligned} Quality(tracklet_i) = \frac{\sum _{k \in couples(tracklet_i)}^{}{\textit{affinity}_k}}{length(tracklet_i)}(1 - e^{-w_3 * \sqrt{length(tracklet_i)}}) \end{aligned}

离线跟踪器(Offline Tracker)


离线跟踪器即将整段视频作为输入,跟踪结果作为输出,具体而言:
* 输入信息:待处理视频以及其每帧上的检测框
* 输出信息:跟踪结果(即目标的轨迹)
POI中的离线跟踪器是H2TH^2T 算法[参考文献]的改进. 由于我自己用不到离线跟踪器的算法,故这块没有细看,有兴趣的话可以看论文原文.

效果

从下表可以看出,POI的效果还是很好的

个人讨论-如何实现一个实时/准实时多目标跟踪器

这篇文章的主要的两块内容—高性能行人监测器和表观特征提取器都是可以替换的,可以通过改进这两个方面来提高算法速度(注:这样效果可能下降,但此处讨论均基于如何提高算法实时性进行)

行人检测器部分

文章中使用的是faster rcnn, 虽然faster rcnn 速度比fast rcnn提高了不少,但研究不能满足实时运行的需求.所以此处可以将检测器替换为300*300 的SSD[参考文献5]模型.可以达到30fps左右的速度.

表观特征部分

由于需要在每个检测框和跟踪框上提取表观特征,所以这部分的计算量是比较大的.此处我认为有两个途径:
1. 裁剪网络:在知乎上请教了一下作者,他表示通过裁剪网络,可以将单个图像框的处理时间降低到1ms以下,这个速度我觉得是可以满足需求的.具体方法是先裁剪网络并测试速度,待获得速度满足要求的网络后再开始训练模型.
2. 度量学习:特征方面直接使用简单的颜色直方图特征(或是HOG之类的).然后用度量学习的方法学习度量距离函数.这样做的速度应该会比深度学习方法快,但效果可能较差(猜测).

参考文献

[1] Bell, S., Zitnick, C.L., Bala, K., Girshick, R.B.: Inside-outside net: Detecting objects in context with skip pooling and recurrent neural networks. CoRR (2015)
[2] Gidaris, S., Komodakis, N.: Object detection via a multi-region and semantic segmentation-aware CNN model. In: ICCV (2015)
[3] Kalman, R.E.: A new approach to linear filtering and prediction problems. Journal
of Basic Engineering (1960)
[4] Kuhn, H.W.: The hungarian method for the assignment problem. Naval research
logistics quarterly (1955)
[5] Liu W, Anguelov D, Erhan D, et al. SSD: Single Shot MultiBox Detector[J]. arXiv preprint arXiv:1512.02325, 2015.

计算机视觉-论文阅读笔记-基于高性能检测器与表观特征的多目标跟踪相关推荐

  1. 论文阅读笔记——基于CNN-GAP可解释性模型的软件源码漏洞检测方法

    本论文相关内容 论文下载地址--Engineering Village 论文阅读笔记--基于CNN-GAP可解释性模型的软件源码漏洞检测方法 文章目录 本论文相关内容 前言 基于CNN-GAP可解释性 ...

  2. 图像处理与计算机视觉-论文阅读笔记

    题 目:Residual Networks for Light Field Image Super-Resolution 作 者:Shuo Zhang, Youfang Lin, Hao Sheng ...

  3. 基于移动最小二乘法的曲线曲面拟合论文阅读笔记

    基于移动最小二乘法的曲线曲面拟合论文阅读笔记 论文地址:http://www.cnki.com.cn/Article/CJFDTotal-GCTX200401016.htm 一.Problem Sta ...

  4. 2019 sample-free(样本不平衡)目标检测论文阅读笔记

    点击我爱计算机视觉标星,更快获取CVML新技术 本文转载自知乎,已获作者同意转载,请勿二次转载 (原文地址:https://zhuanlan.zhihu.com/p/100052168) 背景 < ...

  5. 论文阅读笔记(五)——狐猴识别系统:一种便于狐猴个体识别的面部识别系统

    论文阅读笔记(五)--狐猴识别系统:一种便于狐猴个体识别的面部识别系统 论文简介 论文中文翻译:狐猴识别系统:一种便于狐猴个体识别的面部识别系统 论文名称:<LemurFaceID: a fac ...

  6. 论文阅读笔记《USAC: A Universal Framework for Random Sample Consensus》

      本文总结了RANSAC算法的流程与存在的问题,整理了近几年基于RANSAC提出的改进算法,并整合各个算法的优势,提出一个统一的RANSAC算法框架.因此本文也可以看做是一片关于RANSAC算法的论 ...

  7. 论文阅读笔记:Improving Attacks on Speck32 / 64 using Deep Learning

    论文阅读笔记:Improving Attacks on Speck32 / 64 using Deep Learning 本文通过神经网络利用了减少轮数的 Speck 的差分性质.为此,作者对神经网络 ...

  8. Finging tiny faces论文阅读笔记

    <Finding Tiny Faces>论文阅读笔记 基础知识 CNN(卷积神经网络) Resnet(深度残差学习网络) NMS(非极大值抑制) 论文翻译(粗翻) 摘要 介绍 Multi- ...

  9. Learning Multiview 3D point Cloud Registration论文阅读笔记

    Learning multiview 3D point cloud registration Abstract 提出了一种全新的,端到端的,可学习的多视角三维点云配准算法. 多视角配准往往需要两个阶段 ...

最新文章

  1. 【BZOJ】3542: DZY Loves March
  2. import export php,import与export在node.js中的使用方法
  3. 2022年美国大学生数学建模竞赛——Problem E:林业固碳
  4. Lambda-函数式接口(1)
  5. 5G NR RLC:Data Transfer ARQ
  6. Excel 数据分析技巧
  7. BZOJ3298[USACO 2011Open]cow checkers——威佐夫博弈
  8. 数据结构实验之图论九:最小生成树_初高中数学竞赛训练----图论初步2
  9. C++各个算数类型占用的字节数
  10. C++20协程原理和应用
  11. Windows网络服务---DHCP服务
  12. PyQt5-多窗口数据传输
  13. vue实现滑块拖拽校验
  14. Java面试题及答案整理 2022 年 8 月最新版
  15. Windows下 使用Python 3 调用讯飞 TTS 引擎实现文本转语音
  16. python回复qq信息_python脚本实现QQ自动发送、回复消息机器人
  17. 5分绩点转4分_5分绩点转4分
  18. 滴滴出行DIDI美国IPO上市路演PPT:Roadshow Presentation
  19. App变现之Admob原生广告
  20. 转运RNA(tRNA)甲基化修饰7-甲基胞嘧啶(m7C)|tRNA-m7G

热门文章

  1. 一文了解美团团节社等及分佣机制
  2. 基于ZYNQ的开源CANopen协议栈CANFestival移植
  3. CANOPEN 协议 命令字
  4. 阴阳师手游如何用云手机无限多开换IP防封
  5. 【赠书福利】人工智能发展的三驾马车
  6. c++ 随机生成数独(不保证唯一解)
  7. 【项目小结】爬虫学习进阶:获取百度指数历史数据
  8. 按群计数10以内_按数群计数教案
  9. 密集预测任务的多任务学习(Multi-Task Learning)研究综述 - 网络结构篇(上)
  10. git 多人在同一分支上迭代开发时,如何保证分支提交历史保持线性