翻译Audio-Visual Deep Neural Network for Robust Person Verification

基于音视频深度神经网络的鲁棒性身份确认

0 摘要

对于说话人确认来说,声音和人脸是两个最普遍的生物特征,通常应用于说话人确认和人脸确认任务。已经有研究证明,将两种模态信息进行融合可以构建更加稳定鲁棒的身份确认系统。本文全面展示多模态学习策略,提出三种音视频深度神经网络,把控特征级AVN-F,embedding级AVN-E,以及embedding级融合联合学习AVN-J。为了进一步加强系统在真实噪声场景的鲁棒性,该场景下,并不是所有的模态信息都能高质量采集,我们提出了多种数据增广策略:特征级数据增广、embedding级数据增广、特征和embedding融合的数据增广。所有模型均基于VoxCeleb2开发数据集训练,基于标准VoxCeleb1数据集进行评估,最佳系统在三个官方集合上可以达到0.558%、0.441%和0.793%的EER,这也是目前最佳单系统效果。为了评估本文方案的鲁棒性,我们基于VoxCeleb1构建了一个噪声评估集,我们的希望在该评估集上依然鲁棒。

1 介绍

对于基于语音的说话人确认系统,信道差异或噪声干扰往往影响效果,基于图像的人脸确认系统,挑战来自关照、人脸运动和姿势的变化。

2 背景

A 说话人确认

B 人脸确认

C 基于音视频进行身份确认

3 特征级音视频网络

A  模型架构

先将音频和视频特征分别编码到另一个空间进行融合,一种最裸的方式就是先对音频特征图进行变换得到M_a,再对视频特征图变换得到M_v,然后将两个图进行concat。

音频和视频支路特征变换如table 1所示。

B 注意力模块

在上述音频编码M_a和视频编码M_v进行concat之前,分别进行attention操作。

(1)attention模块#1

来自于SE-Resnet的灵感,将M_aM_v通过GAP(global average pooling),变换到c_ac_v\in R^{64}, 通过c_ac_v计算attention系数\alpha _a\alpha _v

其中f包含两个线性层128x8和8x128,两者之间有个Relu激活层。

(2)attention模块#2

直接进行GAP,信息丢失较大。

先将M_aM_v转换到M^{'}_aM^{'}_v,这里的变换是通过conv完成,这里之间使用M^{'}_aM^{'}_v计算attention系数向量

(3)attention模块#3

通常情况,如果一类modality数据处于较差环境,那么它的特征也较差。对(2)进行简化,计算attention系数标量

其中g包含两个线性层128x8和8x2,两者之间有个Relu激活层。

C 特征级多模态数据增强

对于多模态数据对,我们对其中一个模态数据加强噪,使得模型学习到更显性特征。

 

4 Embedding级音视频网络

A 模型架构

如fig.4所示,融合网络的输入是说话人embedding和人脸embedding。有两大优点

(1)所有操作都在embedding空间,易实现,优化快。

(2)将前端进行分离,这样可以复用很多预训练模型。

 

 

5 Embedding级联合学习音视频网络

6 损失函数

7 数据集

8 实验设置

9 实验结果和分析

10 总结

 

 

The class `NeuralNet` is a simple fully-connected deep neural network implemented using the `nn.Module` class from the PyTorch library. This class serves as a base for creating custom neural network architectures in PyTorch. It allows you to define the structure and behavior of the neural network by specifying the layers and operations within the `forward` method. To create a custom neural network using this class, you would typically define the layers and operations in the `__init__` method and implement the forward pass in the `forward` method. Here's an example of how you can define a simple fully-connected deep neural network using the `NeuralNet` class: ```python import torch import torch.nn as nn class NeuralNet(nn.Module): def __init__(self, input_size, hidden_size, num_classes): super(NeuralNet, self).__init__() self.fc1 = nn.Linear(input_size, hidden_size) self.relu = nn.ReLU() self.fc2 = nn.Linear(hidden_size, num_classes) def forward(self, x): out = self.fc1(x) out = self.relu(out) out = self.fc2(out) return out ``` In this example, the neural network has two fully connected layers (`fc1` and `fc2`) with a ReLU activation function applied after the first layer. The `input_size` parameter specifies the size of the input features, `hidden_size` specifies the number of hidden units in the first fully connected layer, and `num_classes` specifies the number of output classes. You can then create an instance of this neural network and use it for tasks such as classification or regression by passing input data through the forward method.
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值