基于网络结构搜索的超轻量级跟踪模型设计视频学习

  • 内容来源:极市直播丨严彬:CVPR 2021-LightTrack:基于网络结构搜索的超轻量级跟踪模型设计

  • 视频链接:【极市直播】严彬:CVPR 2021-LightTrack:基于网络结构搜索的超轻量级跟踪模型设计_哔哩哔哩_bilibili

  • paper:https://arxiv.org/pdf/2103.16746.pdf

  • project:GitHub - researchmm/LightTrack: [CVPR21] LightTrack: Finding Lightweight Neural Network for Object Tracking via One-Shot Architecture Search

  • PPT和字的材料来源都是极客视频,因为在观看视频时,觉得非常精彩,但是视频需要不停倒回去看,不方便理解和深入学习,所以将音频转为字幕,供需要的小伙伴阅读,如有不对之处,请批评指正。

    PPT第一页

           今天我要分享的内容是一篇论文, light track,通过one-shot架构搜索用于目标跟踪的轻量级神经网络,这是2021cvpr的一篇文章。
    首先是这篇论文的动机,也就是为什么视频跟踪需要轻量级的模型设计,第二部分是轻量级模型设计的几种潜在方案以及为什么最终使用了网络结构搜索的方式来做轻量级的模型设计.第三部分将简要介绍网络结构搜索技术,其中会重点介绍两种最有代表性的One-Shot NAS方法 DARTS和single path one shot.第四部分将详细介绍论文中提出的Light Track方法,包括搜索空间的设计以及搜索流程等.最后是实验结果部分,包括Light Track在多个目标跟踪数据集上的性能,以及在资源有限的移动端设备上的运行速度.
    image.png

       第三页
       首先是研究动机,我们先来看下面这幅图,这幅图中,一个圆圈代表一个跟踪算法,横轴代表模型计算量,由于不同算法它的计算量差距很大,所以作者采用了对数坐标系。纵轴代表跟踪算法在VOT2019数据集上的指标,圆圈大小和参数量是成呈正相关的,也就是说圆圈越大代表其参数量越大,图中绿色的圆圈,代表的是SiamFC算法,这是单目标跟踪领域的一项开创性的工作,他首次提出了通过孪生网络加相关的方式来做目标跟踪,发表在eccv2016的workshop上,我们看到当时SiamFC的计算量和参数量,大约是2.7gflops,2.3兆参数的这样一个水平,那么近年来呢,随着深度学习技术的不断成熟,基于孪生网络跟踪器也迎来了快速的发展,算法的性能,相比于SiamFC有了大幅的提升,他们的计算量和参数量,也呈现出了爆炸性的增长,这里我们以CVPR2019的SiamRPN++和eccv2020的Ocean为例,我们会看到他们的计算量和参数量分别达到了,20.3G flops,25.9兆的参数,以及48.9g flops,54兆参数这样的一个水平,相比于SiamFC来说,计算量的参数量增加了十几倍,甚至是20几倍,在轻量化深度学习中,我们有这样的一个说法,如果模型的计算量小于600兆flops,我们就认为他可以在移动端设备上部署。就是图中的蓝色的框所显示的位置,我们会发现在这一标准下,也就是以图中的这条竖虚线为界,现有学术界的目标跟踪算法,都在虚线右边,其实他们都无法在移动端设备上部署,这就大大限制了目标跟踪在真实世界中的应用。因此,在论文的工作中,作者的意图在于设计一种能够在移动端设备上部署的,轻量且高效的目标跟踪算法,以缩小的学术界研究工业界部署之间的差距。图中左上角红色圆圈,我们提出了一种名为Light Track的算法,该方法不仅性能可以与当前性能最先进的方法相媲美,其计算量和参数量也可以满足工业部署的要求。这里我们用Light Track和ocean进行比较,我们会注意到,Light Track的可以达到比ocean,更好的一个精度,与此同时,他的计算量只有530兆flops,只有ocean的1/38。小于我们前面提到的600兆flops,所以可以认为light track可以在移动端进行部署。
       第四页


image.png

       前面介绍了这项工作的研究动机,那么要设计一种轻量化的跟踪模型,有这样几种思路,第一种是对现有的模型来做模型压缩,常用的模型压缩手段,包括像剪枝,量化,知识蒸馏等,虽然这些方法已经被证明是可以显著的减少模型的计算量和参数量,但是不避免的也会带来性能上的下降,第二种思路是手工设计更加紧凑高效的模型结构,但是这种方法又非常依赖于网络结构设计方面的专家的经验,而我们知道这方面的专家经验是非常稀缺的,第三种则是借助网络结构搜索,来自动化的搜索最优的网络结构,
第五页


image.png

       网络搜索,简称NAS,具有以下几个优点,第一,NAS以目标任务为指导的,他可以设计针对给定任务而言,最优的网络结构,第二,除了在给定任务上的精度之外,NAS还可以将推理延迟,模型参数量、计算量等重要指标显式的考虑进来,与实际应用的结合更加紧密,第三,NAS搜索过程是自动化的,大大减少了对专家知识的依赖,考虑到NAS具有的以上几点优势,在这项工作中,作者最终选用的网络结构搜索技术,来设计最适合跟踪的轻量化结构。
       第六页

   &
image.png

nbsp;   这页PPT中,我们对网络结构搜索技术做一个简要的介绍,我们说网络结构搜索本质上是要解决一个排序的问题,具体来说就是要从一个很大的搜索空间中,找到符合给定指标且效果最高的一个结构,指标是可以人为给定的,比方说可以是验证集上的准确率,可以把像前面提到的推理延迟这些很重要的指标。怎么搜索呢?最直接也最直观的一种方法,其实就是穷举法,就是说我们把整个搜索空间中所有的结构,对应的指标都先算出来,然后做一个排序,就可以得到最优的网络结构,但是这种做法也有一个非常明显的缺点呢,就是说它计算量是非常巨大的,以Imagenet为例,在Imagenet上训练图像分类模型时,就会有比较直观的感受。在Imagenet上从头开始训练一个图像分类网络,他一般需要很长的时间,再加上我们搜索空间往往是非常大的,可能包含非常多的网络结构。如果我们从头把每一个网络都训练到收敛的话,那么计算代价会大得难以承受。其实,从搜索空间中它采样到的不同的结构,他往往某些层或者是某些算子是相同的。
       我们以一幅图为例,假设AB两种结构,是从做空间中随机采样出的这样两个网络结构。
       这里我们用矩形框代表网络中的某一层的特征,第L-1层到第L层的特征包括像卷积,maxpooling,这些基本的操作。圆圈代表算子。假设AB两种结构,在某一次随机采样当中,实际采用的是相同的算子,那么将结构a训练到收敛之后,那么我们其实就可以用a结构中的第L层的权重直接来初始化B结构的第L+1层。就从而实现了参数复用的一个效果,那么这种策略我们就称为Weight sharing权重共享,通过权重共享的方式,我们就可以加快新结构的收敛速度,从而大大降低搜索的成本,前面我们提到的这种权值共享的策略,也就是One-Shot NAS核心思想。更具体来说,One-Shot NAS是将搜索空间中所有可能的结构,将它们包含在一个超网中,超网是一个有向无环图,不同的网络结构,都共享超网的参数,训练子结构的同时也是在训练超网,由于子结构之间相同算子的参数都是共享的,所以说我训练了a这种结构,后面再采样A结构中前面被采用过的算子的时候,就用前面训练好的权重作为初始化,没必要每次都重新开始训练,这样就提升了子结构收敛的速度,缩短了时间周期。
       在One-Shot NAS中,有两个代表性的方法,DARTS和single path one shot


image.png

在这一页中对这两个方法做一个介绍,DARTS,提出了一种新颖的可微分的结构搜索的思路,具体来说,考虑两层之间,存在N种可能的操作,比方说像前面提到的3*3卷积,maxpooling等这些基本操作,那么在传统视角下,他们是将结构搜索视为一个01优化的问题,也叫离散优化,也就是说,某一层中,每一种算子只有两种状态,存在或者不存在,存在就认为是1,不存在就认为是零,本质上就是在求解一个01优化的问题。但是我们也知道01优化,在数学上是非常难求解的,所以DARTS则另辟蹊径,通过一个softmax函数,将每一种算子的状态建模成一个连续的概率分布,从而01优化问题转化成了一个可以用梯度下降法求解的连续优化的问题,具体来说,在训练期间,每一层使用的N种算子,在DARTS框架中,是同时存在的。每一个算子,被赋予了一个出现的概率值,总的输出其实是各个算子输出的一个数学期望,概率通过softmax,计算出一个归一化值,再通过联合优化超网的权重参数、结构参数。权重参数指的是比方说卷积核内部的参数。结构参数指的就是,每种算子出现的概率。
       在训练结束之后,每一层把优化好后,概率值最大的一到两种算子保留下来,把其他出现概率较小的这些算子给舍弃掉,那么就得到了搜索出的最终的离散结构,虽然DARTS在数学上是非常漂亮的,但是它也存在以下几点不足,第一点联合优化权重参数和结构参数实际上也给优化造成了很大的困难,用一个术语说,就是容易陷入探索和利用之间的一个困境。探索指的就是说,去探索搜索空间中尚未被采样到的部分,利用指的就是把已经采样到的部分给他优化好,这其实就是DARTS的两步。采样,然后优化。第二个缺点就是说,超网在训练的过程中对显存的要求是比较高的,因为我们前面提到就是DARTS在训练期间,算子同时存在,把这些算子计算出的中间结果都需要保存到Gpu上,所以说他对显存的要求非常高,这也导致DARTS的超网,一般不能设计的太大,因此,DARTS一般是用来搜一些比较小的模块儿,然后再把这些模块,搭载一个宏结构里面,然后得到了最终的网络结构。
那么为了弥补DARTS不足,就有了single path one shot的一种结构,它的特点是训练与搜索两步进行解耦,第一步,先把超网训练好,然后第二步再用进化算法等启发式算法,从训练好的超网中选取最优的子结构,具体来说,第一步超网训练的时候,在训练集上每一次迭代的过程中,从超网中随机的采样,每一种结构被采样的概率是相同的,这点是和DARTS不一样,DARTS是建模了,每种算子出现的概率分布。single path one shot是所有的算子,所有的结构都是平等的,我采样到每一个这种结构的概率均是相同的,被采样到的算子,也叫一条path路径,我们只运行这条路径,并且只优化被采样到的这条路径上算子的权重参数,那么经过足量的迭代之后,每一条path都得到充分的训练之后,进行搜索。搜索是在验证集上,从训练好的超网中,随机去采样子结构,直接在验证集上去评估它们的性能,搜索的过程是通过进化算法来实现,在不断迭代的过程中,得到更加优优秀的种群,也就是比较有优势的结构,在搜索的这一步中,除了在验证集上的准确率之外。还可以把硬件限制下的网络的推理延迟、参数量等指标考虑进来。具体来说,采样的时候,搜索期间采样到一条path,不满足我们设定了flop或者是参数量的这种硬性的要求,那么我们就放弃这条path,重新进行采样.还有一点就是说,因为single path one shot在训练期间,他一次其实只激活了一条path,而不是像DARTS把所有的path都给它计算出来,所以说,single path one shot在训练期间是非常省显存的,相比于DARTS说,超网可以做得更大,
考虑到single path one shot的几点优势,作者选择基于single path one shot来设计,用于移动端轻量级的跟踪的NAS方法。


image.png

       那么接下来,我们重点介绍本文的Light Track的方法.首先介绍Light Track的搜索空间。在目标跟踪领域,我们有这样几点insights,对于一个目标跟踪模型来说,有Backbone和head,以一个Siams目标跟踪模型为例的,head应该是有两个分支一个分类和一个回归。Backbone和head对跟踪器的性能影响都是非常大的,Backbone哪一层特征,最适合目标跟踪问题,目前尚未有明确的答案,之前的很多方法,可能是利用了不同层的特征,不同深度的Backbone。哪一层特征最适合目标跟踪?也是作者在工作中希望解决的问题,通过网络搜索的办法,去自动化地去搜什么样的Backbone,什么样的head最适合跟踪,同时Backbone,哪一层特征最适合跟踪,这就引出了我们搜索空间的三个维度,Backbone结构head结构,以及Backbone的输出层,右边的表格展示了搜索空间的细节,Backbone的结构,借鉴了面向移动端的图像分类网络,将逆向残差单元,作为我们Backbone的基本模块,它的结构本页最上面的图所示。
首先,他会对输入的特征图做一个升维,升维后通道数会倍增,一般常用的倍增率有四和六,接下来会做一个三乘三的卷积,然后,会用到压缩激活的通道注意力机制,最后,再用一个一乘一卷积对特征进行降维,由于该模块是先升维再降维,这和Resnet正好是相反的,Resnet是先降维后升为,所以模块儿也被称为逆向的残差单元,对于每一个逆向残差单元,再搜索空间中设计了几种选择,首先,中间的卷积核大小,我们设计了三乘三五乘五和七乘七,这样三种选择,然后前面提到的通道倍增率,设计了四和六这样的两种选择,因此每一个逆向残差单元,它都有六种可能的选择。
       目前已有的Siams跟踪器的Backbone的最大下采样率一般是16,论文实验中也选用了16。 Backbone逆向残差单元是2 4 4 4。然后关于我们前面提到,从Backbone哪一层出特征,以往的Siams跟踪器一般是从不常为8或是不常为16的层提取特征,论文中也采用类似的设计。将Backbone的最后的8层作为输出层的候选。就是说这8层都有一定的几率,可以出特征。关于head的部分,之前的方法,比方说ocean,SiamsFC++,他们是通过堆叠标准的三*三卷积来实现的,但是我们注意到直接使用三乘三卷积,实际上会带来很重计算负担,导致算法很难应用到移动端设备上,因此本文使用深度可分离卷积,作为head的基本模块,我们设定分类和回归这两个的头部,每一个头部最多堆叠八层深度可分离卷积,不同的head,可以有不同层数的卷积,我们将reset中的skip connection也作为深度可分离卷积的一个候选,也就是说每一层级可以选择通过一个深度可分离卷积也可以选择直接跳过这一层,这样就允许了分类和回归头部使用不同的层数,深度可分离卷积的卷积核,被设置三乘三和五乘五,这样两种选择,然后通道数,从轻量化的角度考虑考虑,我们设计了128,192和256这样的三种选择。        


image.png

下面这张图展示了我们整个搜索的这样的一个pipeline,首先,搜索流程宏观上包括以下三个阶段,第一阶段是对Backbone的超网进行一个预训练。在其他条件相同的情况下,如果不做预训练它的性能会比使用预训练低得多。训练的方法和前面介绍的single path one shot是一致的,在训练期间,以均匀分布来从网络中采样子结构,然后对采样到的子结构的权重进行优化,在有了预训练的权重之后,Backbone的超网接上tracking的head。然后就是Backbone,和孪生网络功能是一样,这里是两个权重共享的Siams Backbone
Backbone的最后几层,都有几率,接后面的head,当我们的Backbone的超网和head的超网,都在目标跟踪的训练姐上达到一个基本收敛的一个状态之后,那么在最后一步,我们可以基于训练好的超网,在跟踪的一个验证集上,本文的验证集是GOT10K。之所以选择GOT10K的验证集是因为他的数据规模也是一个比较适中的的,然后我们会利用进化算法,从训练好的超网中去,采样结构。采样结构的过程,其实就是构建进化方法种群的过程。以验证集上跟踪的精度,作为种群的适应度函数。为了满足轻量化的网络结构600flops的限制,在采样的过程中,如果被采用到的结构的计算量超过600flops,那么我们会就是丢弃结构,不会把他加入到种群,也就是说,每一代的种群 ,他们的计算量和参数量都是满足要求的,在满足要求的这些结构里面,通过突变重组,就是得到一代比一代更优秀的种群,最终我们选取最后一代,适用度最高的个体对应的网络结构,作为我们搜索出的最终结构。


image.png

       然后这一页儿我们可以看到的是最终搜索出的网络结构,有一个比较有意思的发现,就是我们前面提到在搜索空间设计的时候,固定了backbone总的层数,然后允许他从最后八层出特征,我们现在搜出来的Backbone中,超过50%的层,都采用的是七乘七卷积,这和我们之前的认知不是很一样,就像之前VGG是通过多个三乘三卷积来替代五乘五和七乘七这种大的这种卷积。但是作者推断可能是因为,在把总的层数固定住之后,为了获取足够大的感受野,来得到一个比较好的定位精度,就会有更多的7*7卷积,并且这样的卷积可以为后面的分类和回归,提供一个比较好的特征。
然后最终搜出来的结构选选取的是把backbone的倒数第二个block,但是最后一个block没有画出,作为输出的层,从这个结论也可以说明并不是越深的特征就越适合跟踪。然后head部分,我们发现,分类的头部比回归头部要包含更少的卷积层,这是因为在模板特征区域做完相关操作之后,其实已经大致定位到了目标的中心,目标的边界等,所以说,在分类头部他可能需要的处理是比较少的,就可以得到最终的定位结果。但是在回归头部,因为它是预测特征图中心点到四边的边框的距离,他需要更多的层来对特征进行处理,这也就是为什么结构中分类头部的卷积层数要比回归要少


image.png

       在跟踪的数据集上对来light track和其他性能先进的各种算法进行了比较,可以看出light track,不仅在性能上可以比肩之前搜它的方法,而且它的计算量和参数量,相比于之前的方法也有非常明显的优势,这里我们以ocean和light track Moblie做一个比较,light track可以达到ocean的精度。它的Flops只有ocean的1/38,参数量只有它的1/13,可以说是非常高效,那么在GOT-10k和TrackingNet两个数据集上,我们可以看到,全离线的light track方法可以达到和在线更新的DMP50接近甚至在有些指标上可以略超过的一个结果,这也证明了我们搜索出的结构,相比之前的方法,它的特征、结构是更适合目标跟踪的,


image.png

       然后是在Lasot数据集上的一个评估,可以看到light track,可以达到比的DiMP18以及Ocean-offline性能更好的一个效果,如果把light track的flops和参数量的限制,放得更宽一些,那么他的搜出来的结构性能也会进一步的提升。


image.png

       论文研究的目的是为了更好的在移动端上部署,所以也在多种移动端设备,包括,苹果的IPHONE7PLUS,华为Naova7,小米八等多款手机端gpu,或是芯片上评估了light track和SiamRPN++和ocean offline的实际运行速度,可以看到作者提出的light track的方法,在各种移动端设备上均可实时运行,并且相比于其他两种现有的方法具有明显的速度优势。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,634评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,951评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,427评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,770评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,835评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,799评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,768评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,544评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,979评论 1 308
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,271评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,427评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,121评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,756评论 3 324
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,375评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,579评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,410评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,315评论 2 352

推荐阅读更多精彩内容