前驱知识Opencv
pytroch
pyqt5
系统功能以使用者在人脸识别设备上的数据比对作为基础,以计算机为后台处理工具,通过单片机终端实施对宿舍门锁的物理控制。同时在用户端可以生成图形化界面便于人员面部信息的录入和修改,以及记录开门时刻。在前期计划中,会利用外部设备进行信息的采集,以及实施相应控制操作,但设计过程中发现缺乏硬件条件,因此硬件部分的设计更改为利用电脑摄像头采集数据并进行实时检测反馈,将检测结果发送到单片机,并用对应信号灯亮起代替相应控制信号输出。
系统组成
人员信息管理模块(更新与删除)
人脸检测与识别模块
UI交互模块
终端控制模块
模块设计
Read more
通过继承nn.Module类来实现
在_init_构造函数中申明各个层的定义.
在forward中实现层之间的连接关系,实际上就是前向传播的过程.
注意:pytorch里面一般是没有层的概念,层也是当成一个模型来处理的
例如:
# 全连接层
class Linear(Module):
__constants__ = ['bias']
def __init__(self, in_features, out_features, bias=True):
super(Linear, self).__init__()
self.in_features = in_features
self.out_features = out_features
self.weight = Parameter(torch.Tensor(out_features, in_features))
if bias:
self.bias = Parameter(torch.Tensor(out_features))
else:
self.register_parameter('bias', None)
self.reset_parameters()
def reset_parameters(self):
init.kaiming_uniform_(self.weight, a=math.sqrt(5))
if self.bias is not None:
fan_in, _ = init._calculate_fan_in_and_fan_out(self.weight)
bound = 1 / math.sqrt(fan_in)
init.uniform_(self.bias, -bound, bound)
# 卷积层
class Conv2d(_ConvNd):
def __init__(self, in_channels, out_channels, kernel_size, stride=1,
padding=0, dilation=1, groups=1,
bias=True, padding_mode='zeros'):
kernel_size = _pair(kernel_size)
stride = _pair(stride)
padding = _pair(padding)
dilation = _pair(dilation)
super(Conv2d, self).__init__(
in_channels, out_channels, kernel_size, stride, padding, dilation,
False, _pair(0), groups, bias, padding_mode)
基本步骤简单来讲就是:先继承,再构建组件,最后组装
其中基本组件可从 torch.nn 中获取,或者从 torch.nn.functional 中获取,同时为了方便重复使用组件,可以使用 Sequential 容器将一系列组件包起来,最后在 forward() 函数中将这些组件组装成你的模型
Read more