需求分析文档 要求:[最终形成的文档,以word的文档格式表现出来] 1、项目背景 <<<<<<< HEAD 应市场需求,结合业务方向,现决定研发一款考勤打卡设备,及监控一体以AI为主的设备。 2、可查看范围(谁能看这个文档) PM,PL以及负责实现各个模块的Pg。 3、专业术语(名词解释,自己写的缩写和一些较生僻的名字) AI方面: TensorFlow框架:由 Google 开发和维护的开源深度学习框架,被广泛应用于各类机器学习算法的编程实现 OpenCV框架:是一个广泛使用的开源计算机视觉和机器学习软件库,它提供了各种用于处理图像和视频的工具和算法。 CNN卷积神经网络算法:Convolutional Neural Network,CNN)是一种专门为处理具有网格结构数据(如图像、音频)而设计的深度学习模型,在图像识别、目标检测、语义分割等诸多领域取得了巨大成功。 卷积层(Convolutional Layer) 卷积操作:通过卷积核(也叫滤波器)在输入数据上滑动,对每个位置进行卷积计算,提取局部特征。例如,在图像上,卷积核与图像的局部区域进行元素相乘并求和,生成特征图。如一个 3×3 的卷积核在一张 6×6 的图像上滑动,每次计算对应位置的乘积和,得到新的特征值组成新的矩阵(特征图)。 作用:大大减少模型参数数量,降低计算量,同时保留数据的空间结构信息。例如,对于一张 100×100 像素的彩色图像(3 个通道),若使用全连接层处理,参数数量巨大;而使用卷积层,通过小的卷积核就能有效提取特征。 池化层(Pooling Layer) 池化操作:常见的有最大池化(Max Pooling)和平均池化(Average Pooling)。最大池化是在一个区域内取最大值,平均池化则是计算区域内的平均值。例如,在 2×2 的区域上进行最大池化,就是从这 4 个值中选取最大的作为输出。 作用:降低数据维度,减少计算量,同时在一定程度上防止过拟合,提高模型的鲁棒性。比如经过多次卷积后特征图尺寸仍然较大,通过池化可以压缩尺寸。 全连接层(Fully Connected Layer) 连接方式:将前面层输出的所有神经元都与本层的每个神经元相连,其权重矩阵包含了所有输入到输出的连接权重。比如,前一层输出 100 个特征,全连接层有 50 个神经元,那么权重矩阵大小就是 100×50。 作用:对前面提取到的特征进行综合,完成分类或回归任务。在图像分类中,全连接层将卷积和池化后提取的特征映射到不同的类别上。 激活函数(Activation Function) 常用函数:如 ReLU(Rectified Linear Unit),表达式为 f (x) = max (0, x)。当输入 x 大于 0 时,输出就是 x 本身;当 x 小于等于 0 时,输出为 0。还有 Sigmoid 函数、Tanh 函数等。 作用:为模型引入非线性因素,使模型能够学习复杂的非线性关系。如果没有激活函数,无论神经网络有多少层,其输出都是输入的线性组合,无法处理复杂的现实问题。 视频方面: Live555框架:是一个开放源代码的、实现了标准流媒体传输协议的多媒体流框架,广泛应用于流媒体服务器和客户端的开发。 FFmpeg库:是一个强大的开源音视频处理库,被广泛应用于音视频的录制、转码、流式传输等众多领域。 RTSP协议:(Real Time Streaming Protocol)即实时流协议,是一种用于控制实时数据(如音频、视频)传输的网络协议。 高并发(多线程): 线性池:是一种预先分配一块连续的内存区域或资源集合,然后按照顺序依次分配和使用这些内存块或资源的管理方式。它在初始化时会一次性分配一大块内存或一组资源,后续的分配操作就在这个已分配的区域内进行,直到所有资源都被分配完。 Epoll:Epoll 是 Linux 内核为处理大批量文件描述符而作的改进,是在 2.5.44 内核中引入的,用于实现高效的 I/O 多路复用。 通用: XML:可扩展标记语言,是一种用于存储和传输数据的标记语言。设计目标是传输和存储数据,而不是显示数据。它的标签没有被预定义,用户可以根据自己的需求自定义标签,具有很强的灵活性和扩展性,被广泛应用于数据交换、配置文件、文档存储等领域。 TCP:传输控制协议,是一种面向连接的、可靠的、基于字节流的传输层通信协议。 4、功能描述 4.1、总的功能描述(罗列出C,S端的所有功能) C端:1.注册,登录 2.权限管理 3.图像录入 4.考勤识别、管理 5.实时播报 6.历史回放 7.摄像头地图标注 8.系统设置 9.版本升级 S端: 1.socket网络搭建 2.SQL封装,建库、表,备份导出,防注入 3.日志封装生产 4.配置管理 5.图像管理 6.CNN搭建模型,训练,验证,迁移 7.版本管理 4.2、具体负责模块的描述:[详细描述]若有界面,可以把界面截图放上来,可以文字描述多写一些 尽量用通俗易懂的语言来描述 1. 员工信息表:存储员工的基本信息,如员工编号、姓名、性别、年龄、部门、职业。 2. 考勤记录表:存储员工的考勤记录,包括考勤时间、考勤类型(如上班、下班、加班等)、考勤状态(如正常、迟到、早退、旷工等)。 3. 部门信息表:存储公司的部门信息,如部门编号、部门名称等。 1. **员工信息表**:存储员工的基本信息,如员工编号、姓名、年龄、性别、出生日期、部门、职位等。该表的主键为员工编号。 2. **考勤记录表**:存储员工的考勤记录,包括考勤日期、上班时间、下班时间、迟到时间、早退时间、旷工时间等。该表的主键为考勤日期和员工编号的组合键。 3. **部门信息表**:存储公司的部门信息,如部门编号、部门名称、部门负责人等。该表的主键为部门编号。 5、负责模块的流程图(绘制并截图) 6、负责模块用到的数据库表:[若用到多张表了,可以绘制ER图(表之间的关系图)] 表名、字段名、具体的约束等(二维表格形式罗列) 7、UML类图:模块用到的类名、属性、函数等,以及类之间的关系(六大关系) 8、网络通信用到的结构体[私有协议]: 请求结构体 响应结构体 以及需要用到的配套结构体 ======= 应市场对于高效人员管理和安全监控的强烈需求,同时结合公司业务的发展方向,决定研发一款集考勤打卡与监控功能为一体,且以 AI 技术为核心的设备。 这款设备旨在为各类企业、机构提供一站式解决方案,帮助其提升管理效率,降低人力成本,并增强安全性。 2、可查看范围 项目经理 开发人员  测试人员 3、专业术语 设计架构:C/S C:Client客户端 用Qt实现 S:Sersvr服务端 用C++实现 TensorFlow框架:一个机器学习框架,用于构建和训练深度学习模型。 OpenCv框架:计算机视觉库,用于处理图像和视频。 CNN卷积神经网络算法:处理图像、音频等深度学习的算法,也是面部识别、行为分析等功能的核心算法。 Live555框架:多媒体流媒体框架,用于实现音频和视频数据的实时传输。 FFmpeg:对音频、视频进行解码、编码、转码、复用等操作。 RTSP协议:实时流协议,监控视频流。 Epoll:处理大量并发连接,提高服务器端处理大量客户端连接请求的效率。 TCP:传输控制协议。 XML:可扩展标记语言,用于存储和传输数据。 4、功能描述 4.1、总的功能描述 (罗列出C/S的所有功能) C:1、注册、登录 2、权限管理 3、图像录入 4、考勤识别、管理 5、实时播放 6、历史回放 7、摄像头地图标注 8、系统设置 9、版本升级 S: 1、socket网络搭建 2、SQL封装,建库、表,备份导出,防注入 3、日志封装生成 4、配置管理 5、图像管理 6、CNN搭建模型、训练、验证、迁移 7、版本管理 4.2、具体负责模块的描述:[详细描述]若有界面,可以把界面截图放上来,可以文字描述多写一些尽量用通俗易懂的语言来描述 (说白话) 负责模块:S端版本管理主要负责服务端软件版本的全生命周期管理。 新版本:当有新的功能开发完成后或者问题修复后,会生成新的版本。 版本编号:对不同版本进行编号,记录版本的详细信息,包括发布时间、功能特性、修复的问题等。 版本测试:新版本发布时,进行严格的版本测试,确保新版本的稳定性和兼容性。 协调客户端:确保客户端可以及时获取到最新的服务器版本。 5、负责模块的流程图 (绘制流程图,开始结束) 开始->功能开发/问题修复->生成新版本编号->记录版本信息(发布时间、功能、修复问题等) ->进行版本测试->发布版本->回滚到上一个稳定版本->通知客户端升级->通知客户端升级->结束。 6、负责模块用到的数据库表:[若用到多张表了,可以绘制ER图] (表关系图) 表名、字段名、具体的约束等 (表格形式罗列) 7、UML类图:模块用到的类名、属性、函数等,以及类之间的关系 8、网络通信用到的结构体[私有协议]: 请求结构体: struct Request { int request_id; // 请求ID string action; // 请求的动作 string data; // 附加数据 }; 响应结构体: struct Response { int response_id; // 响应ID bool success; // 是否成功 string message; // 响应信息 string data; // 附加数据 }; 以及需要用到的配套结构体 struct ClientInfo { int client_id; // 客户端ID string version; // 客户端版本 }; >>>>>>> ea8fe583dba43898151a584ae2c8b4d80d2c4772