雷锋网按:智慧城市已被谈及多年,“视频监控+AI”也成为众多公司研究的方向。
但现阶段,通过监控摄像头让城市变得更智智慧,不仅仅是单一的视频检索和计算机视觉问题,而是在面临海量信息和突发事件时,能否能迅速做出反应、能否降低计算量、能否有效识别和检索等一系列庞大的系统工程。
现有视频监控体系的弊病,使得很多复杂任务无法完成,即便是人工智能大规模渗入后,需求方也往往为了一些特殊目的才加特定的智能摄像头和处理系统。
有些专用摄像头只是用来识别车牌号,有些摄像头只用来识别人脸,这种打补丁式的方法实际会带来很多问题。
针对这些问题,中国工程程院院士、北京大学教授高文给出了他的指导意见和解决方案,以下是高文院士讲话内容,雷锋网编辑整理。
(本文由高文院士亲自审改)
杭州是国内智慧城市做得比较好的城市,有一些区域也在试验“城市大脑”系统。
我们先来看下杭州城市道路的数据:
目前杭州大概有600多条线路、5万条道路、8万多个路口。这些路线上有着200万辆车,其中包括9000辆公交车,每天的乘客流量高达390万。
在如此大规模且极其复杂的系统里,要做好规划和管理实际上非常艰难。
这是杭州智慧城市使用城市大脑系统所做的整体规划:
过去城市智能交通的规划方式,根据每个路口的交通状况做分析,然后给出模型,这些环节需要规划每个信号灯红黄绿应该各维持多长时间。但这种方式只能做到局部区域的优化,无法达到整个城市的全局优化。
那么如何来控制红绿灯的时间?
下图是他们通过云计算把城市的信号灯规划重新调整以后得到的结果,大家可以看到城市交通状态分成低保和、中报和、准饱和三个阶段:
1、最好的是低饱和,路上车不多
2、其次是中饱和,路上车辆数量正好
3、最差是准饱和,车几乎无法行驶
之前汽车在杭州这条线路的行驶速度分别是37公里、30公里和22公里,经过全局优化后,这条线路的平均速度为43公里、35公里和26公里,整体提速17%。
在没有对道路进行调整的情况下,只对信号灯控制做了优化就能提速17%,这非常了不起。
杭州市通过城市交通管理云进行规划,除了规划信号灯本身外,还架设了摄像头。
摄像头每时每刻都在拍路面,并计算车的占有率(即每百平方米路面中车的数量),基于此来判断每条道路的饱和程度,然后对信号灯进行优化。
把一个月全天24小时的数据输进去后,重新进行计算。但这些数据往往不一样,因此需要有一个数据交换平台。
数据交换平台上是算法平台,再上层才是应用和服务平台。
上述提到的内容和PPT便是整体交通的优化,当然,这里面不少也与视频有关,涉及到各种各样的模块。如果信号进来,它在摄像头上做编码,传到云端做解码,解码后再去提取特征、做分析等,这是常规的流程。
但这样的系统怎么样?是不是一个理想智慧城市系统?我的答案:不是。
刚才谈到的那种方式,根据以往的数据来做调度规划,总体不错,但对突发事件无法及时做出判断。
最理想的方式不仅可以通过以往的数据统计进行决策、进行查询,而且也可对实时的数据进行处理、分析。
世界各地的紧急事件发生时,系统整体的响应速度实际都比较差。
为什么?主要因为现在整个视频监控体系本身造成。
现在的视频监控系统,从一开始就面临数据量太大、存储量太大,查找数据不易等一系列挑战,这些挑战可以归纳成三个问题:难存储、难检索、难识别。
1、存储成本高
存储成本高的主要原因就是数据量太大,而且要求存的越久存储成本就越高。
为了加快速度,减低成本,通常做法是往狠里压缩,同时缩短视频存储周期:缩短到两周,之后数据逐渐把前面数据慢慢覆盖掉。
2、检索困难
之所以不能进行实时反馈,是因为目前的监控体系都是为存储而设计。
把数据存到库里,是监控体系的第一要务。什么时候你要用,常规的做法就是把数据提出来,解开,然后再做后面的处理。这就导致存储时已经丢掉了很多东西,在此基础上再去做识别效果会比较差。
3、对象再标识难
尽管视频录下来了,但A摄像头录的信息你找到了,不见得在B摄像头上能对得上,这也是一个非常难的挑战。
针对这些挑战,我们必须想办法找一个更好的方案来解决现有智慧城市系统面临的问题。
这时候,我们不仅要把东西存储起来,而且能够实时对任何想识别、想搜索的信息进行实时操作。
现在的系统主要是用摄像头把视频抓进来后压缩,传出去,然后存起来。
在很多设有卡口的道路,专门安装了卡口服务器,以此来识别车牌号。有些道路还专门安装高清跟踪摄像头,用于踪人和车。
上述情况往往是为了一些特殊目的才加的摄像头和处理系统。
这种打补丁式的方法实际会导致很多问题。
简单来说就是你有A需求,便装一个系统,你有B需求,于是再装另外一个系统,然后把所有任务抓取的视频都推到云端,这就是现有系统通常采用的设计模式。
我把它叫做“1-1模式”。
“1-1模式”存在很多问题,其中包括数据之间的同步,将来需要统一的数据很多,如果在系统里想做交叉检索,时间差维度上,对接起来会比较困难。
除此之外,因为时间点的不同,对应要手工加很多东西,加工结果是否是系统能规范化、标准化的也非常难说,而且这样的系统很容易造成一些问题。
如果只是存储问题,但没及时分析,很容易导致辨识时间较长,因为你把编码通过网络送到存储端,如果要用的话,还要解码,要做特征提取、特征分析识别等,一系列流程下来,实际上很耗费时间。
而且一旦存在硬盘里,还存在部分信息读取不到的可能,这就会导致更大的问题。
“1-1模式”存在的另一个不足就是准确性比较低,这是所有问题里最严重的。
当视频做完压缩后再去识别,它的性能比不压缩要差,也有损失。
我举几个例子:
从上图可以看到,压缩幅度的不同,使得从左到右图像清晰度越来越差。当给它一个量化参数时,观察QP27、QP32、QP38,数字越大,实际上压得越狠,信息出错的概率也越大。
那么QP值压缩参数选多少比较合适?
不同的标准多多少少是有差别的,我们做了一个测试(参考上图)。
如果采用H.265/AVS2(关闭背景模式)的标准,把AVS2模式打开后,码率(Bitrate)值会很高。把模式关掉时,我们对50P的高清视频进行测试,通过QP参数值25、32、38、40、51、63来设定,设定以后,对应视频流的码率红色区域从13MB到5MB、2.4MB,下方蓝色区域为1.3MB、0.7MB、0.3MB。
高清视频一路无需1MB,700K就已足够。700k和300k差不多也就需要QP50到60之间的压缩能力。
这个能力压缩到这一值上是很糟糕的情况,后来我们做大量的分析实验发现,发现QP取值超过38,后期去检查人、车时,时间利率就会急剧下降。(如下图)
QP值38是一个拐点,此拐点看上去有点不可思议。
对于50P的高清视频分辨率,为了保证后面的识别最低的码率为2.4MB,低于这个水平去做识别,质量会比较差。
这件事告诉我们,追求高压缩率和追求高识别率属于鱼和熊掌不能兼得。压缩率高了,识别率就随之下降,而识别率高的前提是减下压缩率。
除了前面提到的两个问题外,还存在一大难题是面向存储的利用率比较低。
每次查找得先解码,然后再一个个的找,这对服务器的计算能力要求非常高。因此要想在存储视频研究中心或者分中心里进行大规模检索查找,实时性往往无法满足。
大部分情况下,整个数据和算法的利用率极低,如果数据能实时进行检索和分析,显然两者的利用率会更高。
解决利用率低的问题其实很简单,原来是一个任务安装一个摄像头,现在需要把几个任务集中在一个摄像头中来做。
目前海康威视研发的少数高端摄像头可以同时干好几件事,未来也一定要这样做。
为了存储而做的编码流的传统模式是不行的,必须得编码出来,把所有想要的东西一次得到,然后传输到云端,要怎么用,不如说给云端配上足够的能力,刚才说的问题就都能解决了。
这种新的系统我们把它叫做数字视网膜,也可以叫“慧眼”。
数字视网膜:慧眼
这种慧眼不仅能看,还能够感知。如果整个社会均由这种慧眼构造成,那系统会非常强大,智慧城市和公安公共视频的处理也会变得更加得心应手。
实际上承载数字视网膜的摄像头能做两件事:
1、做好编码
2、为后面的识别,提取出需要的信息
但这里需要注意一点,如果把识别算法直接放在摄像头里,会存在问题。摄像头做的事应该是提取特征,把后面可能用到的模式识别的特征提取出来。
当然,也不能用一个摄像头把人脸和汽车等所使用的具体系统的私用特征全部提取和传输,因为这些特征加在一起可能比原来的一个码流还大,相当于传两个码流。
如何解决这个问题?用数字视网膜。
实际上人的眼睛原理和数字视网膜很相似,我们看东西时传给大脑的信息,实际上并不是具体地实打实的物体影像,而是视网膜给后脑传输了生物特征,在后脑完成。
数字视网膜与人的眼睛既具有影像重构(精细编码视觉内容),又具备特征提取(面向识别理解)的功能。
这样的数字视网膜最终怎么实现?
原则上这一部分把高效、监控视频编码(视频特征的紧凑表达),把这些特征集合起来变成紧凑地给它表达出来就叫做“紧凑表达”。
有了这些东西后,把它应用在其中,传输到云端,这时候就拥有了数字视网膜功能。
这样做不会多花码流吗?不会。
它用了原来同一个码流解决了两件事,但前提是视频编码略微会有点损失,但它对识别结果的提升比不用这种方式要高很多倍。
整个数字视网膜实际上包含了四方面的核心技术:
1、基于背景模型的场景视频编码
2、视频同步描述整个表达的记录,同时可结合最近比较热的深度学习
3、在保证性能的时候,用同一个码流把两个任务都传出去,这需要靠视频和特征原有编码技术的优化形式来解决
4、最后是云端的检索,对视频进行更加合理的描述,以便用于搜索
核心技术一:就是高效的编码
编码技术已发展30多年,经历了三代技术更新。
第一代编码MPEG-2主要用于广播电视视频;第二代编码标准H.264主要服务于电视和监控,直至今年市场上仍旧有不少产品在使用第二代编码,而第三代编码标准则是正逐渐进入市场的H.265。
中国的第一代编码基本上没有自己的标准,用的是国外的。从第二代开始有自己的AVS1,第三代有AVS2。就编码技术世代相比而言,我们国外慢一拍,他们进入第二代时咱们才开始有第一代,所以AVS2相当于国外的第三代标准。AVS2中有一项我们的独有技术,叫“场景编码技术”,使用了这个技术的编码系统,编码效率比现在第三代又高了接近一倍。所以我们经常开玩笑说,场景编码技术让我们提前跨入新一代编码标准时代。这是我们领先于国外标准的地方。
刚才讲的编码方式,实际上它得到的好处就是在同等情况下,每前进一代,码流就降低一半,同样的高清电视内容,比如用第一代AVS编要占用10M带宽传输,用第二代AVS只要编5M带宽就够了。
核心技术二:视频特征的紧凑表达
如何把这些特征组织起来?
特征组织是整个视频分析中最关键的一项,我们希望找到一个快准小的特征。
· 快:它本身搜索的速度比较快
· 准:搜索准确率高
· 小:尺寸小,所占用的码流更少
这个问题已经有了国际标准:CDVS(紧凑视频特征描述子),面向视频搜索的紧缩描述子表达。
CDVS现在已经发展为国际标准了,2016年1月份我们在IEEE T-IP上专门发表了一篇文章介绍了该标准,对此技术有兴趣的专家可以找来看看。有了CDVS后,也就是从去年开始,很多人会问这个描述做识别精度怎么样,和深度学习比较效果如何。
后来我们试了试深度学习,使用的特征我们把它称作深度描述子:用深度学习训练出来的描述子,测试后发现,这种描述子效果很不错,基本与手工特征提取相似。
第三项核心技术:联合编码技术
视频编码有自己的优化技术,叫做RDO,也就是率失真优化的缩写。意思是说,在给定码率的前提下,求出失真最小的编码参数。不难理解,码率和失真之间的关系是个跷跷板,如果追求码率低,它的编码损失就大;如果追求编码损失小,就得付出较高的码率。此时需要找到一个最佳点,这个最佳点就是我们所说的优化点,通过下图我们可以看到,它基本上是一个倒曲线,要在曲线先找到一个点,把“点”确定以后,在这个码率下能够得到最小的损失值。
而对于视频分析或者模式识别来说,我们追求的是识别准确率。也就是说,当识别特征是在终端(而不是在云端)提取时,特征的传输也需要占用码率。因此优化目标函数为,在给定码率条件下,求出识别率最高的特征组合。也就是说,识别优化函数可以表述为RAO,或者说率准确优化,其中R是码率,A是准确率,O是优化。
现在我们有两个优化函数需要求解,一个是RDO,一个是RAO。我们可以设计一个联合优化函数,使得在给定码率下,所获得的码率、识别率是最优的。
例如,当给定700k来传高清视频。用这个优化方法会得到,在700k的码流里,分配多少给视频,多少给紧缩特征,然它组合结果是最好的。这个方法的直接好处是,在编码损失几乎可以忽略不计的条件下,分析识别准确率提高10-40%。
现在标准和软件都具备了,接下的就是如何去做。
做法上,有很多技术路线。我举个例子,在现有的摄像头加上CPU或FPGA,把刚说的第二件事放进去,也可以把特征提取出来。当然,这里除了编码和特征提取以外,还有一个编码和特征之间的联系优化是非常重要的模块。
所以,部署时可以先从现有的系统慢慢往里填补新的,当整个市场启动以后再帮他们去部署,用芯片来做的解决方案。
随时间的推移,将来在整个数字视网膜的部署下,我们的系统会越来越好用,而且系统有一好处,如果设计聪明的话,可以软件升级和软件定义,这些功能可以通过云端下载到摄像头上,修改某些参数表,使得系统里的技术进一步提高。
当它们能够运行的时候,我想城市就比较容易治理。
目前我们已经在山东文登有了很长时间的试验,找出很多套牌车,无牌车、有遮挡牌子的车等。
另外,在路上实时发现一些需要跟踪、抓的车,进行实时布控规划和预警,也可在云端进行,无论是用深度特征,还是在系统里深度分析,都可以在马路上找人等等。
后端可以做一些识别搜索,这个系统现在在重庆也进行了布控实验,效果也不错。
所以数字视网膜其实涉及到视频编码,特征编码也是一体化,叫MPEG CDVS。
如果对一个实际图像要求特别高,非常较真,但这个地方要用整个视频流的特征,这些特征现在还没做完、还在做,并且安排了CDVA的工作组。
所以,如果大家对这些事感兴趣,我们非常欢迎你们的加入。
在这里我从以前的一对一模式变成一对多模式,当一对多模式里有基本的技术标准就位后,可以把这些标准进一步优化,然后嵌入在产品里把它实现,尽快地实践和应用,这是我们未来必须要做的一些工作。雷锋网雷锋网雷锋网