
2014年秋天,如果你问个计机视觉域的研究者“度学习能识别里的动作吗”,大部分人会摇头。
不是度学习不行,而是它在这件事上直不过群“老古董”法。这些老法有个业名字。
> 手工特征*:指研究者根据经验设计的特征提取规则,不是通过学习得到的,比如统计图像里边缘的向分布,或者追踪像素点在中的运动轨迹。
在2014年之前,强的动作识别法叫做密集轨迹(Dense Trajectories),它通过追踪里成千上万个点的运动路径,再统计这些路径周围的图像特征,拼出套动作的“指纹”。这套指纹式的法在标准数据集UCF-101上能拿到87.9的准确率。
度学习这边呢?好的尝试是把的每帧当成张图片,直接扔进卷积经网络。结果准确率只有65.4,比手工特征低了整整22.5个百分点。
22.5个百分点意味着什么?意味着每识别10个动作,度学习就要比手工法多认错两个还多。这个差距在当年被很多人认为是“度学习的天花板”,理由也很直接:比图片多了个时间维度,而卷积经网络天生擅长处理空间结构,不擅长处理运动。
牛津大学Karen Simonyan和Andrew Zisserman这两位研究者,决定回答个问题:度学习到底能不能理解“动”这件事,而不是只理解“长什么样”。
他们给出的答案,后来被写进了篇叫《Two-Stream Convolutional Networks for Action Recognition in Videos》的论文里。这个法的核心思路简单到有点反直觉:不要让个网络同时学“形状”和“动作”,而是拆成两个网络,个门看形状,个门看动作,后把两边的判断结果加起来。
问题出在哪:不是图片的堆叠
要理解这个设计的要,得先弄清楚为什么直接把塞进图片分类网络会失败。
个动作,比如“挥手”,由两部分信息组成。部分是场景和物体的样子,手是什么形状,背景是什么环境。二部分是运动,手往哪个向挥,速度多快,轨迹是什么样。
普通的卷积经网络在静态图片分类上表现好,因为它擅长捕捉纹理、边缘、颜这类空间信息。但当你把的帧帧塞给它,让它自己去“悟”出运动模式,它其实很难悟出来。
原因在于卷积操作本身是为静态图案设计的。它去检测“这里有个圆形”“那里有条竖线”,却没有的机制去捕捉“这个点在下帧移动到了那里”。你让它隔着单张图片猜运动向,相当于给它张照片让它猜快门按下前后物体往哪边动,信息压根不在这张图里。
这就是为什么早期尝试直接堆叠帧的法,准确率只有65.4,比手工特征还差大截。
Simonyan和Zisserman的洞察是,如果网络自己学不会捕捉运动,那就不要让它自己学,直接把运动信息用现成的法出来,喂给另个门的网络。
这个现成的法叫光流。
> 光流*:描述里每个像素点从上帧到下帧移动向和速度的向量场,是计机视觉里的经典技术,不需要度学习,用传统法就能计。
两条流:空间流和时间流
论文的核心结构因此变成了两条并行的卷积网络,论文管它们叫“空间流”和“时间流”。
空间流干的事很朴素,输入单帧图像,判断画面里有什么,谁在做什么姿势。这条流基本就是个常规的图片分类网络,输入是RGB图片,判断“这个人手里拿着球拍”“背景是网球场”这类静态信息。
时间流则不看图片的颜和纹理,它的输入是连续多帧计出来的光流场,也就是每个像素“往哪儿动、动多快”的信息。它不关心画面上是不是网球场,只关心手臂挥动的向和速度是不是符“挥拍”这个动作的运动特征。
![两条流的结构图]广西海绵胶厂家
论文里的结构图画得很清楚:段先被拆成两路输入,路是某帧的原始画面,另路是这帧附近若干帧出的光流叠加图。两路各自送进个卷积网络,各自吐出个分类结果,后把两个结果的分数加权并,得出终判断。
这个设计能不能工作,关键要看并之后果怎样。论文给出的答案是,单用空间流,准确率是72.6,单用时间流,准确率是81.0,两者融之后,达到88.0。
这里有个细节值得说清楚:单的时间流,也就是只看运动不看画面的网络,准确率比只看画面的空间流了整整8.4个百分点。这说明在“动作”这个任务上,运动信息本身比画面信息重要。这也印证了他们初的判断,普通卷积网络学不好,不是因为网络不够大,而是因为它压根没被喂到运动信息。
如果不拆成两条流会怎样?论文里也做了对比,前面提到的直接堆叠帧的法只有65.4,比两流法融后的88.0低了22.6个百分点。这个差距基本说明了件事,度学习不是学不会里的动作,而是之前的做法没有把正确的信息喂给它。
这里可以个类比。假设你要教个从没见过体育比赛的人辨认“投篮”和“传球”这两个动作,你给他看张静止的照片,他大概能看出这是篮球场,画面里有个人举着球,但他猜不出球接下来往哪儿飞。如果你换成给他看段慢动作的手臂摆动轨迹,哪怕看不清是谁在球,他也能准确判断这是投篮还是传球的姿势。两种信息各有各的用处,同时给他看,他判断得准。如果你非要让他只凭张静止照片就猜出运动向,他大概率猜错,这正是早期度学习法在动作识别上栽跟头的原因。
为什么光流要单,而不是让网络自己学
有人可能会问,度学习不是擅长自动学习特征吗,为什么这里还要用个传统法先把光流出来,再喂给网络?这不是绕了个弯路吗?
答案在于当时的力和数据条件。2014年的卷积经网络想要从原始像素直接学出精确的运动估计,需要海量标注数据和的网络结构,而当时能用的动作识别数据集规模很小,UCF-101总共只有13320段。这么小的数据规模,不足以让网络从学会计光流这么精细的任务。
于是实际的做法是,借用计机视觉里已经成熟几十年的光流估计法,把这步的计精度直接“外包”出去,网络只需要学习“看到这样的运动模式,应该判断为什么动作”,而不需要自己从像素里运动是什么。
这是种务实的工程选择:不追求端到端全部由经网络完成,而是让传统法和度学习各自发挥所长。
这就好比装修房子,你可以雇个全能工人从水电到瓦工全部自己上手,但如果这个工人对水电不熟,勉强上手可能漏水漏电,不如直接请个业电工把线路布好,工人负责后续的瓷砖和粉刷。传统光流法就是这里的“业电工”,它把难、精细的运动计做好,度学习网络心做它擅长的模式识别和分类。如果非要让新手工人从学电路,大概率是又慢又容易出错。
数据不够怎么办:多任务训练
拆成两条流之后,Simonyan和Zisserman还面临个具体的工程难题,时间流网络需要海量的数据来训练,但当时能用的标注数据集非常有限。
他们用的解决办法叫多任务学习。
> 多任务学习*:让同个网络同时在两个不同的数据集上训练,共享大部分网络参数,只在后输出层区分任务,这样可以用个数据集的数据帮助另个数据集的学习。
具体做法是,他们把UCF-101和另个数据集HMDB-51放在起训练同个时间流网络,网络的大部分层参数是共享的,只有后的分类层是各自立的。这样来,即使单个数据集的数据量不够,在起训练也能让网络学到泛化的运动特征。
实验结果证明这个做法确实有,加入多任务学习后,时间流网络在UCF-101上的准确率从80.4提升到81.0,提升幅度不夸张,但在当时数据稀缺的条件下,这是个实实的增益,而且几乎没有额外成本。
站在历史节点上回头看
这篇论文发表的意义,放在2014年的时间点上看格外清楚。
在此之前,度学习在图像分类上早已证明了自己,2012年的AlexNet横扫ImageNet图像分类比赛,让整个域相信卷积经网络是未来。但域是个例外,度学习法迟迟不过手工设计的密集轨迹特征,这让不少人怀疑,卷积网络的成功是不是只局限于静态图像,这种带时间维度的数据可能不适它。
两流网络次让度学习在动作识别的标准测试集上过了手工特征法,88.0对87.9,虽然只先了0.1个百分点,但这是质的突破。它证明了度学习不是不能理解动作,只是之前没有找到正确的信息表达式。
这个时间点上还有个值得说的细节,Karen Simonyan和Andrew Zisserman同属牛津大学的VGG研究组,而就在两流网络论文发表几个月后,他们两人又发表了另篇论文,提出了后来喻户晓的VGGNet,个通过堆叠简单卷积层大幅提升图像分类能的网络结构。这两篇论文几乎是同期完成的工作,某种程度上反映了这个团队当时在度学习结构设计上密集探索的状态,边琢磨怎么把网络做做对,边琢磨怎么把时间信息喂给网络。
两流网络之后,这个思路很快被后续研究继续放大。
2015年,Feichtenhofer等人在两流网络基础上提出了改进的融策略,研究如何在网络的不同层把空间流和时间流的信息早地结起来,而不是像原始论文那样只在后输出层简单相加,这让融后的准确率进步提升。
2016年,Wang等人提出的Temporal Segment Networks(时序分段网络)把两流结构扩展到整段而不只是短片段,通过对均匀采样多个片段分别提取两流特征再聚,解决了原始两流网络只能看里很短段画面、难以捕捉长时间动作的问题,在UCF-101上把准确率到了94以上。
再往后,3D卷积网络逐渐兴起,直接用三维卷积核同时处理空间和时间维度,试图让网络自己学会捕捉运动,不再需要手工计光流这步。这类法某种程度上是对两流网络路线的反思,如果网络足够大、数据足够多,是不是可以省掉光流这个中间步骤?但即便如此,两流网络提出的“空间信息和时间信息应该分开处理再融”这个核心思想,直到今天仍然在很多理解模型的设计里留有影子。
关键数据览
| 法 | 准确率(UCF-101) |
| 密集轨迹(手工特征,此前强法) | 87.9 |
| 直接堆叠帧的度学习法 | 65.4 |
| 时间流加多任务学习 | 81.0(较多任务学习的80.4提升0.6个百分点) |
| **两流网络融(空间流+时间流)** | **88.0** |
写在后面
读这篇论文时让我意外的点是,时间流单的准确率(81.0)比空间流单的准确率(72.6)出这么多。这说明在“认出个动作”这件事上,动作本身怎么动,比画面里有什么东西,信息量大。这其实翻了个直觉,我们平时看认动作,好像依赖“看清楚发生了什么”,但对机器来说,运动轨迹反而是可靠的线索。
另个值得琢磨的地是,这篇论文没有强行用度学习取代切,而是老老实实借用了传统光流法。这提醒我个容易被忽略的事实,新技术的次突破,往往不是靠抛弃旧法,而是靠找到旧法和新法的正确接口。后来3D卷积网络试图让网络自己学会“光流”,某种程度上是在赌力和数据会持续变得便宜,这个赌注后来确实赢了,但在2014年那个时间点,老老实实借用光流法才是对的选择。
如果两条流的信息可以互相帮助,那能不能有三条流,门捕捉长时间尺度的动作模式?这个问题后来的研究确实在回答,但两流网络这篇论文当时并没有给出答案。
Q&A
Q1:两流网络(Two-Stream Convolutional Networks)是什么?
A:两流网络是Simonyan和Zisserman在2014年提出的动作识别法,用两个立的卷积网络分别处理单帧画面(空间流)和运动光流信息(时间流),再将两者的判断结果融,次让度学习在UCF-101数据集上过了手工特征法。
Q2:两流网络为什么要用光流而不是让网络自己学习运动信息?
A:因为2014年的数据集规模很小,网络难以从学会精确估计运动,所以研究者借用了成熟的传统光流法直接计运动信息,再交给网络学习如何根据这些运动模式判断动作类型,这样率、果好。
Q3:两流网络的准确率相比之前强的手工特征法提升了多少?
A:两流网络融后的准确率是88.0,此前强的手工特征法密集轨迹是87.9,两者非常接近,但这是度学习次在动作识别标准测试上追平并略微过手工特征法,具有里程碑意义。相关词条:罐体保温 塑料挤出设备 钢绞线 超细玻璃棉板 万能胶
奥力斯 pvc管道管件胶批发 联系人:王经理 手机:15226765735(微信同号) 地址:河北省任丘市北辛庄乡南代河工业区
1.本网站以及本平台支持关于《新广告法》实施的“极限词“用语属“违词”的规定,并在网站的各个栏目、产品主图、详情页等描述中规避“违禁词”。
2.本店欢迎所有用户指出有“违禁词”“广告法”出现的地方,并积极配合修改。
3.凡用户访问本网页,保温护角专用胶均表示默认详情页的描述,不支持任何以极限化“违禁词”“广告法”为借口理由投诉违反《新广告法》,以此来变相勒索商家索要赔偿的违法恶意行为。
