如何在标准的机器学习流程上玩出新花样?

640?wx_fmt=jpeg


演讲嘉宾 | 谢迪,海康威视研究院前沿技术部负责人
程序员

整理 | 夕颜面试

导读:近日,CSDN与数字经济人才发展中心联合主办的第一届CTA核心技术及应用峰会在杭州开启。首届CTA核心技术及应用峰会围绕人工智能,邀请技术领航者,与开发者共同探讨机器学习和知识图谱的前沿研究及应用。在本次机器学习专场中,来自海康威视研究院前研技术部的负责人谢迪为咱们带来了题为《How to Explore in Machine Learning Pipeline》(机器学习流程研究)的精彩演讲。

 

在机器学习时代,AI相关工做都是聚焦于具体的流程,如数据收集、模型训练、模型配置等。AI从业/从事人员众多,但你们作的事情不少都大同小异,这其实能够总结成一个标准的pipeline。可是,如何在机器学习的流水线上作出和别人不同的工做,仍是须要不少技巧。此次,谢迪将会为你们分享如何在标准的机器学习流水线上,经过多年积累得到的洞见,提高对于具体应用的认识。算法


标准机器学习Pipelinedocker

        640?wx_fmt=png


如图所示,这是一个标准的机器学习流水线,咱们能够收集数据、提取特征、训练分类器等。几年前深度学习尚未火的时候,咱们靠人工提取算子,以后进行训练,最后获得咱们想要的模型,去解决具体问题。后端

 

随着深度学习的兴起,中间的两块已经被神经网络统一,可是咱们认为在工业界,要获得真正工做的机器学习pipeline,还有两个环节咱们须要特别注意。其中包括数据的环节,由于数据并非现成的,实际上如今人工智能深刻发展,对公司来讲很大部分的工做仍是集中在数据标定上,有了标定的数据以后才能进行训练,最后获得一个模型。在海康威视,不少的应用之前是放在后端的,但如今都在逐渐向往边缘端转移,因此咱们有至关一部分的工做是在边缘端的深度神经模型以及工业机器人的配置上。网络


机器学习pipeline实践app

      640?wx_fmt=png

 

今天,我将和你们分享三个方面的工做,聚焦于标注、训练和部署,这三个环节分别表明了信息的生成、提炼、从新整合以及信息的去冗余。框架


▌1. 标注

通用函数近似器机器学习

        640?wx_fmt=png       

这是第一项工做。咱们知道,深度神经网络相比于传统的 SVM 或其余的线性模型,更相似于全局函数近似器,即输入 ground truth,它就能输出你想要的结果。函数

    

咱们能够给定一个标注,输入更多信息量,好比一我的在图中的位置、关键点集合,甚至是一个很是稠密的网格。这是一个信息从少到多的过程,不管信息多复杂,在神经网络下均可以输出你想要的结果。换一个角度理解,神经网络对数据是很是敏感的。

 

多尺度对GT的影响

        640?wx_fmt=png       

在安防场景中,咱们最关心的是人和车。以行人检测为例,在一个场景中,咱们会关心各个尺度的行人,可是神经网络对不一样对象比较敏感,咱们如今检测的框架是基于边界框的,对于大尺度的行人来讲,红框标定行人没有问题,可是小尺度的行人标定存在两个问题,第一个问题是小尺度的对象自己提供的信息很是有限,第二个是小尺度对象的真值框差别很是大。

 

如右图所示,咱们作了一个实验,让10个标定人员进行标定,蓝色表示 Bounding-box (边界框)标定方法,黄色是基于线段的标定方法,对于大尺度对象和小尺度对象,ground truth 的平均 IOU显示如图所示。能够看到,大尺度对象明显优于小尺度对象。基于神经网络对信息产生的方式很是敏感的前提来讲,咱们认为影响小目标检测的问题之一,多是在于信息生成方式的歧义性。


TLL小尺度行人检测

        640?wx_fmt=png


为此咱们提出了TLL。它的核心想法很是简单,即 Bounding-box 表示方法会影响极小目标的检出率,因此咱们须要为小目标单独设计一种生成信息的方式,咱们经过 Bounding-box 上下两点中心,作了一个连线,即把原来用一个 Bounding-box 表示一个物体的表示方式,变成了用一个线段表示一我的体,上端表示头,下端表示人与头之间的中心。

  

网络结构咱们使用了 Hourglass 的沙漏结构。固然,多尺度是影响目标检测的缘由,因此咱们也是使用了多尺度信息聚合的方式。

        640?wx_fmt=png       

咱们的网络输出是三个特征图,分别表示人头、两脚和人体的分图。最后,咱们用后处理的方法,经过二分图匹配获得最终的匹配结果,即图中虚线所示直线。

 

但在实际场景中,咱们发现当人群密度比较密的时候,使用二分图匹配会出现如图所示的交叉结果,因此咱们引入了马尔科夫随机场,不鼓励交叉状况的产生,这样就能够得到更好的结果,有效地避免了交叉产生。

 

在测试中,咱们但愿小目标的分辨率可以在10像素如下,越小越好,由于越小越能体现算法的优点,而对于检测过程当中的帧漏检,相比基于光流的显示聚合方法,隐式的信息聚合方法能够进一步的提升检出率。

       640?wx_fmt=png       

这是量化的结果,显示性能很是好。有个很是有趣的现象,咱们仅仅是简单地改变了标注的方式,本质上即信息生成的方式,在严重遮挡的状况下,依然取得了更好的性能。

       640?wx_fmt=png       

能够看到,不管在严重遮挡、远景,仍是不规则的长宽比的配置下,这个方法仍是有必定的优点。

       640?wx_fmt=png       

这是定性的一些结果,像图中这样检测难度很是大的状况也能够检测出,稠密的行人也没有漏检。咱们在一些目标项目中落地了这一方法,如在上海陆家嘴的环形天桥上,摄像头可以精确地统计天桥上行人的数量。

       640?wx_fmt=png

 

这个工做咱们从 2017 年开始作,最初的目标检测用到了两阶段的方法,表明有 FastCNN。一步检测的表明框架有 SSD 和 YOLO,如今甚至有人在关注 Anchor-free 的方法,包括 FCOS、ReqPoints 等。这都是你们尝试找到一种不同的边界框产生方式,可以更好地指导网络进行训练,并挖掘出原始数据中有价值的信息并用到具体的应用中。


▌2. 训练

神经网络训练洞见

       640?wx_fmt=png

 

我分享的第二个工做是如何训练神经网络,或者神经网络的本质是什么。训练神经网络有不少初始化方法和优化器,在训练中对信息进行归一化。

 

从信息传播的角度看,咱们认为这些方法本质上是保持训练过程当中或训练初始阶段的恒常性。恒常性能够分为两种,一种是静态恒常性,一种是动态恒常性。静态恒常性通常用在初始阶段,也就是初始化便可;动态恒常性就是优化的过程当中,每一轮迭代都让信息的某种统计量保持不变。你们比较熟悉的初始化方法,包括Xavier、MSra、LSUV都属于静态恒常性,全部层保持在固定的数量级上,让初始权重的某些统计量保持在统一数量级上;动态恒常性包括 WN、BN、LN 等。但不管是哪一种方式,无非就是设计某种规划,可以让信息的量级在某一个传播方向上保持不变,固然不是数字上的不变,而是统计量上的不变,由于神经网络的训练有点相似于蝴蝶效应,因此恒常性很是重要。

 

四个观点

       640?wx_fmt=png


先讲咱们的四个观点:

  • 第一,咱们训练一个真正深的网络,批归一化是一个必要条件;

  • 第二,相较于静态恒常性,动态恒常性更加剧要;

  • 第三,相较于单个方向保持动态恒常性,在训练时保持两个方向,同时保持动态的恒常性,才是解决这个问题的关键;

  • 最后,若是模型很是深,可能还须要显示对传播的信号进行调控。


退化问题

       640?wx_fmt=png 

你们可能说,用了ResNet 好像没有发生很难训练的状况,可是康奈尔大学的一篇文章指出,ResNet 本质上是指数级浅网络的聚合,如左图所示,咱们的工做是对没有任何残差结构网络的训练方法。这种方法训练过程当中会产生退化问题,即当以网络的层数做为横坐标、性能做为纵坐标,结果会如右图所示,网络层数小于等于20层时,简单堆叠网络层数会产生增益性能,但层数超过20,收敛率会大大降低,性能变差,这就是著名的深度神经网络训练退化的问题。咱们的工做其实没有解决这个问题,只是缓解了这一问题,但但愿能够给从业人员一些启发。

 

内在因素

       640?wx_fmt=png


咱们认为缘由可能有两个,第一是批归一化的伪归一化问题,前面的信号传递没有问题,在每一层卷积之后,信号虽然有时会被放大,有时会被缩小,可是通过批归一化之后,分布又可以被拉回来。可是若是推导反向评估显示,会发现当层数很是深时,偏差累积的效应会让反向传播偏差的分布愈来愈偏,形成训练出问题。

       640?wx_fmt=png

 

第二个缘由可能更加深入一点,咱们知道反向传播的信号实际上是和输出相对于输入息息相关。通常的工做可能推导到卷积层,咱们还考虑了 BN 层,推导如图所示,在 MXM 层的方阵里面,左上角两个数值颇有可能取到 0 或近似 0。底部的示意图表示一个信息量比较丰富的信号,在反向传播时,一层一层往回传会形成信号特定维度上的信息丢失。咱们认为信息的丢失也会破坏动态恒常性,形成没有残差结构深度网络难以训练。

 

解决方案1:正规化

       640?wx_fmt=png


找到实用且有效的方法很是难,咱们首先想到了一个数学公式,若是线性变化位于一个正交权上,就能得到输入和输出向量之间范数上的幅值等价性。可是咱们发现,若是强制要求权重位于正交基上,很大程度会限制神经网络解空间的范围。咱们用正交正则的思路替代 LR,去解决这个问题。

       640?wx_fmt=png


咱们但愿在反向传播时,信号的幅值可以位于比较稳定的范围内。因为各类应用不一样,卷积神经网络会对应不一样的超参数,输入和输出通道的不一样等缘由也会使得维度上出现一些问题。好比,在三维空间中找到四个相互正交的向量,在数学上是不可行的。对于输入维度小于输出的状况,须要要进行分组,让每一个组的 din 大于等于 dout。


解决方案2:调制

       640?wx_fmt=png


第二个解决方案想法比较简单,就是对信号进行调制。在咱们推导的公式中,为每一层设计一个符合该层的放大因子或缩小因子,该因子取值由该层的偏差输出和输入的比值决定。此方法能够在训练一个没有残差的一百层网络的初始阶段使用。


实验结果

      640?wx_fmt=png


这是咱们的一些实验的结果,最左图是每一层的 weights 相关度的曲线图,你们能够看到,绿色表示正交正则,蓝色表示权重衰减,用了正交正则之后,位置之间的夹角较大,夹角越大,相关度越低,此方法有效地保持了 weights 之间的低相关度。

 

右边的两幅图是反向传播的偏差性浮值的曲线。一样地,蓝色是权重衰减的方法,绿色是正交正则方法,能够看到正交正则能够适当放大信号,有效保留反向传播中有用的信号,这些有用的部分,咱们认为是可以让网络正常训练的关键因素。

      640?wx_fmt=png


咱们对 SGD、正交正则和其余的一些自适应方法等进行比较,发现咱们的方法可以得到较好的性能,当层数到达 110 层时,不少方法已经没法训练了,但咱们的方法仍是能够继续收敛,并能够用在残差网络里,可是对性能的提高不是很明显。

       640?wx_fmt=png


在其余人的工做中,咱们也发现了相似的结论。BigGan 提到正交正则有利于 Gan 网络的稳定性。LARS 也提出了分层学习力的思想,只不过它使用了 weight 幅值与其梯度幅值的比值。

 

部署


模型压缩方法

       640?wx_fmt=png

如下的工做是模型部署。咱们有不少摄像头产品,因此压缩方法是重中之重。

 

       640?wx_fmt=png 

我今天要讲的是轻量级算子的相关工做,动机在于卷积是信息聚合的一种方式,能够分红两个阶段,一个是肯定感觉野,第二是肯定两个向量之间的内积。3X3 的卷积既能知足感觉野,也能兼顾 flops,因此大多数卷积是 3X3。

       640?wx_fmt=png


可是,咱们是否能找到一个 1X1 的方式替代原来的卷积神经网络呢?答案是有的。那就是Shift操做,它能够把某一层的特征图进行平移,而后用 1X1 进行信息聚合,好处是没有额外的计算量。

       640?wx_fmt=png


由于最初的 shift CNN 须要人工肯定平移的方向和大小,但咱们想要经过自适应去学习平移方向,同时保持特征图不动,由于特征图移动会产生必定代价,因此咱们用双向性插值,把平移的量切换为连续的浮点值,而后增长了一个鼓励稀疏的正则。

       640?wx_fmt=png


咱们根据这个基本思想设计了一些基本模块,结合了下采样、多尺度融合等。

       640?wx_fmt=png


这是基于Unsigned Block作融合,用 4 领域的 shift 操做代替了 8 领域的 shift 操做。

       640?wx_fmt=png


咱们还设计了兼顾效率的网络结构,以一种反规约的顺序进行 shift 卷积,增长了感觉野的复杂度和聚合的复杂度,产生更好的效果,效率提高,跑得速度更快。

       640?wx_fmt=png

   

这是与 Mobilenet 和 ShuffleNet 性能比较。


       640?wx_fmt=png      

 

这是咱们对随机选取的六层网络进行可视化的结果,圈越大表示特征图越多,占比越高。统计显示,约 70% 的分类问题特征图是不须要移动的,这很是有趣。

       640?wx_fmt=png


       640?wx_fmt=png


这是上个月 MobileNetV3 的工做,咱们的想法与之不谋而合:模块放置在深度滤波器的拓展以后,以将注意力应用于最大的表示......

       640?wx_fmt=png


最后是四点总结:

 

  • 第一点,咱们认为如今的深度学习框架中,模型对信息生成的方式很是敏感,能够考虑在把信息“喂”给模型以前,如何让信息的呈现方式歧义变小,这样能够得到更好的结果。

  • 第二点,边界框可能已通过时了,咱们须要想一些更加优雅、优美的表示方式。

  • 第三点,咱们认为训练神经网络时,动态恒常性是一个关键因素。

  • 最后一点,对于芯片设计者来讲,过多的算子会致使电路更复杂,就像检测框架会趋向于过程简化,咱们认为算子也会进行收敛,之后的神经网络可能只有 1X1 的卷积,加上其余的操做就可以进行各类智能应用。

 

最后是咱们发表的论文,你们有兴趣能够下载讨论,感谢你们的聆听,谢谢你们!

 

参考论文

 

  • Action Recognition:

    • HCN: https://arxiv.org/pdf/1804.06055

    • MV-CNN: https://arxiv.org/pdf/1903.01197

  • Model Compression:

    • Channel Pruning: https://arxiv.org/pdf/1812.06611

    • FENet: https://arxiv.org/pdf/1903.05285

    • FGA: https://arxiv.org/pdf/1807.11254

  • Detection:

    • TLL: https://arxiv.org/pdf/1807.01438

    • https://arxiv.org/pdf/1710.10749

  • ReID: https://arxiv.org/pdf/1812.06576

    • Optimization: https://arxiv.org/pdf/1703.01827 

 

 

嘉宾介绍:

 

谢迪,海康威视研究院前沿技术部负责人,2012年毕业于浙江大学计算机学院,得到计算机视觉方向博士学位。现任海康威视研究院前沿技术部负责人,资深算法专家。主要负责计算机视觉、增量学习、深度网络优化等领域技术路线与方向的制定、前沿技术的研发以及算法创新及落地等工做。带领团队成员在计算机视觉及深度学习领域持续深耕,相继在视觉领域的各个世界级评测及竞赛中得到多项第一,包括KITTI、MOT Challenge、PASCAL VOC、LSVRC201六、Caltech等。在公司期间,于CVPR、ECCV、IJCAI、AAAI、ICIP等国际顶级会议上发表论文近20篇,其中提出的许多思想和方法被普遍应用于公司的各种平台和产品中。


*本文为 AI科技大本营整理文章,转载请联系 1092722531)


精彩推荐



《程序员大本营》6月刊来啦~


更多福利限时免费领取:CSDN重磅技术大会精选视频以及200+PPT;机器学习、知识图谱、计算机视觉、区块链等100+技术公开课及PPT全奉送...


640?wx_fmt=png

推荐阅读:



640?wx_fmt=png 你点的每一个“在看”,我都认真当成了喜欢