文章1-Deep Learning Face Representation by Joint Identification-Verification

本文深入解析了DeepID2人脸识别算法,介绍了如何利用深度卷积神经网络提取高效的人脸特征,通过结合身份认证和样本对验证信息来减少类内差异、增加类间差异,从而在LFW数据集上达到了99.15%的准确率。

汤提出的人脸识别算法,先看了DeepID2,后续补上DeepID1和DeepFace的理解。人脸识别的主要任务还是学习有效的特征表示,能够减少同个人之间的差异(比如由姿势或者光照等引起的),并增大不同人之间的差异。这篇文章的一个主要思路就是结合身份认证信息和样本对验证信息,提取的DeepID2特征减少类内差异,增加类间差异,在LFW上准确率达到99.15%。

算法思路:

同一个人在不同姿势、光照、表情、年龄和遮挡的情况下,人脸会发生很大的不同,这种情况使得识别难度变高。人脸识别的主要目标是减少类内差异,增大类间差异。这个想法和最早的LDA,以及早期基于度量学习的人脸识别算法的基本想法如出一辙。但是基于人工设计提取的特征结合度量学习以及经典分类器的人脸识别算法,一个主要问题就是,人脸变化通常是很复杂的,高度非线性的,并且一般要在高维空间才能有所区分。传统的线性映射的特征或者是经过浅层网络提取的特征显然不够具有判别力。人脸识别就是1:N,人脸验证就是1:1比对的过程

DeepID2基于深度卷积神经网络,结合识别信号和验证信号,提取高效的人脸特征,后续结合softmax进行人脸识别或者是JointBayesian/L2Norm进行人脸验证。DeepID2使用的特征提取网络如下:

                                 

该网络结构看图很明显,有个特别的地方就是,在第三层卷积层和第四层卷积层之间,进行了局部的权重共享。卷积和池化操作为人脸图像提取了从低层次的局部特征到高层次的全局特征(对这句话不太理解!)。

另外,文章中提到,为了提取人脸的互补特征信息,对于人脸图像的不同区域以及不同分辨率进行特征提取,并整合成最后的特征表示,并进行PCA降维。在第三章提到,人脸图像对齐这个环节使用SDM[24]的算法,检测到人脸的21个关键点,根据关键点进行整体对齐。对每张人脸图像裁剪400个patch,每个patch节能在姿势、维度、颜色通道上不同或者是经过垂直翻转后形成的patch。但是为了减少冗余性,使用前向后向贪心的算法[25]对这些patch进行选择,最终只保留其中的25个patch作为数据。下面是25个patch经过特征提取后结合JointBayesian方法得到的人脸验证准确率。


DeepID2特征结合softmax以及交互熵,将人脸识别问题转成最小化交互熵损失函数:

     

DeepID2特征结合L2Norm或者是cosine相似度,将人脸验证问题转化成最小化该损失函数:



算法的整体流程比较清晰,如下:

[24] X. Xiong and F. De la Torre Frade. Supervised descent method and its applications to face
alignment. In
Proc. CVPR, 2013.
[25] T. Zhang. Adaptive forward-backward greedy algorithm for learning sparse representations.
IEEE Trans. Inf. Theor., 57:4689–4708, 2011.

### 关于深度强化学习中的状态-动作表示学习 在深度强化学习(DRL)领域,状态-动作表示学习是一个核心主题。该过程旨在使代理能够有效地从环境中提取有用特征并构建有意义的状态和动作表征。 #### 表示学习的重要性 有效的状态-动作表示对于提高策略性能至关重要。当代理能够在高维输入空间中识别出重要的模式时,可以更高效地探索环境,并更快收敛至最优解。这种能力尤其体现在视觉输入的任务上,例如游戏或机器人导航,在这些场景下原始像素数据通常作为观测的一部分[^1]。 #### 方法论概述 为了实现高质量的状态-动作表示,研究者们提出了多种方法: - **自监督预训练**:利用未标记的数据预先训练模型以捕捉潜在结构,之后再针对特定任务微调参数。 - **对比学习**:通过最大化正样本对之间的一致性和最小化负样本间的相似度来增强区分不同情境的能力。 - **基于预测的方法**:鼓励网络学会对未来事件做出准确预报,从而间接促进良好内部表达的发展。 ```python import torch.nn as nn class StateActionRepresentation(nn.Module): def __init__(self, input_dim, hidden_dims, output_dim): super(StateActionRepresentation, self).__init__() layers = [] dims = [input_dim] + hidden_dims for i in range(len(dims)-1): layers.append(nn.Linear(dims[i], dims[i+1])) layers.append(nn.ReLU()) layers.append(nn.Linear(hidden_dims[-1], output_dim)) self.model = nn.Sequential(*layers) def forward(self, x): return self.model(x) ``` 此代码片段展示了一个简单的神经网络架构用于创建状态-动作表示的例子。实际应用中可能会更加复杂,涉及卷积层或其他类型的模块取决于具体的应用需求。 #### 结合速率失真理论优化表示质量 考虑到有限的信息传递能力和存储资源,速率失真理论为理解如何平衡信息量与决策准确性提供了框架。这有助于设计更好的算法来获得既紧凑又具有表现力的状态-动作编码方案[^2]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值