当前位置: 首页 > 科技观察

使用机器学习为卡通着色

时间:2023-03-20 14:47:16 科技观察

我们可以自动应用简单的配色方案而无需手绘数百个训练数据示例吗?监督机器学习的一大问题是你需要大量数据来分类,尤其是如果你没有这些数据——即使这是一个大数据的世界,我们大多数人仍然没有大数据数据——这真的是现在的一个大问题。尽管少数公司可以访问某些类型的大量分类数据,但对于大多数组织和应用程序来说,创建足够多的正确类型的分类数据成本太高,几乎不可能。在某些时候,这个领域仍然是一个没有太多数据的领域(例如,当我们诊断一种罕见疾病时,或者判断一个数据是否与我们已知的小样本相匹配)。其他时候,通过AmazonTurkers或暑期工作手动分类我们需要的数据成本太高。对于一部电影长度的视频,成本会迅速增加,甚至每帧一美分,因为每一帧都必须进行分类。大数据需求的一个大问题我们团队目前正计划解决一个问题:我们能否在没有数百或数千手绘训练数据的情况下,训练一个模型自动为黑白像素图像提供简单的配色?计划。在这个实验中(我们称这个实验为龙画),面对深度学习对分类数据的巨大需求,我们采用了如下的方法:针对小数据集的快速增长使用基于规则的策略。借用tensorflow图像转换的模型,Pix2Pix框架,在训练数据非常有限的情况下实现自动卡通渲染。我看过Pix2Pix框架,这是一篇论文(Isola等人的“使用条件对抗网络的图像到图像翻译”)中描述的机器学习图像翻译模型,假设A是景观B的灰度版本,经过训练AB对,给风景画上色。我的问题和这个类似,唯一的问题是训练数据。我需要的训练数据是非常有限的,因为我不想为了训练这个模型而花一辈子的时间去画画着色来给它提供五颜六色的图片。深度学习模型需要数千(或数百)个训练数据。以Pix2Pix为例,我们至少需要400到1000对黑白、彩色数据。你问我愿意画多少?也许只有30。我画了少量的卡通花和卡通龙,然后去看看能不能塞进数据集。80%解决方案:ColorbyComponentsColorBlackandWhitePixelsbyComponentRules当面对训练数据不足的时候,第一个要问的问题是,有没有好的非机器学习的方法来解决我们的问题如果没有完整的解决方案对于这个问题,有没有部分解决方案,这个部分解决方案对我们有好处吗?我们真的需要一种机器学习方法来给花和龙上色吗?或者我们可以指定着色的几何规则吗?如何按组件着色现在有一种非机器学习方法可以解决我的问题。我可以告诉孩子我想如何给我的图画上色:把花的中心涂成橙色,把花瓣涂成黄色,把龙的身体涂成橙色,把尖刺涂成黄色。起初,这似乎没有帮助,因为我们的计算机不知道什么是中心,什么是花瓣,什么是身体,什么是尖刺。但事实证明,我们可以根据连接的组件来定义花和龙的部分,然后得到一个几何解决方案来为我们的绘画着色80%,虽然80%还不够,我们可以使用策略违规变换,参数和机器学会引导部分基于规则的解决方案达到100%。连接的组件使用来自WindowsPaint(或类似应用程序)的颜色,例如,当我们为二进制黑白图像着色时,如果单击白色像素,白色像素将变为新颜色。同样规则的卡通龙或花的素描中,最大的白色部分是背景,次大的部分是身体(加上胳膊和腿)或花的中心,其余部分是尖刺和花瓣,除了龙眼,可以通过离背景的远近来区分。使用策略规则和Pix2Pix达到100%我的一些草图不遵循规则,粗心画的线可能会留下空隙,后肢可能会出现颜色尖刺,中间的小雏菊会被调换花瓣的着色规则和中心。对于我们不能用几何规则着色的20%,我们需要其他方法来处理,我们转向Pix2Pix模型,它至少需要400到1000个草图/颜色对作为数据集(在Pix2Pix论文中最小的数据集),其中包括违反规则的示例。因此,对于每个违反规则的示例,我们最终通过手绘(如后肢)或选择一些符合规则的草图/颜色对来打破规则。我们删除A中的一些线,或者我们再变换一些,中心花A和B使用相同的函数(f)创建一对新的f(A)和f(B),一个小的中心花,可以是添加到数据集。使用几何变换增强数据集是计算机视觉中的常见做法。例如旋转、平移和缩放。但是,如果我们需要将向日葵变成雏菊或将龙的鼻子变成球和穗状花序怎么办?或者如果我们只需要大量增加数据量而不考虑过度拟合怎么办?然后我们需要一个比我们开始时大10到30倍的数据集。向日葵通过r->r立方体的方式变成雏菊高斯滤波器增强了单位圆盘的一些同胚性,做出漂亮的雏菊(像r->r立方体,高斯滤波器可以改变龙的鼻子。这两者都对数据集的快速增长很有用,产生的大量数据正是我们所需要的。但是他们也会开始以一种不能仿射变换的方式改变画风。之前我们考虑过如何自动设计一个简单的配色方案,上面提出了一个问题:什么定义了艺术家的风格,无论是外部观察者还是艺术家自己?他们什么时候确定了自己的绘画风格?他们不可能没有算法画自己?工具、助手和合作者之间有什么区别?我们能走多远?我们能画多低?保持在可识别的主题和风格内,我们可以在gi范围内创造多少变化和复杂性艺术家?我们需要做什么才能完成长颈鹿、龙和鲜花的无限游行?如果我们有一个,我们可以用它做什么?这些都是我们将在后面的工作中继续探讨的问题。但就目前而言,规则、增强和Pix2Pix模型有效。我们可以很好地给花上色,我们可以给龙上色也不错。结果:通过在花朵上训练模型来为花朵着色。结果:Dragon模型训练的训练结果。要了解更多信息,请参加GretchenGreene在PyConCleveland2018上的演讲DragonPaint–bootstrappingsmalldatatocolorcartoons。