城市之眼视觉计算技术-阿里云开发者社区

开发者社区> 开发与运维> 正文
登录阅读全文

城市之眼视觉计算技术

简介: 云栖TechDay40期,iDST视觉计算组算法专家亚连带来城市之眼视觉技术技术的演讲。本文着重讲解了城市之眼,立足于收集、分析、索引整个城市相关的视觉数据,包括人、非机动车、车的重认证,还有全局特征和局部特征抓取,并列举了真实数据实例,城市之眼是具有实时、全局的感知、分析、处理和决策能力的“慧眼”。

云栖TechDay40期,iDST视觉计算组算法专家亚连带来城市之眼视觉技术技术的演讲。本文着重讲解了城市之眼,立足于收集、分析、索引整个城市相关的视觉数据,包括人、非机动车、车的重认证,还有全局特征和局部特征抓取,并列举了真实数据实例,城市之眼是具有实时、全局的感知、分析、处理和决策能力的“慧眼”。

 

一个城市往往有数以万计的摄像头,但目前只有非常少的视觉分析功能在实际中应用(例如交通处罚),大量的监控视频都需要人工来观看和排查,视频中的大量有价值的信息还没有被自动检测和挖掘出来。城市之眼立足于收集、分析、索引整个城市相关的视觉数据,是具有实时、全局的感知、分析、处理和决策能力的“慧眼”。

 

City Brain

城市当中有大量的视频监控,利用这些视频监控抓取视频数据来做机器学习,然后通过机器学习得到的模型去做一些事情,比如说做交通优化,现在城市当中有很多的拥堵情况会发生,我们能够通过视觉方式自动检测出拥堵情况。

329a89bfcb32366e7a0a1933ef1fd822c6028c04

  • 从问题上来说,利用人工智能技术,可以大大减少人力,不需要人去看,而是通过机器自动去发现,这是感知层面的。我们可以通过感知城市当中发生的事件拥堵情况,去做一些信号灯的调配,使得城市的交通效率提升,帮助公安解决大量问题。比如说公安在找失踪人员、嫌疑犯的时候,我们能通过视觉计算,实时的去发现跟踪。

另外在环境和教育上面,未来可能也会做一些相关的工作。比如说监测到环境发生的一些变化,雾霾跟车尾气排放量的关系,我们可以通过大量数据,不止是视觉数据,还包括其他的数据,融入起来一起做分析。

  • 从核心技术来说,比如说交通参数,既然我们要知道拥堵程度,很多时候要去发现比如排队长度,然后车流、车速是多少。如果我们能够所见即所得,利用视频的方式去把每一个路段真实的情况看清楚,并且是同时去看清楚,那么这个带来的收益应该会比原来用一些传统数据例如线圈,带来的收益会更大一些。关于城市搜索这个问题,我们能不能通过视觉上面的一些技术,比如说特征学习,索引技术,去发现城市当中人车、非自动车的轨迹,也就是在整个城市当中,如果我要去找一个人,我通过视觉的方式,经过几个摄像头,我就能统一把人的轨迹给找出来。

在系统上面,除了刚才说的算法之外,我们需要去搭建一个实时系统,因为我们其实是视频流实时进来的,不断的去涌现人车物,那我们该通过什么样的方式把它们做处理、索引,索引到城市每一个目标每一件事情,然后去做统一的搜索,这个也是系统层面需要考虑的事情。

在最底层就是我们的平台,我们依赖于阿里云的流计算平台,去做实时的分析处理,然后底层借鉴阿里云的ODPS去把索引给搭建起来。

  • 价值层面,如果我们能够大大的减少人力,帮他们去真正的发挥视觉当中的作用,那么其实这样的社会价值和商业价值都会比较大。

2aa73a31380b6c77a7aec8b866aeae6888c0e7f9

我们现在最主要的应用场景包括两块:交通和公安。首先要做的是把城市当中所有的大量的数据汇总起来,包括视频数据,还包括一些传统数据我们也是需要的,然后我们需要去计算,计算里面包括一些比较基础的汇聚计算,也包括人工智能本身的一些计算,包括如何去做学习,最后重新赋能城市中的一些应用。

所以从整个流上面来看,我们首先会有数据源,然后对数据做理解,做实时和全局的认知,也就是感知。有了这样的感知以后,我们需要去做一些优化,比如能不能调节一下信号灯,能不能调节一下可变车道,使得整个交通效率能够提升。我们能不能在城市当中,利用到时空上面的视频数据,这个时空指的是视频数据本身是有时间持续的信息,空间上面我们有相邻的摄像头的一些零位信息,我们能不能利用这样的信息去预测,比如说半个小时之后,哪里会不会堵,帮助我们出行做一些规划。

最后对于整个社会的治理者,我们能不能通过预测方式做一些预防信息,使得情况尽量不要再发生。比如说我们拥堵情况能不能再少一点,能不能提前做好拥堵的预防,能不能最快速的知道案件。

62ac95976bbdc0f19817c8b4a17253d46e920f68

我们在城市当中有很多的摄像头点位,每个点位都会对应到一路的摄像,那么能不能同时在整个城市范围当中发现城市当中这些摄像头所照到的路面会不会发生一些情况,比如说是不是发生了拥堵,比如说车跟车之间的相撞,像这样的一些事件我们能不能自动去做,现在在杭州城市大脑当中其实已经实施了,已经在杭州全量上线了,我们其实是能够看到,在整个城市当中我们实时的看到有哪些地方是发生拥堵的,有哪些地方发生了事件事故。

 

Re-ID

City Re-ID

593fc5ab8f49fcfb4c6266f3de3a294cc7f99e6f

从公安的角度来说,我们能不能做城市当中的Re-ID,Re-ID顾名思义相当于重认证,认证出来人,认证出来车,认证出来非机动车是不是我们想要找的。我们的目标其实是要找到真正的这个人,而不是找到相似的衣服。那么对于实时处理而言,我们其实有视频上面的数据,有时序上的信息,我们判断一个人,不止是静态的判断他的体型、外貌,也包括他的一些行为。我们现在暂时利用了图片的信息去做,但是未来,我们可以利用更多的信息去做。

在真实的场景当中,人、车和非机动车在不同摄像头和不同的场景下面的变化是非常大的,它会有不同的摄像头和摄像头之间的分辨率变化,也会有人的姿态变化,也会有摄像头安装的位置跟人的相对位置所产生的视角变化。就是这样的一些变化导致整个搜索问题变得比较复杂。

Search vs. Re-ID

5bdaa3e4ad3137fec5e4f606aa01228fb633719e

我们做search 和Re-ID这两个问题上面,不同之处在于一个找相似、相关,一个是找相同。

主要的流程分off line、on line,我们的输入流其实是视频流,我们实时的去处理视频流的信息,并且把整个视频场景当中的人车物,包括道路和建筑物上面的一些检测,我们都需要识别和检测出来,然后我们把检测出来的建立索引,把相应的一些人的信息集合起来,建一个索引,方便我们去进行快速的搜索。

 

A Typical Visual Re-Identification System

那我们在搜索的时候势必会有ranking的问题,我们希望将最相关的信息,最相关的人,就是我们觉得真正可能是同一个人的图片和相关的点位信息和时间信息排在最前面。

当输入一个监控摄像头上面一个人以后,我们也过一个卷积网络,然后卷积网络抽出一个dense的feature,相当于通过分类网和相似度的网络来做的,比如说我有一千个人,我对一千个人做分类,那这样训练出来的feature在真实场景,在测试的过程当中是没有分类这个信息,因为测试的过程当中不会再见到一样的人了。

Global-level Representation

d6847689243bfe338b2b4ad8fc26b8cfce7d1904

我们现在用到的是全局图片去做feature learning,去做特征学习,那么其实我们对于这样的问题,特别是像人在监控场景下面,比如说100×50的像素图片,我们该怎么样去最大程度的去利用信息,我们应该更细节的去把握人当中的一些属性,人当中的一些具体位置。我们能不能更好的把这个人的不同部位的feature抓出来,在一个统一的框架下进行特征学习呢?答案是可以的,因为我们人其实是有一个结构信息,它一般都是从上到下,这个人可以在平面内做一个旋转,所以我们可以对feature map做一个划分,就是说每一行去做划分,在这样的一个行的区域范围之内,我们去找它的匹配patch,如果我们找到这一对的patch是很相关的,我们应该去加大它的相似程度,如果是对于不同的人,其实我们应该要去减弱patch的相关性,所以通过这样的方式,我们把相关度的loss加在low level的feature上面,并且叠加上high level的global feature的loss同时去做训练,同时去做训练的好处在于,对于这样的网络,将最具有判别性的局部特征encode在feature map上面了,我们并且把这样具有判别性的局部特征信息传递到下面几个网络当中。使得在全局训练当中也用到了这部分信息。这样的一个框架它有两个好处:一是对于全局和局部的特征都有一个刻划;二是可以建大规模索引,如果要建一个索引,比如说hash索引或者tree索引,其实我们是一张图片就出一个feature。

 ab3ca3b453b59c754f7c471342a72a4db58985d5

大家可以看到,这两张图都是同一个女生,她背了一个背包,穿白色的衣服,那我们在网络学习过程当中,我们把feature map可视化出来,会发现她在最相关的一些区域的响应是非常强的。比如说这个包,它具有很强的判别性特征,我们能自动把它学出来,除了这个之外,也结合了一些属性信息。那么假如说一个人如果换一套衣服换一套裤子,可能算法就不稳定了,这个问题其实我们现在也有一些解决方案,我们可以通过数据驱动的方式,并且在模型上做若干的修改,我们能在模型的学习过程当中,最有效的去自学那些具有判别性的区域。比如对于一个人而言,我们去自动学习出具有判别性的躯干或者体型、步态。

17d6d8d27fd9f64d6244f26cfaa96be32755ce8f

图为交通监控上面一些非机动车数据。

非机动车没有一个公开数据,所以在做这个事情的时候,我们先用公开数据去验证一下算法是不是靠谱。北大实验室提供有一个车辆Re-ID的公开数据集,这个数据集大概平均每个车大概有8.44张图片,总共一万多辆车。因为测试数据量很大,所以把它分成了三个子集,每个子集都有几百到几千辆车,然后每一个车大概就是8.44张图片,在这样的公开数据集上面,其实我们利用现在的方法,可以达到一个比较不错的水平。

099f13277654d05bd4f83423da5b5645279fb634

cf7aae297c66440bdf178c210fb7ca6400a63572

c2994a36c62849dee4599121379ba35daf893c02

这个数据集直观的样子如图,它是中国的一个小城市的车辆数据,上面的车牌被挡住了。

每个摄像头装的位置是交警装在那边的,你不可能去改变它,车怎么开过去,你其实也是没办法控制的,你只能拍到这样的图片,所以它的视角变化会很丰富,有一些摄像头很高清,有一些摄像头没有那么高清,包括在白天晚上一些光照上的变化。

65b0b573b00ecef7ff55a98dc4fda92a0f9e0469

人相对于车会更复杂一些。有几个问题,一是人很小,二是人的姿态变化比较多,所以现在有一个公开数据,这个公开数据是Market-1501,这个指的是在清华某个超市的前面,它有1501个人的数据集。然后把它分成训练和测试两部分,包括了六个摄像头的数据,其中有五个是高清的,一个是标清的。

1f37223dd417f8b3c51db678a7574d29d67a2b6d

1b8f56a04b9c29221c00e3336cc0a262f57d3fa5

在Market-1501数据集上面,通过我们的特征学习方法,把它做一个排序,如果相似度越高,距离就越小,就排在越前面。那么还是会有一些bad case,但相对来说我们已经把这样的一个人找到了,就是说这个人在这个摄像头下面,在这一段时间里面,可能有很多张图片,我们只要找到一张在这个摄像头当中出现图片,我们其实就算成功了,因为我们已经把这个轨迹找到了,我们知道这个人在这个时刻经过这个摄像头了。

229f798db2e4ca7105351bd4f849e6bc56ef45ea

还有一些分辨率会有一些变化,包括它整个姿态上面也会有一些变化,侧背面的、正面的,包括可能有一些错误的被我们找到。它包括了比如说小区里面,这个人可能从大厅进来,大厅的摄像头离得很远拍的人会很小,而且会非常模糊,而且大厅里面光照可能也不是很好,然后到了电梯里面,电梯是有一盏灯的,所以会比较亮,这两个人如果要去做匹配其实就是比较困难了。

另外还包括一些遮挡,就是说当这个人经过摄像头的时候,可能会被别人遮挡,或者被摄像头遮挡,还可能会被摄像头上面记录的一些OSD所遮挡。

Eagle Eyes: Search Examples

b7f7b478029b3d396e5a2be029bce84f8362497b

ea619bcc6429765a535930666ef0644288508d06

如果车牌被挡住,输入一张出租车的图片,只是拿这个图片去进行搜索,然后看它出现在这个范围之内有哪些数据是真正经过摄像头的数据,在流计算的时候,我们可以把相应的车给检测到,然后把相应的信息记录下来,它是什么时间经过什么摄像头的,那么我输入这样一张图片,我通过特征抽取的方式,抽出一个特征描述这辆车,线下的这个过程当中,我本来已经把特征抽好了,建立一个索引。我使用特征在索引里面搜,就把相应的车都给找出来。我在不同的摄像头当中把它找到了,同时也会把它的属性,比如说颜色、品牌、视角等获取到。

1f002f21d4938ca170acd8a76baf45d94ae00c63

其实我们利用属性还可以做一些事情,我们可以去选出那些我们认为更发散一点的,比如说除了当前的颜色,比如说我们能不能找出保时捷SUV,但是它的颜色是红色的,或者它的颜色是蓝色的,我们能不能把它找出来。

OD Stream

b9bd886e57eb4002cd60e0b2ccef6e0bc870494b

另外,我们既然能知道它在什么时候经过什么样的位置,如果我们的准确率足够高,我们就可以把相应的轨迹给找出来。那么我们有了人的轨迹,车的轨迹,非机动车的轨迹以后,其实可以做很多很多的事情,帮助我们去做交通的优化。那对于公安来说,可以很快速的找到失踪人员到底去了哪。也可以帮助更复杂的一些应用,当我们有了OD信息以后,我们可以做一些混合交通的事情,比如说我们有车,有人,有非机动车的情况下面,我们能不能把这三者结合起来考虑,这个也是可以尝试的。

总结

对于识别问题而言,属性和相关的信息,其实是可以辅助提升网络的准确性。对于feature learning,我们是不是可以通过设计不同的网络结构,去使得网络能够更好的去刻画人、车的一些信息,包括它的局部特征,包括它的全局特征能不能更好的刻画。另外,我们要建立大规模的索引,索引其实是广义上的索引,也就是说我们现在是做人车和非机动车,未来我们可能会将城市当中所有的目标,甚至所有的事件建一个索引,那么通过这样的方式,我们不止可以搜索这些目标,也许我们未来还可以搜索一些发生的变化事情。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
开发与运维
使用钉钉扫一扫加入圈子
+ 订阅

集结各类场景实战经验,助你开发运维畅行无忧

其他文章