
2014年,如果你问计机视觉域的研究者个问题:给你段,让机器判断里的人在"网球"还是"拉小提琴",度学习和手工设计的特征相比,谁强?
大多数人会告诉你,度学习赢不了。
这句话放在今天听起来有点不可思议,毕竟度学习早就统了图像识别。但在动作识别这个具体问题上,情况不同。当时厉害的法叫**密集轨迹**
> 密集轨迹:种手工设计的特征提取法,通过追踪中密集分布的像素点的运动轨迹,并结轨迹周围的图像和运动信息来描述动作,在度学习流行之前长期占据动作识别准确率榜。
这个法在的UCF-101数据集上能做到88左右的准确率,而当时几个尝试用度学习做动作识别的工作,准确率普遍卡在65到70之间,差距接近20个百分点。
20个百分点的差距意味着什么?意味着每5个动作里,度学习法就要比手工特征多认错1个。这不是简单的参数没调好,而是整个思路可能有问题。
问题出在哪儿?卷积经网络在图像识别上表现出,靠的是能从静态画面里学出物体的形状、纹理、边缘这些视觉模式。但动作,顾名思义,核心信息不在某帧画面里,而在画面和画面之间的变化里。你给网络看张照片,它能认出这是个人在挥手臂,但它怎么知道这个人是在挥手招呼,还是在挥手网球?答案藏在时间维度上,藏在连续帧之间的运动模式里。而当时的卷积网络,天生就是为处理单张静态图片设计的,让它去理解"运动"这个概念,相当于让个只会看照片相册的人去判断段舞蹈跳得好不好,他能看出舞者的姿势,但看不出节奏和流动感。
这就是Karen Simonyan和Andrew Zisserman在2014年面对的局面。他们俩当时都在牛津大学的视觉几何组,顺带提,几个月之后他们俩又发表了另篇论文,叫VGGNet,后来成了图像识别域常被引用的网络结构之。这两篇论文几乎是同期完成的工作,这个细节挺有意思,说明这个团队当时同时在图像和两条线上都在攻坚。
他们提出的法后来被称为**双流网络**
> 双流网络(Two-Stream Network):种同时使用两个立卷积经网络分支处理的架构,个分支处理静态画面,另个分支门处理运动信息,后把两者的判断结果融起来。
这篇论文的核心思路,说起来其实很朴素:既然个网络很难同时学会"这是什么"和"它怎么动",那就别逼它个人干两份活,干脆训练两个网络,个门看"长什么样",个门看"怎么运动",后把两边的判断结果加起来。
空间流:负责认出场景和物体
个分支叫**空间流**
> 空间流(Spatial Stream):双流网络中负责处理静态画面信息的分支,输入是里的单帧图像,用来识别场景、物体和人物外观等空间特征。
这个分支干的事情,说白了就是传统的图像分类。输入帧画面,输出这帧画面里可能包含什么物体、什么场景。网络能看出网球场的绿场地,能看出小提琴的形状,能看出游泳池的水波,这些视觉线索对判断动作类别其实帮助很大,毕竟很多动作和特定的场景、道具是强绑定的渭南家具封边胶,你在游泳池边多半不是在篮球。
这部分网络的结构基本沿用了当时图像分类域已经验证过的卷积网络设计,因为这本质上就是个图像分类任务,只是把输入换成了里抽出来的某帧。既然图像分类这条路已经被AlexNet证明走得通,那就没要重新发明轮子。
时间流:门盯着"动"这件事
真正的创新在二个分支,叫**时间流**
> 时间流(Temporal Stream):双流网络中门处理运动信息的分支,输入不是原始图像,而是相邻帧之间计出的光流场,用来捕捉动作的运动模式。
这里有个关键问题:网络要怎么"看到"运动?直接把连续几帧图像堆在起喂给网络,果并不好,因为背景、光照这些关信息会淹没掉真正重要的运动信号。他们的解法是先把转换成**光流**
> 光流(Optical Flow):描述图像中每个像素点在连续两帧之间移动向和速度的向量场,本质上是把"哪里在动、往哪个向动"这个信息可视化成张图。
光流场长什么样?你可以想象成给里每个像素点画个箭头,箭头指向这个点接下来往哪个向移动,箭头长短代表移动速度快慢。把这些箭头拼在起,就得到张只包含运动信息、不包含颜和纹理的图,论文里通常是把水平向和垂直向的运动分量分别存成两张灰度图。
这就是双流网络巧妙的地。他们没有指望卷积网络自己从原始像素里悟出运动概念,而是先用传统的光流法把运动信息显式地计出来,提取成张"运动地图",再让卷积网络去学这张地图里的模式。这相当于把个很难的问题拆解成两步:先用成熟的老法把运动信息可靠地抠出来,再用度学习去从这些运动信息里总结规律。
这里可以做个类比。假设你想训练个新员工判断顾客是不是在生气,你有两种办法。种,直接把监控录像整个丢给他看,让他自己从画面里悟出"生气"是什么样子,这样他要同时处理光线、背景、顾客穿着这些关信息,学习率很低,而且容易被干扰。二种,你先用心理学总结好的规律,把顾客的表情变化、手势幅度这些关键动态特征标注出来,再让他去学这些标注好的动态特征和情绪的关系。二种法明显快准,因为你帮他提前过滤掉了噪音,只留下真正有用的信号。光流场干的就是这个过滤噪音的活,如果直接把原始帧序列丢给网络,网络要花大量精力去分辨哪些像素变化是真正的动作,哪些只是光影晃动,而光流已经把这个"提炼动态"的工作提前做好了。
论文里还有个细节值得提,他们没有只用两帧之间的光流,而是把连续10帧计出的光流场堆叠在起,作为时间流网络的输入。这样做的原因是单两帧之间的运动信息太短促,很多动作光看瞬间的位移根本分不清,比如挥手和挥拳的初始动作可能差别很小,得看小段连续的运动轨迹才能区分开。
两条流怎么融
两个分支各自训练好之后,怎么把它们的判断结果并成终答案?论文里试了几种融式,包括直接把两个网络后输出的分类分数做平均,或者训练个小的分类器去学习怎么组两边的分数。实验发现,用个额外的支持向量机去融两条流的输出,果比简单平均要好些。
这里其实反映了个的问题:空间信息和时间信息到底应该在哪个层融?是应该让两个网络各自立判断到底,只在后步并结论,还是应该让它们在中间层就开始交流,互相参考对看到的信息?这篇论文选择了简单的案,两条流从头到尾立,只在后的分类分数上融。这个选择在当时是理的,因为先把"分头判断能不能work"这件事验证清楚,比开始就搞复杂的融机制稳妥,但这也留下了个明显的改进空间,后来的研究者们花了不少功夫去探索早期的融式。
数据不够怎么办
度学习个绕不开的问题是需要大量标注数据才能训练好渭南家具封边胶,而当时动作识别域大的数据集UCF-101也只有大概1.3万段,分成101个动作类别,这个规模跟图像分类域动辄百万的ImageNet比起来小了两个数量。
论文里用了两个办法应对这个问题。是多任务学习,把两个不同的数据集(UCF-101和另个叫HMDB-51的数据集)放在起训练,共享网络的底层参数,只在后的分类层区分是哪个数据集的任务,这样相当于变相扩充了训练数据量。二是大量使用数据增强手段,比如对训练样本做裁剪、翻转、彩抖动等变换,人为制造出多样化的训练样本。
数据不够这个问题放在任何个度学习项目里都是老大难。这就像你想教个孩子认识100种不同的鸟,但你手头能找到的鸟类照片总共才1000张,平均每种鸟只有10张照片可看,这个孩子很容易记住这10张照片的细节,却学不会真正区分鸟类的规律。多任务学习相当于你同时找了另个类似的任务,比如认识100种不同的树,让孩子在学认鸟的同时也学认树,两个任务共享部分基础的观察能力训练,这样孩子锻炼出的基础视觉分辨能力会扎实,再回头看认鸟这个任务,果也会好些。如果不做这步,单靠1.3万段去训练个原本设计给百万数据用的网络结构,大概率会出现过拟,网络记住的是训练集里的细枝末节,而不是动作本身的规律。
结果如何,真的追上手工特征了吗
这篇论文终在UCF-101数据集上,双流网络的准确率达到88.0,次追平甚至略微过了当时好的手工特征法。
来看几个关键的对比数字。如果只用空间流,不用时间流,准确率是72.6。如果只用时间流,不用空间流,准确率是81.0。两条流融之后,达到88.0。
|**双流融**|**88.0**|
这组数字本身就很说明问题。单的时间流(81.0)比单的空间流(72.6)出8个多百分点,说明运动信息对判断动作类别的贡献比静态画面信息大,这也反过来证明了开始的判断是对的,动作识别的关键信息确实多藏在"怎么动"里,而不是"长什么样"里。而两条流融之后又比单任何条流出至少7个百分点,说明这两种信息确实是互补的,静态画面能提供场景和物体线索,运动信息能提供动态模式线索,两者结起来才能地判断。
这是度学习在动作识别这个具体任务上,次真正平手工设计的特征法。放在2014年这个时间点看,这个意义不亚于两年前AlexNet在图像分类上证明度学习可以碾压传统法。区别在于,AlexNet那次是碾压式的胜利,而双流网络这次像是艰难地追平,但追平本身已经证明了这条路走得通,度学习不是不能处理时序信息,只是需要用对法。
后来的故事
双流网络这篇论文发表之后,直接催生了大批后续工作,几乎奠定了后来好几年动作识别研究的基本框架。
2016年,Feichtenhofer等人发表的论文进步研究了两条流应该在哪个层融果好,他们发现让空间流和时间流在网络中间的卷积层就开始交换信息,比原来只在后融分类分数果好,这个改进后来被称为**时空融**
> 时空融(Spatiotemporal Fusion):让处理空间信息和处理时间信息的网络分支在中间层就开始交互,而不是等到后才并结果,万能胶厂家从而让两种信息早地互相校准。
同样在2016年,Wang等人发表了**时序分段网络**
> 时序分段网络(Temporal Segment Network,TSN):将段切分成若干时间段,分别在每个片段上运行双流网络,再把各片段的结果聚起来,从而让网络能利用里长时间跨度的信息,而不是只看几帧画面。
这个改进解决了双流网络原本的个局限,原始双流网络每次只看很短的段光流,难以捕捉持续时间较长的动作模式,而时序分段网络通过在整段里均匀采样多个片段,再综判断,大幅提升了长时间动作的识别果,在UCF-101上把准确率进步到94以上。
再往后,光流本身计成本、依赖传统法这个问题也被质疑,于是后来出现了大量试图让网络直接从原始帧里学出运动信息、抛弃显式光流计的三维卷积网络,比如I3D等工作,某种程度上是在回答双流网络留下的那个问题:能不能让网络自己学会捕捉运动,而不需要人为先出光流。
写在后面
这篇论文让我印象的个细节,是空间流和时间流单拿出来对比的那组数字。时间流单跑,81.0,已经比同时期很多完整的度学习法都强了。这说明当时度学习不是不擅长理解,而是之前的人直在用错误的式喂数据给网络,直接扔原始像素序列,而不是先转换成运动信息。
这让我想起个普遍的问题,很多时候个模型"学不会"某件事,未是模型能力不够,而是数据的呈现式本身就没有把关键信号暴露出来。这在很多域都成立,不只是理解。
光流这步靠的仍然是传统法,不是端到端学习出来的,这也是这篇论文留下的个明显缝隙。如果有天,网络真的能脱离任何手工设计的中间表示,直接从像素学出所有需要的东西,那会是什么样子?后来的三维卷积网络某种程度上在回答这个问题,但代价是需要多的数据和力,这笔账到底划不划,可能到现在都没有个对的答案。
Q&A
Q1:双流网络是什么?
A:双流网络是2014年由Simonyan和Zisserman提出的动作识别法,用两个立的卷积经网络分支分别处理静态画面(空间流)和运动信息(时间流),后融两者结果来判断中的动作类别。
Q2:双流网络为什么要用光流而不是直接输入帧?
A:因为直接输入原始帧序列会让网络被光影、背景等关信息干扰,难以注学习真正的运动模式。光流提前把运动向和速度计出来,相当于帮网络过滤掉噪音,让它只需要学习运动信息里的规律。
Q3:双流网络的果和当时好的手工特征法比怎么样?
A:双流网络在UCF-101数据集上达到88.0准确率,追平甚至略微过了当时强的手工法密集轨迹(约87.9),这是度学习次在动作识别任务上平传统手工特征法。相关词条:铁皮保温 塑料挤出机 钢绞线 玻璃卷毡厂家 保温护角专用胶
奥力斯 泡沫板橡塑板专用胶报价 联系人:王经理 手机:18232851235(微信同号) 地址:河北省任丘市北辛庄乡南代河工业区
1.本网站以及本平台支持关于《新广告法》实施的“极限词“用语属“违词”的规定,并在网站的各个栏目、产品主图、详情页等描述中规避“违禁词”。
2.本店欢迎所有用户指出有“违禁词”“广告法”出现的地方,并积极配合修改。
3.凡用户访问本网页,均表示默认详情页的描述渭南家具封边胶,不支持任何以极限化“违禁词”“广告法”为借口理由投诉违反《新广告法》,以此来变相勒索商家索要赔偿的违法恶意行为。
