AI现在能教你画画了
丰色 发自 凹非寺
量子位 报道 | 公众号 QbitAI
画画新手们,如何才能画出一副像样的手绘肖像?
除了假以时日的练习,或许也可以借助下面这款工具!
首先,你只需画出人脸轮廓图,例如下面这样:
然后,计算机就能向你提示肖像整体结构的线条,供你参考:
接着,再给出人脸细节的提示线条:
最终,你就能画出这样一幅作品了:
是不是比新手徒手一张白纸要强很多?
两步引导教你画肖像
这款工具叫做dualFace。
它之所以能辅助绘画新手和普通用户画出像样的肖像画,是因为可以根据你的初始线条给出人像全局框架和局部细节的素描线条。
你只需照着它来,没有经过绘画培训的“手残党”也可以完成!
在全局引导阶段,dualFace根据你绘制的大概轮廓,就能从内部数据库中搜索出若干相关人像,并在画布背景上显示建议的人脸轮廓线。
在局部引导阶段,dualFace利用全局指导绘制的轮廓线,用深度生成模型合成人脸图像,然后将合成结果的细节(眼睛、鼻子、嘴等)作为辅助线条给出来。
请注意,在全局阶段,人像是数据库中真实的人像。而局部阶段,是合成的虚拟人像。
为什么两阶段不用同一种人像呢?
这样做是为了让计算机给出的指导更具多样性!毕竟数据库里的人都是有限的,使用生成模型可以在细节区分出更多的肖像。
另外dualFace具有切换功能,用户可以选择最合理的局部指导;
如果用户认为局部指导不符合他们的想象,也可以通过点击按钮来使绘制过程返回到全局阶段。
下面就来说说这两个阶段具体如何操作的:
全局引导
全局引导阶段分为三步:数据生成,轮廓匹配和交互式指导。
数据生成就是把数据库中的人脸图像转换成人脸轮廓。
他们使用双向分割网络(BiSeNet)来生成人脸原图的语义标签蒙层(mask)。再从这个语义标签蒙层中提取人脸轮廓。蒙层中的每个像素(eg. 眼睛、鼻子和嘴巴)都有来自原图的面部标签ID(为了方便后面的搜索)。
另外,轮廓图像与相应的原始人脸图像一起存储。
轮廓匹配步骤,通过计算用户画的轮廓与数据库中存储的轮廓图像的相似度,得到最接近的轮廓图像。使用了GALIF(Gabor Local Line-based Feature, 基于局部线条的Gabor特征描述符)进行草图检索和局部形状匹配。
交互式指导步骤根据用户不断更新的笔划实时检索出最相似的“候选对象”,并将其转换成阴影图。
局部引导
提供了整体结构图后,系统就开始提供细节线条了。
局部引导阶段包括两个步骤:蒙层(mask)生成和肖像草图生成。
蒙层生成步骤,利用全局阶段中的用户所绘,和在全局阶段-数据生成部分生成的数据库人脸蒙层,系统可以生成最终蒙层,如下图。
肖像草图生成步骤,采用MaskGAN生成与上一阶段匹配的“真人”肖像,并采用APdrawingGAN将肖像图转为素描图。
其中,由于这两个生成模型是独立训练的,为了连接它俩,该步骤还使用梯度提升决策树(GBDT)来计算人脸标志点,并将合并后的蒙层转换成二进制背景轮廓。
此阶段可以生成多幅详细的人像素描,用户可以选择最需要的一个作为后续绘制的参考。且用户一开始画的轮廓图不全也没关系,缺少的部分可以通过“笔划—蒙层映射优化”自动完成。
以上就是两个阶段引导的具体实现过程。
接下来,他们进行了用户研究,以定性的方式验证该工具的效果。
无法正确识别抽象的输入
dualFace是在windows10平台上用Python编写的一个实时绘图程序。
全局指导阶段,每次释放鼠标后平均需要0.36 s来检索图像,而在局部指导中每生成一幅肖像图像需要2.78 s。
下面是试验者从全局和局部以及整体使用感受上的问卷调查结果,满分5分,平均分都在3.9以上。
从整体用户体验来看,所有参与者都认为该工具可以帮助他们更好地绘制肖像。
而和其他绘图工具相比,dualFace在空间关系和面部细节的绘图评价上取得了较高的成绩,平均分分别为4.5分和4.32分。
因此,dualFace可以引导用户通过正确的面部空间关系和详细的面部特征来获得更好的肖像画,而其他绘图程序可能无法提供这些信息。
此外,下图最右显示,使用dualFace画画最短花费4分15秒,最长17分15秒,平均花费在10分钟左右。虽然用户的绘画技巧可能不同,但是花费更多时间必然会导致更好的绘图结果。
下面是试验者的画画成果:
可以看出,系统给出的指导图的水平都差不多,但最终结果还是有点受限于用户的实际画画水平的。
不过正如前面所说的,最后一组只画了眉毛和眼睛,系统也不会受到限制,也可以给出完整的指导图。
当然,他们这个方法也有局限性:抽象的草图可能无法转换为合理的人脸mask。
例如,下图中用户画的轮廓中的嘴被错误地视为了鼻子的一部分,这就导致后面一系列图的鼻子都不对劲。
这是因为人脸数据库中都是真实的照片,dualFace只能支持绘制具有真实风格的人像。所以,表情、夸张卡通造型等高层次的语义素描用它都很难实现。
作者介绍
此项目研究人员来自日本北陆先端科学技术大学院大学和东京大学。
前者是于1990年设立的研究院性质的日本国立大学,拥有多个日本重点扶持学科,科研水平比肩东大、京大,在信息科学领域的研究极其顶尖。
7名研究成员中4位为华人,其中包括论文一二作。
试玩可戳GitHub地址下载:
https://github.com/shasph/dualFace
论文地址:
https://www.arxiv-vanity.com/papers/2104.12297/
AI现在能教你画画了相关推荐
- AI教程!教你绘制扁平化风格的卡通人物肖像(四人组合篇)
编者按:今天@鱼过无声design 的教程教大家来绘制四个卡通人物头像,操作不难,但成就感满满,有很多同学已经给自己做了专属头像,木有的赶紧来试试. 系列教程:<AI教程!教你绘制扁平化风格的卡 ...
- 【趣味AI】手把手教你用AI画画
大家好,我是WintoMT.前些天在家看论文发现一篇好玩的论文,名为<Stylized Neural Painting>,文章介绍了一种算法,该算法不仅可以根据给定的图片用油画笔.水彩笔和 ...
- 神探Sherlock如何用AI破案?教你在Excel中搭建一个人脸识别CNN网络
作者 | Dave Smith 译者 | 刘畅 编辑 | 阿司匹林.Jane 出品 | AI科技大本营 [导读]人脸识别技术已经有了非常广泛的应用,国内大规模监控系统背后运用的技术就是人脸识别. 与大 ...
- 训练AI太辛苦?OpenAI新方法:不如让AI之间互教吧
Root 编译自 OpenAI 博客 量子位 出品 | 公众号 QbitAI 训练一个AI,往往需要喂大量的正确的合适的样例. 用什么样例合适?判断样例正确的标准是啥?又要多少人力来标注训练的数据? ...
- “双减”下 K12 教育集体折戟,AI 会是教培行业力挽狂澜的稻草吗?
从上世纪50年代麦卡锡首次提出"人工智能"概念,经过一甲子的发展,AI早已离开实验室和棋盘,来到我们的手机.电脑.街道.电影院.课堂上.近年来大数据的爆发和算力的释放,更是让AI研 ...
- 从“猜画小歌”背后的AI原理,教大家如何得高分
原文转载于:https://blog.csdn.net/L70AShC3Q50/article/details/81187226 作者:邵宇,清华大学计算机专业博士 近期谷歌的"猜画小歌&q ...
- 让Android程序教你画画
如果你跟我一样,那么你一定只能画一些简单得不能再简单的简笔画了.我倒不介意承认这点:我画的东西经常是歪七竖八,圆不圆扁不扁.所以我特别羡慕那些有艺术天赋的人,这种天赋要么与生俱来,要么就没有.唯一值得 ...
- Android Drawable 详解(教你画画!)
参考 1.Android中的Drawable基础与自定义Drawable 2.android中的drawable资源 3.Android开发之Shape详细解读 Drawable分类 No xml标签 ...
- 滑铁卢大学开发了一套AI工具,教泥瓦匠初学者搬砖诀窍
经验丰富的泥瓦匠通常具备老道的习惯性技巧和技术以减轻负载于身上的压力.然而,这些技巧并不总能很轻松地传授给新一批建筑工人,这批人往往面临着相对较高的受伤风险,比如扭伤筋骨.拉伤韧带和肌肉. 据美国劳工 ...
最新文章
- 中国电子学会青少年编程能力等级测试图形化四级编程题:抽奖
- Linuxmingl
- RHEL8 配置光盘源和yum源
- COP-kMeans限制性--kMeans变体算法研究
- 小白零基础学习Java开发入门教程奉上,希望对你有所帮助!
- DeepFake技术--win7下faceswap环境配置(一)(二)(三)
- hdu acm 1540
- Dell服务器启动显示Entering System Servvice To cancel.
- python 实现串口发送数据
- OpenVINO使用OpenCL内存执行,避免拷贝
- 还在手绘线划图 利用AI对大比例尺航测影像进行道路、建筑、地形...高精确提取
- 静态ip和动态ip的区别能说明什么?怎么根据区别选择?
- 阿里云物联网SDK相关文档
- python程序运行时间计时
- 网络工程师考试-操作系统原理笔记
- java随机生成标点符号_java去除空格、标点符号的方法实例
- HTML5如何实现img标签中的图片根据屏幕大小显示相应部分的内容,并保证核心内容可见
- 量子计算机天使粒子张首晟,杨振宁弟子张首晟:发现“天使粒子” 证明2=0
- 海康摄像头Linux开发与体验
- XFTP与XSHELL系统错误,缺少MSVCP110.DLL与MSVCR110.DLL解决办法
热门文章
- Java 8按属性区分
- 何时将空间编码为加号(+)或%20?
- Android使用XUtils框架上传照片(一张或多张)和文本,server接收照片和文字(无乱码)...
- 毕业论文中使用的技术—FileReader接口
- 返回键捕获 应用程序退出的两种方式(转)
- Zabbix Linux 客户端安装
- linux+tomcat+oracle_第二步
- jsp定义一个变量在html,jsp中变量及方法的声明与使用说明
- 为什么java安装卡在满格_Java面试总结(JVM)
- eclipse使用git合并_Eclipse中使用git