人工智能时代前沿技术社区

首页 > 人工智能 > 热点

支付宝技术专家李战斌:安防视频行为分析系统的技术演进及应用场景 | 2018FMI人工智能与大数据高峰论坛(深圳站)

10月28日FMI-2018人工智能与大数据高峰论坛深圳场圆满落幕,支付宝技术专家李战斌以安防视频行为分析系统的技术演进及应用场景为主题进行了

作者: | 2018-11-08 10:13:01

6李战斌.jpg

10月28日FMI-2018人工智能与大数据高峰论坛深圳场圆满落幕,支付宝技术专家李战斌安防视频行为分析系统的技术演进及应用场景为主题进行了精彩的分享。

以下是李战斌的演讲内容,飞马网根据现场速记进行了不改变原意的编辑(有删减): 

李战斌:各位朋友,下午好!很荣幸来到这里和大家分享我近10年在安防视频行为分析领域做的工作以及自己的感想。   

我今天分享内容的标题是《安防视频行为分析系统的技术演进及应用场景》  

第一部分:视频安防市场与行业形态

目前的安防市场很大的但是也很散,没有像互联网一样形成一个模式,因为它是贴身战的行业,技术仅仅是一个方面。

安防市场的分布大概就分布在这几个行业,公安、交通、楼宇、金融、文教、能源和司法等。公安方面用得比较多的是人脸识别、刑侦检测。这不是我们视频行为分析的主战场,也不是初创公司开始要进入的行业,因为这个地方会涉及到入行门槛,也就是谁能拿到项目的问题。我们的着力点是除了公安、司法之外的交通、楼宇、金融、文教和司法的一部分。这几个里面对行为分析需求比较大,我们进一步把这个概念缩小。行为分析方面,安防有这么多企业,海康、威视占比最大,前两大基本上占了整个市场的50%,剩下其他公司利润相当薄。很多安防公司也在寻找像高清、智能化的转变之路,在智能化方面希望超过前面两大企业。

听起来互联网公司很高大上,其实2018年,北京的安防展上,包括阿里、腾讯等公司都去布局安防行业了。可以说从之前的NVRDVR和高清摄像机借助人工智能的力量去进行行业布局,现在已经达到线下肉搏战的程度,去通过贴身战占领B端和主要的监控市场。

监控行业的上下游

图片1.png

这里有这么几个行业,炒股的人会很关注一个企业是舜宇学,下来就是人工智能、视频分析,还有一个处理芯片。

今天是技术的会议,我希望缩小到某些细节的技术,让大家有所得,也有路的指引。大家都说的事情是软件定义摄像机,其实前面说的芯片,包括云端的、终端的。现在企业分为两大派,一派是全部把资料传到云端处理,也就是视频。现在把这些东西放到摄像机和云端处理,这两方面都在竞争,各有利弊。现在互联网大佬很希望把这件事情做到云端,包括阿里云、腾讯云、华为云都在打AI+云”或者“云+AI”。云端处理的好处是云处理的资源优,同时AI算法在云端很容易落地,它的门槛比较低,可以快速适应市场变化。端上的ASIC周期比较长,从芯片设计、流片等,起码要12-24个月,周期太长,而且成本很高,失败率还是比较大。芯片大概分了这么几个细分的方向,一个是云端的训练芯片,即数据中心;还有就是安防摄像头芯片以及自动驾驶。 

初创公司一般都是在IPG上进行验证,然后在ASIC上进行产品化,这样能耗比较低,特别是自动驾驶行业,还有IOT上需要的东西就是需要低能耗、高计算,这块我们和谷歌等国外的企业差别很大。它的能耗比已经达到了1225,我们国内引以为傲的寒武纪也就是350,差了4倍,路还是很长的。

国内云天励飞的ASIC芯片也在宣传,安防项目从项目咨询到工程勘测、施工督导、使用培训、系统升级到后期维护,就是安防行业基本的流程。 

第二部分:视频分类检测与跟踪技术

智能视频应用的产品分为前端设备、平台系统、视频应用,包括视频内容分析,之前是叫模式识别,现在叫内容的提取或者模式识别,还有视频质量保证。这些之前都是用传统的机器学习方法做的,随着技术的发展,特别是人工智能的技术出现,可以说单点技术方面,包括功能项,每个功能项的技术沉淀使得技术的演进已经发生很大的变化,可能有一点是没有变的,那就是软件系统的变化很小。 

对于初级的算法,可能关注更多的是算法的实现部分。对于项目的架构人员来说可能更多关注软件的实现,软件实现的生命周期。软件很久没有变,但是里面的算法更新很快,所以架构的设计很重要,它和人工智能的算法相辅相成。     

图像是二维的东西,比较难,但是收入也很高。

行为跟踪与识别、语义分析、行为预测、行人在线检测,在线是离开这个摄像头,过一段时间之后再出现,判断这两个人是不是同一个人。 

接下来说一下方法,目前深度学习相关的目标检测方法大致分为两派:

一、基于区域提名检测

从名字可以看到,基于区域的提名,也就是说这个地方先通过CNN检测,检测出来很多框,框完以后再提名出来,进行选择。或者抑制或者再加一些判断,把一些不需要的框或者知情度比较低的框删掉。

二、端到端的检测

端到端,它的方法有它的好处,速度快。

Single Shot,鲁棒性、速度等比较快,而FasterRCNN的准确度很高,但是它的速度有问题,因为它的卷积层、全连接层还有再提名。SSD在这方面结合了Faster R-CNN的一些优点,当然它也有缺点。现在已经发展到YOLOV3mAP的值越来越高,代表它的相对准确。

检测是视频行为分析的第一步,真正开始是在这里。检测出来,知道这里有人出现,只能满足把这块的算法进行升级,把周界的防范的方法进行升级,入侵检测等等十几项内容进行升级,但是真正要升级的东西并不在这儿。

大家对安全要求越来越高,你不会因为山竹来了,当天晚上发生的事情无法预测,对安防来说这件事情是不能容忍的。

对检测内容的更细分化,也就是结构化。检测对象,之前检测的是人,后面检测还要出现男性、戴帽子等等,在于个体内容的描述,包括跨摄像头跟踪的技术,可能就需要在座的各位以及包括我在内的人进一步做的事情。 

第三部分:视频行为跟踪识别及语义分析技术

就视频向行为分析来说,我们最终关心的有两件事,即人和物。

一般情况下,物的属性大多数是呈现静止状态或者存在状态;但是人一般具有活跃性,而且能做出一些反常理的事情。

整个安防的行为分析检测是针对异常行为的处理,这时候会把重点放在物体的存在属性。随着人工智能技术和深度学习技术的出现,对人更深入的分析转化为视频行为跟踪,包括语义分析细分上。

2016年的CVPR的第一名的文章,大概说一下人体行为分析这个技术是什么样的流程。VGG net+CPM的背景可能没有介绍,CPM有一些dentist net的意思,把前面的东西抽出来,有6stage完成人体的检测过程。之后出现PCMPAF两个输出,其中有一个分支是身体各部分位置的二维知情度图,下面是各个部位亲和力的二维图—PF,即人的关键点相互之间的关系,因为一点点出来,在图像上它的点是很相近的,怎么样判断出这个点的连接顺序,比如0号点和1号点的关系,下一个点确认是5号点而不是6号点,怎么串起来。因为人的姿态变化很多,而且背景干扰影响很大,这里提出一个二维亲和力图。它的网络就是这样,分两个阶段的结构图。

重点我想说一下它的创新点,它的创新点在PAF这块,它对于类类关键点的区分和类间关键点的区分上做后处理,一下子降低CNN的计算量。 

这里建议如果想跨入人工智能门槛的同学先了解传统机器学习方法,把高数先提高起来,再去看现在所谓的深度学习。 

第四部分:深度摄像头的视频行为分析技术。    

深度摄像头现在发展特别火,目前有两个类别,一是结构光,一个是TOF,结构光相对入门门槛比较低,做到精深级别相对容易。TOF级别对半导体技术要求更高,这块目前国内是短板。

kinect之前在这里做比较好,它把2D向前推了一步,推到3D。玩过游戏的就知道,它对外提供API供大家调用,这块国内有好几家企业,包括奥比中光、华为等几家企业做这个事情。深度摄像头这块应该是很大的突破,或者说很大的技术转折点,包括之前从最早的黑白摄像头到彩色多了一个色道,后来把音频加入进去,到现在从模拟到高清,解决了数据量的描述、清晰度问题,一直到现在维度上要高了一维。

如果你对行业有足够的敏锐性或者对行业有很深刻的了解,互联网经常有一个词是降维打法或者升维,别人降维是在高位才能降得下去。3D这件事是很有历史意义的事情,3D摄像头对物体检测和跟踪有什么作用呢?本质物理属性上是Mask的作用,把空间的感知,距离感传递出来。距离感本身在图像上去处理,可以认为它是多了一个channel的作用。

行为语义识别

目前来说在手机上都想做这件事,当你把这件事情了解完以后,你会觉得前面的技术low了,因为技术在发展。比如前面说你做了自带识别,别人后面的技术有自带跟踪,你达到1秒钟10帧,人家加跟踪1秒达到20帧、30帧、50帧,再后来加入深度摄像头把算法精减,因为获得的信息量增大,Mastk作用增大,把网络降下来,用深度填充进去,把计算量放到ASIC芯片里面做,市场很小,包括手机上都有。

接下来讲讲娱乐或者语义分析,手机方面做的事情。上海交大和腾讯合作的,它一直服务于腾讯优图,卢策吾团队。这方面是结合表情、人体姿态,包括后续的声音,也就是说在行为识别方向,不单是最早的时候我所提到的,后面分析以后会向多模态。和自动驾驶比较类似,单一传感器已经不能满足精度的需求,它会向雷达、视觉、IMU等等结合,这块会向视频、音频等东西进一步结合,获取更进一步对人精准的描述。这些技术其实也是一种大数据,就是新零售里面谁能把握住用户的眼球,谁能了解到用户的心理和用户的购买欲望,这些传感器前端的数据才是最真切的、第一手资料。后续的发展方向,包括其他的方向,也就是大家要着力的点。 

五、终端推理模型的压缩提速技术

推理模型的压缩和提速是另外一个技术,这个技术的入手人是谁呢?除了刚才说的一堆东西之外,另外一部分人包括之前做过编解码、汇编的,或者做过嵌入式的人,这里不是嵌入系统开发,而是嵌入底层系统开发,同时也包括移动端的内容和嵌入式的汇编语言等,还有更底层芯片开发的应用,后续都可以走这条路。

剪枝

大家很容易理解,把神经元或者枝桠什么的都砍掉,这是字面意思。

操作这块,它相对来说是有些复杂度的,因为剪枝会影响到这个模型能不能用的问题,一是剪的对不对,二是剪的好不好。剪枝带来的收益是会降低模型的包大小,会压缩模型的包大小,提速稍微弱一些,没有很直接的关系,主要是降低包大小。如果要提速,可能要和其他的OP结合。有好几个企业已经发布了这样的产品,比如支付宝的xNN,腾讯的NCNN,这些产品走的是压缩、量化、定点化的这条路。

剪枝,你怎么剪?前面给大家总结了一下,剪前端对精度影响大,越往后剪影响反而小。可能大家对VGG比较了解,前端的weight的个数比较小,后面越来越大,你剪后面的影响小,另外前面的特征是比较底层的特征,后面就已经比较高级语义化了,剪后面相对之间,语义化的时候,大家交错冗余量比较大,后端底层的信息剪的就少。大概剪到50%,精度偶尔会因为剪了而提高,主要在鲁棒性,剪了以后鲁棒性反而得到提高。

量化和定点化

量化其实就是floatint的变化,本质没有什么,计算还是Float,因为模型下载或者上传的时候,你的包比较大,由于传输介质的影响,包传输失败,量化解决这个问题。这个开发周期比较短,重点是线性量化方法和非线性量化等。

定点化会涉及OP的计算。相对来说它要做一些操作,针对不同的卷积方式,比如说空洞卷积或者其他定制卷积方式,你要写这些操作,你要写这些OP,这些OP用底层的neon或者其他底层语言完成这个操作,操作在对应的过程中进行替换,在这里面计算Min max,映射到一定空间,然后再调用相关的计算进行操作,再升为float,因为中间把min max已经进行保存了。其实冗余操作,这就是针对多层的情况下,多个channel之间的相互影响,进行的计算。可以看到如果做定点化做得比较好,它的精度反而会提升的。

我的分享就到这里。谢谢大家!