基于分布式框架的城市内涝智慧监测系统

2021-06-28 17:40林宇聪冯祥胜叶健安
电脑知识与技术 2021年10期

林宇聪 冯祥胜 叶健安

摘要:针对传统的城市内涝监测软硬件投入大,监测点稀疏等问题,基于城市交通、公安、市政等监控视频获取的道路图像信息,实现了分布式框架的城市内涝智慧监测系统。 系统采用TensorFlow算法实现的深度学习模型对城市道路视频监控图像进行内涝监测。并采用SpringCloud框架搭建分布式网站平台,实现对城市内涝进行监测。

关键词:城市内涝;智慧监测;springcloud;分布式架构;tensorflow

中图分类号:TP399     文献标识码:A

文章编号:1009-3044(2021)10-0030-03

Abstract: Aiming at the problems of traditional urban waterlogging monitoring, such as large investment in software and hardware and sparse monitoring points, a distributed framework of urban waterlogging intelligent monitoring system is implemented based on the video monitoring images of urban traffic, public security and municipal administration. The system uses TensorFlow implementation of deep learning model to monitor the waterlogging of urban road video monitoring images. SpringCloud framework is used to build a distributed website platform to monitor urban waterlogging.

Key words: urban waterlogging; intelligent monitoring; springcloud; distributed architecture; tensorflow

1 引言

由于强降水和特殊天气招致的城市内涝,会使得城市交通受到大面积的影响,城市之中基础设施遭受重大损失。当城市之中发生洪涝灾害,如果可以对洪涝灾害的实时状况进行监测和预警,对减少内涝带来的损失有着重大帮助。

城市内涝监测预警通常有人工法和定点监控法。人工法一般是相关部门通过大量的人力物力,对容易发生内涝的地点进行实地勘测,并立即向部门中心上传内涝的相关信息。这种方法费时费力,同时难以及时获得准确的积水位置和积水深度等情况,目前逐步在淘汰。定点监控法是通过在重点监测地点安装传感器和通信设备,通过传感器及时获得积水信息,并汇总到相关部门。这种方法能够精确的得知传感器地区的内涝情况,但是这种物理检测系统的构建不仅仅需要专用传感器、通信网络,同時还需要持续的通讯和设备维护管理,建设成本和维护成本太高。由于极端天气现象其实并不常见,因此系统的使用率低,性价比不高[1-5]。

目前城市交通、市政、公安等部门在沿城市道路建设了完善的视频监控系统,其布点覆盖范围远大于内涝管理部门建设的内涝监测点。在承担交通、市政、公安等相关职能的同时,这些视频监控系统采集到的图像还能对城市的道路状况方面进行监控[6-8]。薛丰昌等提出根据城市视频监控对城市内涝进行实时预警的技术[9]。该技术利用图像差分方法,几乎可以清楚视频中非积水区域的影响,实现对积水区域的高效识别。但是该方法仅适合用于监测点不多的情况。当监测点位置或摄像头位置发生变化时,该方法将受到影响甚至不能工作。同时若摄像头的数量庞大,对每个摄像头的初始数据维护工作量巨大。

本文提出了基于分布式框架下的城市内涝智慧监测系统。系统采用TensorFlow实现了基于深度学习的内涝监测模型,通过对城市内涝图像数据集进行模型训练,使用训练好的模型对城市道路视频监控图像进行内涝灾害自动识别。采用SpringCloud框架搭建分布式网站平台,实现大并发量的业务处理,降低系统相互关联的性,提高系统便捷扩展的能力。

2 系统设计

2.1系统架构

随着并发业务量的增大,一台服务器主机的性能往往不足以满足业务所需。一般情况下,将系统垂直或者水平拆分成不同的业务模块系统,形成一个分布式的系统架构,能够增大系统的整体内容,增强系统运行时的稳定能力。在系统安全性方面,采用分布式构架的业务系统,即使其中的某一台主机出现故障也不会导致整个服务的瘫痪。在开发和扩展方面,因为业务需求被拆分成不同的模块,开发与发布能够并行,使得其速度能更加快捷与简单。而在众多分布式框架中,SpringCloud的全面能力和高修改性比较突出,已经成为一种主流分布式网站构架解决方案。所以本系统使用SpringCloud框架对网站进行搭建。系统架构图如图1所示。用户请求进Zuul网关负载均衡后依靠Nacos注册中心,分发到微服务集群中的某一个服务。而微服务之间的交互使用Feign 来调度。

系统核心业务由图像识别业务和网站预警业务两部分组成。其中,图像识别业务以采集到的图像集为数据集,通过TensorFlow训练,然后获取到相关的识别模型并结合Flask框架向外提供图片识别的端口;网站预警业务通过对摄像头或用户上传的预警图片进行识别,并且汇总相关的预警方位进行保存和展示。系统的业务流程图如图2所示。

2.2 模块设计

系统总体分成七个子模块,包括摄像头模块,预警消息模块,网关模块,权限认证模块,用户模块,后台管理和第三方扩展工具模块,如下图3所示例。

预警消息模块作为系统的核心模块,用于存储所有的预警消息信息。首先当一条预警信息生成之后,消息通过网关转发给预警消息模块,随后远程访问用户模块和第三方工具扩展其上传者的信息与保存图片,再根据图片识别出来的道路状态分情况进行短信发送。

后台管理模块主要提供后台管理人员对预警消息和摄像头信息的修改功能。管理人员可以对系统识别有一定误差的图片进行人工修正,修正过的预警信息将自动归档,用于新的图像数据模型训练,以提高图像模型的准确率。在摄像头信息中,则可以选择新增或者调整摄像头的点位信息。摄像头模块根据存储在数据库中的摄像头信息,定期获取摄像头中所拍摄的图片信息,统一发送给图像识别服务进行识别。

网关模块、权限认证和用户模块组成了权限系统,网关模块是访问整个程序必须经过的模块,所有的前端请求均会首先访问网关模块,再根据不同的访问路径分发给相关的微服务。而所有的请求都会在网关进行鉴权,当请求需要一定权限时,网关向权限认证模块进行验证,若用户无权限则返回到首页地址。在用户进行登录时,可以选择手机号完成登录或者第三方应用的外部登录,登录成功后会返回相对应的用户权限,并将所取得的token信息存到session中保存,避免多次登录。

图像识别模块通过数据集训练数据模型来识别道路图片的情况,其数据采集主要来源为目前已有的市政和交通等区域的摄像头中真实拍摄的道路信息数据。这些数据集训练出道路图片的数据模型,提供道路图像识别的机器学习功能。并在此基础上整合Flask框架,为网站系统提供Restful风格的API接口。并且在摄像头采集到的固定点位之外,还开通了用户上传图像接口。完善了摄像头的监测盲区,提供后台管理人员对道路图片的真实情况进行人工核查,将有识别误差的图片进行人工标注和修改,标注过的图片会放入新的数据集中,定期对数据集进行重新训练,对图像识别的精确度进行更进一步的提升。

城市内涝智慧监测系统的用户模块,主要提供道路预警信息展示和道路信息汇总展示。道路预警展示分为两块:一是通过调用百度地图,并且对接后台数据库信息,不同的道路情况以不同颜色的标记在地图上进行标注,能直观地查看道路的预警点;二是以图片墙的方式,直接展示道路图片以及道路信息状况,并且提供文字搜索功能,以记录的方式能够以精确和快捷的查看预警信息。

道路信息汇总展示目前系统中系统的人工修正道路图片比例、道路图片来源的比例、以及近一年每个月不同状态的道路状态信息总数的三个图表。人工修正道路图片比例体现出系统目前图片识别模型正确率,当人工修正的比例过大时则提醒管理人员将数据模型进行重新训练更新,进一步完善数据模型。而近一年每个月不同状态的道路状态信息总数可警示相关部门,当进入道路特殊状态高发月份时,积极应对可能发生的道路情况,并且提前制定对应的相关计划。

在后台管理中,使用者需要经过权限认证判断使用者的身份,使用者通过登录系统登录后,系统自动根据账号判断登陆者身份信息并跳转至不同页面。身份权限分为三种,。普通用户只能查看首页与使用图片上传功能,数据管理员可以对所有的预警数据进行审核、修改,系统管理员则可以使用所有的后台管理系统。

使用者登录后,开放道路图片上传功能,使用者上传图片后,系统会自动识别图片是否有自带经纬度信息,若没有则根据用户输入的地址描述,通过百度地图API进行经纬度查询。并且调用图像识别模块对道路图片进行识别,并最终返回识别结果。

3 系统实现

3.1持久层模块实现

在具体实现过程中,后端数据库使用Mysql进行开发。每一个需要存储实体数据的模块对应一个独立的数据库。数据库操作层采用Mybatis-plus,相比于原生的Mybatis,MP自带通用的CRUD操作,能够极大的简化开发。对于多表的操作,主要以stream流式编程对集合中的数据进行扩展。

3.2服务层模块实现

服务层中,nacos注册中心中注册了所有的微服务,所有的请求均通过zuul网关过滤后,以nacos中的服务名进行动态转发。并且nacos 提供对服务的检查、动态配置和DNS服务,保证服务的稳定和便利。各个微服务之间的调用通过OpenFeign框架进行远程调用。Openfeign中通过ribbon进行负载均衡,均衡的分配集群资源。并且接口参数以Restful风格进行封装,让各个服务之间的接口对接更加方便。

每個微服务的基础框架均为Springboot,maven控制jar包的版本管理。Springboot特点在于快速搭建,十分契合微服务的架构。其中封装了很多常用的套件,如mybatis、redis、elasticSearch等,可以轻易地整合各方面框架。微服务中均配置了redis缓存,菜单、预警信息和摄像头信息等均设置了缓存提高系统运行效率以及减轻数据库的读取压力。并发锁中使用redisson对每个可能造成数据不一致的地方进行加锁处理。而redisson中锁的操作属于原子操作,解决了死锁问题的发生。

因为分布式服务之间无法传递session,而SpringSession组建中,将session信息存入redis中,用于实现分布式服务之中的session传递。而SpringSession仅需要注解和配置文件即可简单快速且无缝的集成到服务中。

权限认证服务采用Oauth2安全认证,oauth2中包含了SpringSecurity,用户登录后获取到该用户的token权限标识,并且将该权限标识和用户信息存入session中,解决重复登录的问题。并且Oauth2框架提供第三方的外部登录。可以简化用户的登录操作,给予用户更好的使用体验。

3.3 前端模块实现

前端展示模块的框架均以Bootstrap为基础,搭配Thymeleaf模板引擎为页面提供动态数据展示。其优势在于简单灵活,响应式栅格系统让网页能够自动适应用户的屏幕尺寸,并且美观的界面样式与友好的学习曲线使开发变得更加舒适。对于前后端之间的数据对接,主要采用jQuery的ajax请求,让前端页面可以用异步的方式向服务端获取数据,并且通过模板引擎动态展示。在此基础之上,为了优化用户体验,添加Sweet Alert和Echart框架,用于美化整体页面以及提供更丰富的页面组件。前端部分页面实现效果如图4所示。

4 结语

在人工智能越发火热的浪潮下,结合目前现有的市政交通资源,基于分布式框架下的城市内涝智慧监测系统能够更加有效地发挥现有资源,降低了防涝的经济成本以及人力成本,并且可以实现24小时全方位自动化监测。而且搭配预警通知系统,不论是相关部门使用抑或是提供给大众使用,都能提供相应的预警作用。

基于分布式构架的网站系统,存在服务之间调度频繁和延迟的问题。若数据查询功能优化不足,在多个服务同时查询同一个服务接口时容易发生调用超时,导致相关页面无法正常展示,系统整体运行较为缓慢。本系统下一步的改进,一方面可以通过对查询的内部逻辑进行优化和精简,舍弃不必要的字段返回,减少数据处理量;另一方面,要减轻数据库的访问压力,可以通过扩大Redis缓存的应用范围,以提高系统的响应速度。

参考文献:

[1] 何嘉莉,陈兵,姜涛,等.城市内涝在线监控与信息服务数字化系统设计[J].中国给水排水,2014,30(1):94-98.

[2] 林占东,张奕虹.基于物联网的城市内涝监测预警系统建设思路初探[J].数字技术与应用,2014(6):235-236.

[3] 邵鹏飞, 赵燕伟, 杨明霞. 城市内涝监测预警信息系统研究 [J]. 计算机测量与控制, 2016,24(2):49-52.

[4] 姜元军, 来丽芳, 李亚丹, 等. 基于 GIS 的城市内涝预警预报系统设计与实现 [J]. 测绘与空间地理信息, 2016,39(8):69-71.

[5] 邱祥峰,陈云,王晓强,等.基于微信服务号和图像识别的城市内涝监测方法[J].中国市政工程,2018(2):92-94,98,135-136.

[6] Chang N B,Guo D H.Urban flash flood monitoring,mapping and forecasting via a tailored sensor network system[C]//2006 IEEE International Conference on Networking,Sensing and Control.April 23-25,2006,Ft.Lauderdale,FL,USA.IEEE,2006:757-761.

[7] 高曉亮,王志良,王馨,等.基于HSV空间的视频实时水位检测算法[J].郑州大学学报(理学版),2010,42(3):75-79.

[8] 邓玉芬,沈明,阮锐,等.基于图像识别技术的沿岸潮汐测量方法研究[J].现代电子技术,2010,33(13):120-122.

[9] 薛丰昌,宋肖依,唐步兴,等.视频监控的城市内涝监测预警[J].测绘科学,2018,43(8):50-55,61.

【通联编辑:梁书】