BIT2023 智慧社区综合管理系统-二周目

news/2024/11/16 5:57:31/

智慧社区管理系统软件需求文档

目录

项目前景和范围文档

1. 业务需求

1.1 应用背景

1.2 业务机遇

1.3 业务目标

1.4 业务风险

2. 项目前景

2.1 前景概述

2.2 主要特性

2.3 假设与依赖

3. 项目范围

3.1 范围

3.2 限制与排除

4. 项目环境

4.1 操作环境

4.2涉众

4.3 项目属性

需求规格说明书

1.引言

1.1 编写目

​​​​​​1.2 范围

1.3 定义、首字母缩写和缩略语

1.4 参考文献

1.5 文档组织

2. 任务概述

2.1 项目概述

2.2 用户特征

2.3 约束

3. 功能需求

3.1 功能划分

3.2 功能描述

3.3 系统演示

3.4 运用技术

4. 数据需求

4.1 静态数据

4.2 动态数据

4.3 数据字典

4.4 数据库描述

5. 性能需求

6. 运行需求

6.1 用户界面

6.2 软件接口

6.3 硬件接口

7. 其他需求

7.1 验收标准

7.2 质量属性


  • 项目前景和范围文档

1. 业务需求

1.1 应用背景

随着通信技术和物联网技术的发展以及政策对新基建的扶持,各地纷纷上马建设“智慧社区”。跟随着小康社会的逐步建成,居民的生活水平也在逐步提高,在实现便捷物业服务、缴纳物业费,出入人流车流管控、报事报修、在线咨询物业问题等方面通过智能化、科技化的手段大大提高了社区安全性、便捷性。

同时,在互联网大趋势到来的大背景下,社区信息化建设作为一个整体,具有强烈的服务性和可操作性,也为公众提供了一个享受贴心服务的平台。而想要实现“智慧社区”功能的最好的方式就是建立网络管理系统,并对其进行信息管理,因此“智慧社区管理系统”应运而生了。

1.2 业务机遇

相比于传统的社区管理方式,智慧社区管理系统无疑具有巨大的优势。例如在以下两个层面:在管理层面,居民可以定期进行在手机上缴纳水电费、对房屋设施问题及时向物业进行反馈;而物业方面能够快速通过平台解决居民问题。在安全方面,对门前的监控与异常报警的功能,对于独居老人等群体来说来说是一个极大的福音。

同时信息化的管理能够更方便的实现社区的服务,比如管理人员可以更方便的对于居民身份信息、房屋信息、费用信息等归档管理,更清楚的知道各户的实时缴费情况;也可以让居民能够更方便的取收快递、线上预约。因此,越来越多的社区正在实施“智慧社区”的建设,未来将大幅改善居民生活,提升管理人员的工作效率。

1.3 业务目标

系统发布一年内,构建完成数字化社区,构建一个大的软件平台,实现对于各个软件系统的串联和对产生的各类信息进行分类以及统的一管理与存储,保证所有线上功能的正常运行和维护。实现社区管理和居民日常生活的信息化,最大程度便捷居民生活。

1.4 业务风险

RI-1社区人员组成复杂,会有个别家庭无法接受线上缴费等线上服务。

RI-2不少家庭都有老人,他们缺乏使用数字平台的经验和知识,需要花费时间成本来学习使用。

RI-3电子化档案系统的搭建与维护需要投入的成本可能会过大,也有信息泄露的风险。

RI-4服务器系统可能会被DDOS等攻击导致系统瘫痪。

RI-5与摄像头等硬件设置的链接可能存在技术难题。

RI-6系统搭载功能较多,在某功能出现问题时维护起来成本可能过大

2. 项目前景

2.1 前景概述

        本系统是在充分利用政府信息化资源(硬件、软件等)的基础上,开发涵盖社区居民服务、

社区日常管理、社区物业等多个领域、基于互联网思维的智慧社区综合管理服务云平台。在数据高度聚合的前提下,为各类用户提供便捷快速的服务。

        物业管理方面,系统存储各类维护信息,且保证能够及时通知管理人员完成公共和个人设施维修。

        安全管理方面,引入智能门禁系统,并做好访客登记。用户能够使用或能够体验到实时监控和自动报警的功能。

        社区服务方面,使得用户能够享受到智能物流、网上家政、智能停车服务。

        电子档案方面,建立以住户为单位的电子档案信息系统,支持管理人员查询相关信息。

2.2 主要特性

物业管理

FE-1  社区公共设施的可用查询以及状态修改

FE-2  线上报维修、维修记录的存储

FE-3  物业费管理、在线缴纳水电费

安全管理

FE-4  联系保安、观测门禁监控是否正常工作

FE-5  居民对房屋实时监控、异常报警

社区服务

FE-6  存放、管理快递、通知收取快递

FE-7  获取洗衣家政服务

FE-8  对服务进行评价反馈

FE-9  发布社区信息公告、公告置顶

FE-10 社区停车管理,车位分配、预定、费用统计

电子化档案

FE-11 社区居民档案电子化管理

FE-12 分类、记录、查询电子化档案

2.3 假设与依赖

AS-1 所有用户都能够接受使用该软件平台系统

AS-2 社区在对硬件设施进行更新迭代后能够满足相应的联网标准

DE-1 保安能够按照排班计划进行执勤

DE-2 档案管理系统保密性好,安全可靠

3. 项目范围

3.1 范围

        在第一阶段,重点实现智慧社区的基本功能,包括线上报修、安全管理、必要的社区服务和电子化档案的建立。在第二阶段,主要添加社区设施的可用查询、管理员能够更改相关信息以及费用线上缴纳功能。第三阶段,升级电子化档案系统,进一步保障居民的隐私安全。

特性

版本1

版本2

版本3

FE-1

暂不实现

完全实现

FE-2

完全实现

FE-3

暂不实现

完全实现

FE-4

实现基础功能,即联系安保以及检测硬件设施是否正常工作

升级硬件设施标准,完全实现

FE-5

完全实现

FE-6

实现快递到站通知功能

实现线上预约送货上门服务的功能,完全实现

FE-7

完全实现

FE-8

完全实现

FE-9

完全实现

FE-10

仅实现车位余量显示和查询功能

实现车位的智能分配和预约功能,完全实现

FE-11

完全实现

FE-12

仅实现简单的查询功能

实现档案分类功能

进一步升级保密功能,完全实现

3.2 限制与排除

        LI-1 居民的家政服务具有私密性,故服务反馈系统仅针对工作反馈,即对服务的建议,而不对其他用户公开。

        LI-2 社区工作人员有限,故采用快递柜/外卖柜的方式存放用户的物品并通知用户。

4. 项目环境

4.1 操作环境

移动端:Android、iOSHarmony

PC端:Windows 10、11

        系统允许多人同时在线;数据产生时间主要为早上6点至晚上10点;访问数据的最大响应时间不得超过1秒;管理员用户在个程序中允许有服务器中断的现象;需要提供访问安全控制和数据保护来保障用户的隐私信息安全。

4.2涉众

涉众

特征

主要目标

态度

主要关注点

青年住户

相对年轻,生活态度积极,愿意尝试新技术并且有很好的接受能力

充分利用智慧社区来方便自己的生活

因为智慧社区带来的便利更多,所以积极支持该系统

高效

中年住户

生活态度积极,愿意尝试新技术,但是接受能力相对较弱

利用智慧社区中的部分功能来便利自己,对部分功能持保留意见

智慧社区带来的便利并不一定会全部使用,但是不会排斥该系统

简单、可靠性

老年住户

生活态度较为严谨,并不是全部住户愿意接受新技术,更喜欢传统的方法

希望该系统能帮助到行动不便的住户

更多的对该系统持保留意见

简单、可靠性

客户

对智慧社区有初步的设想,但是并没有很详细的社区构想,可以为系统提供一个初步的框架

吸引更多住户,扩大市场

接受新技术,但比较谨慎

尽可能少用新技术,减少所需的资源和费用

管理者

系统投入使用后的主要使用人

通过该系统来为社区居民更好更高效的服务

积极支持

稳定性

开发者

系统的开发人员,熟知系统

尽可能用较少的花费来满足客户的需求

保证工作的前提下支持新技术

简单

维护者

系统的后期维护人员,熟悉系统的同时经验丰富,能够很快发现系统问题所在并修复

用最少的花费保证系统稳定运行

保证系统稳定运行的前提下支持新技术

稳定性

     

        优先级评估:住户(参与者)>客户(环境设定者)>开发者、维护者(被影响者)>管理者(观众)

Interest

开发者、维护者

住户

管理者

客户

低→Power→高

        风险评估:老年住户作为强反对者,应重点安抚他们这一群体的情绪,并且鼓励老年人去接受这个系统。

支持

反对

中年住户、开发者

青年住户、客户、管理者

维护者

老年住户

低→Power→高

        共赢分析:住户的关注点基本可以归类为让自己的生活更加便捷高效,客户和管理者都希望通过一个稳定实用的系统来为其赚的更大的效益,开发者则希望通过尽可能简单高效的系统来完成客户的需求。因此在系统的搭建过程中,我们需要尽可能的简化该系统,将不必要的模块进行合并,最后搭建出一个既简单又高效的系统。

4.3 项目属性

        4.3.1 进度

        项目在180个工作日内完成1.0版本。在240个工作日内完成2.0版本。最多可超过项目期限两周。

        4.3.2 人员

        开发团队:包括一名项目经理,三名开发人员,两名测试人员。如有需求,可再增加开发人员。

        4.3.3 质量

        必须通过所有的安全测试,门禁系统等人脸识别准确度要高于98%,必须可以支持大量用户的同时访问。电子化档案系统必须高度保密,用户反馈的好评率高于90%,管理效率提升30%。

        4.3.4 费用

        在不增加新的功能需求的情况下,不超过预算的30%。

  • 需求规格说明书

1.引言

        1.1 编写目的

        需求规格说明详细地描述了“智慧社区管理系统(Intelligent community management system)”所包含的软件功能性需求和非功能性需求,以便客户能够确认产品的确切需求以及开发人员能够根据需求设计编码,以下叙述将结合文字描述、数据流图、ER图等来描述Asking APP的功能、性能、用户界面、运行环境、外部接口以及针对用户操作给出的各种响应。本文档的预期读者有客户、项目经理、开发人员以及跟该项目相关的其他竞争人员。

​​​​​​        1.2 范围

        “智慧社区管理系统”允许物业管理人员实时监测小区内硬件设施并收到定时维修提醒并接收上门服务的请求;允许住户使用包括智能物流,智能停车等所有提供的需求;允许社区居委会管理人员存储并实时调用居民的电子档案。详细的项目描述请参见智能社区管理系统前景与范围文档。文档中这一部分的标题为“2.1前景概述”,列出了在这一版本中需要实现的全部或部分特性。

        1.3 定义、首字母缩写和缩略语

        1.4 参考文献

        [1]软件需求规格说明(IEEE 830 标准)

        [2]骆斌主编;丁二玉编著.需求工程——软件建模与分析(第二版).北京:高等教育出版社,2018.9

        1.5 文档组织

2. 任务概述

        2.1 项目概述

         2.1.1 项目来源与背景

        随着通信技术和物联网技术的发展以及政策对新基建的扶持,各地纷纷上马建设“智慧社区”。跟随着小康社会的逐步建成,居民的生活水平也在逐步提高,在实现便捷物业服务、缴纳物业费,出入人流车流管控、报事报修、在线咨询物业问题等方面通过智能化、科技化的手段大大提高了社区安全性、便捷性。

        同时,在互联网大趋势到来的大背景下,社区信息化建设作为一个整体,具有强烈的服务性和可操作性,也为公众提供了一个享受贴心服务的平台。而想要实现“智慧社区”功能的最好的方式就是建立网络管理系统,并对其进行信息管理,因此“智慧社区管理系统”应运而生了。

系统基本功能图

        2.1.2 项目目标

该项目的市场目标为中高档社区,应用目标为构建一个具有强烈服务性、可操作性的社区信息网络管理平台。

        2.1.3 产品功能

        物业管理方面,系统存储小区内各类公共设施的维护时间,并在到期时提醒管理员进行定期维护;系统支持社区住户的在线报修,并在维修后保留报修记录,便于后期记录查询。同时,系统能够记录各住户的物业费缴纳记录,支持住户线上缴纳物业费。

        安全管理方面,引入智能门禁系统,管理人员能够使用系统管理安保人员、观测监控设施和门禁是否正常工作。当有访客进入社区时能够做好信息登记,包括但不限于姓名、目的地、出入时间等。用户能够即时查看家庭情况,支持实时监控、即时反馈,并在发现异常时能够自动联网报警。

        社区服务方面,实现智能物流系统,当住户有快递进入社区时,即时通知住户快递信息,住户可以选择自提或线上选择送货上门时间,防止快递滞留。系统提供洗衣清洁等家政服务供住户使用,并配套服务评价系统便于获得反馈。管理人员可以发布社区公告并提醒广大住户;提供智能停车服务,包括车位分配、预定等功能。

        电子档案方面,建立以住户为单位的电子档案信息系统,在做好保密工作的前提下,对居民的身份证、房产证、物业费等信息归档处理,并支持管理人员查询相关信息。

                                

                              

                     

        2.2 用户特征

        根据用户的年龄将用户大致分为三类:青年住户、中年住户和老年住户。作为用户,三类涉众都具有相同的出发点——希望系统能够给社区带来更多的便利和高效,但是因为年龄差异,三者又有各自的鲜明特征。

        青年住户:因为年龄较小,这类住户都热衷于探索新事物,而且对新事物的接受能力最强,对于智慧社区的期待值和包容程度最高,他认为系统能够使生活更加便捷、舒适,包括线上缴费、智慧安防等,能够节省时间、人力、物力、财力等等,尤其是在自己惫懒的时候。

        中年住户:他们也期待新鲜事物的冲击,但是就接受能力来讲他们会因为操作过于复杂或者系统的开放程度过高而对一部分功能持有保留意见。

        老年用户:这类涉众是需要重点考虑的强反对者,他们被对于新事物的学习能力和自己的年龄所限制,通常更倾向于自己所熟知的传统方式,但究其根本是由于自己群体的弱势,如果能从稳定性和安全性上给予老年用户以保障,他们也不会产生过大的反对情绪。

        2.3 约束

        CO-1:系统支持移动端:Android、iOS、Harmony和PC端:Windows 10、11的运行。

        CO-2:系统允许多人同时在线;访问数据的最大响应时间不得超过1秒;需要提供访问安全控制和数据保护来保障用户的隐私信息安全。

        CO-3:系统的设计、编码、维护文档将遵照Process Impact Intranet Development Standard版本1.3.

        CO-4:系统采用Oracle数据库引擎。

        CO-5:所有HTML编码遵照HTML4.0标准。

3. 功能需求

        3.1 功能划分

                3.1.1 系统功能组成与UML建模

(1)智慧社区管理系统上下文图

 图1 智慧社区管理系统上下文图

        描述:如图1所示,管理者可以向智慧社区管理系统发送信息,同时也能够接收系统回馈的社区信息,二者之间有双向的数据流动。居民能够在系统中更改自己的信息,而且能收到系统反馈的一系列便利措施,因此二者之间也是双向的数据流动。第三方可以在系统中发布自己的服务信息,二者只有单向的数据流动。

(2)智慧社区管理系统0层数据流图

 图2 智慧社区管理系统0层数据流图

        描述:如图2所示,用户通过部分个人信息注册到系统后,就可以登录系统,继续完善自己的档案信息,通过物业管理来上报维修信息,查询停车信息;通过安全管理来调取录制的监控视频,及时地收到安全报警信息;通过社区服务查询公共设施状态,完成线上缴费,上报维修信息,反馈生活服务等等。管理者通过登录智慧社区管理系统,登记修改公共设施状态,并完成缴费信息的发布;社区信息的公示;查询居民档案信息等等,并且可以在系统上接收到门禁监控的异常状态,接受到居民上报的维修信息。第三方也可以和系统进行合作,在系统上发布服务信息。

(3)Use-Case图

 图3 管理人员Use-Case

图4 居民Use-Case

 图5 第三方Use-Case

(4)ER图

 图6 智慧社区管理系统ER图

 图7 智慧社区管理系统使用者ER图

(5)顺序图

 图8 智慧社区管理系统注册/登录界面顺序

 图9 智慧社区管理系统顺序

 图10 智慧社区管理系统服务功能顺序

        3.1.2 功能编号和优先级

功能编号

主要目标

主要关注点

优先级

风险评估

居民

能够利用智慧社区管理系统获得一个安全舒适便捷的居住环境,并且利用该系统来提升生活、学习,工作效率的提升和生活品质

使用要简单,功能要保证实时性与准确性

3

管理者

提升小区居民生活品质,提高业主满意度,降低物业管理成本

在保证不出差错的情况下提升工作的效率

2

第三方

能够利用智慧校园管理系统更方便地管理社区信息

提升管理的效率

1

        3.2 功能描述

(1)智慧社区登录模块

​        功能描述:为社区内各业主提供了一个简洁便利的登录界面,用户可以实名注册参与到社区的管理与调度环节当中,并且可以通过业主认证来享受到智慧社区管理系统为业主生活带来的便利,登陆模块还提供了找回密码与保存密码的功能,方便用户在使用过程中不会因忘记密码失去该系统的使用权利。

表1 登录加工说明

加工名称:登录

使用单位:所有用户

输入部分 I

处理描述 P

输出部分 O

用户名、密码

用户利用自己的用户名和密码进行登录。

用户信息

表2 注册加工说明

加工名称注册

使用单位:所有用户

输入部分 I

处理描述 P

输出部分 O

用户注册信息

新用户输入用户名(邮箱)、密码、昵称进行注册

用户信息

3 找回密码加工说明

加工名称:找回密码

使用单位:所有用户

输入部分 I

处理描述 P

输出部分 O

用户名、手机号码、验证码

用户利用自己的用户名、手机号码和发送至手机的验证码进行找回密码。

用户密码

(2)电子档案管理

​        功能描述:用户登录后可以进行相应操作进入个人电子档案管理界面并在此页面修改自己的个人信息。

4 电子档案管理加工说明

加工名称:电子档案管理

使用单位:用户

输入部分 I

处理描述 P

输出部分 O

当前用户信息

用户对自己的个人信息进行修改和保存

修改后的个人信息

(3)智慧社区安防系统

 图11 智慧社区物业管理功能细化数据流图

 图12 智慧社区物业管理功能细化数据流图

        功能描述:安防系统为各用户提供了一个可视化的社区结构,让用户可以便捷地查询各个区域的人流量、车流量、摄像头运行情况等数据。

        安防系统是一种集成多种安全保障功能的系统,常见的功能包括视频监控、防盗报警、门禁管理、电子巡查安保、消防报警、停车场管理模块等。以下是每个模块的详细功能介绍:视频监控模块是安防系统中最基本的模块之一,通过安装摄像头对周边环境进行实时监控,并将监控画面传输至监控中心,以便对周边环境进行监视和记录。同时,视频监控模块还支持对监控画面进行录制和回放,以便对监控区域进行更加细致的分析和审查。在界面上还实时显示了各个摄像头的运行情况,以便于用户迅速发现故障设备并进行报修。

        防盗报警模块主要是通过安装门磁、窗磁、红外线传感器等安全感应设备,对门窗的开关、物品的移动等事件进行检测,并在事件发生时及时向安防中心发送警报信息。同时,防盗报警模块还支持对防盗设备进行远程监控和管理,以确保设备的正常运行。

        门禁管理模块主要是通过安装门禁设备,对进出门禁区域的人员进行身份认证和权限控制。在门禁管理模块中,管理员可以设置不同的权限等级,对不同的人员进行身份认证和权限控制,以确保门禁区域的安全性。如果是业主还可以在取得管理员许可的前提下进行远程开关门禁,这样当亲朋好友登门拜访时就不用大费周章地走很远去手动开门禁了。

        电子巡查安保模块主要是通过安装移动终端设备和NFC标签,对安保人员的巡逻路线进行规划和管理,同时可以对巡逻过程进行实时记录和监控。通过电子巡查安保模块,可以提高安保人员的巡逻效率,减少安保漏洞。

        消防报警模块主要是通过安装烟雾传感器、温度传感器等感应设备,对火灾等紧急情况进行检测,并在事件发生时及时向安防中心发送警报信息。同时,消防报警模块还支持对消防设备进行远程监控和管理,以确保设备的正常运行。

        停车场管理模块主要是通过安装摄像头和车牌识别系统,对车辆进出停车场进行识别和记录,以便用户可以快速地找到自己的车辆。同时,停车场管理模块还支持对停车场内车位的状态进行实时监控和管理,以便停车场管理员可以及时了解车位的使用情况,并做出相应的调整。

        在视频监控、防盗报警、门禁管理等模块中,安防系统的摄像头通常都运用了基于卷积神经网络的目标识别功能,能够对人、车等目标进行识别,提高安全监控的准确性和效率。在停车场管理模块中,车牌识别系统能够对车辆进出停车场进行识别和记录,提高用户停车的便捷性和停车场管理的效率。

        总的来说,安防系统的多种功能模块可以提供全方位的安全保障,保护人员和财产的安全。同时,随着科技的发展,安防系统的功能也在不断地更新和升级,能够更好地满足不同场景的安全需求。

5 调取监控加工说明

加工名称:调取监控

使用单位:用户

输入部分 I

处理描述 P

输出部分 O

需要调取视频的时间信息

系统调取用户需要时间段的视频

对应时间的监控视频

6 联络加工说明

加工名称:联络

使用单位:管理者

输入部分 I

处理描述 P

输出部分 O

保安身份信息

系统对保安身份进行核查并接收联络信息

需要发送的信息

7 报警信息管理加工说明

加工名称:报警信息管理

使用单位:管理者

输入部分 I

处理描述 P

输出部分 O

监控捕获到的异常信息

系统自动生成报警信息

报警信息

8 监控自检加工说明

加工名称:监控自检信息管理

使用单位:管理者

输入部分 I

处理描述 P

输出部分 O

监控对自身检测出的异常信息

系统自动生成维修信息

维修信息

9 第三方公司交互加工说明

加工名称:与第三方公司合作信息管理

使用单位:用户

输入部分 I

处理描述 P

输出部分 O

第三方公司家政预约订单

系统处理家政公司信息

家政预约信息

10 用户反馈加工说明

加工名称:用户反馈信息管理

使用单位:用户

输入部分 I

处理描述 P

输出部分 O

用户对生活服务评价进行反馈

系统处理反馈信息

反馈信息

11 生活服务加工说明

加工名称:用户生活服务信息管理

使用单位:用户

输入部分 I

处理描述 P

输出部分 O

快递柜信息

系统更新快递柜占有信息

快递柜当前存储信息

12 社区公告加工说明

加工名称:社区公告信息管理

使用单位:用户

输入部分 I

处理描述 P

输出部分 O

社区公告信息

系统更新社区公告信息

公告信息

13 停车场信息加工说明

加工名称:停车场信息管理

使用单位:用户

输入部分 I

处理描述 P

输出部分 O

停车场信息更新

系统更新停车场信息

停车场信息

(4)智慧社区运维系统

        功能描述:智慧社区管理系统的运维系统是保障智慧社区系统正常运行的关键组成部分,主要包含信息发布、能源统计管理、报警管理、账号管理、运维管理、设备台账、缴费管理模块。下面分别介绍这些模块的详细功能:信息发布模块允许运维人员发布各种公告、通知、新闻等信息,通过社区APP、物业公告栏等渠道向业主、租户发布。

        管理员可以选择发布范围、发布时间等信息,确保信息的精准投放和及时传递。能源统计管理模块能够实时监测社区内的水、电、气等能源的使用情况,分析能源消耗趋势,为运营商提供节能减排的建议。同时,该模块还能够生成能源报表,提供给管理人员进行数据分析和决策。

        报警管理模块能够实时监测社区内的安全状况,当出现安全事件时,系统会自动发出警报并通知相关责任人。管理员可以设置不同的报警级别,根据情况进行相应的处理。

        账号管理模块允许管理员管理社区内的账户信息,包括添加、删除、修改账户信息等操作。管理员可以设置不同的账户权限,确保不同角色的人员只能访问其需要的信息和功能。运维管理模块能够对社区内的设备进行远程监控和管理,包括设备状态、运行情况等信息的实时查看和管理。

        同时,该模块还能够自动检测设备故障,提供自动维修或手动维修的解决方案。设备台账模块允许管理员对社区内的设备进行管理,包括设备的添加、修改、删除、保养等操作。管理员可以实时了解设备的使用情况和维修记录,确保设备的正常运行和安全使用。

        缴费管理模块允许业主、租户在APP上进行水费、电费、物业费等费用的在线缴纳,同时管理员可以实时了解缴费情况,并提供相应的催缴功能,确保物业费用的及时回收和社区经济的平稳运行。

        总的来说,智慧社区管理系统的运维系统是确保智慧社区正常运行的关键组成部分,它可以通过实时监测、数据分析、智能预测等功能,帮助管理人员快速、准确地掌握社区内的情况,及时发现问题并进行处理,为业主、租户提供更加安全、便捷的生活体验。

3.3 系统演示  

智慧社区综合管理系统交互演示

项目原型: Axure Cloud - Access Code

        密码:1234

3.4 运用技术

        3.4.1 社区人流量实时分析模块

项目概要:该模块通过Yolov5实现目标识别与检测,DeepSort对画面中每个目标赋予ID来完成基本的识别和计数功能,旨在运用计算机视觉算法监测社区出入与人流情况,有利于防止出现堵塞,便于外来人员记录管理,保障居民安全的同时提高出行体验。

技术内容:基于Yolov5 + DeepSort的行人识别与计数

项目运行环境:win11,pycharm,python3.10+

主要需要的包:pytorch >=1.7.0,OpenCV

运行方式:通过运行main.py分析指定路径下的视频文件,基于训练的模型对画面中的行人进行追踪和赋予标签计数,可以准确识别个体信息(行人、车辆等),判断行为轨迹以记录出入情况,接入了智慧社区管理系统,能够实现基于全天监控视频画面的行人检测分析,并在数据面板中实时更新数据,以方便社区管理员了解当天人流情况、人员出入状况和外来人员的登记。

运行效果图

 图13 社区人流量实时分析效果图

原理解释:模型训练方面,在目前使用的预训练模型中,采用了阿里云提供的开源行人数据集(地址:

https://link.juejin.cn/?spm=a2c6h.12873639.article-detail.3.62ca4c324ld2DE&target=http%3A%2F%2Fwww.crowdhuman.org%2Fdownload.html)进行训练。该训练集以密集人群图像为主,涵盖了白天、夜晚和不同光照环境,符合本项目的基本应用场景。在该训练集下,本模型对于行人这一目标的识别准确率达到了98.43%。

        在加载完预先训练的物体识别模型后,该系统首先通过OpenCV函数库实现从社区监控摄像系统中获取到实时的监控图像,并按帧进行储存分析,目前该模型可以识别区分多种运动物体,如行人、自行车、车辆等,但基于用户需求和系统性能压力的考虑,我们只检测并标识出人这一物体类别,若需要检测其他物体,只需更改追踪器的标签值classnames[]。在加载完视频后,系统将实例化计数器、计算总帧数并开始检测图像中的行人,识别出题后的图像如上图所示:行人会被赋予红框标识表示被识别,同时赋予ID并计数。处理后的视频将会储存在本地,而计数数据将会以txt文本上传至后端数据库,服务器每5秒读取一次信息,实现人流统计数据的准确实时更新。

实现代码

import torch, sys, argparse, cv2, os, time
from datetime import datetime
from self_utils.multi_tasks import Counting_Processing
from self_utils.overall_method import Object_Counter, Image_Capture
from deep_sort.configs.parser import get_config
from deep_sort.deep_sort import DeepSort
import imutils

def main(yolo5_config):
    print("=> main task started: {}".format(datetime.now().strftime('%H:%M:%S')))
    a = time.time()
    class_names = []
    # 加载模型
    Model = torch.load(yolo5_config.weights, map_location=lambda storage, loc: storage.cuda(int(yolo5_config.device)))[
        'model'].float().fuse().eval()
    # 模型能检测的类别['person', 'bicycle', 'car', 'motorcycle', 'airplane', 'bus', 'train', 'truck', 'boat', 'traffic light', ...]
    classnames = Model.module.names if hasattr(Model, 'module') else Model.names
    # print(classnames)
    # 只检测人这一个类别,所以只需要在框上面标识出是person即可
    # 如果想检测其他物体需要在100行附近更改'--classes'的数值,然后在这里把标签改为对应即可
    class_names.append(classnames[0])
    b = time.time()
    print("==> class names: ", class_names)
    print("=> load model, cost:{:.2f}s".format(b - a))

    os.makedirs(yolo5_config.output, exist_ok=True)
    c = time.time()
    # 初始化追踪器deepssort_tracker
    cfg = get_config()
    cfg.merge_from_file("deep_sort/configs/deep_sort.yaml")
    deepsort_tracker = DeepSort(cfg.DEEPSORT.REID_CKPT, max_dist=cfg.DEEPSORT.MAX_DIST,
                                min_confidence=cfg.DEEPSORT.MIN_CONFIDENCE,
                                nms_max_overlap=cfg.DEEPSORT.NMS_MAX_OVERLAP,
                                max_iou_distance=cfg.DEEPSORT.MAX_IOU_DISTANCE, max_age=cfg.DEEPSORT.MAX_AGE,
                                n_init=cfg.DEEPSORT.N_INIT, nn_budget=cfg.DEEPSORT.NN_BUDGET,
                                use_cuda=True, use_appearence=True)

    # 输入需要检测的图片或图片目录或视频并处理
    mycap = Image_Capture(yolo5_config.input)
    # 实例化计数器
    Obj_Counter = Object_Counter(class_names)
    # 总帧数
    total_num = mycap.get_length()
    videowriter = None
    fps = int(mycap.get(5))
    t = int(1000 / fps)
    while mycap.ifcontinue():
        ret, img = mycap.read()
        if ret:
            # 开始检测图片中的人
            result_img = Counting_Processing(img, yolo5_config, Model, class_names, deepsort_tracker, Obj_Counter)
            # print(result_img)
            if videowriter is None:
                fourcc = cv2.VideoWriter_fourcc(
                    'm', 'p', '4', 'v')  # opencv3.0
                videowriter = cv2.VideoWriter(
                    './output/result.mp4', fourcc, fps, (result_img.shape[1], result_img.shape[0]))
            videowriter.write(result_img)
            result_img = imutils.resize(result_img, height=500)
            cv2.imshow('video', result_img)
            cv2.waitKey(t)

            if cv2.getWindowProperty('video', cv2.WND_PROP_AUTOSIZE) < 1:
                # x退出
                break

        sys.stdout.write("\r=> processing at %d; total: %d" % (mycap.get_index(), total_num))
        sys.stdout.flush()

    videowriter.release()
    cv2.destroyAllWindows()
    mycap.release()
    print(
        "\n=> process done {}/{} images, total cost: {:.2f}s [{:.2f} fps]".format(len(os.listdir(yolo5_config.output)),
                                                                                  total_num, time.time() - c,
                                                                                  len(os.listdir(
                                                                                      yolo5_config.output)) / (
                                                                                              time.time() - c)))

    print("=> main task finished: {}".format(datetime.now().strftime('%H:%M:%S')))

if __name__ == "__main__":
    torch.multiprocessing.set_start_method('spawn')
    parser = argparse.ArgumentParser()
    # 视频的路径,默认是本项目中的一个测试视频test.mp4,可自行更改
    parser.add_argument('--input', type=str, default="./test.mp4",
                        help='test imgs folder or video or camera')  # 输入'0'表示调用电脑默认摄像头
    # 处理后视频的输出路径
    parser.add_argument('--output', type=str, default="./output",
                        help='folder to save result imgs, can not use input folder')
    parser.add_argument('--weights', type=str, default='weights/yolov5l.pt', help='model.pt path(s)')
    parser.add_argument('--img_size', type=int, default=640, help='inference size (pixels)')
    parser.add_argument('--conf_thres', type=float, default=0.4, help='object confidence threshold')
    parser.add_argument('--iou_thres', type=float, default=0.4, help='IOU threshold for NMS')
    # GPU0表示设备的默认的显卡)或CPU
    parser.add_argument('--device', default='0', help='cuda device, i.e. 0 or 0,1,2,3 or cpu')
    # 通过classes来过滤yolo要检测类别,0表示检测人,1表示自行车,更多具体类别数字可以在19行附近打印出来
    parser.add_argument('--classes', default=0, type=int, help='filter by class: --class 0, or --class 0 1 2 3')
    yolo5_config = parser.parse_args()
    print(yolo5_config)
    main(yolo5_config)
    print("结果保存在:", yolo5_config.output)

 图14 社区人流量实时分析模块代码复现

        3.4.2 社区停车场智能识别模块

项目概要:本功能基于OpenCV卷积神经网络模型训练了基于图像识别和预处理的动态车牌识别系统,实现在如车辆行驶录像、无人机拍摄图像等多角度动态环境下的快速车牌识别,同时我们也针对外界干扰下车牌图像可能发生的畸变问题基于字符识别的机器学习提供了消除干扰的解决方案,并训练了其对包括中国地区普通车牌、新能源车牌等多种车牌的识别,同时对于车牌图像设计了预处理算法来解决不同角度下车牌识别出错的问题,从而保证了车牌识别的准确性与鲁棒性。

技术内容:基于OpenCV+卷积神经网络的停车场车牌识别

项目运行环境:win11,pycharm,python3.10+

主要需要的包:pytorch,OpenCV,HyperLPR

运行方式:通过运行main.py处理车牌图像。接入了停车场出入库处的低位摄像头,可以清晰的获取到车辆的车牌图像信息,该模块基于开源的中文车牌识别库开发,省去了寻找训练集的功夫。在识别到车辆车牌信息后,系统将会把车辆信息与数据库中已有车辆数据比对,从而实现小区内车辆管理、陌生车辆记录的功能。

概念效果图

        

 图15 社区停车场智能识别效果图

原理解释:车牌检测的算法的选取上,车牌检测算法可大致分为传统方法和神经网络模型方法。传统的车牌检测方法一般利用丰富的边缘信息或背景颜色特征。有人利用形态学方法显著减少候选数量从而加快检测过程。也有人提出了一种鲁棒的基于小波变换和经验模态分解分析的方法以定位车牌。此外,基于观察到车牌背景总是呈现出规则的颜色外观(针对我们的选题常用车牌为蓝白色,新能源车为白、绿、黑色),因此利用HSI(色调、饱和度、强度)颜色空间过滤掉LP区域。过去已经有人应用HSI颜色模型来检测候选区域在80余幅图像上达到87%的准确度。基于区域的卷积神经网络的最新进展促进了流行对象检测模型在LP上的广泛应用检测问题,从而检测对象更准确和快速。

 图16 车牌检测算法原理

        在本选题中,尽管我们选用的是低位摄像头进行车牌图像拍摄,但还是需要考虑到现实场景中能够拍到的车牌照片大多不为主视的角度,因此考虑通过透射变换对车牌进行畸变校正。透射变换是从视图空间到目标空间的坐标变换。空间P到空间P′的透射变换,对于P中的任意向量v(x,y,w),到P′中的像f(v)=v′(x′,y′,w′)之间的关系可以表示为:

        不同车牌图像的宽高比都相同,因此将变换后的车牌图像大小均设为100×32,只需得到车牌的4个角点坐标就能计算出变换矩阵,从而通过透射变换得到校正后的车牌。校正效果如图2-5所示,在获得精确角点坐标的情况下,车牌图像经过透射变换校正后基本消除了角度带来的影响。

效果如下:

图17 透射变换对畸形车牌号的校正

        在获取了车牌字段之后,系统将会将车牌信息以txt输出,发送至后端数据库与其中的用户车牌信息进行比对,从而获得并记录车辆信息,实现方便、快捷而准确的管理。

实现代码:

import hyperlpr  # 导入hyperlpr库,处理车牌识别  hyperlpr     0.0.2
import cv2  # 导入CV2库,处理图片或视频  opencv-python     4.1.2.30
# pip install hyperlpr==0.0.2 -i https://pypi.tuna.tsinghua.edu.cn/simple # 指定版本
# pip install numpy  -i https://pypi.tuna.tsinghua.edu.cn/simple  # 不指定版本
import numpy as np
from PIL import ImageFont, ImageDraw
from PIL import Image
from collections import Counter
def cv2AddChineseText(img, text, position, textColor=(0, 255, 0), textSize=30):
    if (isinstance(img, np.ndarray)):  # 判断是否OpenCV图片类型
        img = Image.fromarray(cv2.cvtColor(img, cv2.COLOR_BGR2RGB))
    # 创建一个可以在给定图像上绘图的对象
    draw = ImageDraw.Draw(img)
    # 字体的格式
    fontStyle = ImageFont.truetype(
        "simsun.ttc", textSize, encoding="utf-8")
    # 绘制文本
    draw.text(position, text, textColor, font=fontStyle)
    # 转换回OpenCV格式
    return cv2.cvtColor(np.asarray(img), cv2.COLOR_RGB2BGR)

def main():
    mp4 = cv2.VideoCapture("测试视频.mp4")  # 读出视频的路径
    res=[]
    res_sorce={}
    while (mp4.isOpened()):  # 使用mp4.isOpened()函数来判断视频是否正常打开
        ret, frame = mp4.read()  # 读取视频,第一个参数ret True 或者False,代表有没有读取到图片,第二个参数frame表示截取到一帧的图片
        if ret == True:  # 判断视频有没有结束
            gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)  # 将每一帧图片转为灰色以便接下来处理
            k = hyperlpr.HyperLPR_plate_recognition(frame)  # 使用HyperLPR_plate_recognition函数识别图片内车牌号
            if k:
                d = []
                a = k[0][0]
                b = k[0][1]
                c = k[0][2]
                print('识别结果:',a)
                res.append(a)
                print('b',b)
                res_sorce[str(a)]=str(b)
                b = str(b)
                # print('c',c)
                d.append(c)
                f = np.array(d, dtype=int)
                # print(type(d))
                for (x, y, w, h) in d:
                    cv2.rectangle(frame, (x, y), (w, h), (0, 0, 255), 2)
                    frame = cv2AddChineseText(frame, a, (x, y), (255, 0, 0), 30)
                    cv2.putText(frame, b, (x, y), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0, 0, 255), 2)
            cv2.imshow('frame', frame)
            # 视频正常打开并把识别的车牌号写入jianVideo.txt
            if cv2.waitKey(1) & 0xFF == ord('q'):  # 类似中断播放的按键,按q跳出循环终止播放
                break
        else:  # 如果视频结束正常跳出循环终止播放
            break
    mp4.release()  # 释放视频
    cv2.destroyAllWindows()  # 将创建的所有的窗口销毁
    result={}
    res=Counter(res)
    print("res:",res)
    for i,j in res.items():
        if j>1:
            result[i]=res_sorce[i]

    print("车辆数目:",len(result),"识别结果:",result)

if __name__ == '__main__':
    main()

图18 社区停车场智能识别模块代码复现

4. 数据需求

        4.1 静态数据

用户信息,缴费、维修、社区服务等信息。

        4.2 动态数据

用户自己输入的密钥,判断用户某一个行为后的状态码和提示消息,报警信息,监控视频。

        4.3 数据字典

        4.3.1 数据量条目

(1)身份信息

名称

身份信息

简述

描述提问者和回答者的身份

来源

提问者、回答者

去处

用户登录

(2)用户名

名称

身份信息

简述

用户登录的账号

类型

varchar

长度

1024

来源

用户登录

去处

用户信息库

(3)密码

名称

密码

简述

用户登录的账号对应的密码

类型

varchar

长度

1024

来源

用户登录

去处

用户信息库

(4)新用户注册信息

名称

新用户注册信息

简述

新用户进行注册的信息

来源

用户

去处

注册

        4.3.2 数据存储条目

(1)用户信息

名称

用户信息

简述

描述用户的信息

组成

用户名+密码+昵称+头像

组织方式

以用户名为关键字

(2)新用户信息

名称

新用户信息

简述

描述新用户的信息

组成

用户名+密码+昵称+头像+性别

组织方式

以用户名为关键字

        4.4 数据库描述

软件的数据库概念模型(类图)

图19 数据库概念模型

5. 性能需求

        5.1.1 数据精度

字段

精度

备注

用户名

char型

邮箱

密码

char型

8-12位

昵称

char型

用户是否存在

map型

前端传过来含有用户名和密码的json对象,后端接受到之后在数据库中匹配,返回是否匹配的信息给前端

         5.1.2 时间特性

(1)响应时间:用户任意操作后5秒内系统给予反馈信息。

(2)更新处理时间:由系统运行状态来决定。

(3)数据的转换和传送时间:能够在20秒内完成。

(4)报警信息的传送:能够在10秒内完成。

(5)监控视频的上传:能够在12小时内完成。

(6)社区公告的更新:能够在12小时以内完成。

        5.1.3 灵活性

        当需求发生某些变化时,该软件的基本操作、数据结构、运行环境等等基本不会发生变化,只是对系统的数据库的文件和记录进行处理,就可以满足需求。

6. 运行需求

        6.1 用户界面

(1)注册:用户填写该页面的“用户名”、“昵称”、“密码”、“确认密码”信息后点击提交即可成功注册,返回“注册是否成功的消息”。

(2)登录:用户填写该页面的“用户名”、“密码”信息后点击登录即可成功登录,如果用户没有账号可以点击下方的链接进行注册。

        6.2 软件接口

1.操作系统:Microsoft Windows 10、11

2.软件设备:VScode、IntelliJ IDEA、MySQL8.0

        6.3 硬件接口

1.内存:32G以上

2.磁盘空间:1T以上

3.CPU:233Mhz以上

4.硬盘空间:4T以上

7. 其他需求

        7.1 验收标准

测试功能

测试项

输入/操作

检验点

预期结果

验收

登录功能

登录

单击用户名输入框,输入用户名

用户名和密码检查

符合形式,输入错误,提示用户名或密码有问题,请重新输入

单击密码框,输入密码

密码框保护

输入的字符在密码框隐藏

用户登录成功界面

进入电子档案

单击未完善的信息,输入相应内容

信息能否成功保存

信息成功保存的弹窗出现

        7.2 质量属性

1.可用性:用户可以使用

2.可靠性:在给定时间内可以大致上满足无错运行的要求

3.可维护性:服务器重启、写进日志

4.安全性:对用户的密码加密

5.可移植性:移动端移植


http://www.ppmy.cn/news/696612.html

相关文章

树莓派zeor 安装宝塔面板

树莓派zeor 安装宝塔面板 宝塔面板在安装时对性能有要求&#xff0c;所以不能在树莓派 zeor上面直接安装 我的做法是&#xff0c;把内存卡插到性能更高的树莓派上面&#xff0c;比如4b,安装完成之后再插回去 本人亲测可以运行,就是性能低

基于JAVA鑫通物流车辆调度系统mp4计算机毕业设计源码+系统+lw文档+部署

基于JAVA鑫通物流车辆调度系统mp4计算机毕业设计源码系统lw文档部署 基于JAVA鑫通物流车辆调度系统mp4计算机毕业设计源码系统lw文档部署 本源码技术栈&#xff1a; 项目架构&#xff1a;B/S架构 开发语言&#xff1a;Java语言 开发软件&#xff1a;idea eclipse 前端技术&…

react_hooks系列06_useContext

Context状态树的使用&#xff0c;比较复杂&#xff0c;特别是使用Consumer时。 useContext这个hook能让Context使用起来变得非常简单。不需要再使用Consumer。使用useContext就能拿到context状态树里的值。 const value useContext(context对象); useContext函数的解释&…

linux压缩文件夹

先安装 zip 运行apt-get install zip (没有安装zip会报错zip: not found) 接着使用cd命令进入到所要压缩的文件夹 执行zip -r ./folder_name.zip ./* 其中 -r表示递归(重复执行文件夹下的所有文件) folder_name.zip表示压缩后的文件名 ./* 表示压缩文件的保存位置(这里直接保存…

python 压缩文件夹

def zip_ya(start_dir):start_dir start_dir # 要压缩的文件夹路径file_news start_dir .zip # 压缩后文件夹的名字z zipfile.ZipFile(file_news, w, zipfile.ZIP_DEFLATED)for dir_path, dir_names, file_names in os.walk(start_dir):f_path dir_path.replace(start_d…

python zipfile 压缩文件夹的方法

import os import zipfile# 这一部分只是用来解释os.walk的用法&#xff0c;在该脚本运行时不需执行------start dirpath rf:\0105\Europe_output\chinaocean # 这里指定需要压缩的文件夹 for path, dirnames, filenames in os.walk(dirpath): # 遍历文件夹及下面的子文件夹…

linux zip压缩文件夹

zip -r 压缩包名称.zip 文件夹名称

Python zipfile 压缩文件夹

本文仅供学习交流使用,如侵立删!demo下载见文末zipfile 压缩文件夹 def zipDir(self, dirpath, outFullName):"""压缩指定文件夹:param dirpath: 目标文件夹路径:param outFullName: 压缩文件保存路径+xxxx.zip:return: 无"""zip = zipfile.Zi…