分享了一篇2020CVPR录用论文:DeepFaceSuper-ResolutionwithIterativeCollaborationbetweenAttentiveRecoveryandLandmarkEstimation,提出了一种基于迭代合作的人脸超分辨率算法。该方法将16x16的低分辨率图像超分辨率到128x128,在CelebA和Helen数据集上的PSNR指标分别达到27.37和26.69,超越了目前已有的人脸超分辨率算法。目前代码已经开源:https://github.com/Maclory/Deep-Iterative-Collaboration(目前有72星)作者信息:作者来自清华大学自动化学院,智能技术国家重点实验室与系统,北京信息科学技术国家研究中心和清华大学深圳国际研究生院。01Motivation在以往的一些人脸超分辨率算法中,通常会引入面部关键点等人脸先验信息(facialprior)来辅助网络生成更逼真的超分辨率图像。然而,这些方法存在两个问题:通过低分辨率图像LR或粗糙的超分辨率图像SR获得的人脸先验信息不一定准确。大多数方法使用人脸先验作为简单的连接操作,不能充分利用。先验信息为了解决以上两个问题,作者提出了一种基于迭代协作的人脸超分辨率算法DIC。为了让生成的图片更加逼真,还给出了网络的GAN版本:DICGAN。02方法从网络结构图可以看出,为了解决先验网络无法从粗略的SR中获取到准确先验信息的问题,作者设计了一个反馈迭代网络,使得制作出来的超分辨率图片更接近到真实的图片,更逼真的图片可以通过先验网络提取更准确的先验信息,再次提高图片的质量。下图展示了这种迭代机制的优势。随着迭代次数的增加,关键点预测越来越准确,生成图像的质量也越来越好。作者也通过实验证明,当迭代次数超过3次时,网络性能的提升是有限的。另一方面,为了充分利用人脸的先验信息,作者提出了一个AttentiveFusion模块,如下图所示:可以看出作者使用了人脸关键点输出的featuremap预测网络(网络结构图中的FaceAlignment模块)分为五组:LeftEye、RightEye、Mouth、Nose和FaceProfile。然后通过softmax将各组的featuremap相加得到各个注意力矩阵(Attentionmatrix)。用这5个attentionmatrices对网络中5个branch的featuremaps进行reweight,相加得到融合特征。那么作者是如何判断关键点预测网络输出的featuremap哪些通道是左眼,哪些通道是右眼呢?从作者开源的代码可以看出,这些通道是人为指定的,比如指定第32到41通道是左眼的关键点。ifheatmap.size(1)==5:returnheatmap.detach()ifdetachelseheatmapelifheatmap.size(1)==68:new_heatmap=torch.zeros_like(heatmap[:,:5])new_heatmap[:,0]=heatmap[:,36:42].sum(1)#lefteyenew_heatmap[:,1]=heatmap[:,42:48].sum(1)#righteyenew_heatmap[:,2]=heatmap[:,27:36].sum(1)#nosenew_heatmap[:,3]=heatmap[:,48:68].sum(1)#mousenew_heatmap[:,4]=heatmap[:,:27].sum(1)#facesilhouettereturnnew_heatmap.detach()ifdetachelsenew_heatmapelifheatmap。大小(1)==194:#Helennew_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)#lefteyetmp_id=torch.cat((torch.arange(114,133),torch.arange(154,173)))new_heatmap[:,1]=heatmap[:,tmp_id]。sum(1)#righteyetmp_id=torch.arange(41,57)new_heatmap[:,2]=heatmap[:,tmp_id].sum(1)#nosetmp_id=torch.arange(58,113)new_heatmap[:,3]=heatmap[:,tmp_id].sum(1)#mousetmp_id=torch.arange(0,40)new_heatmap[:,4]=heatmap[:,tmp_id].sum(1)#facesilhouettereturnnew_heatmap.detach()ifdetachelsenew_heatmapelse:raiseNotImplementedError('Fusionforfacelandmarknumber%dnotimplemented!'%heatmap.size(1))以上是本文的两个核心创新点,在了解了整个网络运行的原理后,网络的损失函数为非常容易理解:03Result下图是DIC/DICGAN与其他方法的结果对比:可以看出DIC/DICGAN生成的图片还原更多细节,更真实。由于DICGAN是基于GAN的方法,与基于PSNR的FSRNet方法相比,指标略低,但生成的图像更逼真。这也是当前超分辨率任务中的一个问题:基于GAN的方法生成的图像具有更好的视觉质量,但PSNR指标较低。04资源论文链接:https://arxiv.org/pdf/2003.13063.pdf项目链接:https://github.com/Maclory/Deep-Iterative-Collaboration
