TVN算法详解

Tiny Video Networks-论文链接

1、需求解读

  随着大数据和5G技术的发展,我们的生活已经开始从原始的图片时代逐渐转向视频时代,代表性的一个企业就是今日头条,它通过小视频分析和推荐获得了大众的欢欣。除此之外,随着视频数据的获取变得更加便捷,学者们逐渐将一些基于图片的图像处理算法应用在视频中,具体包括视频目标分类、视频目标检测、视频目标跟踪和视频语义分割等。大量的研究结果表明,当前最快的视频处理算法在一个高配的GPU上处理一帧图像需要的运行时间大于500ms,然而这些视频算法通常应用在嵌入端的设备,比如视频监控、行为识别和机器感知等,这些设备的运算能力是GPU的1/几十,因而设计出一个针对视频理解场景的高速网络称为一个迫切的需求。

2、TVN算法贡献

  • 本文是第一个针对视频理解场景设计出来的高速视频网络,在CPU和GPU上面均获得了实时的运行速度
  • 尝试着使用NAS来解决轻量型视频网络的搜索问题,最终获得了一个准确、高速的视频网络;
  • 通过调节该模型的可以在获得state-of-art性能的同时获得最快的速度。

3、TVN算法简介

  TVN算法是一个基于NAS自动学习的视频Backone网络。该网络是第一个即准又快的视频理解算法,整个算法是通过NAS自动搜索获得,并在4个数据集上面获得了较好的结果。与其它的视频模型相比,该模型不仅拥有更少的参数,而且比它们快几百倍。该模型的出现使得在手机设备和机器人应用上面部署视频模型成为了可能。

4、TVN算法详解

4.1 NAS简介

  NAS,即Neural Architecture Search(神经网络架构搜索)。NAS要解决的一个问题就是彻底解放设计网络的算法工程师,大家可能都知道比较有名的VGG、Inception、ResNet网络都是研究者们通过大量的探索和观察之后设计出来的网络架构,然而设计出一个好的网络架构需要耗费大量的人力和物力,因此,就有研究者开始思考是否能让程序自动的搜索出一个不错的网络架构,这也就是NAS出现的初衷。其实仔细想一想,对于一个网络而言,我们需要确定的因素包括:网络的层数、网络的输入分辨率大小、每层网络的类型、卷积核和步长的大小等参数,但是这些参数是一个有限值,那么这种重复、无聊、需要经验的活就可以让计算机来做,其实计算机存在的一个理由就是可以做一些我们不想做或者我们不能做的事情,那么计算机就可以通过NAS在很短的时间内找到一个最优的网络架构来满足的要求,由于参数较多,组合起来构成的搜索空间会比较大,我们通常需要添加一些约束条件来加速整个网络构架的搜索过程,常用的约束包括时延、准确率等。
  对于任意一个NAS任务而言,通常是由几个关键的因素所决定的,具体包括:搜索空间、搜索策略和性能评估策略

  • 搜索空间,即Search Space,它解决了NAS在哪个范围内寻找最优解的问题。搜索空间定义了搜索的范围,其实就是在哪搜索。通过结合一些过去研究者架构设计方面的经验,可以通过减小搜索空间和简化搜索过程来提高搜索的性能。当然,这样同时也引入了人为的主观臆断,可能会妨碍寻找到超越当前人类知识的新的架构构建块(building blocks)。
  • 搜索策略,即Search strategy,它解决了NAS通过哪种方法来寻找最优解的问题。搜索策略定义的则怎样去搜索。一方面,我们希望能快速找到性能良好的架构,另一方面,也应避免过早收敛到次优架构(suboptimal architeture)区域。
  • 性能评估策略,即Performace estimation strategy,它解决了NAS如何判断自己搜索出来的网络架构的优劣问题。NAS 的目标是希望能够自动的在给定的数据集上找到一个高性能的架构。性能评估则是指评估此性能的过程:最简单的方式是按照通常的方式对一个标准架构训练和验证来获得结果,但遗憾的是这样的计算成本太高了,并且同时限制了可以搜索的网络架构的数量。因此,最近的许多研究都集中在探索新的方法来降低这些性能评估的成本。

4.2 TVN搜索空间详解

  • 问题1-如何在TVN网络中搜索到最好的输入分辨率(输入图片)大小和时间分辨率(帧数)呢?
  • 问题2-如何在空间和时间信息上面执行下采样?
  • 问题3-将运行时间作为限制条件,多少个网络层能够获得最优的性能?
  • 问题4-网络应该设置为多深和多宽呢?

  针对以上的4个问题,作者给出的解决方案如下所示:
  首先,整个搜索空间由一个包含多个Block的meta-architecture组成,Block的范围在2到10之间。即整个TVN网络由很多个不同的Blo-ck块组成,每个Block可能会重复2到10次;网络中最终的一个Block块包含一个全局平均池化层、一个Dropout层、一个用来执行分类放的FC层,具体的结构如下图所示。对于每一个Block而言,可以在 non-local layers(NL)、spatial-convolution(SC)、temporal-convolution(TC)、context -gating(CG)和squeeze-and-excitation(SE)层中随机选择。
在这里插入图片描述
  然后,对于NL层而言,我们使用NAS搜索其bottleneck size(即池化之后的大小);对于SG层而言,我们使用NAS搜索其压缩的比例;卷积层的kelnel_size和strides在1-8的范围内搜索;滤波器的个数在32-2048的范围内搜索;卷积层的类型在标准卷积、depthwise卷积、平均池化和最大池化中进行搜索;每一个Block的重复次数在1-8之内搜索;输入图片的大小在32x32-320x320的空间内搜索;帧的个数在1-128的范围内搜索;帧率在1-25fps范围内搜索
  最后,通过将上面的这些搜索条件进行组合,我们最终会获得一个很大的搜索空间。每一个Block块具有2^34种可能的配置,在这么大的一个搜索空间中寻找到最优的一个网络架构无疑是一个比较困难的问题,当对网络的大小和运行时间限制之后,整个问题变得更加困难。

4.3 TVN搜索策略详解

  整个搜索过程中使用带有离散交叉操作的旅行选择进化算法
(tournament selection evolutionary algorithm with discrete mutation operators),整个算法的执行过程如下所示:

  • 首先随机的生成200个性能较差网络
  • 接着按照旅行选择进化算法从目前的200个网络中随机选择出50个,并将性能最高的网络作为父网络
  • 接着通过随机更改网络的一部分,即对该网络执行离散变异操作。所谓的交叉操作即随机的选择一些网络并在提前定义的搜索空间随机的交换它们
  • 接着将进化后的新网络添加到整个种群中并移除种群中性能最差的网络
  • 重复执行整个过程100次,每个模型使用1.5个小时训练10000次迭代
    在这里插入图片描述
    在这里插入图片描述
      上图展示了通过NAS最终搜索到的TVN-1、TVN-2、TVN-3和TVN-4网络的实现细节,有了这些配置之后,我们就可以构造出相应的网络,然后使用数据集训练出一个模型,并将模型部署到不同的设备上面。

5、TVN算法实现步骤

整个TVN算法的实现步骤如下所示:
步骤1-首先根据上面的条件定义相应的搜索空间
步骤2-然后添加相应的限制条件,包括模型大小和运行时间,并使用进化算法(遗传算法)来执行NAS操作;
步骤3-在验证集(从训练集中划分出一部分)中验证NAS搜索出来的网络的性能,当获得满足限制条件的网络架构时停止整个搜索过程;
步骤4-使用代码搭建出使用NAS获得最优的网络,并设置相应的参数,然后使用梯度下降法来训练整个网络,最终获得一个预训练的模型;
步骤5-将预训练好的TVN网络部署到手机或者机器人设备中执行前向推理,获得相应的结果。

6、TVN算法性能评估

在这里插入图片描述
  上图展示了TVN网络和其它的Backbone网络之间的速度差异。通过观察,我们可以获得TVN1网络在CPU上的运行时间是37ms,在GPU上面的运行时间为10ms,和ResNet相比,TVN的运行速度提升了100倍左右。该算法的出现可以在很大程度上推进实时视频理解算法的发展。
在这里插入图片描述
  上图展示了TVN网络和其它网络在MiT数据集上面的效果,包括运行时间和准确率。上图的横轴表示运行时间,纵轴表示模型的准确率。通过观察我们可以发现,TVN4几乎可以获得和ResNet相同的精度,但是模型大小却比ResNet小了很多倍;因而TVN网络在速度和精度之间做了很好的折中,ResNet50的精度其实可以满足现实中很多视频场景的需求,当前如果你想要获得更高的精度,还可以对TVN网络进行一些改进即可。
在这里插入图片描述
  上图是TVN网络和其它Backbone的比对结果的另外一种展示形式。
在这里插入图片描述
  上图展示了使用不同时间信息(帧数的大小)的TVN网络的运行时间和准确率。通过观察我们可以发现,当帧数等于16时,TVN-2网络的准确率基本没有提升,运行的时间却增加额不少,而当帧数等于4时,不仅能获得最快的运行速度,而且可以获得较高的准确率。
在这里插入图片描述
  上图展示了不同大小的输入分辨率对TVN-1网络的性能影响。通过观察我们可以发现:1、增加输入图片的分辨率可以在一定程度上提升网络的准确率,在此同时也会增加网络的运行时间;2、当使用更宽的网络时,可以获得更高的准确率,同时会极大的增加网络的运行时间;3、当使用更深的网络时,可以获得更高的准确率,同时会极大的增加网络的运行时间。

7、总结

  TVN算法开创了使用NAS搜索轻量级视频理解网络的先河(即快又准),并且取得了很好的结果。该算法解决了当前视频理解任务中的难题,即算法的运行速度都比较慢不能应用到常用的嵌入式设备或者机器人设备中。尽管基于NAS的TVN网络获得了较高的性能,但是该网络中也存在着一些问题,比如使用NAS搜索的过程需要耗费大量的时间和计算资源等。随着TVN算法的开源,我相信会有越来越多更轻量的视频理解算法的出现,不仅仅是视频分类。

参考资料

[1] 原始论文

注意事项

[1] 该博客是本人原创博客,如果您对该博客感兴趣,想要转载该博客,请与我联系(qq邮箱:[email protected]),我会在第一时间回复大家,谢谢大家的关注.
[2] 由于个人能力有限,该博客可能存在很多的问题,希望大家能够提出改进意见。
[3] 如果您在阅读本博客时遇到不理解的地方,希望您可以联系我,我会及时的回复您,和您交流想法和意见,谢谢。
[4] 本人业余时间承接各种本科毕设设计和各种小项目,包括图像处理(数据挖掘、机器学习、深度学习等)、matlab仿真、python算法及仿真等,有需要的请加QQ:1575262785详聊,备注“项目”!!!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章