人脸生成 Look across Elapse: Disentangled Representation Learning and Photorealistic Cross-Age Face

Look across Elapse: Disentangled Representation Learning and Photorealistic Cross-Age Face Synthesis for Age-Invariant Face Recognition

Motivation

现有的跨年龄识别技术可以分为两种:

  • 直接提取与年龄无关的特征进行识别
  • 生成某个年龄的人脸,后进行匹配
    作者认为这两个任务一起进行比较合适,可以互相利用信息。

Contribution

主要提出人脸不变模型Age-Invariant Model (AIM)

  • AIM是一个新的架构,可以同时用于跨年龄生成与人脸识别
  • AIM可以实现连续的年龄变化,同时保留身份
  • AIM可以分离出于年龄不变的特征表示

Approach

根据之前的研究,人脸实际上可以分为跟年龄有关的成分和与身份有关的成分。AIM将学习跟年龄无关的特征,然后添加人脸年龄属性进行对应合成,从而保证基于不变年龄的合成。
AIM是基于GAN,由RLN 年龄不变特征学习模块,FSN 面部合成模块两部分组成。

Representation Learning sub-Net(RLN)

这个模块主要就是要将同一身份不同年龄投影到相同的特征空间,解纠缠年龄与身份的关系。它由一个生成器及鉴别器组成,使用对抗学习增加约束生成的特征。
首先定义模块提取特征:
在这里插入图片描述
在这里插入图片描述
G θ E G_{\theta _{E}} GθE是一个生成器(编码器),由9个损失组合而成。

  • 跨年龄域对抗损失 L c a d L_{cad} Lcad
    在这里插入图片描述
    使用迁移学习的方法,使得学习到的域自适应,这使得特征不受域(年龄)的影响,哪怕某个域样本有限关系不大。

  • 交叉熵正则损失 L c e r L_{cer} Lcer
    如果单独使用 L c a d L_{cad} Lcad,可能生成的流形局部最优,并不具有模糊可分性,由此引入 L c e r L_{cer} Lcer,这个地方没怎么看明白。
    在这里插入图片描述

  • f均匀分布对抗损失 L a d v 1 L_{adv1} Ladv1
    在这里插入图片描述
    加入一个先验分布,使得f的流形是没有空洞的,也就是平滑过渡的。
    在这里插入图片描述

  • 身份一致性损失 L i p L_{ip} Lip
    在这里插入图片描述

Face Synthesis sub-Net (FSN)

这个部分就是生成某个身份指定年龄的人脸:
在这里插入图片描述
c c c:代表年龄编码
x x x:输出人脸
也是使用对抗学习的方式,生成器为 G θ D G_{\theta _D} GθD,损失为:
在这里插入图片描述

  • 图像真实性及伪影损失 L a d v 2 L_{adv2} Ladv2
    在这里插入图片描述
    C i , j C_{i,j} Ci,j :转换 f i f_i fi到年龄段 j j j的年龄编码
    常见的对抗损失,保证生成的图片是真实的

  • 年龄估计损失
    在这里插入图片描述
    保证图片符合理想变化效果,老化/年轻

  • 流形一致性损失
    在这里插入图片描述

  • 尖峰伪影损失
    在这里插入图片描述

  • 注意力损失 L a t t L_{att} Latt
    在这里插入图片描述

Discussion

个人总结本文的主要贡献在于结合特征提取与人脸生成的多任务框架AIM,包括其中涉及的几个损失函数,如域自适应、身份一致、年龄趋势等,很好地结合了先验知识进行设计。
但是文章细节部分有些没有讲清,比如标签平滑那个地方,着实没看明白,有机会再补充吧。

References

Zhao, J., Cheng, Y., Cheng, Y., Yang, Y., Lan, H., Zhao, F., Xiong, L., Xu, Y., Li, J., Pranata, S., Shen, S., Xing, J., Liu, H., Yan, S., & Feng, J. (2018). Look across elapse: Disentangled representation learning and photorealistic cross-age face synthesis for age-invariant face recognition. ArXiv.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
将下面这段代码改用python写出来: clear all; close all; fdir = '../dataset/iso/saii/'; %Reconstruction parameters depth_start = 710; depth_end = 720; depth_step = 1; pitch = 12; sensor_sizex = 24; focal_length = 8; lens_x = 4; lens_y = 4; %% import elemental image infile=[fdir '11.bmp']; outfile=[fdir, 'EIRC/']; mkdir(outfile); original_ei=uint8(imread(infile)); [v,h,d]=size(original_ei); %eny = v/lens_y; enx = h/lens_x; % Calculate real focal length %f_ratio=36/sensor_sizex; sensor_sizey = sensor_sizex * (v/h); %focal_length = focal_length*f_ratio; EI = zeros(v, h, d, lens_x * lens_y,'uint8'); for y = 1:lens_y for x = 1:lens_x temp=imread([fdir num2str(y),num2str(x),'.bmp']); EI(:, :, :, x + (y-1) * lens_y) = temp; end end %Reconstruction [EIy, EIx, Color] = size(EI(:,:,:,1)); %% EI_VCR time=[]; for Zr = depth_start:depth_step:depth_end tic; Shx = 8*round((EIx*pitch*focal_length)/(sensor_sizex*Zr)); Shy = 8*round((EIy*pitch*focal_length)/(sensor_sizey*Zr)); Img = (double(zeros(EIy+(lens_y-1)*Shy,EIx+(lens_x-1)*Shx, Color))); Intensity = (uint16(zeros(EIy+(lens_y-1)*Shy,EIx+(lens_x-1)*Shx, Color))); for y=1:lens_y for x=1:lens_x Img((y-1)*Shy+1:(y-1)*Shy+EIy,(x-1)*Shx+1:(x-1)*Shx+EIx,:) = Img((y-1)*Shy+1:(y-1)*Shy+EIy,(x-1)*Shx+1:(x-1)*Shx+EIx,:) + im2double(EI(:,:,:,x+(y-1)*lens_y)); Intensity((y-1)*Shy+1:(y-1)*Shy+EIy,(x-1)*Shx+1:(x-1)*Shx+EIx,:) = Intensity((y-1)*Shy+1:(y-1)*Shy+EIy,(x-1)*Shx+1:(x-1)*Shx+EIx,:) + uint16(ones(EIy,EIx,Color)); end end elapse=toc time=[time elapse]; display(['--------------- Z = ', num2str(Zr), ' is processed ---------------']); Fname = sprintf('EIRC/%dmm.png',Zr); imwrite(Img./double(Intensity), [fdir Fname]); end csvwrite([fdir 'EIRC/time.csv'],time);
07-11
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值