前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >人脸超分辨率,基于迭代合作的方法

人脸超分辨率,基于迭代合作的方法

作者头像
CV君
发布2021-01-25 10:38:25
5590
发布2021-01-25 10:38:25
举报
文章被收录于专栏:我爱计算机视觉

分享一篇 2020CVPR 录用论文:Deep Face Super-Resolution with Iterative Collaboration between Attentive Recovery and Landmark Estimation,其提出了一种基于迭代合作的人脸超分辨算法。

该方法将 16x16 的低分辨率图片超分辨率为 128x128,在 CelebA 和 Helen数据集上的 PSNR 指标分别达到了 27.37 和 26.69,超过了当前已有的人脸超分辨率算法。

目前代码已经开源:

https://github.com/Maclory/Deep-Iterative-Collaboration

(目前已有72星标)

论文作者信息:

作者来自清华大学自动化学院、智能技术与系统国家重点实验室、北京信息科学与技术国家研究中心和清华大学深圳国际研究生院。

01

Motivation

在以往的一些人脸超分辨率算法中,人脸先验信息(facial prior)如面部关键点通常被引入,用于辅助网络生成更加真实的超分辨率图像。但是这些方法存在两个问题:

  • 通过低分辨率图片LR或者粗超分辨率图片SR得到的人脸先验信息不一定准确
  • 大部分方法使用人脸先验的方式为简单的 concatenate 操作,不能充分利用先验信息

为了解决上述的两个问题,作者提出了一个基于迭代合作的人脸超分辨率算法DIC,为了让生成的图片更加真实,也给出了该网络的 GAN 版本:DICGAN

02

Method

从网络结构图可以看出,为了解决先验网络不能从 coarse SR 中得到准确的先验信息,作者设计了一个反馈迭代网络,,使得生产的超分辨率图片越来越趋近于真实图片,而更加真实的图片通过先验网络可以提取更加准确的先验信息以再次提升图片的质量。

下图展示了该迭代的机制的优势,随着迭代次数的增加,关键点预测的也越来越准确,生成的图像质量也越来越好。作者也通过实验证明了,当迭代次数超过 3次时,网络性能的提升有限。

另一方面,为了充分利用人脸先验信息,作者提出了一个 Attentive Fusion 模块如下图所示:

可以看出,作者将面部关键点预测网络(网络结构图中的 Face Alignment 模块)输出的特征图分成五组:左眼、右眼、嘴、鼻子和面部轮廓。再将每个组的特征图通过 softmax 后相加得到每个注意力矩阵(Attention matrix)。

用这 5 个注意力矩阵分别去 reweight 网络中的五个分支的 feature maps,再加在一起得到融合特征。那么作者如何确定关键点预测网络输出的特征图那几个channel 是左眼,哪些 channel 是右眼呢?从作者开源的代码中可以看出,这些 channel 是人为指定的,如规定第 32 到第 41 个通道是左眼的关键点。

代码语言:javascript
复制
if heatmap.size(1) == 5:
    return heatmap.detach() if detach else heatmap
elif heatmap.size(1) == 68:
    new_heatmap = torch.zeros_like(heatmap[:, :5])
    new_heatmap[:, 0] = heatmap[:, 36:42].sum(1) # left eye
    new_heatmap[:, 1] = heatmap[:, 42:48].sum(1) # right eye
    new_heatmap[:, 2] = heatmap[:, 27:36].sum(1) # nose
    new_heatmap[:, 3] = heatmap[:, 48:68].sum(1) # mouse
    new_heatmap[:, 4] = heatmap[:, :27].sum(1) # face silhouette
    return new_heatmap.detach() if detach else new_heatmap
elif heatmap.size(1) == 194: # Helen
    new_heatmap = torch.zeros_like(heatmap[:, :5])
    tmp_id = torch.cat((torch.arange(134, 153), torch.arange(174, 193)))
    new_heatmap[:, 0] = heatmap[:, tmp_id].sum(1) # left eye
    tmp_id = torch.cat((torch.arange(114, 133), torch.arange(154, 173)))
    new_heatmap[:, 1] = heatmap[:, tmp_id].sum(1) # right eye
    tmp_id = torch.arange(41, 57)
    new_heatmap[:, 2] = heatmap[:, tmp_id].sum(1) # nose
    tmp_id = torch.arange(58, 113)
    new_heatmap[:, 3] = heatmap[:, tmp_id].sum(1) # mouse
    tmp_id = torch.arange(0, 40)
    new_heatmap[:, 4] = heatmap[:, tmp_id].sum(1) # face silhouette
    return new_heatmap.detach() if detach else new_heatmap
else:
    raise NotImplementedError('Fusion for face landmark number %d not implemented!' % heatmap.size(1))

以上就是本篇论文最为核心的两个创新点。了解了整个网络运行的原理之后,网络的损失函数就很好理解了:

\begin{aligned} \mathcal{L}^{\text {Pixel }} &=\mathbb{E}\left[\frac{1}{N} \sum_{n=1}^{N}\left\|I^{H R}-I_{n}^{S R}\right\|_{2}^{2}\right] \\ \mathcal{L}^{\text {Align }} &=\mathbb{E}\left[\frac{1}{N} \sum_{n=1}^{N}\left\|L^{H R}-L_{n}\right\|_{2}^{2}\right] \end{aligned}

该网络的损失函数主要由两个部分组成,一个生成图片的重构损失 ,另一个是面部关键点预测网络的损失 。其中 N 代表网络的迭代次数,也就是说重构误差和关键点误差是每轮迭代的误差之和。两个误差的计算方式都是基于 pixel-wise 的。

此外,作者引入了一个预训练的人脸识别模型 LightCNN 用于求取感知损失:

\mathcal{L}^{P e r c}=\mathbb{E}\left\|\phi\left(I^{S R}\right)-\phi\left(I^{H R}\right)\right\|_{1}

加入一个简单的判别器,就能得到 DICGAN,其对抗误差为:

\mathcal{L}^{\text {Dis }}=-\mathbb{E}\left[\log \left(D\left(I^{H R}\right)\right)\right]-\mathbb{E}\left[\log \left(1-D\left(G\left(I^{L R}\right)\right)\right)\right] \\ \mathcal{L}^{A d v}=-\mathbb{E}\left[\log \left(D\left(G\left(I^{L R}\right)\right)\right)\right]

最后 DICGAN 的总 loss 为:

\begin{aligned} \mathcal{L}^{G}=& \mathcal{L}^{\text {Pixel }}+\lambda^{A d v} \cdot \mathcal{L}^{A d v} \\ &+\lambda^{\text {Perc }} \cdot \mathcal{L}^{\text {Perc }}+\beta^{\text {Align }} \cdot \mathcal{L}^{\text {Align }} \end{aligned}

\lambda^{adv}=0,\lambda^{Perc}=0

时就是 DIC 的损失函数了。

03

Result

下图为 DIC/DICGAN 与其他方法的结果对比图:

可以看出 DIC/DICGAN 生成的图片恢复了更多的细节,更加真实。由于DICGAN 是基于 GAN 的方法,相较于基于 PSNR 方法的 FSRNet,指标略低,但是生成的图像更加真实。这也是当前超分辨率任务中存在的一个问题:基于 GAN 的方法生成的图像视觉质量更好,但是 PSNR 指标低。

04

Resource

  • 论文链接: https://arxiv.org/pdf/2003.13063.pdf
  • 项目链接: https://github.com/Maclory/Deep-Iterative-Collaboration
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-01-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 我爱计算机视觉 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
人脸识别
腾讯云神图·人脸识别(Face Recognition)基于腾讯优图强大的面部分析技术,提供包括人脸检测与分析、比对、搜索、验证、五官定位、活体检测等多种功能,为开发者和企业提供高性能高可用的人脸识别服务。 可应用于在线娱乐、在线身份认证等多种应用场景,充分满足各行业客户的人脸属性识别及用户身份确认等需求。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档