【机器视觉】目前经典的目标跟踪算法、基于视频的行为识别技术、深度学习与视觉计算

2018 年 7 月 31 日 产业智能官

作者:YaqiLYU
链接:https://www.zhihu.com/question/26493945/answer/156025576 
来源:知乎


相信很多来这里的人和我第一次到这里一样,都是想找一种比较好的目标跟踪算法,或者想对目标跟踪这个领域有比较深入的了解,虽然这个问题是经典目标跟踪算法,但事实上,可能我们并不需要那些曾经辉煌但已被拍在沙滩上的tracker(目标跟踪算法),而是那些即将成为经典的,或者就目前来说最好用、速度和性能都看的过去tracker。我比较关注目标跟踪中的相关滤波方向,接下来我帮您介绍下我所认识的目标跟踪,尤其是相关滤波类方法,分享一些我认为比较好的算法,顺便谈谈我的看法。


1.图片来自某些slides和paper,如有侵权请提醒删除。

2.以下内容主要是论文的简单总结,代码分析和个人看法,不涉及任何公司内部资料。

3.转载请注明出处,谢谢。

4.如有错误欢迎指出,非常感谢。有问题可以私信我,也可以在评论区提出,时间有限但也都会尽量回复,同时感谢各位道友帮忙解答。


第一部分:目标跟踪速览


先跟几个SOTA的tracker混个脸熟,大概了解一下目标跟踪这个方向都有些什么。一切要从2013年的那个数据库说起。。如果你问别人近几年有什么比较niubility的跟踪算法,大部分人都会扔给你吴毅老师的论文,OTB50OTB100(OTB50这里指OTB-2013,OTB100这里指OTB-2015,50和100分别代表视频数量,方便记忆):

  • Wu Y, Lim J, Yang M H. Online object tracking: A benchmark [C]// CVPR, 2013.

  • Wu Y, Lim J, Yang M H. Object tracking benchmark [J]. TPAMI, 2015.

顶会转顶刊的顶级待遇,在加上引用量1480+320多,影响力不言而喻,已经是做tracking必须跑的数据库了,测试代码和序列都可以下载: Visual Tracker Benchmark,OTB50包括50个序列,都经过人工标注:







两篇论文在数据库上对比了包括2012年及之前的29个顶尖的tracker,有大家比较熟悉的OAB, IVT, MIL, CT, TLD, Struck等,大都是顶会转顶刊的神作,由于之前没有比较公认的数据库,论文都是自卖自夸,大家也不知道到底哪个好用,所以这个database的意义非常重大,直接促进了跟踪算法的发展,后来又扩展为OTB100发到TPAMI,有100个序列,难度更大更加权威,我们这里参考OTB100的结果,首先是29个tracker的速度和发表时间(标出了一些性能速度都比较好的算法):







接下来再看结果(更加详细的情况建议您去看论文比较清晰):







直接上结论:平均来看Struck, SCM, ASLA的性能比较高,排在前三不多提,着重强调CSK,第一次向世人展示了相关滤波的潜力,排第四还362FPS简直逆天了。速度排第二的是经典算法CT(64fps)(与SCM, ASLA等都是那个年代最热的稀疏表示)。如果对更早期的算法感兴趣,推荐另一篇经典的survey(反正我是没兴趣也没看过):


  • Yilmaz A, Javed O, Shah M. Object tracking: A survey [J]. CSUR, 2006.


2012年以前的算法基本就是这样,自从2012年AlexNet问世以后,CV各个领域都有了巨大变化,所以我猜你肯定还想知道2013到2017年发生了什么,抱歉我也不知道(容我卖个关子),不过我们可以肯定的是,2013年以后的论文一定都会引用OTB50这篇论文,借助谷歌学术中的被引用次数功能,得到如下结果:







这里仅列举几个引用量靠前的,依次是Struck转TPAMI, 三大相关滤波方法KCF, CN, DSST, 和VOT竞赛,这里仅作示范,有兴趣可以亲自去试试。(这么做的理论依据是:一篇论文,在它之前的工作可以看它的引用文献,之后的工作可以看谁引用了它;虽然引用量并不能说明什么,但好的方法大家基本都会引用的(表示尊重和认可);之后还可以通过限定时间来查看某段时间的相关论文,如2016-2017就能找到最新的论文了,至于论文质量需要仔细甄别;其他方向的重要论文也可以这么用,顺藤摸瓜,然后你就知道大牛是哪几位,接着关注跟踪一下他们的工作 ) 这样我们就大致知道目标跟踪领域的最新进展应该就是相关滤波无疑了,再往后还能看到相关滤波类算法有SAMF, LCT, HCF, SRDCF等等。当然,引用量也与时间有关,建议分每年来看。此外,最新版本OPENCV3.2除了TLD,也包括了几个很新的跟踪算法 OpenCV: Tracking API:







TrackerKCF接口实现了KCFCN,影响力可见一斑,还有个GOTURN是基于深度学习的方法,速度虽快但精度略差,值得去看看。tracking方向的最新论文,可以跟进三大会议(CVPR/ICCV/ECCV) 和arXiv。


第二部分:背景介绍


接下来总体介绍下目标跟踪。这里说的目标跟踪,是通用单目标跟踪,第一帧给个矩形框,这个框在数据库里面是人工标注的,在实际情况下大多是检测算法的结果,然后需要跟踪算法在后续帧紧跟住这个框,以下是VOT对跟踪算法的要求:







通常目标跟踪面临几大难点(吴毅在VALSE的slides):外观变形,光照变化,快速运动和运动模糊,背景相似干扰:







平面外旋转,平面内旋转,尺度变化,遮挡和出视野等情况:







正因为这些情况才让tracking变得很难,目前比较常用的数据库除了OTB,还有前面找到的VOT竞赛数据库(类比ImageNet),已经举办了四年,VOT2015和VOT2016都包括60个序列,所有序列也是免费下载 VOT Challenge | Challenges:


  • Kristan M, Pflugfelder R, Leonardis A, et al. The visual object tracking vot2013 challenge results [C]// ICCV, 2013.

  • Kristan M, Pflugfelder R, Leonardis A, et al. The Visual Object Tracking VOT2014 Challenge Results [C]// ECCV, 2014.

  • Kristan M, Matas J, Leonardis A, et al. The visual object tracking vot2015 challenge results [C]// ICCV, 2015.

  • Kristan M, Ales L, Jiri M, et al. The Visual Object Tracking VOT2016 Challenge Results [C]// ECCV, 2016.


OTB和VOT区别:OTB包括25%的灰度序列,但VOT都是彩色序列,这也是造成很多颜色特征算法性能差异的原因;两个库的评价指标不一样,具体请参考论文;VOT库的序列分辨率普遍较高,这一点后面分析会提到。对于一个tracker,如果论文在两个库(最好是OTB100和VOT2016)上都结果上佳,那肯定是非常优秀的(两个库调参你能调好,我服,认了~~),如果只跑了一个,个人更偏向于VOT2016,因为序列都是精细标注,且评价指标更好(人家毕竟是竞赛,评价指标发过TPAMI的),差别最大的地方,OTB有随机帧开始,或矩形框加随机干扰初始化去跑,作者说这样更加符合检测算法给的框框;而VOT是第一帧初始化去跑,每次跟踪失败(预测框和标注框不重叠)时,5帧之后重新初始化,VOT以short-term为主,且认为跟踪检测应该在一起不分离,detecter会多次初始化tracker。


补充OTB在2013年公开了,对于2013以后的算法是透明的,论文都会去调参,尤其是那些只跑OTB的论文,如果关键参数直接给出还精确到小数点后两位,建议您先实测(人心不古啊~被坑的多了)。VOT竞赛的数据库是每年更新,还动不动就重新标注,动不动就改变评价指标,对当年算法是难度比较大,所以结果相对更可靠。(相信很多人和我一样,看每篇论文都会觉得这个工作太好太重要了,如果没有这篇论文,必定地球爆炸,宇宙重启~~所以就像大家都通过历年ILSVRC竞赛结果为主线了解深度学习的发展一样,第三方的结果更具说服力,所以我也以竞赛排名+是否公开源码+实测性能为标准,优选几个算法分析


目标视觉跟踪(Visual Object Tracking),大家比较公认分为两大类:生成(generative)模型方法和判别(discriminative)模型方法,目前比较流行的是判别类方法,也叫检测跟踪tracking-by-detection,为保持回答的完整性,以下简单介绍。


生成类方法,在当前帧对目标区域建模,下一帧寻找与模型最相似的区域就是预测位置,比较著名的有卡尔曼滤波,粒子滤波,mean-shift等。举个例子,从当前帧知道了目标区域80%是红色,20%是绿色,然后在下一帧,搜索算法就像无头苍蝇,到处去找最符合这个颜色比例的区域,推荐算法ASMS vojirt/asms:


  • Vojir T, Noskova J, Matas J. Robust scale-adaptive mean-shift for tracking [J]. Pattern Recognition Letters, 2014.


ASMSDAT并称“颜色双雄”(版权所有翻版必究),都是仅颜色特征的算法而且速度很快,依次是VOT2015的第20名和14名,在VOT2016分别是32名和31名(中等水平)。ASMS是VOT2015官方推荐的实时算法,平均帧率125FPS,在经典mean-shift框架下加入了尺度估计,经典颜色直方图特征,加入了两个先验(尺度不剧变+可能偏最大)作为正则项,和反向尺度一致性检查。作者给了C++代码,在相关滤波和深度学习盛行的年代,还能看到mean-shift打榜还有如此高的性价比实在不容易(已泪目~~),实测性能还不错,如果您对生成类方法情有独钟,这个非常推荐您去试试。(某些算法,如果连这个你都比不过。。天台在24楼,不谢)


判别类方法,OTB50里面的大部分方法都是这一类,CV中的经典套路图像特征+机器学习, 当前帧以目标区域为正样本,背景区域为负样本,机器学习方法训练分类器,下一帧用训练好的分类器找最优区域:








  • Hare S, Golodetz S, Saffari A, et al. Struck: Structured output tracking with kernels [J]. IEEE TPAMI, 2016.

  • Kalal Z, Mikolajczyk K, Matas J. Tracking-learning-detection [J]. IEEE TPAMI, 2012.


长江后浪推前浪,前面的已被排在沙滩上,这个后浪就是相关滤波和深度学习。相关滤波类方法correlation filter简称CF,也叫做discriminative correlation filter简称DCF,注意和后面的DCF算法区别,包括前面提到的那几个,也是后面要着重介绍的。深度学习(Deep ConvNet based)类方法,因为深度学习类目前不适合落地就不瞎推荐了,可以参考Winsty的几篇 Naiyan Wang - Home,还有VOT2015的冠军MDNet Learning Multi-Domain Convolutional Neural Networks for Visual Tracking,以及VOT2016的冠军TCNN http://www.votchallenge.net/vot2016/download/44_TCNN.zip,速度方面比较突出的如80FPS的SiamFC SiameseFC tracker和100FPS的GOTURN davheld/GOTURN,注意都是在GPU上。基于ResNet的SiamFC-R(ResNet)在VOT2016表现不错,很看好后续发展,有兴趣也可以去VALSE听作者自己讲解 VALSE-20160930-LucaBertinetto-Oxford-JackValmadre-Oxford-pu,至于GOTURN,效果比较差,但优势是跑的很快100FPS,如果以后效果也能上来就好了。做科研的同学深度学习类是关键,能兼顾速度就更好了。



@Qiang Wang

维护的benchmark_results foolwood/benchmark_results:大量顶级方法在OTB库上的性能对比,各种论文代码应有尽有,大神自己C++实现并开源的CSK, KCF和DAT,还有他自己的DCFNet论文加源码,找不着路的同学请跟紧。


@H Hakase

维护的相关滤波类资源 HakaseH/CF_benchmark_results ,详细分类和论文代码资源,走过路过别错过,相关滤波类算法非常全面,非常之用心!


(以上两位,看到了请来我处交一下广告费,9折优惠~~)







第三部分:相关滤波

介绍最经典的高速相关滤波类跟踪算法CSK, KCF/DCF, CN。很多人最早了解CF,应该和我一样,都是被下面这张图吸引了:











    CSK和KCF都是Henriques J F(牛津大学)João F. Henriques 大神先后两篇论文,影响后来很多工作,核心部分的岭回归,循环移位的近似密集采样,还给出了整个相关滤波算法的详细推导。还有岭回归加kernel-trick的封闭解,多通道HOG特征。


    Martin Danelljan大牛(林雪平大学)用多通道颜色特征Color Names(CN)去扩展CSK得到了不错的效果,算法也简称CN Coloring Visual Tracking 。


    MOSSE是单通道灰度特征的相关滤波,CSK在MOSSE的基础上扩展了密集采样(加padding)和kernel-trick,KCF在CSK的基础上扩展了多通道梯度的HOG特征,CN在CSK的基础上扩展了多通道颜色的Color Names。HOG是梯度特征,而CN是颜色特征,两者可以互补,所以HOG+CN在近两年的跟踪算法中成为了hand-craft特征标配。最后,根据KCF/DCF的实验结果,讨论两个问题:


    1. 为什么只用单通道灰度特征的KCF和用了多通道HOG特征的KCF速度差异很小?

    第一,作者用了HOG的快速算法fHOG,来自Piotr's Computer Vision Matlab Toolbox,C代码而且做了SSE优化。如对fHOG有疑问,请参考论文Object Detection with Discriminatively Trained Part Based Models第12页。


    第二,HOG特征常用cell size是4,这就意味着,100*100的图像,HOG特征图的维度只有25*25,而Raw pixels是灰度图归一化,维度依然是100*100,我们简单算一下:27通道HOG特征的复杂度是27*625*log(625)=47180,单通道灰度特征的复杂度是10000*log(10000)=40000,理论上也差不多,符合表格。


    看代码会发现,作者在扩展后目标区域面积较大时,会先对提取到的图像块做因子2的下采样到50*50,这样复杂度就变成了2500*log(2500)=8495,下降了非常多。那你可能会想,如果下采样再多一点,复杂度就更低了,但这是以牺牲跟踪精度为代价的,再举个例子,如果图像块面积为200*200,先下采样到100*100,再提取HOG特征,分辨率降到了25*25,这就意味着响应图的分辨率也是25*25,也就是说,响应图每位移1个像素,原始图像中跟踪框要移动8个像素,这样就降低了跟踪精度。在精度要求不高时,完全可以稍微牺牲下精度提高帧率(但看起来真的不能再下采样了)。


    2. HOG特征的KCF和DCF哪个更好?


    大部分人都会认为KCF效果超过DCF,而且各属性的准确度都在DCF之上,然而,如果换个角度来看,以DCF为基准,再来看加了kernel-trick的KCF,mean precision仅提高了0.4%,而FPS下降了41%,这么看是不是挺惊讶的呢?除了图像块像素总数,KCF的复杂度还主要和kernel-trick相关。所以,下文中的CF方法如果没有kernel-trick,就简称基于DCF,如果加了kernel-trick,就简称基于KCF(剧透基本各占一半)。当然这里的CN也有kernel-trick,但请注意,这是Martin Danelljan大神第一次使用kernel-trick,也是最后一次。。。


    这就会引发一个疑问,kernel-trick这么强大的东西,怎么才提高这么点?这里就不得不提到Winsty的另一篇大作:


    • Wang N, Shi J, Yeung D Y, et al. Understanding and diagnosing visual tracking systems[C]// ICCV, 2015.

    一句话总结,别看那些五花八门的机器学习方法,那都是虚的,目标跟踪算法中特征才是最重要的就是因为这篇文章我粉了WIN叔哈哈以上就是最经典的三个高速算法,CSK, KCF/DCF和CN,推荐。


    第四部分:14年的尺度自适应


    VOT与OTB一样最早都是2013年出现的,但VOT2013序列太少,第一名的PLT代码也找不到,没有参考价值就直接跳过了。直接到了VOT2014竞赛 VOT2014 Benchmark 。这一年有25个精挑细选的序列,38个算法,那时候深度学习的战火还没有烧到tracking,所以主角也只能是刚刚展露头角就独霸一方的CF,下面是前几名的详细情况:





    前三名都是相关滤波CF类方法,第三名的KCF已经很熟悉了,这里稍微有点区别就是加了多尺度检测和子像素峰值估计,再加上VOT序列的分辨率比较高(检测更新图像块的分辨率比较高),导致竞赛中的KCF的速度只有24.23(EFO换算66.6FPS)。这里speed是EFO(Equivalent Filter Operations),在VOT2015和VOT2016里面也用这个参数衡量算法速度,这里一次性列出来供参考(MATLAB实现的tracker实际速度要更高一些):





    其实前三名除了特征略有差异,核心都是KCF为基础扩展了多尺度检测,概要如下:





    尺度变化是跟踪中比较基础和常见的问题,前面介绍的KCF/DCF和CN都没有尺度更新,如果目标缩小,滤波器就会学习到大量背景信息,如果目标扩大,滤波器就跟着目标局部纹理走了,这两种情况都很可能出现非预期的结果,导致漂移和失败。


    SAMF ihpdep/samf,浙大Yang Li的工作,基于KCF,特征是HOG+CN,多尺度方法是平移滤波器在多尺度缩放的图像块上进行目标检测,取响应最大的那个平移位置及所在尺度:


    • Li Y, Zhu J. A scale adaptive kernel correlation filter tracker with feature integration [C]// ECCV, 2014.


    Martin Danelljan的DSST Accurate scale estimation for visual tracking,只用了HOG特征,DCF用于平移位置检测,又专门训练类似MOSSE的相关滤波器检测尺度变化,开创了平移滤波+尺度滤波,之后转TPAMI做了一系列加速的版本fDSST,非常+非常+非常推荐:


    • Danelljan M, Häger G, Khan F, et al. Accurate scale estimation for robust visual tracking [C]// BMVC, 2014.

    • Danelljan M, Hager G, Khan F S, et al. Discriminative Scale Space Tracking [J]. IEEE TPAMI, 2017.





    简单对比下这两种尺度自适应的方法:


    • DSST和SAMF所采用的尺度检测方法哪个更好


    首先给大家讲个笑话:Martin Danelljan大神提出DSST之后,他的后续论文就再没有用过(直到最新CVPR的ECO-HC中为了加速用了fDSST)。


    1. 虽然SAMF和DSST都可以跟上普通的目标尺度变化,但SAMF只有7个尺度比较粗,而DSST有33个尺度比较精细准确;

    2. DSST先检测最佳平移再检测最佳尺度,是分步最优,而SAMF是平移尺度一起检测,是平移和尺度同时最优,而往往局部最优和全局最优是不一样的;

    3. DSST将跟踪划分为平移跟踪和尺度跟踪两个问题,可以采用不同的方法和特征,更加灵活,但需要额外训练一个滤波器,每帧尺度检测需要采样33个图像块,之后分别计算特征、加窗、FFT等,尺度滤波器比平移滤波器慢很多;SAMF只需要一个滤波器,不需要额外训练和存储,每个尺度检测就一次提特征和FFT,但在图像块较大时计算量比DSST高。


    所以尺度检测DSST并不总是比SAMF好,其实在VOT2015和VOT2016上SAMF都是超过DSST的,当然这主要是因为特征更好,但至少说明尺度方法不差。总的来说,DSST做法非常新颖,速度更快,SAMF同样优秀也更加准确。


    • DSST一定要33个尺度吗?


    DSST标配33个尺度非常非常敏感,轻易降低尺度数量,即使你增加相应步长,尺度滤波器也会完全跟不上尺度变化。关于这一点可能解释是,训练尺度滤波器用的是一维样本,而且没有循环移位,这就意味着一次训练更新只有33个样本,如果降低样本数量,会造成训练不足,分类器判别力严重下降,不像平移滤波器有非常多的移位样本(个人看法欢迎交流)。总之,请不要轻易尝试大幅降低尺度数量,如果非要用尺度滤波器33和1.02就很好

    以上就是两种推荐的尺度检测方法,以后简称为类似DSST的多尺度类似SAMF的多尺度。如果更看重速度,加速版的fDSST,和仅3个尺度的SAMF(如VOT2014中的KCF)就是比较好的选择;如果更看重精确,33个尺度的DSST,及7个尺度的SAMF就比较合适。


    第五部分:边界效应


    接下来到了VOT2015竞赛 VOT2015 Challenge | Home ,这一年有60个精挑细选的序列,62个tracker,最大看点是深度学习开始进击tracking领域,MDNet直接拿下当年的冠军,而结合深度特征的相关滤波方法DeepSRDCF是第二名,主要解决边界效应的SRDCF仅HOG特征排在第四:





    随着VOT竞赛的影响力扩大,举办方也是用心良苦,经典的和顶尖的齐聚一堂,百家争鸣,多达62个tracker皇城PK,华山论剑。除了前面介绍的深度学习和相关滤波,还有结合object proposals(类物体区域检测)的EBT(EBT:Proposal与Tracking不得不说的秘密 - 知乎专栏)排第三,Mean-Shift类颜色算法ASMS是推荐实时算法,还有前面提到的另一个颜色算法DAT,而在第9的那个Struck已经不是原来的Struck了。除此之外,还能看到经典方法如OAB, STC, CMT, CT, NCC等都排在倒数位置, 经典方法已经被远远甩在后面。


    在介绍SRDCF之前,先来分析下相关滤波有什么缺点。总体来说,相关滤波类方法对快速变形和快速运动情况的跟踪效果不好


    快速变形主要因为CF是模板类方法。容易跟丢这个比较好理解,前面分析了相关滤波是模板类方法,如果目标快速变形,那基于HOG的梯度模板肯定就跟不上了,如果快速变色,那基于CN的颜色模板肯定也就跟不上了。这个还和模型更新策略与更新速度有关,固定学习率的线性加权更新,如果学习率太大,部分或短暂遮挡和任何检测不准确,模型就会学习到背景信息,积累到一定程度模型跟着背景私奔了,一去不复返。如果学习率太小,目标已经变形了而模板还是那个模板,就会变得不认识目标。


    快速运动主要是边界效应(Boundary Effets),而且边界效应产生的错误样本会造成分类器判别力不够强,下面分训练阶段和检测阶段分别讨论。


    训练阶段,合成样本降低了判别能力。如果不加余弦窗,那么移位样本是长这样的:





    除了那个最原始样本,其他样本都是“合成”的,100*100的图像块,只有1/10000的样本是真实的,这样的样本集根本不能拿来训练。如果加了余弦窗,由于图像边缘像素值都是0,循环移位过程中只要目标保持完整,就认为这个样本是合理的,只有当目标中心接近边缘时,目标跨越了边界的那些样本是错误的,这样虽不真实但合理的样本数量增加到了大约2/3(一维情况padding= 1)。但我们不能忘了即使这样仍然有1/3(3000/10000)的样本是不合理的,这些样本会降低分类器的判别能力。再者,加余弦窗也不是“免费的”,余弦窗将图像块的边缘区域像素全部变成0,大量过滤掉了分类器本来非常需要学习的背景信息,原本训练时判别器能看到的背景信息就非常有限,我们还加了个余弦窗挡住了背景,这样进一步降低了分类器的判别力(是不是上帝在我前遮住了帘。。不是上帝,是余弦窗)。


    检测阶段,相关滤波对快速运动的目标检测比较乏力。相关滤波训练的图像块和检测的图像块大小必须是一样的,这就是说你训练了一个100*100的滤波器,那你也只能检测100*100的区域,如果打算通过加更大的padding来扩展检测区域,那样除了扩展了复杂度,并不会有什么好处。目标运动可能是目标自身移动,或摄像机移动,按照目标在检测区域的位置分四种情况来看:


    1. 如果目标在中心附近,检测准确且成功。

    2. 如果目标移动到了边界附近但还没有出边界,加了余弦窗以后,部分目标像素会被过滤掉,这时候就没法保证这里的响应是全局最大的,而且,这时候的检测样本和训练过程中的那些不合理样本很像,所以很可能会失败。

    3. 如果目标的一部分已经移出了这个区域,而我们还要加余弦窗,很可能就过滤掉了仅存的目标像素,检测失败。

    4. 如果整个目标已经位移出了这个区域,那肯定就检测失败了。


    以上就是边界效应(Boundary Effets),推荐两个主流的解决边界效应的方法,其中SRDCF速度比较慢,并不适合实时场合

    Martin DanelljanSRDCF Learning Spatially Regularized Correlation Filters for Visual Tracking,主要思路:既然边界效应发生在边界附近,那就忽略所有移位样本的边界部分像素,或者说限制让边界附近滤波器系数接近0:

    • Danelljan M, Hager G, Shahbaz Khan F, et al. Learning spatially regularized correlation filters for visual tracking [C]// ICCV. 2015.





    SRDCF基于DCF,类SAMF多尺度,采用更大的检测区域(padding = 4),同时加入空域正则化,惩罚边界区域的滤波器系数,由于没有闭合解,采用高斯-塞德尔方法迭代优化。检测区域扩大(1.5->4),迭代优化(破坏了闭合解)导致SRDCF只有5FP,但效果非常好是2015年的baseline。


    另一种方法是Hamed Kiani提出的MOSSE改进算法,基于灰度特征的CFLMCorrelation Filters with Limited Boundaries 和基于HOG特征的BACF Learning Background-Aware Correlation Filters for Visual Tracking,主要思路是采用较大尺寸检测图像块和较小尺寸滤波器来提高真实样本的比例,或者说滤波器填充0以保持和检测图像一样大,同样没有闭合解,采用ADMM迭代优化:


    • Kiani Galoogahi H, Sim T, Lucey S. Correlation filters with limited boundaries [C]// CVPR, 2015.

    • Kiani Galoogahi H, Fagg A, Lucey S. Learning Background-Aware Correlation Filters for Visual Tracking [C]// ICCV, 2017.





    CFLB仅单通道灰度特征,虽然速度比较快167FPS,但性能远不如KCF,不推荐;最新BACF将特征扩展为多通道HOG特征,性能超过了SRDCF,而且速度比较快35FPS,非常推荐。


    其实这两个解决方案挺像的,都是用更大的检测及更新图像块,训练作用域比较小的相关滤波器,不同点是SRDCF的滤波器系数从中心到边缘平滑过渡到0,而CFLM直接用0填充滤波器边缘。


    VOT2015相关滤波方面还有排在第二名,结合深度特征DeepSRDCF,因为深度特征都非常慢,在CPU上别说高速,实时都到不了,虽然性能非常高,但这里就不推荐,先跳过。


    第六部分:颜色直方图与相关滤波


    VOT2016竞赛 VOT2016 Challenge | Home,依然是VOT2015那60个序列,不过这次做了重新标注更加公平合理,今年有70位参赛选手,意料之中深度学习已经雄霸天下了,8个纯CNN方法和6个结合深度特征的CF方法大都名列前茅,还有一片的CF方法,最最最重要的是,良心举办方竟然公开了他们能拿到的38个tracker,部分tracker代码和主页,下载地址:VOT2016 Challenge | Trackers (以后妈妈再也不用担心我找不到源码了~),注意部分是下载链接,部分是源码压缩包,部分源码是二进制文件,好不好用一试便知,方便对比和研究,需要的赶快去试试。马上来看竞赛结果(这里仅列举前60个):





    高亮标出来了前面介绍过的或比较重要的方法,结合多层深度特征的相关滤波C-COT排第一名,而CNN方法TCNN是VOT2016的冠军,作者也是VOT2015冠军MDNet,纯颜色方法DATASMS都在中等水平(其实两种方法实测表现非常接近),其他tracker的情况请参考论文。再来看速度,SMACF没有公开代码,ASMS依然那么快,排在前10的方法中也有两个速度比较快,分别是排第5的Staple,和其改进算法排第9的STAPLE+,而且STAPLE+是今年的推荐实时算法。首先恭喜Luca Bertinetto的SiamFCStaple都表现非常不错,然后再为大牛默哀三分钟(VOT2016的paper原文):


    This was particularly obvious in case of SiamFC trackers, which runs orders higher than realtime (albeit on GPU), and Staple, which is realtime, but are incorrectly among the non-realtime trackers.


    VOT2016竟然发生了乌龙事件,Staple在论文中CPU上是80FPS,怎么EFO在这里只有11?幸好公开代码有Staple和STAPLE+,实测下来,虽然我电脑不如Luca Bertinetto大牛但Staple我也能跑76FPS,而更可笑的是,STAPLE+比Staple慢了大约7-8倍,竟然EFO高出4倍,到底怎么回事呢?

    首先看Staple的代码,如果您直接下载Staple并设置params.visualization = 1,Staple默认调用Computer Vision System Toolbox来显示序列图像,而恰好如果您没有这个工具箱,默认每帧都会用imshow(im)来显示图像,所以非常非常慢,而设置params.visualization = 0就跑的飞快(作者你是孙猴子派来的逗逼吗),建议您将显示图像部分代码替换成DSST中对应部分代码就可以正常速度运行和显示了。


    再来看STAPLE+的代码,对Staple的改进包括额外从颜色概率图中提取HOG特征,特征增加到56通道(Staple是28通道),平移检测额外加入了大位移光流运动估计的响应,所以才会这么慢,而且肯定要慢很多。

    所以很大可能是VOT举办方把Staple和STAPLE+的EFO弄反了VOT2016的实时推荐算法应该是排第5的Staple,相关滤波结合颜色方法,没有深度特征更没有CNN,跑80FPS还能排在第五,这就是接下来主要介绍的,2016年最NIUBILITY的目标跟踪算法之一Staple (直接让排在后面的一众深度学习算法怀疑人生)。


    颜色特征,在目标跟踪中颜色是个非常重要的特征,不管多少个人在一起,只要目标穿不用颜色的一幅就非常明显。前面介绍过2014年CVPR的CN是相关滤波框架下的模板颜色方法,这里隆重介绍统计颜色特征方法DAT Learning, Recognition, and Surveillance @ ICG ,帧率15FPS推荐:


    • Possegger H, Mauthner T, Bischof H. In defense of color-based model-free tracking [C]// CVPR, 2015.


    DAT统计前景目标和背景区域的颜色直方图并归一化,这就是前景和背景的颜色概率模型,检测阶段,贝叶斯方法判别每个像素属于前景的概率,得到像素级颜色概率图,再加上边缘相似颜色物体抑制就能得到目标的区域了。





    如果要用一句话介绍Luca Bertinetto(牛津大学)的Staple Staple tracker,那就是把模板特征方法DSST(基于DCF)和统计特征方法DAT结合:


    • Bertinetto L, Valmadre J, Golodetz S, et al. Staple: Complementary Learners for Real-Time Tracking [C]// CVPR, 2016.


    前面分析了相关滤波模板类特征(HOG)对快速变形和快速运动效果不好,但对运动模糊光照变化等情况比较好;而颜色统计特征(颜色直方图)对变形不敏感,而且不属于相关滤波框架没有边界效应,快速运动当然也是没问题的,但对光照变化和背景相似颜色不好。综上,这两类方法可以互补,也就是说DSST和DAT可以互补结合:





    两个框架的算法高效无缝结合,25FPS的DSST和15FPS的DAT,而结合后速度竟然达到了80FPS。DSST框架把跟踪划分为两个问题,即平移检测和尺度检测,DAT就加在平移检测部分,相关滤波有一个响应图,像素级前景概率也有一个响应图,两个响应图线性加权得到最终响应图,其他部分与DSST类似,平移滤波器、尺度滤波器和颜色概率模型都以固定学习率线性加权更新。


    另一种相关滤波结合颜色概率的方法是17CVPR的CSR-DCF,提出了空域可靠性和通道可靠性,没有深度特征性能直逼C-COT,速度可观13FPS:


    • Lukežič A, Vojíř T, Čehovin L, et al. Discriminative Correlation Filter with Channel and Spatial Reliability [C]// CVPR, 2017.


    CSR-DCF中的空域可靠性得到的二值掩膜就类似于CFLM中的掩膜矩阵P,在这里自适应选择更容易跟踪的目标区域且减小边界效应;以往多通道特征都是直接求和,而CSR-DCF中通道采用加权求和,而通道可靠性就是那个自适应加权系数。采用ADMM迭代优化,可以看出CSR-DCF是DAT和CFLB的结合算法。













    高置信度更新只有在跟踪置信度比较高的时候才更新跟踪模型,避免目标模型被污染,同时提升速度。  第一个置信度指标是最大响应分数Fmax,就是最大响应值(Staple和LCT中都有提到)。 第二个置信度指标是平均峰值相关能量(average peak-to correlation energy, APCE),反应响应图的波动程度和检测目标的置信水平,这个(可能)是目前最好的指标,推荐:





    跟踪置信度指标还有,MOSSE中的峰值旁瓣比(Peak to Sidelobe Ratio, PSR), 由相关滤波峰值,与11*11峰值窗口以外旁瓣的均值与标准差计算得到,推荐:





    还有CSR-DCF的空域可靠性,也用了两个类似指标反映通道可靠性, 第一个指标也是每个通道的最大响应峰值,就是Fmax,第二个指标是响应图中第二和第一主模式之间的比率,反映每个通道响应中主模式的表现力,但需要先做极大值检测:





    第八部分:卷积特征

    最后这部分是Martin Danelljan的专场,主要介绍他的一些列工作,尤其是结合深度特征的相关滤波方法,代码都在他主页Visual Tracking,就不一一贴出了。





    SRDCFdecon在SRDCF的基础上,改进了样本和学习率问题。以前的相关滤波都是固定学习率线性加权更新模型,虽然这样比较简单不用保存以前样本,但在定位不准确、遮挡、背景扰动等情况会污染模型导致漂移。SRDCFdecon选择保存以往样本(图像块包括正,负样本),在优化目标函数中添加样本权重参数和正则项,采用交替凸搜索,首先固定样本权重,高斯-塞德尔方法迭代优化模型参数,然后固定模型参数,凸二次规划方法优化样本权重。


    • Danelljan M, Hager G, Shahbaz Khan F, et al. Convolutional features for correlation filter based visual tracking [C]// ICCVW, 2015.


    DeepSRDCF是VOT2015的第二名,将SRDCF中的HOG特征替换为CNN中单层卷积层的深度特征(也就是卷积网络的激活值),效果有了极大提升。这里用imagenet-vgg-2048 network,VGG网络的迁移能力比较强,而且MatConvNet就是VGG组的,MATLAB调用非常方便。论文还测试了不同卷积层在目标跟踪任务中的表现:





    第1层表现最好,第2和第5次之。由于卷积层数越高语义信息越多,但纹理细节越少,从1到4层越来越差的原因之一就是特征图的分辨率越来越低,但第5层反而很高,是因为包括完整的语义信息,判别力比较强(本来就是用来做识别的)。





    注意区分这里的深度特征和基于深度学习的方法,深度特征来自ImageNet上预训练的图像分类网络,没有fine-turn这一过程,不存在过拟合的问题。而基于深度学习的方法大多需要在跟踪序列上end-to-end训练或fine-turn,如果样本数量和多样性有限就很可能过拟合。

    • Ma C, Huang J B, Yang X, et al. Hierarchical convolutional features for visual tracking [C]// ICCV, 2015. 






    值得一提的还有Chao Ma的HCF,结合多层卷积特征提升效果,用了VGG19的Conv5-4, Conv4-4和Conv3-4的激活值作为特征,所有特征都缩放到图像块分辨率,虽然按照论文应该是由粗到细确定目标,但代码中比较直接,三种卷积层的响应以固定权值1, 0.5, 0.02线性加权作为最终响应。虽然用了多层卷积特征,但没有关注边界效应而且线性加权的方式过于简单,HCF在VOT2016仅排在28名(单层卷积深度特征的DeepSRDCF是第13名)。

    • Danelljan M, Robinson A, Khan F S, et al. Beyond correlation filters: Learning continuous convolution operators for visual tracking [C]// ECCV, 2016.









    第二减少样本数量, compact generative model(紧凑的样本集生成模型),采用Gaussian Mixture Model (GMM)合并相似样本,建立更具代表性和多样性的样本集,需要保存和优化的样本集数量降到C-COT的1/8。








    在SiamFC的基础上,将相关滤波也作为CNN中的一层,最重要的是cf层的前向传播和反向传播公式推导,两层卷积层的CFNet在GPU上是75FPS,综合表现并没有很多惊艳,可能是难以处理CF层的边界效应吧,持观望态度。


    第九部分:2017年CVPR和ICCV结果


    下面是CVPR 2017的目标跟踪算法结果:可能MD大神想说,一个能打的都没有!





    仿照上面的表格,整理了ICCV 2017的相关论文结果对比ECO:哎,还是一个能打的都没有!





    第十部分:大牛推荐


    凑个数,目前相关滤波方向贡献最多的是以下两个组(有创新有代码):

    牛津大学:Joao F. HenriquesLuca Bertinetto,代表:CSK, KCF/DCF, Staple, CFNet (其他SiamFC, Learnet).

    林雪平大学:Martin Danelljan,代表:CN, DSST, SRDCF, DeepSRDCF, SRDCFdecon, C-COT, ECO.

    国内也有很多高校的优秀工作就不一一列举了。

    ___________________________________________________________________________


    我的目标跟踪专栏:目标跟踪之相关滤波CF:https://zhuanlan.zhihu.com/DCF-tracking (点击阅读原文进入),长期更新,专注跟踪,但也会介绍计算机视觉和深度学习的各方面内容,拓展思路。



基于视频的行为识别技术

今天跟大家分享的主题是基于视频的行为识别领域研究,主要介绍一下早期的非深度学习传统方法和近期深度学习方法取得的结果。深度学习方法带来了非常大的变革,提升了识别系统的性能,但这并不意味着我们把传统的东西都要抛弃,事实上很多工作还是一脉相承的,而且有很多传统方法是我们积累了很多经验、很多知识、很多方法迁移过来的,我想这不仅在视觉处理领域是这样,在其他领域也是这样。


什么是行为

行为是什么?如果翻一下字典的话,对行为的定义是非常广泛的:一个是人的姿态、姿势,比如站在这里也是一种姿态、姿势;还有就是一个人的行为,当然行为可以不仅仅是一个人,也可以是两个人的握握手;人的交互也是一种行为;更大的程度上也包括群体的行为,一群人进行体育比赛也构成特定的行为。今天的报告中大部分研究的对象是集中在一个人的行为上,但事实上可以看到,这里所提到的很多特征、很多模型、很多算法实际上是可以推广到两个人甚至多个人的行为分析上面去。 

近年来计算机视觉领域对行为识别这个问题很感兴趣呢?这有两个方面原因,一个方面,计算机视觉有两大对象,一个是图像,另一个是视频。对图像来讲,对物体进行检测、识别理解是一个重要领域;视频包含动态和连续的图像,对视频分类是计算机视觉的基本问题。行为的种类是视频常见的分类标准


另一方面,我们发现,事实上人是非常擅长进行一些行为识别的生物。在生活过程中,我们无时无刻都在对周围所发生的行为和事件进行识别和预测,这是我们生存的一个基本需要。比如说,我们到一个森林,要看看周围是不是有一些危险动物,这些危险动物是不是对我构成威胁,是不是相对具有攻击性行为;我们走在马路上,要看看这个骑自行车的人,他的下一步行进的方向是什么,会不会和我的行走路径有交叉,是不是要采取一些避让或者保护的行为,等等。


在计算机视觉领域,可以把行为理解转化为一个分类问题,当然这样有点过于简化了;但是好处在于便于入手去研究,也便于对开发的方法进行评测。


为什么要行为识别

行为识别事实上在很多地方有非常广泛的应用,下面举几个例子。第一个例子,据估计在中国已经安装了 6 000 万以上的监控摄像头。现在技术瓶颈在哪里?在于计算机系统不理解监控摄像头录下的视频里面有什么人、在发生什么行为。所以说,目前的监控系统还不能很好地理解这个世界。从这个意义来讲,要想把目前的监控系统变得真正智能化,真正能够充分发挥监控数据的作用,还需要对监视视频中的对象和行为进行自动的分析与识别。在实际监控系统使用中,往往是发生了什么案件,公安去调监控视频,警察同志往往要在 20~40 万小时的监控视频中寻找线索,大家可以想象这是一个多么大的量。

另外一个领域,在线视频的增长非常迅速,像 Yutube 这样的视频网站,每小时大概有数百个小时的视频被上传。很多视频包括人或者动物的行为。现在这个视频一般上传时,网站会告诉用户,希望给一个标签,或者写一句话描述一下,但并不是所有人都会写,或者不是所有人都描述的很全面。如果能够自动分析识别视频的内容,就可以更好地索引和检索视频,便于向用户推荐,这有非常重要的市场价值。

还有很多领域,比如运动分析、人机交互、手势识别等都可能涉及到行为识别。从研究的角度,行为识别难在哪里?谈几个方面,一个方面,数据是很大的问题,我们做计算机视觉或者图像研究,很多问题是依靠数据来定义的,就是说数据的规模、数据的复杂程度决定了这个问题的复杂程度。对于视频来讲,1 秒钟的视频通常包括 20~30 帧 的图像,因此视频的数据量是非常大的,内容也很丰富,这决定了视频特征的维度往往非常高。另外一个方面,视频里面包含非常大的变化,包括视角、姿态、运动快慢、光照等,都会带来一些变化。需要行为的识别的算法对这些变化有鲁棒性。

除了这些以外,视频行为分类还有其他一些挑战,比如说行为的种类非常多,对视频进行精细的时空标注特别花费时间。


视频数据库的分类

行为识别领域早期的数据库相对简单的,只有一个人在摄像头中间,背景也相对简单,比如说 KTH 数据库等;随后出现了基于电影、电视和互联网视频的数据库,行为的内容和背景更加复杂,种类也更多。

早期行为识别方法

下面讨论如何让计算机去识别视频中行为?首先,对于很多图像视频分类问题来讲,最核心地找到一个好的表示。下面我们先介绍如何利用非深度学习方法。早期做图像识别时,利用兴趣点和局部图像特征构建视频表示,这个方法可以被推广到视频。 这是 IJCV2005 年发表的一篇论文,提出了 Spatial-temporal interest points 时空兴趣点,像下图中运动员当头顶到球的时候,在这个位置和这个时刻会形成一个识别兴趣点。

行为中包含的运动信息不仅仅是某一个点的运动或者某一个时刻的运动,而是一个连续的过程。因此运动轨迹可以为行为的描述提供丰富的信息。我们可以通过短时光流获取运动轨迹,并在视频中去密集地跟踪一些运动轨迹,沿着这些运动轨迹再提取一些图像区域。这些区域通常对于运动显著性区域,运动轨迹比原来点的描述更加丰富一些。


通常,沿着运动轨迹我们会提取三个类型的直方图特征。第一个是 HoG 梯度的直方图,这个是描述图像的。第二个是光流直方图 HoF,光流是描述运动很重要的信息,用于表示一个像素点到下一帧图像中 x、y 方向发生的偏移。最后一个是,MBH 运动边缘直方图。它是由光流沿着 x 方向和 y 方向去做一次差分梯度后获得。这样操作的好处在于可以把物体边缘的运动提取出来。


我们会在时空信息点,或者沿着运动的边缘,把 HoG、HoF、MBH 三种特征都抽出来。当然除了这三类还有其他局部特征,我们之前的一个工作就是把图像的梯度和光流进行联合编码,实验表明这样的方法可以提高识别率。对于给定的一个视频,可以在视频里可能找到很多点或者找到很多轨迹,在每个点、每条轨迹周围提取一个三维小的立方体;然后围绕这个立方体提取局部特征,包括 HoG、HoF 或者 MBH;接着采用 Bag of Visual Words 框架或其改进的方法,对局部特征进行编码,以获取全局表示。这个过程,设计很多环节,包括特征预处理、字典学习方法、参数的选择等,我们的一个工作就是把这些环节涉及的各种选择进行充分的对比,后面这个工作也被期刊 CVIU 录用,代码也公开了。后期不少论文引用了我们的工作。

在研究行为识别问题时,我们观察到一个问题,对视频来讲既有静态的特征,也有动态的特征。动态的特征像 HoF,这些特征联合使用可以提高识别率。怎么来用?一个简单的方法,可以把这些特征串起来,再去学习字典。但是这个方法效果并不好,因为串起来后特征维度高了,增大了字典学习的难度。因此,大家传统的做法就是,静态图像的特征和动态的光流分别学习字典,然后分别编码,这个方法可行性比较强,但忽略了特征间的相关性。我们提出把不同类型的局部特征进行联合编码,区分出共享的部分和各自独立的部分。这就需要一个更好的字典,这个字典不仅仅是对一种特征,而是对多种特征进行联合建模。

这里我们利用混合概率典型相关分析模型作为我们的字典。该字典可以对不同类型特征间相关部分和独立部分进行建模。实验表明,该方法可以提高识别率。

除此之外,我们还有其他工作,简单的分享一下。之前这些局部描述的一个缺陷就是仅仅描述局部区域能力有限,所以我们提取中层运动子 Motionlet 特征,这个中层特征是靠机器学习的方法从视频数据中学习获得的。我们还根据中层运动子特征构建运动词组 Motion Phrase,细节可以参见我们发表在 CVPR13 和 ICCV13 的论文。


基于深度学习的视频识别方法

下面介绍面向视频分类的深度学习方法。深度卷积神经网络在图像分类取得成功后,研究人员就希望把它推广到视频分类中。但这不是一件很容易的事,一个原因是缺乏足够的训练数据。为此,谷歌和斯坦福的研究人员开发了 Sports-1 M 数据库,包含 100 万段视频,有 487类各种各样的运动,这是一个相当大的数据库。同时他们改进了传统卷积神经网络,用于处理视频序列,提出在不同阶段进行特征的融合,这里图中给出了Late Fusion、Early Fusion、Slow Fusion三种策略,其中 Slow Fusion 效果最好。

接着他们利用 Sports-1 M 这个数据库来训练自己开发的网络。一个值得关心的问题是深度学习获得了什么样的特征,下图给出学习到的三维,大家可以看到,一闪一闪的,有一些彩色的动态边缘。但这个方法在传统 UCF 数据库测试结果并不高,低于传统非深度学习的方法。因此,研究人员就在想有没有更好的方法。

下面讲两个非常有效的视频深度学习模型。第一个工作是 C3D 模型 , 该模型把VGG 网络的滤波器从二维推广到三维,增加的一维对应于时间。我们知道 VGG网络中有大量 3×3 的滤波器,C3D 模 型把 3×3 的滤波推广到 3×3×3。这个网络在实际视频分类中取得了很好的效果。

另一个工作,牛津大学的双流网络Two Stream。该方法把光流也看成图像,然后利用一个流 CNN 来处理光流图像;另外一个流处理 RGB 图像。这个方法充分利用了 CNN 对 2 维信号的强大处理能力,在 UCF 数据库上取得了 88% 的识别率,相当不错。

我们知道在传统非深度学习方法中,运动轨迹特征取得了很好的效果,这启发我们能够把运动轨迹也考虑到深度建模中来,或者说把原来运动轨迹特征和深度神经网络做结合,发挥二者的强项。运动轨迹可以对运动物体进行跟踪,并强调运动显著性区域。卷积神经网络强在它能够提取通过多层处理语义非常强的特征,这些特征要比我们传统的 HoG、HoF 能力强。这就提示我们可以沿着运动轨迹提取卷积特征。

具体怎么做结合?如图所示,左边参照传统方法提取光流和运动轨迹,右边利用卷积神经网络抽取视频的深度特征。抽完特征后沿着这个运动轨迹把这些卷积特征进行区域分割、编码和池化。当然,这里还有一个问题就是如何训练神经网络,我们采取类似双流网络的方法,但细节上讲又对其做了改进。

在实际试验中,我们发现卷积特征是非常稀疏的,而且和运动区域是显著相关的;我们还发现编码时引入一些正则化策略和使用不同层的多尺度特征,对提升识别率有帮助。这个方法在 UCF 数据库上取得了 91.5% 的识别率,在当时是最高的。我们这个工作发表在 CVPR 2015。


深度神经网络提高视频处理速度

视频处理还有一个需要考虑的重要问题——速度。视频的数据量很大,另一方面很多视频的应用都有实时性要求,因此这是一个很实际的问题。对前面介绍的深度神经网络而言,速度的瓶颈在于计算光流的时间。


为了解决这个问题,我们注意到有一个很好的东西可以替代光流。我们知道现在的视频数据大部分都是压缩,很少有人会把不压缩的视频存储和传输,因为数量太大了。视频压缩时会使用运动向量 MotionVector,运动向量表示一些具体图像块帧间的运动。这个虽然没有像光流一样去描述像素级精细的运动信息,但也提供了运动信息。运动向量的好处在于,它是不需要额外计算的,在视频解码过程中首先就要提取运动向量。

这就启发我们用运动向量替换光流,以节约光流的运算时间。当然运动向量也有它的问题,它代表一些区域运动不像光流那么精细,看起来像马赛克。另外,它对运动的描述并不准确,存在噪声。我们发现直接利用运动向量来训练卷积神经网络,识别性能会有很大的影响。

相比而言,光流训练处的神经网络性能是很好的,这就启发我们把光流所学知识或者特征迁移到运动向量神经网络中。具体而言,我们设计了集中策略包括模型的初始化、输出监督的迁移等。通过这些方法,我们发现运动向量神经网络识别率得到了很大的提升,它的学习特征更强了。


另外,视频作为一种时间序列,启发研究人员利用时序模型对视频进行建模。深度递归神经网络 RNN 是一个非常有效的时序模型。如何利用 RNN 或 LSTM 进行时序建模?可以先用卷积神经网络提取每一帧的特征,然后把这个特征作为 LSTM当前时刻的输入。递归神经网络可以很多层,可以做双向的,这些都对识别率有帮助。

视频的深度分段网络

下面介绍另外一个工作,是我们和CUHK、ETH 联合开展的,这个工作考虑视频的分段特性,我们知道视频可以分成很多段,每一段有不同的内容。我们开发了一个深度模型,对不同的段分别提取深度特征,然后利用一个 Segment Consensus 模块对这些特征进行融合。在融合的时候,我们发现并不是所有这些段对识别的贡献都是一样的,有些区域贡献比较大,有些区域不重要。因此在融合的时候,我们设计了一个加权机制,根据各段重要性进行加强,这个加权系数是学习得到的,可以与识别网络联合做 End-to-End 的联合优化。

基于这个方法,我们参见了 ActivityNet 2016 竞赛。ActivityNet 包含 200 多个类别,600 多个小时的视频,内容比较复杂,数据量比较大。另外,这个数据库是 untrimmed的,就是说视频里面可能包含和类别不相关的时间段。我们的方法取得了 93% 的识别率,在所有方法中排名第一。


我们看到伴随着深度模型在视频分析识别中的广泛应用,在行为分类任务上取得了重要进展,在多个公开数据库的识别率都有大幅的提升。但是另一方面,由于视频的复杂性,很多问题离最终解决还有很大距离。这就要求我们开展研究工作,在方法上有进一步的进展。


(本文根据乔宇研究员在中国人工智能学会首期“人工智能前沿讲习班”的现场报告整理)

作者介绍:乔 宇

中国科学院深圳先进技术研究院研究员,集成所副所长。




深度学习与视觉计算


摘要:首先阐述什么是视觉大数据,以及视觉大数据分析需要解决的关键问题;然后介绍了深度学习的发展背景,并简要回顾了深度学习在计算机视觉领域的发展历史;最后介绍了深度学习在视觉计算中的一些工作,并讨论了未来潜在的研究方向。


视觉大数据


人类感知外部世界的时候,约有 70%以上的外界信息是由视觉系统所接收和处理的。因此,对于视觉信息的有效处理与理解是非常重要的。


我们知道,从第一台光学成像设备产生的那一刻开始,人们就在不断地改进成像系统,希望能够更加真实地记录客观世界,留下往日的点点滴滴。最近几年,在成像设备方面有着突飞猛进的发展,比如微型单反相机、微软的 Kinect、光场成像等。相机的体积进一步缩小,功能进一步增强,嵌入到各种终端设备中,直到现在人人一部智能手机,可以说成像设备改变了人们的生活方式。

总而言之,随着采集设备的普及,图像视频大数据记录了人们生活的方方面面,所产生的数据量正以前所未有的速度在积累和增加。


每天大家都在电脑或手机上浏览的互联网,另外还有广播电视网、监控视联网等,这些网络给我们带来了很多视觉数据的来源。比如 Facebook,其用户数据量已经超过 8 亿,每天上传的图片超过 3 亿张、视频超过 300 万个。再比如视频监控数据,其数据量增长趋势从 2009—2014 年每年都是以 PB 级的数量增长。可以说,目前已经进入到视觉大数据时代。如何有效地利用视觉大数据,或者说从视觉数据转化为视觉红利、从数据到价值体现是个更重要的环节,这自然而然牵扯到视觉大数据的分析与理解过程。


视觉大数据的分析在很多方面有着潜在的应用,比如说休闲娱乐,大家每天都在看相关的视频;无人机、无人车视觉导航问题;网络信息过滤,是对网络上色情或者暴力视频等进行检测过滤的手段;公安刑侦,比如人脸识别方面的应用;另外,还有机器人、视频监控、智能检索、考勤安检等应用。视觉在很多方面有它独特的应用场所,可以说视觉大数据是模式识别的前沿研究方向,更是当前比较火爆的人工智能的突破口。


视觉大数据的分析与理解自然带来了大规模视觉计算这一研究问题。在了解大规模视觉计算之前,首先需要解释一下什么叫做视觉计算。视觉计算是对视觉信息或数据的分析与处理过程,直观来说就是对图像或视频进行分析与处理的过程。大规模视觉计算自然就是对大规模的视觉信息或数据的分析与处理,等价于视觉大数据计算。这里我们强调大规模视觉信息具有规模大、类别多、来源广三个主要特点。


相比传统的视觉计算,大规模视觉计算带来了几个挑战性的问题。第一,跨景跨媒。现在的视觉数据,可能来自于不同的场景,比如在机场、火车站、银行等不同的监控场所;网络的多媒体数据,不完全是图像或视频数据,可能伴随着语音、文本等其他类型数据。第二,海量庞杂。海量自然指的是数据规模的庞大,在所有数据来源中,视频、图像数据本身就是最可能、最容易产生大量规模的数据类型,所以海量是不言而喻的;庞杂指的是内容比较广泛,比如说娱乐视频、体育视频、新闻视频、监控视频等,不同应用场所下的视频内容是非常不同的。第三,多源异质。这是什么概念呢?就是说同样类型数据可能来自于不同的采集源,比如篮球运动视频可能来自广播电视网,也可能是手机随手拍的,也可能来自于其它的成像手段或设备;再比如人脸识别应用,目前有可见光的人脸识别、也有近红外成像的人脸识别。正是由于跨景跨媒、海量庞杂、多源异质情况的存在,相比传统的视觉计算而言,大规模视觉计算具有非常大的复杂度。


这里举一个简单的例子。早些年,大家都知道 VOC 竞赛,当时对于 20 类目标、约 2 万张图片,非常容易达到 90% 以上的分类精度。ImageNet 是 VOC 之后的相对较大规模的数据集,包含 1 000 类目标、130万张图片。规模增加了,类别增多了,传统算法在 ImageNet 这个数据集上的最好分类精度是低于 75% 的。

大规模视觉计算蕴含哪些关键性问题呢?我们从算法层面和系统层面做了简单的归纳。从算法层面来讲,可能包含大规模特征表达、大规模模型学习、大规模知识迁移;而在系统层面,可能包含大规模数据库构建、大规模数据处理平台。对系统层面关键问题大家容易理解,我们既然要做大规模视觉计算问题,数据库是根本,没有大规模数据库就好像“巧妇难为无米之炊”。因此,建设大规模数据库是个很重要的工作,比如华人知名学者李飞飞教授,其构建的 ImageNet 及其竞赛,已经成为国际上视觉领域经典的数据库和主流竞赛之一。数据量大大提升以后,如何进行有效的存储、计算、分析,自然而然需要一个大规模的数据处理平台。

● 大规模特征表达

大规模特征表达目的是在多源异质的视觉大数据中找到具有较好泛化性和不变性的特征描述。在模式识别和计算机视觉领域,好的特征对于实际应用需求非常重要。如要解决跨景跨媒、多源异质的视觉大数据,必须要寻求有效鲁棒的表达模式,即对应于鲁棒特征表达问题。

● 大规模模型学习

面对海量庞杂、种类繁多的视觉大数据,人为设计的特征,比如 LBP、SIFT等特征,可能不一定适用于大规模的模型学习。解决途径可直接从海量数据中学习模型。深度学习可直接从海量数据中来学习有效特征和模型,这也是为什么深度学习近年在视觉计算中被广泛应用的重要原因。

● 大规模知识迁移

知识迁移是有心理学依据来支撑的:“人类能够将某种知识或技能迁移到另一种相似的领域中去。”比如说,你会中国象棋,可能学习国际象棋会比较容易;你会打网球,可能学习乒乓球也会容易一点。对于一种领域的知识,可以应用到其他相似领域中去,这是迁移的重要依据。传统学习和迁移学习是有区别的。对于传统学习过程,针对于不同的任务,每种任务有一个独立的学习系统,所以学习过程相互独立。而在迁移学习中,可以应用某些源任务学习一定的知识,而这些知识可以指导目标任务的学习过程,即目标域可以有效利用源域的信息。

大数据背景下为什么要做知识迁移?大数据有 5V 特性。Volume 指代数据规模大,自然而然提供了足够的迁移数据源,在这种情况下做知识迁移是完全可行的。Variety 指代数据多元化,成像的多源异构、多模态等性质对于知识迁移提供了可行和必要条件。Velocity 指代大数据时代数据更新的速度特别快,利用迁移学习可以避免模型重复学习的过程,即在已有模型基础上去更新模型,而不是利用所有数据重新进行模型的学习。在这种情况下,做知识迁移也是非常必要的。


深度学习在计算机视觉领域的应用

深度学习近几年成为国际上非常流行的重要的数据分析工具,在我们视觉计算领域也得到了广泛应用。对于传统的视觉信息处理而言,一般首先要做特征提取;然后利用特征进行模型学习,比如分类等。在这个过程中,涉及到模式识别研究中两个经典的问题,即特征的提取与表示和模型的学习。


传统算法通常利用经验知识来手工设置视觉特征,缺少与环境的信息交互以及知识库的决策支持。举个例子,给定一幅图像,我们希望知道这幅图像的目标类别(比如斑马)。按照传统的视觉模式分析流程,首先要提取特征(比如 LBP),然后再利用 SVM 等进行模式分类。对于深度学习而言,它可以解决端到端的模式识别问题,就是说给定这幅图像,经过黑匣子式的学习,直接给出最终结果斑马。在这样端到端模式识别过程中,不再区分特征提取和模式分类,它把特征提取和分类模型学习一体化了;即通过深度神经网络来非线性模拟从直接图像像素级别到语义斑马标签,实现了从数据直接到概念要素的变革性思路。深度学习提供了一种新的端到端的模式识别思路,其真正兴起的一个重要契机是视觉大数据时代的到来。


目前,深度神经网已经在很多领域得到了广泛的应用,比如视觉信息处理、语音语言处理等。深度神经网络是采用脑启发机制设计的网络模型,它模拟了人脑层级化的信息处理机制。深度模型学习是大数据时代下视觉计算的一个重要突破,尤其2012 年后,深度学习推动了视觉计算众多应用的飞速发展。


深度学习前身其实是神经网络。学过模式识别课程的人可能都知道,像 SVM 等经典分类模型一样,神经网络也是模式识别课程中比较经典的章节。现在一些比较流行的深度学习模型,比如 RBM、CNN、RNN、LSTM 等,其实早在几十年前便已出 现。 例 如 1984 年 的 Autoencoder、1989年的 CNN、1991 年的 RNN 以及 1997 年的LSTM 等。也就是说,当前在深度学习中使用频繁的网络模型,其实在上世纪八九十年代都已出现,因此深度学习本身并不是新鲜事物,其根源来自于传统的神经网络。


为什么上世纪八九十年代以后神经网络没有那么流行呢?这可能和神经网络本身存在的缺陷是有关系的。第一,神经网络模型通常包含大量的参数,导致计算复杂度较高;第二,通常需要大的训练集来学习模型参数,数据量不够容易导致模型的过拟合问题;第三,相比当时其他模型而言,在识别准确率上没有明显的优势。这就是为什么在那时,更多的学者倾向选择手工设计特征(如 SIFT 和 LBP)加浅层的分类模型(如 SVM 和 Boosting)的原因。


为什么近年来神经网络又被大家炒作起来呢?深度学习的近现代史可以说是一个转折点开始的,这个转折点就是大数据和高性能计算时代的到来。不言而喻,大数据是近年来比较火热的字眼,很多学校都成立了大数据处理中心,而图像视频大数据更是大数据中的大数据。随着 ImageNet等大规模数据库的出现,我们已经有足够的数据来用于模型训练。高性能计算,比如 GPU,其显著降低了图像问题的计算复杂度,而且 GPU 价格目前也不是非常昂贵。大数据及高性能计算的快速发展,恰恰解决了传统神经网络模型的两个重要缺陷问题:一个是包含大量的参数,导致计算复杂度高,目前高性能计算相对可以解决这样问题;另一个是神经网络学习需要大量数据避免模型的过拟合问题,而当前大数据时代的到来,正好能够解决这样的问题。正因为大规模数据和高性能计算的出现,从而使得神经网络模型可以被高效快速的拟合,从而使得深度学习重新兴起。


深度学习可以说是从 2006 年这个转折点开始的。2006 年 Science 上的一篇文章,表明了更深层的神经网络模型训练成为可能,而且验证了层数更多的神经网络能够获得更好的性能。在深度学习热潮之中,一些先锋者包括:微软 Li Deng 博士,主要探索深度学习在语音方面的应用;斯坦福吴恩达博士,是百度 IDL 的首席科学家;Hinton 加入了谷歌;Lecun 加入了 Facebook;目前还在学术界的 Montreal 大学 Bengio 教授等。总体来说,如果按照模型划分,深度学习在视觉领域经历了三个重要的阶段,这是我们自己的划分,不一定严谨准确。下面对深度学习兴起的历程做个简单回顾。

第一阶段,RBM/AE 阶段。


RBM 是约束玻尔兹曼机,AE 是自编码机,都是深度神经网络里经典的模型。2006 年 Science 的文章重新让深度学习引起了大家的注意。这里的“深度”主要是指模型层数的增加。传统的感知机一般就是 3 层的神经网络,现在很多网络可以增加 5 层、8 层、19 层,甚至达到了 152 层这样的深度。2006 年后,各种 RBM 或者AE 的变体出现。


对这个阶段而言,模型特点更多是生成式的模型,使用的数据基本上是中等规模的数据库,采用相对较深层次的网络。而热点问题就是替代传统的手工设计特征,来自动进行数据的表示学习(representation learning)。深度学习或者说深度神经网络,最大的功能就是具有分层地学习目标特征表示的能力,层级越高,学习到的特征越接近于目标的语义信息,这与大脑处理信息的流程是一致的,大脑是从视网膜到 V1 区、V2 区,再到 V4 区。比如输入衣服人脸图像,首先是像素级别特征,经过一定层数以后可以学习到边界级别的特征,再学习就可以看到眼睛、鼻子等 Part 特征,更高层就更接近语义信息(比如类似人脸的特征表示)。也就说,深度神经网络的最大优点是能够层级化的分层学习特征,渐渐逼近于语义信息表示,即在 representation learning 方面具有较强的能力。

第二阶段,CNN 阶段。


这一阶段源于 2012 年的 ImageNet 竞赛。当时 Hinton 团队组织参加了 ImageNet竞赛,使用的模型就是基于 GPU 的 CNN网络——卷积神经网络。在此之前,传统方法在该图像分类竞赛中最高的识别率是2011 年的 74%;CNN 的使用将分类准确度提升了 11 个点。在此后几年里,所有参加 ImageNet 竞赛的团队,基本上都是使用CNN 模型,准确度在逐年提升,比如 2013年的 89%、2014 年的 92%、2015 年的 95%等。所以说 2012 年是 CNN 进入视觉计算领域的重要转折点。


自 2012 年 ImageNet 竞 赛 之 后,CNN受到了大量关注,其强大的学习能力也在不同视觉应用中得到证明。比如 DeepFace 人脸识别、DeepPose 姿势估计、DeepRanking图像检索、DeepVideo 视频分类、DeepEdge边界检测、DeepSegmentation 图像分割等。对第二个阶段而言,模型特点可以简单地归纳为判别式的模型、深层网络、并行分布式计算。这个阶段的热点问题更多侧重于处理静态图像相关的各种任务,在很多领域刷新了当前最好的性能。

第三阶段,RNN 阶段。


前面两个阶段没有考虑如何对序列数据进行建模,特别是对序列数据中的时间相依关系进行建模。而我们周围很多数据都是时间变化数据,比如视频数据、天气数据等。因此,迫切需要能够处理时序数据建模的一些模型。RNN 可以对时序数据进行建模,t 时刻的隐含层不仅接受 t 时刻的输入,同时接受此前时刻的隐含层输入,因此 RNN 能够更好地解决序列数据中时间依赖关系的建模问题。


自 2014 年后,RNN 在计算视觉领域得到了广泛的应用,比如行为识别、场景理解、图像生成,以及最近流行的图像视频描述等方向。上面列举的都是比较好的文章,CVPR、ICCV、ECCV 是视觉领域的 TOP 3会 议,NIPS、ICIR、ICML 是 深 度 学 习、机器学习领域的高质量会议。这一阶段的模型特点是时序模型。如何设计具备较好模型结构的 RNN 模型是重中之重,此外还包括如何设计鲁棒高效的模型优化算法。这一阶段的热点问题,就是对序列数据中的时间相依关系进行建模。


刚才我们简单回顾了深度学习的发展过程。强调一下,深度学习不是新鲜事物,它根源于传统的神经网络。深度神经网络在视觉领域经历了三个阶段,从 2006 年开始的RBM/AE 第一阶段。第二个阶段是 CNN,是从 2012 年 ImageNet 竞赛以后 CNN 引起了研究者的广泛关注,并且在视觉领域得到了广泛应用。在这个阶段更多是处理静态图像的建模问题。第三个阶段是从 2014 年开始 RNN 进入了大家的视野,它的出现能够更好地解决现实生活中很多时序数据的处理问题。

在计算机视觉领域中,目前运用比较广泛的模型是 CNN 卷积神经网络和RNN。一般是将 RNN 翻译为“循环神经网络“,递归神经网络指的是 recursive neural network。


神经网络。卷积神经网络是深度神经网络的一种经典形式,这里先简要回顾一下深度神经网络的概念。DNN 中每个神经元都与其前一层的神经元通过权重进行连接,计算一个神经元响应的时候需要考虑与其相连的所有神经元的作用。比如说这样一个输出,其实就是加权加上非线性映射的过程,每个神经元都是相互连接的,这个连接之间是由权重来操作的,而每个神经元的输出是和前面所有输入的相关神经元相关联的,它的输出形式可以采用这样一种模式。但是当输入数据的维度比较高时,例如把图像拉伸为一个高维向量,这种全连接的操作会带来大量的模型参数需要进行学习,导致计算复杂度较高。

但事实上,人眼在观察一幅图像时,其感受也并不是整体图像,而只是一些局部图像区域。受此启发,CNN 在 DNN 基础上替换全连接操作为局部连接,即一个神经元只是与前一层局部区域内的神经元存在连接关系。这种局部连接在现实中如何操作呢?其实是通过图像滤波的方式实现的,这种方式可以显著减少模型参数,这里参数数量只与滤波器权值数量有关,并且通常滤波器的尺度较小,这里以 3×3 大小的滤波器为例。

除了局部连接操作之外,CNN 还引入了滤波器权值共享的操作,就是说图片中不同位置的滤波器权值是共享的,以进一步减少权重参数的数量。比如,图中每种颜色代表一种滤波器,左图是权值不共享的情况,四种不同颜色代表四种不同权值的滤波器;而右图表示的是共享权值的情况,这里黑色和红色表示两种滤波器。这种共享是在图像滤波的基础上引入图像卷积操作来实现的。如图所示,一个滤波器(黄色 3×3 模板),需要从左到右、从上到下滑动来进行多次滤波,从而得到卷积后的特征。以上介绍是单个通道的图像输入和单个滤波器的情况。我们可以同时使用多个滤波器来得到多个特征图,以增强模型的表达能力,比如在 m-1 层表示输入的多个特征图,m 层表示通过两个滤波器得到的两个特征图输出。


除了卷积操作,CNN 另一类重要操作是 Pooling(池化),它可以使得 CNN 具有一定程度的平移不变性。我们可在给定一个卷积后的特征图上,选取一定大小的矩形框,将框内元素用某种形式保留(如最大值或均值),其他元素忽略。也就说,当最大值(或均值)在框内任意位置时,都可以通过 Pooling 操作将其保留下来,这样使得模型可以在一定程度上对一些平移扰动保持鲁棒,同时也降低了特征维度。

对于 CNN 而言,通过迭代地进行卷积和池化操作,可以得到 CNN 的整体流程框架,比如输入图像、卷积层、池化层、卷积层、池化层……采用多少层可以根据自己需要来设定。这里 CNN 所有权值,可以通过最小化模型的输出与真实值之间的误差,利用梯度反向传播算法来进行学习。

另一个常用的模型是循环神经网络RNN。在介绍这个网络之前,同样先简要回顾一下深度神经网络 DNN。左图展示的是个典型三层 DNN,包括一个输入层、一个隐含层、一个输出层,层与层之间的传递是通过权重矩阵和激活函数实现的。DNN 通常是用来处理常规的静态数据,但却不能很好地对时序数据进行建模,比如视频、语言等。不同于 DNN 处理静态数据 x,RNN 把序列数据 x1、x2、x(例如视频的三帧) 3作为其网络输入进行建模的,每个时刻的输入都对应着一个隐含层表示,相邻隐含层之间有权重 U 进行连接,这里 W 和 U 通常在每个时刻都是共享的。RNN 可以看成DNN 沿着时间轴的扩展,它引入一个额外的权重矩阵 U,来对长距离的背景信息(或者时间相依关系)进行建模。


前面介绍的 RNN 只是对序列数据中前向时间相依关系进行建模,即 Forward RNN。但是对于序列数据而言,比如视频,其某一帧不仅跟前一帧有关联,同时与后一帧也有关联,因此需要对前向和后向时间相依关系同时进行建模,由此出现了双向的 RNN 网络,这里两个网络是联合起来对输出进行预测的。

RNN 其实是非常深的神经网络。这里展示了一个三层的 DNN 和沿着时间轴扩展三步的 RNN。需要注意的是,这里的 RNN并不是一个 3 层的网络,通过展开可以看到它本身是一个 5 层的网络,x1 产生了 h1、h1和 x2 的结合产生了 h2、h2 和 x3 的结合产生了 h3。事实上,RNN 的深度完全取决于输入序列的长度,一般视频或者文本的长度都比较长(大于 20),这时 RNN 就变成了一个很深层的神经网络。


一般的 RNN 并不能够高效地对序列数据中的长距离相依关系进行建模。因为对所有神经网络来说,增加了网络的深度会很容易在网络优化过程中带来梯度消失或者爆炸问题。具体来说,根据梯度反向传播准则,误差在某一层的梯度等于上一层的梯度乘以两个元素,一是激活函数的倒数,一是网络权重。类似迭代下去,则约等于顶层的梯度乘以这两个元素乘积的 t次方形式。如果这个乘积较小的话(<1),经过 t 次方以后将会更小甚至消失;如果这个乘积较大的话(>1),经过 t 次方后将会很大,就有梯度爆炸问题。梯度很大使得网络权重学习变差,梯度很小会使得底层网络的权重得不到优化,因此对 RNN而言,特别需要解决梯度消失或梯度爆炸问题。

对于梯度爆炸问题,可以采用梯度修剪方式进行操作。比如设定一个阈值,当计算梯度超出此阈值时,可以强制将它拉回到阈值范围。梯度爆炸使得网络在某一次优化过程中计算出较大的梯度,然而前期已有诸多局部极小的区域,一旦大梯度出现,通过强制把它拉回到小范围的局部区域中来,从而可以避免梯度爆炸的问题。


对于梯度消失问题,我们希望乘积因子尽量接近于 1,因为 1 的 t 次方还是 1,不会出现太大或者太小的变化。比如可以对循环矩阵 U 使用单位矩阵而不是随机矩阵进行初始化;对于激活函数使用 ReLU 函数,因为它的梯度是 1。除了这些策略,考虑到梯度消失或者梯度爆炸问题本质上是网络学习记忆新知识的速度太慢或者太快,那么可否建立一个比较持续稳定的学习记忆方式呢? LSTM 模型就可以实现这个目的,它可以看作是带有门限的非线性激活函数来代替传统的 Sigmoid 函数。具体来说,LSTM 定义了一个非常复杂的映射 f。LSTM 核心是 t 时刻的记忆向量 c(t),这个向量可以认为是随着时间 t 保持相对恒定的,其可以对新信息进行更新记忆,对旧信息进行遗忘记忆。对新记忆,通过输入门来调控其学习量;对旧记忆,通过遗忘门来调控其遗忘量;在由新记忆和旧记忆得到当前时刻记忆时,通过输出门来选择性地调控其输出量。LSTM 一定程度上能够很好地解决传统的 RNN 模型带来的梯度消失和爆炸问题。


上面介绍了两个经典的模型,一个是卷积神经网络,一个是循环神经网络,这两个网络模型在计算机视觉领域有着广泛的应用。接下来介绍一些我们近期的代表性研究工作,由于时间关系,对于每个工作仅仅介绍介绍其背景和主要思路。


第一,物体分割与识别。

目标图像分割是 2013 年百度人形分割竞赛冠军工作。这个工作相对是比较早期的工作,它解决的问题是,在给定图像中,把用户感兴趣的前景目标分割出来。大家可以看看这些图像人形分割的例子。

我们当时选择的是典型的 CNN 框架。利用传统的 CNN 网络框架,加入多通道的上下文输入信息。给定图像,目标是分出前景像素和背景像素。针对每个像素,可以采用多个不同尺度的框来表示它周边的上下文信息。比如这里显示图中某个位置中心点,选取三个不同尺度作为多通道输入送入 CNN 网络,CNN 的输出是两节点的输出,用于判断该点是前景还是背景,思想是非常简单的。这里展示了一些实验结果,最左栏是实际的输入图像,中间栏是真实的分割结果,右边栏是我们算法的结果,可见我们算法对于复杂背景、多样姿势、变化尺度、不同衣服具有较好的鲁棒性。


我们的工作相对于竞赛第二名准确度方面有较大提升,可以说是当时国内最高的图像分割水平。基于这个技术,我们连续两年跟三星公司进行合作,重在提升算法的精度和速度。目前我们在精度上从当时的 87% 上升到 95% 以上,而且能够做到实时处理。这个分割工作在其他领域也有较好应用,比如虹膜分割,我们在 NICE1 数据库上取得了当前最好的结果。

第二,多标签图像检索。

这个深度语义检索是发表在 CVPR 2015 年的工作。图像检索大家都知道,就是给定一个图像来检索数据库里与其相似的图像。该工作的主要思路是利用图像的Tag 作为监督信息进行语义排序,以指导图像表示(哈希)的学习。多标签图像有个特点,对于每幅图像而言有着不同的标注。在学习过程中,我们使用 Tag 信息对图像进行排序,每次训练有一张原始图片、相似图片、稍微不相似图片、不相似图片,最后学习到的特征会使得相似的图片对距离小于不相似的图片对的距离。具体技术细节这里不作赘述。


另一个工作是发表在 TMM 2015 上关于多标签图像文本的分类与检索的。Tag 文本标注和图像所表示的内容信息是相关的,这样多模态数据本质上是描述同一个语义概念,但不同模态数据表示之间是互补的,因此可以通过模态的融合来获得更好的表示,这样表示有利于后续的分类检索任务。我们考虑非约束情况下多模态学习问题,即考虑了模态缺失问题以及类别标签的共生关系问题。


我们的模型包含两个阶段:第一个阶段使用 Stacked RBM 模型,对于每个模态(如图像、文本),首先学习它的特征表示,尽量去除模态特定的特性;第二个阶段包括两点,即生成缺失模态和有监督的多模态融合。对于前者可以建模模态间的条件概率来实现,对于后者采用多任务学习方法对类别标签的共生关系进行建模。

第三,数据关系学习。

广义自编码机是 DeepVision 2014 最佳论文奖的一个工作。传统的 Autoencoder 只对输入数据自身进行重构。为了保持学习到数据潜在的局部结构关系,广义自编码机考虑了数据之间的相似性关系,即对与输入相似的数据亦进行重构。也就是说在优化模型中,不仅考虑重构本身的误差,同时考虑周围相关的点的局部关系及其重构误差。在广义 Autoencoder 框架下,通过改变相似性度量函数,我们可以实现不同的线性或非线性的传统降维方法,并且取得了较好的效果。

深度聚类是我们 ICPR 2014 最佳学生论文奖的工作。该工作是基于 Autoencoder的,主要思路是改变了目标优化函数,不仅包含重构误差项,也包含拉普拉斯项,目的是保持数据在低维空间中局部结构特性,同时包含 Group sparsity 约束,以期学习到隐含层可以含有类别信息,从而有助于聚类任务。

再一个是我们 ICCV 2015 的深度关系学习的工作。高阶 Boltzmann Machines 目前已被应用关系学习任务,不过目前只有无监督学习方法。以人脸验证为例,给定一个输入图像 x、y,我们想知道它们的关系 z,这个关系可能是匹配或者不匹配。为了增强模型判别性,我们将关系学习看作关系二分类问题,在传统高阶 Boltzmann Machines 模型中引入关系类别标签(匹配或不匹配),提出监督的条件高阶玻尔兹曼机 CHBM。再以人脸验证为例,人脸匹配可能受到光照、视角或者表情的影响,为了考虑这些因素对于关系学习的影响,我们提出 Gated CHBM 扩展模型。针对这样的模型学习,因为模型包含四阶张量,通过张量分解运用四个矩阵来近似求解。举个例子,我们生成很多成对的图像,图像内部没有特定内容,但是一对图像之间包含旋转或者平移变换。我们利用我们的模型来学习这种变换,图中显示了学习到的网络权重,确实具有那样的变换关系。当然,利用学习到的关系本身代表了图片之间的相似度,可以参见在 MINST 数据库上图片之间相似度的可视化分布图。


第四,视频分析。

首先介绍一个群体行为分析的工作,这个工作发表在 NIPS 2013 和 IJCV 2016。计算机视觉中最早研究了相对简单的个体行为,后来研究结构化的个体行为(如骑马),现在开始关注群体行为识别(如结婚典礼、生日 Party)。可以说,行为识别的复杂度越来越高。


针对这个问题,我们提出相关 RBM 模型来学习紧凑判决的视频中层表达。该混合模型包含两个部分,无向部分建模底层视觉特征向量的边缘分布,有向部分通过使用权值上分层先验建模给定隐含特征时的类别标签的条件分布。这种分层的先验是一种自动相关决策先验,因此能够有效地关掉被认为与分类无关的隐含特征,从而使得学习到的中层表达对于不同的视频类具有较好的可区分性。群体行为识别、复杂事件检索方面的应用验证了该方法的有效性。

接下来介绍发表在 TPAMI 2017 年的一个工作。什么叫步态识别?步态识别通过人走路的方式进行人的身份识别。在步态识别中一个关键的问题是在不同视角下人走路的外观变化是不一样的,因此步态识别成功走向实际应用必须解决跨视角的问题。我们的工作利用卷积神经网络来学习步态对之间的相似度,因为时间关系就不讲技术细节。这个工作取得了目前国际上最好的识别性能,吸引了社会投资成立银河水滴(北京)科技有限公司。接下来的几个视频分析方面工作也不介绍了。

第五,神经网络可视化。


在人脑中,视觉注意通常是被任务自上而下驱动进行的,这个过程可以认为是神经元反馈调节过程,目的是选择性地接受特定的输入信号。右面两个图简要解释了如何对这个反馈机制进行建模的过程。对于一个神经网络,当给定一个输入之后,所有神经元响应是不加选择地全部由输入数据进行驱动。当输入中包含各种各样复杂的背景或噪声时,所有信息都会从底端上传到高层,这样可能会影响到输出结果。若在每一层所有神经元之后接一个开关控制变量(红色圆圈),这样每个神经元都可以被控制为开启或者关闭;而我们期望输出的意图作为一种反馈通过 Top Down方式来控制这些开关量,这样能够对上传的信息进行有目的的筛选,而不是不加选择性地把噪声、背景或者其无关信息都上传上去。比如图像分类,我们希望 CNN网络分类该图像为 PANDA,现在知道输出是 PANDA,那脑海里自然有这样一个熊猫画面,利用此信息来反馈控制神经元开关,从而选择那些对熊猫区域比较敏感的神经元,最终能够有效地反映出实际神经元响应以及对应的图像区域。

为了进一步增强筛选结果,我们也试图引入生物神经系统中的侧向抑制原理,即对每一层筛选策略加入侧向抑制概念。加入反馈的神经网络比没有反馈的神经网络多了一层开关,然后高层信息反馈来控制这些开关,现在进一步增加侧向抑制在每一层神经元中,这样神经元之间有相互抑制和相互增强的过程。

加入侧向抑制的好处是什么?比如输入一幅图像,有大象、斑马,加入反馈机制能够有效找到大象、斑马的目标区域。如果同时加入侧向抑制,可以进一步增强目标区域、抑制噪声区域,目标区域得到了很好的凸显。从最终的能量响应图来看,没有反馈机制的 CNN,除了目标区域有响应外,非目标区域也有响应,且比较明显;加入了反馈机制,目标区域响应得到增强,非目标区域得到抑制;同时加入反馈和侧向抑制后,目标区域非常明显,而非目标区域几乎是零了,即背景区域或干扰区域几乎全部去除了。这个工作在视觉注意、目标分割、目标定位等应用中都取得了较好的结果。


计算机视觉领域利用深度学习

可能带来的未来研究方向

第一个,深度图像分析。目前基于深度学习的图像算法在实验数据库上效果还是不错的,但是远远不能够满足实际大规模应用需求,需要进一步的提升算法性能从而能够转化相应的实际应用。比如这个基于图片的应用,可以估计性别和年龄,但是其实经常会犯错,因此需要进一步提升深度图像分析的性能。

第二个,深度视频分析。视频分析牵扯到大量的数据和计算量,所以做起来更加麻烦。当前深度视频分析还处于起步的阶段,然而视频应用非常广泛,比如人机交互、智能监控等,所以加强深度视频分析是个重要的方向。

第三个,大规模深度学习。随着时间的推移,数据量将呈指数级增长。为了处理更大规模的数据,需要进行多 GPU 并行及分布式计算。开发大规模深度学习算法是相当必要的。

第四个,无监督(半监督)学习。这个方向是很明显的,因为实际应用中监督信息可能常常是缺失的,在大数据时代背景下要想标注所有的数据代价也是昂贵的。为了充分应用无标记的数据,进行无监督(或半监督)学习是非常重要的。近来的预测学习本质上与无监督学习是对应的。

第五个,多模态学习。多模态数据无处不在,尤其在互联网时代,网络上的图像、文本、语音等同时存在。多模态数据具有语义一致性、信息互补性的特点,互补性可做多模态数据的融合,一致性可做跨模态关联(如跨模态检索)。视觉信息的有效理解离不开周边文本等其他模态数据,因此多模态学习是非常有意义的研究方向。

第六个,类脑智能研究。神经网络本身是模拟大脑认知机理提出的网络结构。当前部分生物机制已经被应用到深度学习中,比如注意机制、神经元跨层连接机制等。我们有幸申请到一个基金委重点项目,探索深度认知神经网络模型与方法,就是希望在神经网络模型上能够嵌入一些脑认知功能,比如注意机制、记忆机制、反馈机制、推理机制等,以期开发更 Powerful 的神经网络新模型。在全球推动脑计划的大背景下,研究类脑智能显得尤为迫切和必要。


(本文根据王亮研究员在中国人工智能学会首期“人工智能前沿讲习班”的现场报告整理)


作者介绍:王 亮

博士,研究员,博士生导师,IEEE 高级会员,国际模式识别协会会士(IAPR Fellow),模式识别国家重点实验室副主任,计算机学会计算机视觉专委会秘书长,图像视频大数据产业技术创新战略联盟秘书长



工业互联网操作系统




产业智能官  AI-CPS


用“人工智能赛博物理操作系统新一代技术+商业工业互联网操作系统“AI-CPS OS”:云计算+大数据+物联网+区块链+人工智能)在场景中构建状态感知-实时分析-自主决策-精准执行-学习提升的认知计算和机器智能;实现产业转型升级、DT驱动业务、价值创新创造的产业互联生态链


长按上方二维码关注微信公众号: AI-CPS



本文系“产业智能官”(公众号ID:AI-CPS)收集整理,转载请注明出处!



版权声明产业智能官(公众号ID:AI-CPS推荐的文章,除非确实无法确认,我们都会注明作者和来源。部分文章推送时未能与原作者取得联系。若涉及版权问题,烦请原作者联系我们,与您共同协商解决。联系、投稿邮箱:erp_vip@hotmail.com





登录查看更多
1

相关内容

标跟踪是指:给出目标在跟踪视频第一帧中的初始状态(如位置,尺寸),自动估计目标物体在后续帧中的状态。 目标跟踪分为单目标跟踪和多目标跟踪。 人眼可以比较轻松的在一段时间内跟住某个特定目标。但是对机器而言,这一任务并不简单,尤其是跟踪过程中会出现目标发生剧烈形变、被其他目标遮挡或出现相似物体干扰等等各种复杂的情况。过去几十年以来,目标跟踪的研究取得了长足的发展,尤其是各种机器学习算法被引入以来,目标跟踪算法呈现百花齐放的态势。2013年以来,深度学习方法开始在目标跟踪领域展露头脚,并逐渐在性能上超越传统方法,取得巨大的突破。

知识荟萃

精品入门和进阶教程、论文和代码整理等

更多

查看相关VIP内容、论文、资讯等
【CMU】基于图神经网络的联合检测与多目标跟踪
专知会员服务
54+阅读 · 2020年6月24日
最新《深度学习行人重识别》综述论文,24页pdf
专知会员服务
80+阅读 · 2020年5月5日
基于视觉的三维重建关键技术研究综述
专知会员服务
154+阅读 · 2020年5月1日
近期必读的9篇 CVPR 2019【视觉目标跟踪】相关论文和代码
深度学习视频中多目标跟踪:论文综述
专知会员服务
90+阅读 · 2019年10月13日
CVPR 2019 Oral 目标跟踪最强算法SiamRPN++开源实现
极市平台
47+阅读 · 2019年5月2日
CVPR2019 | SiamMask:视频跟踪最高精度
计算机视觉life
5+阅读 · 2019年3月10日
DaSiamRPN的升级版,视觉目标跟踪之SiamRPN++
极市平台
75+阅读 · 2019年2月20日
计算机视觉中,目前有哪些经典的目标跟踪算法?
人工智能头条
9+阅读 · 2018年5月4日
深度学习的快速目标跟踪
AI研习社
13+阅读 · 2018年1月8日
Deep Learning in Video Multi-Object Tracking: A Survey
Arxiv
55+阅读 · 2019年7月31日
Arxiv
5+阅读 · 2018年4月30日
Arxiv
6+阅读 · 2018年3月29日
Arxiv
10+阅读 · 2017年11月22日
Arxiv
5+阅读 · 2017年11月13日
VIP会员
相关VIP内容
【CMU】基于图神经网络的联合检测与多目标跟踪
专知会员服务
54+阅读 · 2020年6月24日
最新《深度学习行人重识别》综述论文,24页pdf
专知会员服务
80+阅读 · 2020年5月5日
基于视觉的三维重建关键技术研究综述
专知会员服务
154+阅读 · 2020年5月1日
近期必读的9篇 CVPR 2019【视觉目标跟踪】相关论文和代码
深度学习视频中多目标跟踪:论文综述
专知会员服务
90+阅读 · 2019年10月13日
相关资讯
CVPR 2019 Oral 目标跟踪最强算法SiamRPN++开源实现
极市平台
47+阅读 · 2019年5月2日
CVPR2019 | SiamMask:视频跟踪最高精度
计算机视觉life
5+阅读 · 2019年3月10日
DaSiamRPN的升级版,视觉目标跟踪之SiamRPN++
极市平台
75+阅读 · 2019年2月20日
计算机视觉中,目前有哪些经典的目标跟踪算法?
人工智能头条
9+阅读 · 2018年5月4日
深度学习的快速目标跟踪
AI研习社
13+阅读 · 2018年1月8日
Top
微信扫码咨询专知VIP会员