【论文阅读】APDrawingGAN:利用分层GAN从面部照片生成艺术人像

2023-10-27

在这里插入图片描述
(a)艺术家使用稀疏的线条和很少的阴影区域绘制肖像画,以捕捉给定面部照片的独特外观;
(b)我们的APDrawingGAN学习了这种艺术绘画风格,并自动将面部照片转换为高质量的艺术肖像绘画;
(c)使用相同的输入人脸照片,六种最先进的样式转换方法无法生成所需的艺术图形,或多或少效果不是很好,细节方面不太好。

Abstract

首先,现有的的GAN技术无法生成产生高质量的艺术肖像画,因为肖像画的某些细节,比如线条等难以捕捉。艺术家的绘画可能没有与图像特征完美对齐的线条,因此开发了一种新的损失来测量基于距离变换的生成绘画和艺术家绘画之间的相似性,从而改善了人像绘制中的笔画。文章提出了APDrawingGAN,这是一种基于GAN的新型架构,它基于分层生成器和鉴别器,将全局网络(用于整个图像)和局部网络(用于单个面部区域)相结合。这允许针对不同的面部特征学习专用绘图策略。总之,提出了一个层次化的GAN模型,可以有效地将人脸照片生成高质量、富有表现力的艺术肖像线条画。不仅如此,我们的方法对黑白线条分明的复杂发型绘制有更好的效果。为了学习不同面部区域的不同绘制风格,我们的模型将GAN的渲染输出分为不同层次,每个层次被独立的损失项控制。

Introduction

训练一个计算机程序来模拟艺术家创作高质量的艺术画是目前一个非常迫切的需求。随着深度学习的发展,卷积神经网络常用来进行神经风格迁移。后来,出现了许多基于GAN的风格迁移方法。比如使用成对训练集的Pix2Pix,和使用不成对训练集的CycleGAN都取得了不错的效果。但是这些方法都存在一个问题那就是生成的图像质量比较低,笔画比较杂乱。

艺术肖像画(APDrawings)的风格与先前工作中研究的肖像画风格有很大不同,主要是由于以下五个方面。

  • 首先,APDrawing样式是高度抽象的,包含少量的稀疏但连续的图形元素;
  • 其次,与一般样式转换相比,APDrawing样式转换具有更强的语义约束。特别是面部特征不应丢失或移位;
  • 第三,APDrawings中的渲染在不同的面部部位(例如,眼睛与头发)之间不一致;
  • 第四,艺术家未精确定位APDrawings中的元素(例如面部轮廓),这对基于像素对应的方法提出了挑战。意思就是训练集中艺术家画出来的肖像画与原图像不是完全对应的;
  • 最后,艺术家在APDrawings中放置与人的视图或照片中的低级特征没有直接关系的线条。例如,即使图像中没有不连续点,头发上的线条也可以指示出流向,或者线条可以指示出面部特征。因为这些元素很难通过学习得到。

为了解决上述挑战,我们提出了APDrawingGAN,这是一种新颖的Hierarchical GAN架构,专门用于面部结构和APDrawing样式,用于将面部照片转换为高质量的APDrawings(图1b)。为了有效地学习不同面部区域的不同绘画风格,我们的GAN体系结构涉及多个专用于面部特征区域的局部网络,以及一个用于捕获整体特征的全局网络。为了进一步应对基于线条笔画的样式和艺术家图纸中位置不精确的元素,我们提出了一种新颖的距离变换(DT)损失,以学习APDrawings中的笔画线。

这篇文章工作的主要贡献有三方面:

  • 我们提出了一种用于从人脸照片合成艺术肖像画的Hierarchical GAN体系结构,可以生成高质量且富有表现力的艺术肖像画。 尤其是,我们的方法可以学习具有精致白线的复杂发型;
  • 为了最好地模仿艺术家,我们的模型将GAN的渲染输出分为多个图层,每个图层均由单独的损失函数控制。 我们还提出了针对APDrawing的损失函数,包括新颖的DT损失(以在APDrawings中促进基于线描的样式)和局部损失(用于局部网络以保留面部特征)。
  • 我们使用从十个面部数据集中收集的 6655 张正面面部照片对模型进行预训练,并构建适合训练和测试的APDrawing数据集(包含140张高分辨率面部照片和专业画家的相应肖像画)。

Related Work

  • 利用深度网络的风格迁移:MRF(马尔可夫随机场),Deep Image Analogy(精致的像素级别的风格转换)等。上述方法对APDrawing的风格转移效果不太好,并且大多数现有方法要求样式图像(style image)靠近内容图像(content image)。如下图所示:
    在这里插入图片描述

  • 肖像的非真实感渲染
    所有这些方法都使用类似的纹理合成方法,使它们不适合APDrawing样式。

  • 基于GAN的图像合成
    Pix2Pix和CycleGAN都不能很好地用于APDrawing样式,通常会产生模糊或混乱的结果,如最开始的各种方法比较的图片所示。

APDrawingGAN

概述

我们对面部照片转换为APDrawings的过程进行建模,该函数将面部照片域 P P P映射到基于黑白线条的APDrawing域 A A A。由于我们的模型基于GAN,因此对判别器D进行了训练,以最大程度地为正确的APDrawings a i ∈ A ai∈A aiA和合成图形 G ( p i ) G(pi) G(pi) p i ∈ P pi∈P piP分配正确的标签(Real or Fake),并且同时对 G G G进行了训练以最大程度地降低这种可能性 。

我们最后提出了一个针对艺术肖像画的损失函数,它包含四个损失项:对抗损失、像素级损失、一种新的距离变换(DT)损失(用于学习艺术肖像画中的线条笔画)和一个局部变换损失(用于引导局部网络保持面部特征)。
总的损失函数:
在这里插入图片描述

网络结构

在这里插入图片描述
与标准GAN架构不同,我们在此提出了针对生成器和判别器的分层结构,每个结构都包含一个全局网络和六个局部网络。六个局部网络对应于左眼,右眼,鼻子,嘴巴,头发和背景的局部面部区域。 此外,生成器还有一个附加的融合网络,可以根据全局和局部网络的输出来合成艺术作品。 这种分层结构背后的原因是,在肖像绘画中,艺术家对面部的不同部分采用了不同的绘画技术。例如,通常会为眼睛绘制精细的细节,而为头发绘制的曲线通常会跟随头发的流动,但并不精确对应于图像。 由于单个CNN在图像的所有位置共享filter,并且很难对多个绘图特征进行编码/解码,因此具有多个CNN的分层全局和局部网络的设计可以帮助模型更好地学习不同位置的面部特征。

生成器Generator

包含一个global net和六个local nets。其中,六个local nets对应于左眼,右眼,鼻子,嘴巴,头发和背景的局部面部区域。最后将Iglobal和Ilocal通过Fusion net融合成output。我们使用U-Net结构设计Generator。

使用这种等级结构的原因是在肖像绘画中艺术家对脸部的不同部分采用不同的绘画技术。例如,通常为眼睛绘制精细细节,并且为头发绘制的曲线通常遵循头发的流动。单个CNN在所有位置上共享过滤器。图像并且很难编码/解码多个绘图功能,具有多个CNN的分层全局和局部网络的设计可以帮助模型更好地学习不同位置的面部特征。

具有跳过连接的U-Net可以合并多尺度功能,并提供足够的(但不是过度的)灵活性来学习艺术家在APDrawings中针对不同面部区域的绘画技术。

融合过程中,通过在重叠区域使用最小池化。这种最小化池可以有效地保留来自各个local net的响应。

Gglobal是一个U-Net,具有八个下采样层和八个上采样层,用于处理人脸的全局结构。Gfusion由一个平坦的卷积块,两个残差块和一个最终的卷积层组成。

在许多以前的GAN模型中,通常会在生成网络中输入或添加一些噪声。 我们没有在G中显式添加噪声,而是在U-Net块中使用dropout作为噪声。

判别器Discriminator

判别器D用来区分输入的绘图是否是真实画家的肖像画。Dglobal会检查整个图像以判断整体APDrawing功能,而Dl∗中的局部判别器会检查不同的局部区域以评估细节的质量。
                                                          D = D g l o b a l , D l ∗ D = {Dglobal,Dl∗} D=Dglobal,Dl
                                D l ∗ = D l e y e l , D l e y e r , D l n o s e , D l m o u t h , D l h a i r , D l b g Dl∗ = {Dl eye l,Dl eye r,Dl nose,Dl mouth,Dl hair,Dl bg} Dl=Dleyel,Dleyer,Dlnose,Dlmouth,Dlhair,Dlbg

利用Pix2Pix中的the Markovian discriminator。Pix2Pix的the Markovian discriminator输入图像中的70×70个patch并检查每个patch的样式。而APDrawingGAN的the Markovian discriminator输入的是the whole drawings or different local regions(鼻子,眼睛等)的每个patch。

损失函数

  • 对抗损失 Adversarial loss:Ladv用来表示判别器D正确区分 real 和 fake 的能力。
    在这里插入图片描述

  • 像素级 Pixel-wise loss:LL1让生成的图片更加接近输入的真实的图片
    在这里插入图片描述
    实验表明 L 1 l o s s L1loss L1loss L 2 l o s s L2loss L2loss生成的图片更加清晰。

  • Line-promoting distance transform loss:LDT用于更好地学习APDrawings中的笔画线条。

针对艺术肖像线条画中的线条笔画风格,提出了一个全新的距离变换(DT)损失。前面提到,在艺术家的肖像画中,线条和原图有时不是精确对应的,会有微小的错位,主要的原因有两个:
(1)艺术家裸眼观察,面部特征的轮廓有时无法被完全精准地定位
(2)艺术家添加的线条有时是概念性的,不与原图完全对应(如头发区域中的白线)。
因此仅使用L1损失是不足以应对这种情况的——L1损失会惩罚即使是很微小的错位,但是对于较大的错位并不会更敏感。于是我们提出一种新的损失来容忍这种细微的错位,而惩罚过大的错位。我们提出的这个DT损失是基于距离的,它计算的是艺术家肖像画(Ground truth)中每个线条上的像素到生成肖像画中相同类型(黑或白)的最近像素的距离之和,和生成肖像画到艺术家肖像画的距离之和的总和。DT损失对于微小的错位的惩罚是非常小的,但会真正惩罚那些过大的错位。我们使用了距离变换和倒角匹配(chamfer matching)来计算这个损失,公式如下:
在这里插入图片描述
在这里插入图片描述
其中 x 1 x1 x1 x 2 x2 x2表示两幅肖像画,lDT和I*DT表示距离变换,θb和θw分别表示黑白线条检测器(训练两个CNNs来检测),Pi和ai分别表示人脸照片和对应的艺术家肖像画。

  • Local transfer loss:Llocal让生成的六个部位图片更加接近输入的真实的六个部位的图片
    在这里插入图片描述

训练网络

通过预训练进行初始化

由于训练集中的数据是有限的,仅有140对图像,因此作者使用6655张人脸照片和非真实感渲染算法生成的结果进行了预训练(10个epochs)。之后将一个包含140对高质量正面人脸照片和对应艺术肖像画的APDrawing数据集,用于正式的训练和测试。由于NPR生成的绘图(与艺术家的绘图不同)与照片准确对齐,因此不使用LDT损失。
在这里插入图片描述

正式训练

我们将APDrawing数据集划分为70个图像对的训练集和70个图像对的测试集。 然后我们将小角度旋转(-10°~10°)和缩放(1〜1.1)的数据增强应用于训练集。

效果

在这里插入图片描述
在这里插入图片描述

总结

在本文中,作者提出了APDrawingGAN,一种用于将面部照片转换为APDrawing的分层GAN模型,致力于人脸转化为APDrawing风格。尽管我们的方法可以学习带有细腻白线的复杂发型,但是在头发和嘴唇区域,结果仍然不如画家的画作干净。 我们计划在以后的工作中解决这些问题。

论文地址

APDrawingGAN: Generating Artistic Portrait Drawings
from Face Photos with Hierarchical GANs

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【论文阅读】APDrawingGAN:利用分层GAN从面部照片生成艺术人像 的相关文章

随机推荐

  • java编写定时器,定时执行某个方法

    第一步 编写测试类 该类extends TimerTask 重新run 方法 run方法里面就是你要执行的逻辑代码 示例如下 import java text SimpleDateFormat import java util Date i
  • Python如何调用js函数?

    Python如何调用SDK的js函数 一 概述 二 环境准备 三 调用方法 步骤 四 Demo演示基础版 五 常见问题 六 深入了解 待更新 七 参考资料 一 概述 测试web前端 前端SDK web渗透流程等时 难免会需要调用前端js里面
  • 【Linux】浏览器写代码!部署code-server远程vscode网页

    部署code server远程vscode网页 在浏览器上写代码 参考文档 https developer aliyun com article 876967 slide 7 本文首发于 慕雪的寒舍 1 什么是code server 注意
  • 奔跑吧恐龙----基于JavaSwing的一个跑酷游戏

    1 游戏功能 随机出现障碍物 人物可以通过向上跳进行避免 游戏结束后出现分数 对难度进行一定的控制 当分数 gt 1000时难度升级 当分数 gt 4000时 难度再进行升级 并存在音乐播放功能 2 具体实现 2 1 model 1 Din
  • C++基于TCP/IP简单的客户端、服务器通信程序实例

    本篇文章实现了一个基于TCP 的一个非常简单的客户 服务器通信程序实例 该程序中通讯协议使用的是面向连接的TCP协议SOCK STREAM 服务器的ip地址为本地地址即 127 0 0 1 端口号为自定义的5099 大于1024即可 服务端
  • springBoot入门(快速搭建一个springBoot项目)

    目录 一 SpringBoot介绍 1 定义 2 springBoot简化的配置 3 应用打包 二 springBoot项目搭建 1 新建一个spring initializr项目 2 点击下一步 3 之后一个springBoot项目就构建
  • 好用的插件分享

    检查无用代码 Android studio gt 设置 gt Plugins gt 搜索PMD 安装QAPlug PMD 安装完成后重启Android studio
  • STM32--舵机(SG90)

    文章目录 一 介绍 二 工作原理 三 舵机的控制 四 设计流程 五 代码实现 六 舵机工程代码 七 备注 舵机 一 介绍 舵机是一种位置 角度 伺服的驱动器 适用于那些需要角度不断变化并可以保持的控制系统 目前在高档遥控玩具 如航模 包括飞
  • GitHub下载速度慢?找“马云”啊,干货帖

    大名鼎鼎的GitHub大家想必都知道 毕竟我这个无所事事的小白都知道 用多了GitHub的人应该对下面这种情况非常熟悉 当然 有的时候是不会下载失败的 还是会有个10k 8k的 注意我这里说的可不是工资 但是对于一个突然醒悟要好好学习的程序
  • Python编码问题总结

    问题一 当python中间处理非ASCII编码时 经常会出现如下错误 UnicodeDecodeError ascii codec can t decode byte 0x in position 1 ordinal not in rang
  • js对象方法Object.assign( )详解

    1 基本用法 Object assign方法用于对象的合并 将源对象 source 的所有可枚举属性 复制到目标对象 target var target a 1 var source1 b 2 var source2 c 3 Object
  • neo4j--Cypher查询调优与执行计划

    1 查询调优 1 1查询如何执行 Cypher执行引擎会将每个Cypher查询都转为一个执行计划 在执行查询时 执行计划将告知Neo4j执行什么样的操作 1 2查询性能分析 查看执行计划对查询进行分析时有两个Cypher语句可用 1 2 1
  • 关系型数据库和非关系型数据库类比

    1 关系型数据库 关系型数据库 是指采用了关系模型来组织数据的数据库 关系模型是在1970年由IBM的研究员E F Codd博士首先提出的 在之后的几十年中 关系模型的概念得到了充分的发展并逐渐成为主流数据库结构的主流模型 简单来说 关系模
  • win10 WMDC安装

    解决方案 WMDC in Windows 10 junipersys com 参考连接 Previous WMDC fixes for Windows 10 junipersys com amd64 https junipersys com
  • linux中把程序启到前台,Linux程序前台后台切换

    1 在Linux终端运行命令的时候 在命令末尾加上 符号 就可以让程序在后台运行 root Ubuntu tcpserv01 2 如果程序正在前台运行 可以使用 Ctrl z 选项把程序暂停 然后用 bg number 命令把这个程序放到后
  • 知乎爬虫经验教程

    为了完成课程论文研究 暑假写了关于知乎的爬虫 把用户主页 回答中能爬到的数据全都爬下来了 接下来 把我踩过的坑跟大家分享 希望大家少走一些弯路 1 导入一些必要的python包 其中会包括我们接下来要使用的函数 import re impo
  • 疯壳AI人脸及语音识别教程2-8WIFI-TCP网络通信

    详情地址 https fengke club GeekMart views offline ai 购买链接 https fengke club GeekMart su fKw7Nb7oC jsp 视频地址 https fengke club
  • iOS 开发中的争议(二)UI到底应该用xib/storyboard完成,还是用手写代码来完成?

    文章来源 http www devtang com blog 2015 03 22 ios dev controversy 2 参考文章 关于代码手写UI xib和StoryBoard http blog csdn net likendsl
  • 用Sutherland-Hodgman算法实现裁剪任意凸多边形

    一 实验目的 用Sutherland Hodgman算法实现裁剪任意凸多边形 二 实验工具 VC6 0 三 实验步骤 思想 每次用窗口的一条边界以及其延长线来裁剪多边形 裁剪得到的多边形的顶点由两部分组成 落在可见一侧的原多边形顶点 多边形
  • 【论文阅读】APDrawingGAN:利用分层GAN从面部照片生成艺术人像

    APDrawingGAN Abstract Introduction Related Work APDrawingGAN 概述 网络结构 生成器Generator 判别器Discriminator 损失函数 训练网络 通过预训练进行初始化