Advertisement

论文阅读《Deep Vieo Code for Efficient Face Video》

阅读量:

简述

该团队开发了一种多分支卷积神经网络架构。该系统采用一段连续的人脸视频帧序列作为输入,并生成对应的二进制编码表示其特征(称为Deep Video Code, DVC)。从而确保同一人物的不同观测片段之间的哈明距离显著低于来自不同个体的数据片段。

待解决的问题

  1. 同类间的内部差异(intro-class variations)显著存在
  2. 视频之间的检索任务对其时间和空间复杂度需求异常高

解决方法

为了解决视频内类内差异带来的检索问题,在传统的做法中通常将视频中的多帧视为独立的图像集合,并将其视为分类问题来进行检索。然而在他们的研究中,则采用了基于时空特征池化的方法,在每帧提取特征后整合整个视频的信息。
为了应对由于视频在时间和空间维度上的复杂性带来的挑战,在他们的方法中,通过对欧几里得空间中的向量进行汉明化处理以适应二进制编码的需求。

网络结构

DVC网络结构

如图所示,在视频处理流程中首先通过对每个单独帧应用预设的CNN模型提取frame-level的特征;随后将所有帧的特征通过Temporal Feature Pooling整合形成一个综合特征;该综合特征被输入到包含两个全连接层的网络结构中,并采用改良后的triplet loss函数作为损失函数进行反向传播训练以优化模型参数

网络细节

首先用于提取视频帧特征的卷积神经网络(CNN)由三个卷积层、两个池化层以及两个全连接层构成。其中每个卷集层分别使用32、32和64个5×5尺寸的卷积核进行计算;最后一个全连接层的输出随后会接入一个sigmoid激活函数(其具体作用将在后续介绍损失函数时详细说明)。针对该网络架构,在单张人脸图片的基础上训练用于识别特定人脸特征;随后在全面训练DVC网络的过程中对其进行微调(finetuning),这有助于一定程度地提升收敛速度。
关于Temporal Feature Pooling这一部分的理解还不够深入;文章中提到尝试采用max pooling和average pooling两种方法进行实现;此外还特别指出采用了caffe中的Eltwise layer来进行时空特征池化操作;然而对于temporal维度的具体含义及其为何相较于其他视频处理方法更具优势的部分仍缺乏深入理解。
至于loss函数部分,则已知常见的triplet loss的目标在于使同类样本之间的距离小于异类样本之间的距离;具体而言:

L = \max( \|f(a) - f(p)\|^2 - \|f(a) - f(n)\|^2 + margin, 0 )

这里写图片描述

但是作者认为如果随机构建一个三元组(即任意选取同一类别中的两个输入以及不同类别的一个输入)。绝大多数这样的三元组本来就会满足该损失函数的要求。因此导致无法收敛。为了提高模型的效果,则需要从整个数据集中筛选出与这两个正样本距离最远的那个负样本。将这两个正样本以及选出的那个最远的负样本组合成一个三元组,并在此基础上计算损失值。这样新的损失函数表达式就建立起来了。

这里写图片描述

然而上述损失函数是非光滑的,这将导致模型在训练过程中难以达到全局最优状态,并可能陷入局部极小值。从而促使我们对损失函数进行更深入的优化以确保其光滑性。

这里写图片描述

为了使该损失函数更适合应用于back propagation算法的需求,在研究过程中对原始方法进行了两项主要改进:首先,在计算损失时采用了欧氏距离替代汉明距离;其次,在参数设置上将离散取值0和1转换为连续取值在0到1之间的数值。

这里写图片描述

全部评论 (0)

还没有任何评论哟~