wy
2025-03-14 ca0ef186534ee15c55bc978ece07a43e9ef00d58
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
 
 
需求分析文档 要求:[最终形成的文档,以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