您的位置:首页 > 移动开发 > Objective-C

2018-04-Towards High Performance Video Object Detection for Mobiles-论文阅读笔记

2018-11-27 19:52 531 查看

原文:https://arxiv.org/abs/1804.05830
摘要:
轻量的图像目标检测网络应用到关键帧上。轻量的光流网络建立帧间关系。光流导向的GRU模块被用于关键帧特征的集成。对于非关键帧用光流进行特征图传播。整个网络端到端训练,在VID达到60.2的mAP,跑到25帧的速度(HuaWei Mate 8 )

  1. 引言:
    虽然一些工作针对轻量型的网络,比如SqueezeNet,MobileNet和ShuffleNet,但是他们不是对检测任务专门设计的,所以有些工作针对检测问题设计了Tiny YOLO和Tiny SSD.然而直接应用这些方法到视频目标检测中,仍存在问题。以及相应的解决方案在上两篇博文中已经提到。前面的工作针对嵌入式应用仍有困难,主要是,FlowNet的时间仍存在问题,存储和时间的问题使得特征集成不能对长时间的时间信息进行建模。
    对此,设计了轻量的光流网络,为了在少存储的条件下建模长时间的针尖信息使用了GRU,并且在特征提取网络中参考了最近的depthwise卷积和Light head RCNN的成果。

    Figure1中看出,单帧的结果已经比SSDLite要好一些,这里横坐标的含义,应该是越往右表示计算量越小
  2. 视频目标检测回顾
    这里是简述的前两篇博文的内容,不再赘述。FlowNet是MobileNet的11.8倍。即使最小的FlowNet-Xception也有1.6倍。所以要设计一个更轻量的光流网络。
  3. 网络架构

    基于上述原则,我们设计了更小了网络结构,如上图所示。
    给定一个关键帧k`和他的上一个关键帧k,首先特征提取网络Nfeat,提取k’帧的特征得到Fk’,然后用他上一帧集成后的特征图F|k进行集成

    这里G为集成函数,然后检测网络作用到F|k上得到检测结果。这里的问题是给定一个非关键帧i,特征从关键帧k传播到i

    3.1 轻量的光流
    FlowNet是编码-解码的模式,生成多分辨率的光流预测。两个RGB图像生成一个6通道的输入,在编码端通过几个卷积层,转化为1/64分辨率的特征图,在解码端,特征图输入几个反卷积网络得到高分辨率的光流预测。在每个反卷积层后面,输出的特征图与之前的特征图,上采样后融合,输出预测值。损失层接在每个预测器的后面,但是在前向传播的时候只有最好的预测器被使用。为了加速光流,本文设计了Light Flow他降低了15%的性能,但是得到了理论上65倍的加速。具体结构看Table 2


    从Table2可以看出虽然Light Flow对于光流计算来讲精度降低了16%,但是并不影响检测精度。所以之前的光流的精度有点富裕。在编码部分,受MobileNet启发,卷积改为bottleneck结构,将所有的卷积层都换成了33的depthwise separable 卷积相比传统的卷积,加速8-9倍,只有一点少的性能降低。在解码端,每个反卷积用最近邻插值上采样和卷积替代。在文献[33]中采用这种方式解决反卷积带来的棋盘鬼影。本文采用了这种方式并将卷积替换为depthwise separable 卷积。
    在最后的输出中,本文受FCN的启发,并不是只使用分辨率最高的输出,卫视将低分辨率的不断融合上采样到高分分辨率,然后和高分辨率的平均后输出,损失函数只作用于这个最后的平均后的损失。这样可以使得误差降低10%.
    网络结构:整个网络结构如Table 1所示,每个卷积层后面接一个BN和leaky ReLU,其中斜率为0.1.网络的预训练,在Fly Chairs数据集上完成,用Adam优化,正则化系数为0.00004,在4个GPU上迭代7万次,每个GPU处理64对图像。首先用0.001的学习率进行热身训练,迭代1万次,然后学习率置为0.01迭代2万次,每1万次除以2。当使用光流网络的时候,对输入图像进行降采样。网络输出后,步长为4,然后再对输出的预测结果进行降采样,和特征提取网络的1/16匹配。
    3.2 光流导向的GRU特征融合
    特征融合无疑在系统中是非常重要的,FGFA中的融合是线性的没有记忆能力的,上一篇博文中递归的特征融合,虽然有了进步,但是难以训练去训练去建模更长的帧间信息,部分原因是因为递归网络中的梯度消失和爆炸。GRU在建模较长时间信息方面是优于LSTM和RNN的。因为非线性与网络状态更新相结合。受这点的启发,本文结合[43]提出的卷积GRU用作特征集成,而不是仅仅的进行加权平均。

    在这里星号表示卷积,圈表示点乘,zt为更新门,rt为重置门。6的含义可以这样理解,首先对当前帧的特征图F’k和映射后的特征图F’k->k’做卷积再相加,然后sigmod一下作为门概率输出。当需要集成特征图的时候,(1-zt)作为映射后特征图的权重,zt作为ReLU(当前帧特征图卷积+部分映射特征图卷积)的权重,进行特征图的融合。
    相比原本的GRU这里不同的是第一,将全连接层换成了卷积,因为全连接应用到图像领域会面临大参数量的过拟合,这也就是CNN之前ANN的失败的地方,CNN的成功在于共享参数,稀疏链接。并考虑了图像的二维结构。第二,tanh函数被换做ReLU会加快收敛和计算。第三,并不是相邻帧送入GRU计算,而是关键帧,所以应该考虑特征图对齐。相比[44,45,46,43]他们将相邻帧送入GRU,就不用考虑帧间微小的平移。
    3.3 轻量的关键帧目标检测器
    对于检测器的backbone采用MobileNet,对于检测头采用RPN和Light Head RCNN.对于backbone输出的feature map,用33的卷积降维到128,然后采用上采样,将步长从32提高到16这样可以提升性能,然后用1*1的卷积操作一下。
  4. 实验
    这里首先讲了训练的设置,然后每十帧作为一次关键帧。同时,设置alpth和beta为控制MobileNet复杂度的因子。
    受控实验
    光流网络的受控实验。light flow加速了65倍的速度和15倍的参数量,虽然精度相比FlowNet下降了16%,但是仍比FlowNet Half和FlowNet Inception要好,同时并不影响最终的检测性能说明这个精度对指导映射来讲是够的。
    特征集成的受控实验。

    第一个问题,没有光流指导会怎么样。Figure 3帧差越大,差的越多,如果是相邻帧,那么误差是微小的大概0.5个点,如果是本文的10帧误差接近2个点。
    第二个问题,训练的时候选取多大的视频长度。

    长度越长越好,在长度为8的时候,接近饱和。
    第三个问题,GRU的集成方式是不是更优。

    文献21中的集成方式是线性的递归的方式,GRU偶较大的提升,虽然参数和计算增加了。如果要进一步提升性能可以将送入GRU的特征维度增加,而不是增加GRU模块中卷积的层数。
    时间性能权衡实验

    特征集成之后,相比单帧性能要高近5个点,随着帧数增加到大概帧间隔为20帧的时候才与单帧精度相当,这时候速度已经提高了5到10倍。对于MobuleNet不同复杂度性能的评估可看Table 5
  5. 嵌入式方面的一些前人的工作
    5.1 轻量的图像目标检测器
    SSDLite、YOLO v2、Tiny YOLO、Tiny SSD都是这方面的工作,最终作者选择了Light Head RCNN他的精度要好一些
    5.2 轻量的视频目标检测器
    [44]没有考虑关键帧的概念,所以不能加速计算,在融合的时候没有考虑特征对齐,在VID的子集上做的评估不好和本文的工作比较,而且没有开放代码。[51] Fast YOLO 没有做帧间的融合。
    5.3 在VID上的比较
    本文重新在DET和VID数据集对SSDLite和YOLO V2进行了训练和实验,最终准确度和速度的综合性能比本文差不少。到目前为止,本文是真正做到实时并且性能较好的结果。
1e92c
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐