基于孪生卷积网络(Siamese CNN)和短时约束度量联合学习的tracklet association方法
基于孪生卷积网络(Siamese CNN)和短时约束度量联合学习的tracklet association方法
读 'B. Wang, L. Wang, et.al. Joint Learning of Siamese CNNs and Temporally Constrained Metrics for Tracklet Association[j], arXiv:1605.04502v2 [cs.CV] 25 Sep 2016'笔记
这篇文章主要提出了一种借助孪生卷积网络的度量学习方法,用以提升tracklet association 的性能。另外文章还给出了一个具有40段标注序列的数据集。
该方法的主要框架如下:

对于一段待跟踪的视频数据,首先使用pre-trained检测子检测出每一帧中的目标。然后使用dual-threshold strategy [1]生成一些比较可靠的小轨迹段。这段过程和基于层次关联的鲁棒多目标跟踪方法类似。接下来使用一些辅助数据预训练孪生cnn网络。然后将预训练得到的孪生卷积网络与短时约束度量结合训练出分别适用于每个轨迹段的度量矩阵,最后通过使用对应的度量矩阵计算轨迹片段之间的相似关系,再利用softassign 算法关联对应的轨迹片段以期得到更长的轨迹段。
Siamese CNN

siamese CNN共享参数。上图给处了孪生CNN中任一个CNN的结构,首先对于一幅待输入的图像,缩放到
大小传递给CNN,CNN包含5层(2个卷积层、2个池化层和1个全连接层)。卷积层和池化层的通道数都是96(即卷积模板有96种),最终的输出层是512维向量。卷积层C1和C2滤波器的大小分别是
和
,在每个池化层包含cross-channel normalization操作。卷积方式:zero padding, 激活函数 ReLu。
损失函数
使用马氏距离刻画样本将的相似性
,
是半正定矩阵。
这个时候不考虑时间上的差异性,也就是说所有的轨迹片段都用同一个度量矩阵
的条件下,得到损失函数

其中
是正则化系数,
是经验损失函数的权重,
是决策边界,
是示性函数
,第一项
是正则项,希望样本各向同性,即马氏距离接近于欧氏距离。
考虑到,目标的表观特性随着时间变化也发生显著变化,如上使用同一个度量函数显然并不合适,所以文章中将度量矩阵分为两类:一类是整个视频序列时间段内公用的,反映通用的鉴别信息;另一类是针对于小段时间内的度量矩阵,反映的是特异性。而且考虑到短时约束(时间上相近的sequences应该具有相似的信息),所以损失函数可以定义如下:

写到这里忽然想起一件事,我们使用Siamese CNN不是用来获得tracklets的度量的嘛,为什么输入的是图像而不是轨迹呢?这是因为文章中使用的是具有代表性的图像来表示对应的轨迹,后面会进一步介绍,这里提一下是为了更好理解损失函数。
上面公式中
是正则化系数,第一项表示公共度量矩阵的正则化限制,第三项是对每一个单独度量矩阵的正则化约束,第二项是temporally constraints,第四项时经验损失函数,定义如下:

为什么这里
,而
,我觉得是因为希望
。
Temporally Constraint如下图所示

在执行时,使用
初始化
.
使用BP算法调整网络参数,先对
求梯度,然后将该梯度传递给CNN,调整CNN的连接参数。(3)式对
求导

那么对于两个CNN总的梯度为

是示性函数。
对
的梯度调整:

其中
对应的更新策略:

是学习步长。
训练样本
在每个tracklets中选择
个可信度较高的measurements,然后随机选择2个配对,组成正样本和负样本进行训练,下面的算法1给出了度量矩阵更新的过程,至于CNN的训练就直接按照通用训练方法。

算法里面有一个需要注意的地方就是对
的正定投影,保证M的半正定性。这个可以通过SVD分解,对奇异值滤波实现。
Tracklet Association
轨迹片段的关联可以形式化为如下形式:

表示关联关系,这里没要求行列和为0,是因为存在全不关联的情形
分别是基于运动模型和基于表观模型的相似性

这里参见层次关联的鲁棒多目标跟踪算法.
对于基于表观的相似性,首先在每一个tracklet中选取一个执行读最高的measurement作为代表,组成探针集
,
是该段时间内的tracklets个数,那么

其中
表示tracklet
的第k个观测值,
分别表示对应轨迹上观测值的个数
这里需要特别注意的是:1.
不是对称计算的;2. normalization过程中并不是时间上的规范化,而是与所有tracklets相似性上的规范化。
得到了相似矩阵P,为了进一步实现关联的快速精确收敛,对P进行部分约束

然后再进行列归一化。
可以使用匈牙利算法对上述分配问题求解,求解之后关联tracklet之间可能存在gap,这个时候采用linear interpolation进行连接。
Experiments
文章中给出了新的benchmark数据集,但我没有找到网址,所以这里就不说了,我们就来看看在已有的一些benchmark上,该方法的性能如何
为了对比所提算法中每一个component(pre-trained Siamese CNN, Temporal Constraint metric等)的有效性,设置了几个baseline
baseline1:Siamese CNN的参数是独立学习的,即没有经过Temporal Constraint Metric的微调阶段,损失函数使用(2)式,且其中M=I,即欧氏距离。然后训练M,不使用
即(2)式作为loss function。验证Joint learning的有效性。
baseline2:使用(2)式作为损失函数,同时训练Siamese CNN和M,可以验证Temporally Constraint Metric的有效性。
baseline3: Siamese CNN is pretrained且不进行微调,验证微调的有效性
baseline4: 不使用
这一项,验证common metric的有效性
在PETS 2009数据集上的结果如下

在MOTChallenge 2015数据集上与当前公布代码的教新的方法对比结果如下

可以发现,文章提出的算法性能还是可以的。
Computational speed:
工具:MatConvNet toolbox, 2.6GHz CPU, Tesla K20c GPU
速度:0.38,0.55(sec/frame) for PETS 2009 and MOTChallenge 2015.
基于孪生卷积网络(Siamese CNN)和短时约束度量联合学习的tracklet association方法的更多相关文章
- 语义分割--全卷积网络FCN详解
语义分割--全卷积网络FCN详解 1.FCN概述 CNN做图像分类甚至做目标检测的效果已经被证明并广泛应用,图像语义分割本质上也可以认为是稠密的目标识别(需要预测每个像素点的类别). 传统的基于C ...
- 深入学习卷积神经网络(CNN)的原理知识
网上关于卷积神经网络的相关知识以及数不胜数,所以本文在学习了前人的博客和知乎,在别人博客的基础上整理的知识点,便于自己理解,以后复习也可以常看看,但是如果侵犯到哪位大神的权利,请联系小编,谢谢.好了下 ...
- 基于pycaffe的网络训练和结果分析(mnist数据集)
该工作的主要目的是为了练习运用pycaffe来进行神经网络一站式训练,并从多个角度来分析对应的结果. 目标: python的运用训练 pycaffe的接口熟悉 卷积网络(CNN)和全连接网络(DNN) ...
- 卷积网络训练太慢?Yann LeCun:已解决CIFAR-10,目标 ImageNet
原文连接:http://blog.kaggle.com/2014/12/22/convolutional-nets-and-cifar-10-an-interview-with-yan-lecun/ ...
- visualization of filters keras 基于Keras的卷积神经网络(CNN)可视化
https://adeshpande3.github.io/adeshpande3.github.io/ https://blog.csdn.net/weiwei9363/article/detail ...
- 深度学习项目——基于卷积神经网络(CNN)的人脸在线识别系统
基于卷积神经网络(CNN)的人脸在线识别系统 本设计研究人脸识别技术,基于卷积神经网络构建了一套人脸在线检测识别系统,系统将由以下几个部分构成: 制作人脸数据集.CNN神经网络模型训练.人脸检测.人脸 ...
- 【GCN】图卷积网络初探——基于图(Graph)的傅里叶变换和卷积
[GCN]图卷积网络初探——基于图(Graph)的傅里叶变换和卷积 2018年11月29日 11:50:38 夏至夏至520 阅读数 5980更多 分类专栏: # MachineLearning ...
- 深度学习基础-基于Numpy的卷积神经网络(CNN)实现
本文是深度学习入门: 基于Python的实现.神经网络与深度学习(NNDL)以及动手学深度学习的读书笔记.本文将介绍基于Numpy的卷积神经网络(Convolutional Networks,CNN) ...
- Deeplearning 两层cnn卷积网络详解
https://blog.csdn.net/u013203733/article/details/79074452 转载地址: https://www.cnblogs.com/sunshineatno ...
随机推荐
- 对于C语言复杂指针类型的分析
转载自:http://www.slyar.com/blog/complicated-point-type.html int p; p是一个普通的整型变量. int *p; 1.p与*结合,说明p是一个 ...
- spark 官方文档(1)——提交应用程序
Spark版本:1.6.2 spark-submit提供了在所有集群平台提交应用的统一接口,你不需要因为平台的迁移改变配置.Spark支持三种集群:Standalone.Apache Mesos和Ha ...
- SEO之title优化
作者:andyrat,联系方式:andyrat@qq.com
- MySQL 磁盘I/O问题
一.使用磁盘阵列:RAID,廉价磁盘冗余阵列,可靠性,性能好. 二.使用 Symbolic Links 分布I/O 利用操作系统的符号链接将不同的数据库或表.索引指向不同的物理磁盘,达到分布磁盘I/O ...
- webstorm快捷键大全
使用webstorm一段时间了,这里分享一下常用到的快捷键,不用死记,孰能生巧! Ctrl+/ 或 Ctrl+Shift+/ 注释(// 或者/*-*/ ) Shift+F6 重构-重命名 Ctrl+ ...
- -bash: fork: retry: Resource temporarily unavailable
登陆不了服务器The server refused to start a shell. 登陆服务器后执行ls命令报错: 1 2 $ls -bash: fork: retry: Resource t ...
- appium实现截图和清空EditText
前些日子,配置好了appium测试环境,至于环境怎么搭建,参考:http://www.cnblogs.com/tobecrazy/p/4562199.html 知乎Android客户端登陆:htt ...
- js_闭包
先从闭包特点解释,应该更好理解.闭包的两个特点:1.作为一个函数变量的一个引用 - 当函数返回时,其处于激活状态.2.一个闭包就是当一个函数返回时,一个没有释放资源的栈区.其实上面两点可以合成一点,就 ...
- maven学习(中)- 私服nexus搭建
接上回继续,相信大家对maven每次都联网从国外站点下载依赖项的龟速网络已经不坎忍受了,今天先来看看如何搭建"仓库私服",目前nexus是使用比较广泛的私服软件之一,下面将介绍基本 ...
- .net MVC 简单图片上传
主要完成的是在网页上 上传一张图片到服务器 我搜出来的上传文件代码都特别复杂,对于初学者来说,先解决能上传的问题才最重要,并不需要特别多的功能,仅适合不会上传的初学者,大神请绕路,错误请指出,谢谢 v ...