https://www.toutiao.com/a6709031112284307980/

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

整理 | 夕颜

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

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

标准机器学习Pipeline

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

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

机器学习pipeline实践

今天,我将和大家分享三个方面的工作,聚焦于标注、训练和部署,这三个环节分别代表了信息的生成、提炼、重新整合以及信息的去冗余。

▌1. 标注

通用函数近似器

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

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

多尺度对GT的影响

在安防场景中,我们最关心的是人和车。以行人检测为例,在一个场景中,我们会关心各个尺度的行人,但是神经网络对不同对象比较敏感,我们现在检测的框架是基于边界框的,对于大尺度的行人来说,红框标定行人没有问题,但是小尺度的行人标定存在两个问题,第一个问题是小尺度的对象本身提供的信息非常有限,第二个是小尺度对象的真值框差异非常大。

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

TLL小尺度行人检测

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

网络结构我们使用了 Hourglass 的沙漏结构。当然,多尺度是影响目标检测的原因,所以我们也是使用了多尺度信息聚合的方式。

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

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

在测试中,我们希望小目标的分辨率能够在10像素以下,越小越好,因为越小越能体现算法的优势,而对于检测过程中的帧漏检,相比基于光流的显示聚合方法,隐式的信息聚合方法可以进一步的提高检出率。

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

可以看到,无论在严重遮挡、远景,还是不规则的长宽比的配置下,这个方法还是有一定的优势。

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

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

▌2. 训练

神经网络训练洞见

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

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

四个观点

先讲我们的四个观点:

  • 第一,我们训练一个真正深的网络,批归一化是一个必要条件;
  • 第二,相较于静态恒常性,动态恒常性更加重要;
  • 第三,相较于单个方向保持动态恒常性,在训练时保持两个方向,同时保持动态的恒常性,才是解决这个问题的关键;
  • 最后,如果模型非常深,可能还需要显示对传播的信号进行调控。

退化问题

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

内在因素

我们认为原因可能有两个,第一是批归一化的伪归一化问题,前面的信号传递没有问题,在每一层卷积以后,信号虽然有时会被放大,有时会被缩小,但是经过批归一化以后,分布又能够被拉回来。但是如果推导反向评估显示,会发现当层数非常深时,误差累积的效应会让反向传播误差的分布越来越偏,造成训练出问题。

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

解决方案1:正规化

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

我们希望在反向传播时,信号的幅值能够位于比较稳定的范围内。由于各种应用不同,卷积神经网络会对应不同的超参数,输入和输出通道的不同等原因也会使得维度上出现一些问题。比如,在三维空间中找到四个相互正交的向量,在数学上是不可行的。对于输入维度小于输出的情况,需要要进行分组,让每个组的 din 大于等于 dout。

解决方案2:调制

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

实验结果

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

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

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

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

部署

▌模型压缩方法

以下的工作是模型部署。我们有很多摄像头产品,所以压缩方法是重中之重。

我今天要讲的是轻量级算子的相关工作,动机在于卷积是信息聚合的一种方式,可以分成两个阶段,一个是确定感受野,第二是确定两个向量之间的内积。3X3 的卷积既能满足感受野,也能兼顾 flops,所以大多数卷积是 3X3。

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

因为最初的 shift CNN 需要人工确定平移的方向和大小,但我们想要通过自适应去学习平移方向,同时保持特征图不动,因为特征图移动会产生一定代价,所以我们用双向性插值,把平移的量切换为连续的浮点值,然后增加了一个鼓励稀疏的正则。

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

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

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

这是与 Mobilenet 和 ShuffleNet 性能比较。

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

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

最后是四点总结:

  • 第一点,我们认为现在的深度学习框架中,模型对信息生成的方式非常敏感,可以考虑在把信息“喂”给模型之前,如何让信息的呈现方式歧义变小,这样可以获得更好的结果。
  • 第二点,边界框可能已经过时了,我们需要想一些更加优雅、优美的表示方式。
  • 第三点,我们认为训练神经网络时,动态恒常性是一个关键因素。
  • 最后一点,对于芯片设计者来说,过多的算子会导致电路更复杂,就像检测框架会趋向于过程简化,我们认为算子也会进行收敛,以后的神经网络可能只有 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、LSVRC2016、Caltech等。在公司期间,于CVPR、ECCV、IJCAI、AAAI、ICIP等国际顶级会议上发表论文近20篇,其中提出的许多思想和方法被广泛应用于公司的各类平台和产品中。

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

  1. win10隐藏任务栏_Win10美化指南 | 定制属于你的专属桌面,Windows也能玩出新花样...

    Win10美化指南 | 定制属于你的专属桌面,Windows也能玩出新花样 7SIZE丨插图部分来自于网络 作为一名Windows党,是不是对田牌一尘不变的笨拙枯燥感到无感甚至是厌烦,虽然说不丑,但是 ...

  2. 如何把微信状态玩出新花样?30秒就能学会的超简单教程

    大家都知道吗?微信8.0版本开始推出了微信状态功能,大家可以在主页写下此刻的心情.正在做的事还可以配上图片或者视频.在24小时之内你的好友在点开你的主页时就能看到你的状态了. 那微信状态怎么改呢?今天 ...

  3. 用纸筒做机器人_每天都可以玩出新花样,卷纸筒就是这么牛的神器!

    原标题:每天都可以玩出新花样,卷纸筒就是这么牛的神器! 家家户户都有的卷纸筒 --大小.尺寸非常适合孩子抓握, 是变废为宝的好材料, 能带给娃充分的想象及创造空间. 盘点下卷纸筒的神奇用法, 看看在日 ...

  4. 互联网+,让农业玩出新花样

    本文讲的是 :  互联网+,让农业玩出新花样  , [IT168 案例]一连串事件昭示着互联网+农业大潮正扑面而来,更多农业创新机会出现. 5月8日,国务院出台"电商国八条",提出 ...

  5. 手机电路板文件_ORICO移动硬盘盒玩出新花样,变身手机备份宝

    当前手机厂商各自都推出了自家的云盘,但是免费容量都不大,基本都是5GB的空间,随随便便拍点照片就不够用了.想要扩大容量?对不起,要交钱.而且是按月或者按年缴费.是不是感觉想要备份下来美好的瞬间感觉好难 ...

  6. 英语总结系列(二十一):英语也能玩出新花样

    [前言] 九月份在外工作的一个月,离开了家,自己独自一人在外如何将英语兴趣提上来那?这是摆在我面前的一个绕不过的问题:经过前三个月的适应,工作已经搞定但是英语的激情逐渐平复下去:好在自己及时调整找到一 ...

  7. 硅谷的万圣节,看科技公司如何玩出新花样?

    专栏 | 九章算法 网址 | www.jiuzhang.com 一年一度的万圣节到了.作为每年赛逼格的重大节日,硅谷各大IT公司门也不甘示弱,玩起各种新花样. 那么,硅谷科技公司的万圣节都是怎么过的呢 ...

  8. 强化学习算法成功控制核聚变装置;元宇宙里的AI玩出新花样

    近期业内发布了这些有趣且重要的AI应用: Nature重磅:DeepMind利用强化学习算法成功控制核聚变装置 突破原有技术应用形态,Meta元宇宙这样玩AI 告别渣画质动漫视频,B站开源动漫超分辨率 ...

  9. 智慧工地环境监测系统助力带工地扬尘污染治理也玩出“新花样”

    随着城市化发展不断深入,建筑施工体量不断增加.目前很多城市大气污染主要是因为施工工地上的扬尘污染,但由于工地范围大数量多,在治理上难度剧增.工地扬尘八个百分之百100%标准目前是全国各地方常见的管控手 ...

  10. 宠物经济:千亿级的孤独生意,如何用智能化玩出新花样?

    今年双十一,由铲屎官们主导的宠物经济成功实现逆增长,在众多行业中脱颖而出,成为消费疲软环境下的一匹强势黑马. 天猫.京东数据显示:双十一期间,天猫平台宠物烘焙粮销量同比增长超 700%,京东平台宠物高 ...

最新文章

  1. 450刀的eGPU vs 谷歌Colab,谁更划算?
  2. 服务器修改网卡,美国服务器CentOS 6.x修改网卡名称的方法
  3. Xcode clang-omp openmp开发
  4. mysql count or null_sql 语句中count()有条件的时候为什么要加上or null
  5. BUU CODE REVIEW 1
  6. 【已解决】IDEA 配置tomcat后,javaweb项目报404
  7. 时间序列分析之:傅里叶变换找周期
  8. 【已经解决】TypeError: read_img() missing 1 required positional argument: ‘filename‘
  9. spring中如何实现参数隐式传递_Java进阶架构之开源框架面试题系列:Spring+SpringMVC+MyBatis(含答案分享)...
  10. 操作系统分区原理(笔记)
  11. C# vb .net实现相机视图效果滤镜
  12. MATLAB--数字图像处理 PSNR
  13. 计算机加内存还是固态硬盘,电脑慢加内存还是固态硬盘好
  14. Twitch,斗鱼的“万里知音”
  15. 手把手教你使用Python生成图灵智能小伙伴,实现工作助手/闲聊功能
  16. 卓帆宝库分享大学生如何轻松挣钱
  17. 【计算机网络】湖科大学习笔记---数据链路层
  18. 使用python(turtle)画小猪佩奇
  19. TensorFlow可微编程实践2---自动微分符号体系
  20. jsp 注册时同意协议才能点击注册按钮功能及样式控制 简单例子

热门文章

  1. h5底部输入框被键盘遮挡_搜遍整个谷歌, 只有我是在认真解决安卓端hybrid app键盘遮挡输入框的问题...
  2. (Rock, Paper, Scissors, Lizard and Spock)sheldon谢耳朵独创的剪刀,布,石头,蜥蜴,史波克 用代码实现
  3. DOS命令:diskpart
  4. C#基础知识(停止更新、移步博客园)
  5. 服务器关机 正在注销,Win7系统关机一直卡在正在注销如何解决
  6. FANUC机器人有关动作速度倍率的相关系统变量-解释说明
  7. 当代大学生结课后的一周
  8. 为什么Sql Server的查询有时候第一次执行很慢,第二次,第三次执行就变快了
  9. Kali对网站进行DDOS攻击
  10. 计算机mac网关,如何在Mac OS X中获取默认网关地址 | MOS86