嗨~大家好,
今天是我们技术团队第二篇技术解析文章
在开始今天的文章之前
小编想问问大家
有没有兴趣来参加我们技术团队的分享
有兴趣的同学可以在后面评论区留言或后台私信小编
我们会根据评论情况组织对外分享哟
OK~
那接下来让我们进入正文吧
技术解析是由美团点评无人配送部技术团队主笔,每期发布一篇无人配送领域相关技术解析或应用实例,本期为您带来的是基于光流的视频目标检测系列文章解读。
本文主笔:平凡的外卖小哥
本文共5747,预计阅读时间15分钟
1简介
目前针对于图片的目标检测的方法大致分为两类:
总的来说,第一种方法的准确率要比第二种方法要高,但是第二种方法的速度要快。在实际应用中,摄像头的数据以视频的方式产生。为了处理这些视频数据,目前普遍的做法是对每一帧进行目标检测和语意分割。然而,如图1所示,这样的处理方式有两种问题:1)帧与帧之间有大量的冗余计算,导致满足不了实时需求(fps>=15);2)由于移动目标存在失焦,遮挡等情况,导致目标在单帧上不能被检测到。为了解决这两个问题,在处理视频的时候需要利用帧与帧之间的上下文信息。因此,如何利用视频的时序信息来提高检测精度/速度,如何平衡accuracy speed tradeoff,是一个比较热门的研究方向。本文主要调研了使用光流来利用视频中时序信息的方法。
图1:视频中的相邻两帧。图(a)中,相邻两帧的语义分割在大部分都是相同的,单帧分割会导致大量的冗余计算。图(b)中,由于目标的运动模糊,很可能会导致单帧目标检测的失败。
2数据集
2.1 视频目标检测
从2015年起,ImageNet新增了视频目标检测的任务,object detection from video (VID)。其数据集标注了30类目标,是检测(DET)数据集200类的一个子集。训练集共有3862个视频片段,总帧数超过112万。性能衡量的metric是mean average precision(mAP)。
train | validation | test | frame rate |
---|---|---|---|
3862 | 555 | 937 | 25 or 30 |
2.2 视频语义分割
目前比较流行的是Cityscape的数据集。每个视频片段包含30帧,但只有其中的第20帧有ground truth标注。标注包含了30个语义分类。使用的metric是mean intersection-over-union(mIOU)。
train | validation | test |
---|---|---|
2975 | 500 | 1525 |
3Optical flow(光流)
3.1 光流简介
光流常用于计算图像中各个位置的瞬时移位,是依据视频帧与帧之间的各像素相关性而计算得到的。输入时序相邻的两帧
和,光流计算帧
上每个像素点的移位,使得移位过后,各像素点的位置在下一时刻和
一致。下图给出了在驾驶环境中的一个例子,光流由不同颜色的移位向量表示,且移位向量所代表的速度快慢由长短和颜色表示。可以看到,图片左侧的大货车和其他位置的移位向量不一样,因为大货车比其他静止物体(如路面)以更快的速度迎面而来。
图2: 光流的可视化。可以看到,图片左侧的大货车和其他位置的移位不一样,因为大货车比其他静止物体(如路面)以更快的速度迎面而来。
3.2 FlowNet
传统计算光流的方法不在此赘述,可以参考其wikipedia页面。传统方法计算光流通常是在CPU上实现的,速度较慢。并且如果想在计算机视觉中应用光流的话,用传统方法不能够end-to-end训练网络。因此,FlowNet [1] 提出了用neural network来计算光流的方法。如下图所示,其输入是视频片段中的两帧,由于时间间隔较短,图片之间具有强相关性。输出是各个像素点的移位,通过移位,可以得知上一帧各目标在下一帧的位置。
图3: FlowNet示意图。输入是视频片段的两帧,输出为光流。输出的光流是color-coded。
FlowNet的网络结构和用于semantic segmentation的网络结构类似,由两部分构成。FlowNet将之称为contracting部分和refinement部分,分别用于downsampling提取特征和upsampling恢复分辨率,由conv和deconv操作实现。和semantic segmentation的输入是一张图片不同,此网络输入是两张图片。作者提出了两种方式来处理,不过在后续工作中用的比较多的方法是直接将两张图片堆在一起作为一个有3+3=6个channel的图片输入给网络。
4基于光流的视频识别
通过光流,我们能够得知上一时刻的物体在下一时刻的位置,能否应用光流来更好地解决视频识别中的accuracy speed tradeoff呢?答案是肯定的。当前计算机视觉使用到的神经网络从功能上可以分为两部分:
也就是说,一个网络由多层的,提取特征的
和浅的,负责具体任务输出的
构成。当前state-of-the-art的图片语义分割和目标检测的网络通常使用ResNet-101作为
,相比较而言,
却只有几层甚至一层。根据以上分析可知,网络的绝大部分的计算量在
上。
在上一节中,我们得知能够通过光流得到上一时刻的物体在当前时刻的位置,即光流表达了在pixel space上的对应关系。那么光流在feature space上,是否也保持同样的对应关系呢?如果是的话,就可以不用重复计算每一帧的特征,而是将上一帧的特征传播到当前帧,从而大大减少计算量。如下图所示,当前帧通过ResNet-101得到的两个特征图(第二行),和通过光流将关键帧特征传播而得到的特征图(第三行)是非常相似的,因此可以假设是成立的,即可以通过光流来传播feature。
图4: 通过光流传播feature。可以看到,current frame通过ResNet-101得到的两个feature maps(第二行),和通过optical flow将key frame传播而得到的feature maps(第三行)是非常相似的。
4.1 更快
为了提高处理视频的速度,首先将视频中的各帧分为关键帧和非关键帧,且关键帧的数量远远小于非关键帧。在目标检测时候,只需要对关键帧通过
来提取特征,然后通过光流将关键帧的特征传播到非关键帧,从而达到减少计算量而提高速度的目的。Deep feature flow(DFF) [2] 就是基于这样的思想。假设当前帧的index为i,前一关键帧的index为k,则当前帧的feature可以通过下式得到:
其中,
是通过FlowNet得到的optical flow,
是point-wise scale coefficients,通过在原始FlowNet的最后一层增加层数得到。W 表示特征传播函数,实际上通过bilinear interpolation和point-wise multiplication实现,所以它是可微分的。DFF的工作流程如下图所示:
图5: DFF的工作示意图。选定关键帧过后,当前帧的特征由关键帧的特征通过光流传播得到。
DFF的计算量和传统对每帧进行特征提取的方法的计算量比值为:
上式中两个网络的复杂度可以根据它们的FLOPs来测量,下表列出了不同
和
的1/r值:
假设每隔 l 帧选择一次关键帧,则DFF的整体加速为:
DFF和传统基于每帧的方法在CityScape和ImageNet VID的表现如下表。可以看到,DFF在精度损失小于1%的情况下,能够对语意分割和目标检测分别达到3.7和5倍的加速。
4.2 更准
如本文开头所述,由于视频中可能存在运动模糊,镜头失焦,遮挡等问题,导致在单帧上的目标检测失败。Flow-Guided Feature Aggregation (FGFA) [3] 提出了聚合相邻帧的特征来提升当前帧的检测效果的方法。其主要思想是,对当前帧进行目标检测的时候,Ntask 不仅考虑当前帧通过 Nfeat 得到的feature,也考虑相邻帧传播到此帧所得到的传播特征。假设考虑到的相邻帧的范围为K,当前帧的index为i,则输入到Ntask 的feature为:
其中
是一个衡量传播特征和此帧特征相似度的系数。下图展示了FGFA的工作流程:
图6: FGFA的工作流程。当前帧输入给检测网络的特征是它自己的特征和相邻帧通过光流得到的传播特征的加权平均。
基于ResNet-101的FGFA在ImageNet VID上的表现如下表:
methods | mAP | runtime(fps) |
---|---|---|
per-frame | 73.4 | 3.47 |
FGFA | 76.3 | 1.36 |
可以看到,FGFA虽然提高了精度,但是相对于per-frame的方法速度降低了接近3倍。
4.3 更快+更准
以上两小节分别讨论了如何利用光流提高视频目标检测的速度和精度,但是都不能在速度和精度上两全其美。实际上,同时提高速度和精度也是可能的。首先,Impression Network(ImpNet) [4] 提供了一种思路。其主要思路是:
ImpNet通过对关键帧维持一个叫
的特征来实现上述两点。对于相邻的关键帧k和k’,
对非关键帧,输入到task网络的特征为关键帧通过光流得到的传播特征:
通过以上方式,ImpNet不仅通过光流传播特征提高速度,也用多帧特征聚合提高了精度。其在ImageNet VID上的表现总结如下:
methods | mAP | runtime(fps) |
---|---|---|
per-frame | 74.2 | 6.4 |
ImpNet | 75.5 | 20 |
另一篇文章 [5] 提出了思路和ImpNet类似的方法,其主要特点是:
。如果某位置上的传播质量高于一定的界限,则使用传播特征,否则使用自身的特征。
此方法的示意如下图所示:
图7: 方法示意图。(a)对应于DFF,(b)对应于FGFA,(c1-c3)分别对应上一段的1,2,3。
此方法在ImageNet VID数据集上的表现如下:
可以看到,此模型在保证速度的情况下,精度也达到最高,是后期工作的重点模型。
5其他方法
目前在对视频的识别任务中,除了使用光流以外,还有一些其他有意思的方法。下面例举一二:
总结
光流对视频识别任务的帮助很大,特别是自从FlowNet提出后,将光流纳入整个神经网络的设计之中来进行end-to-end的训练,对视频识别任务的精度和速度都有显著提升。而且基于光流的方法对具体的识别任务不敏感,它在视频目标检测和视频语意分割上都能使用。因此,可以考虑将光流应用于目前使用的深度模型当中,来提高模型的性能。
参考文献
美团点评配送机器人原创内容均由美团点评无人配送部成员呕心沥血写成,写作不易,希望大家珍惜我们的劳动成果,如需转载,请后台留言申请授权。同时本文欢迎大家转发朋友圈,并评论留言,一起学习讨论。