1.一种人脸识别的硬件加速嵌入式系统设计方法,其特征在于,所述方法包括如下步骤:S1构建人脸数据集;
S2构建并改进DETR目标检测模型;
S2.1构建轻量级特征提取网络MobileNetV2作为主干网络,通过逆残差模块使特征图经历卷积升维和最终卷积降维,先使用1x1卷积,对输入特征图进行升维,倍数t=6,然后经过BN+RELU6进行激活并进行深度卷积处理,再次经过BN+RELU6激活,最后通过1x1卷积降维,流程末端附加线性变换激活函数;
S2.2使用HiLo‑Attention替代原encoder层中的self‑attention,在Hi‑Fi中使用非重叠窗口划分,高频注意力的输出和低频注意力的输出在通道上拼接,输出结果至后续的集成可变性的跨尺度特征融合模块CCFM;
所述HiLo‑Attention详细为:采用两种有效的注意力来解耦特征图中的高/低频率,将Head分配给高频注意力,通过Local Window Self‑Attention捕获细粒度的高频;将平均池化应用于每个窗口以获得低频信号,将剩余的Head配给Lo‑Fi,对输入特征图中的每个query位置与每个窗口的平均池化低频key之间的关系进行建模,实现低频注意力;
高频注意力HIFI运行步骤如下:
S2.2.1设置窗口尺寸为ws,即一个窗口有ws x ws个patch,即每行每列:Hgroup=H/ws
Wgroup=W/ws
total_groups=Hgroup*Wgroup每列有Hgroup组窗口,每行有Wgroup组窗口,即整张图片共有total_groups组窗口;
H×W×C
S2.2.2通过reshape操作将输入X∈R 重塑为: 通过三个线性层分别获得Q、K、V:
total_group*ws*ws*h*dQ∈R =reshape(Q)
total_group*h*ws*ws*dQ∈R =reshape(Q)
C×C
其中,Wq∈R C=h X d,h是注意力头的个数,d是每个注意力头的通道数,K、V是和Q同样的处理方式,因此shape相同;
S2.2.3在Q、K、V之间执行注意力操作:S2.2.4S表示每个窗口内的所有patch pairs之间的注意力矩阵,然后与V进行加权求和,更新每个窗口内的patch表示:total_group*ws*ws*h*dY∈R =S*V
是高频注意力的输出;
低频注意力loFI运行步骤如下:
H*W*C
S2.2.5Lo‑Fi首先对每个窗口应用平均池化,以获得输入X∈R 中的低频信号:W*H*C
X∈R =reshape(X)
HW/ws*ws*C
X_∈R =reshape(X_)2
HW/(ws) 表示池化后的patch的数量,HW=14x14=196个patch,池化窗口ws×ws=2×22
=4个patch,池化后,剩余HW/(ws) =196/4=49个patch;
HW/ws*ws*C HW/ws*ws*CS2.2.6平均池化特征图被投影到keys:K∈R 和values:V∈R 并通过reshape操作重塑:
HW/(ws*ws)*C
K∈R =X_WK
HW/(ws*ws)*C
V∈R =X_Wv
h*HW/ws*ws*d
K∈R =reshape(K)
h*HW/(ws*ws)*d
V∈R =reshape(V)
C*C
其中,Wk,Wv∈R C=h×d,h是注意力头的个数,d是每个注意力头的通道数;
W*H*C
S2.2.7Lo‑Fi中的Q仍然来自原始特征图X∈RW*H*C
Q∈R =XWq
h*HW*d
Q∈R =reshape(Q)
S2.2.8然后,应用标准注意力机制捕捉特征图中丰富的低频信息,注意,由于K和V的空间维度缩减,Lo‑Fi的复杂度显著降低:U表示patch和窗口之间的注意力矩阵,N=HW是总的patch数量,HW/(ws)2是池化后的patch数量;
与V进行加权求和,更新每个patch表示:h*HW*d
YL∈R =UV
H*W*C
YL∈R =reshape(YL)H*W*C
YL∈R 是低频注意力的输出;
S3投入数据集训练改进后的DETR目标检测模型;
S4在最终模型BN层应用双分支剪枝技术进行优化并引入自定义模型CGVV模型,一分支使用双GSConv层优化模型性能;另一分支通过Ghost bottleneck直接输出原始特征图,使用shortcut连接并将结果输出至VoVGSCSP,详细步骤为:在BN层引入自定义模型CGVV模型进行剪枝操作通过双分支方法处理特征图其中一个分支使用两个GSConv卷积层,另一个使用Ghost bottlenec输出原始特征图,Ghost bottlenec由两个堆叠的Ghost模块组成:第1个Ghost模块用作扩展层,增加了通道数;
第2个Ghost模块减少通道数,以与shortcut路径匹配,使用shortcut连接两个Ghost模块的输入和输出,第二个Ghost模块之后不使用ReLU,其他层在每层之后都应用了批量归一化(BN)和ReLU非线性激活,连接两个模块输出,输出到VoVGSCSP,将融合后的特征图再次输入到GSConv卷积层进行输出,省去BN层的计算,保存得到的权重参数以及数据集;
S5设计HLS加速器模块,生成加载至FPGA硬件上的指令集,所述HLS加速器模块设计多个IP核加速不同的运算,包括:PWConv:加速point‑wise卷积;
DWConv:加速depth‑wise卷积;
conv:加速网络第一层的卷积运算;
fc:加速全局平均池化层和全连接层;
DW卷积操作分为三个阶段:加载数据、计算卷积以及写回结果,通过乒乓操作,掩盖数据的传输时间;
PW卷积操作包括增大接口位宽、增大突发传输长度以及增加接口数目;
最终在vivado进行block design,生成加载至FPGA硬件上的指令集;
S6将训练好的最终模型参数存入DDR3,FPGA通过AXI总线控制器与DDR3连接并进行数据交互;
S7使用图片进行结果测试。
2.根据权利要求1所述的人脸识别的硬件加速嵌入式系统设计方法,其特征在于,S1中人脸数据集基于CASIS‑FaceV5数据集构建,图片大小为(640,480),验证集则使用的是LFW。
3.根据权利要求1所述的人脸识别的硬件加速嵌入式系统设计方法,其特征在于,S2.2中高频注意力的输出和低频注意力的输出在通道上拼接方式为:高频注意力的输出和低频注意力的输出在通道上拼接,并恢复与输入相同的shape:H*W*2C
Y∈R =Concat(Yh,YL)N*2C)
Y∈R =reshape(Y)。
4.根据权利要求1所述的人脸识别的硬件加速嵌入式系统设计方法,其特征在于,S7测试步骤包括:将卷积计算得到的结果送入到结果缓存区随后传入结果处理模块,对其依次进行残差相加,池化操作,ReLu和量化操作,最后送入输出缓存区,通过AXI总线传入到电脑端进行验证。