StrokeNet:a neural painting environment

2023-12-27 02:18

本文主要是介绍StrokeNet:a neural painting environment,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

StrokeNet

  • Abstract
  • Introduction
  • Related Work
  • StrokeNet的结构
    • Stroke的定义
    • Agent and Generator
      • Generator
      • Agent
      • Environment
  • Training Methods
    • Dataset for generator
    • Dataset for agent
    • Loss Fuction
  • Experiments
    • Single-Step StrokeNet
    • Recurrent-Step StrokeNet

Abstract

这些年来,我们已经看到了图像生成模型的巨大成功。 通过神经网络生成图像通常是基于像素的,这与人类使用画笔创建艺术品的方式根本不同。为了模仿人类绘画,需要环境和代理之间的相互作用以允许试验。但是,环境通常是非可微分,导致收敛速度慢和计算量大。

我们提出了一个新颖的模型StrokeNet,其中代理人是根据绘画环境的精心制作的神经近似来训练的。 通过这种方法,我们的代理人能够以无监督的方式学习比强化学习方法更快地写出MNIST数字等字符。

Introduction

为了学习绘图或书写,人首先在视觉上观察(编码)目标图像并使用笔或笔刷来涂抹(解码),以重建原始图像。对于有经验的画家,他或她在采取任何行动之前预见到结果,并且可以选择最佳动作。

由于中间渲染程序,基于笔划的图像生成与传统的图像生成问题完全不同。对于基于笔画的方法,不是学习生成图像,更多的是学习操纵绘画程序。解决问题的直观、有效的方法是首先使用神经网络学习从笔画数据到结果图像的映射,这类似于学习绘画经验。这种软件映射的一个优点是它提供了连续的转换。对于任何绘画程序,都是基于沿动作轨迹的坐标点计算图像的像素值。特定像素由离散像素坐标索引,也就是根据离散像素点的坐标得到特定点的像素

我们通过给出“笔画”的正式定义来进一步定义“绘图”。 在本文中,“笔画”由颜色,笔刷半径和一系列元组组成,包含沿轨迹的每个点的坐标和压力。

基于这些想法,我们训练了一个可微分的近似我们的绘画软件,我们称之为“生成器”。然后我们通过训练CNN作为代理来测试发生器,该代理将图像编码成“笔画”数据作为生成器的输入。 我们提出的架构StrokeNet基本上包括两个组件,一个生成器和一个代理。

最后使用仅在原始MNIST数据集上训练的分类器评估代理的质量,并在生成的图像上测试分类器。

Related Work

VAEs、GANs在图像生成领域取得了巨大的成功。这些模型直接生成图像到像素级,因此可以通过有效的反向传播进行训练。

为了模仿人体绘图,图形和机器学习社区都进行了尝试。 传统上,试错算法(Hertzmann,2003)被设计成通过最小化能量函数来优化笔划放置,结合启发式,例如,限制笔划的数量。最近基于深度学习的方法通常分为两类:基于RNN的方法和强化学习。

对于基于RNN的方法,如SketchRNN和Graves的RNN手写生成,它们都依赖于顺序数据集。 因此,对于不成对的数据,不能应用这些模型。对于基于强化学习的方法,这些方法训练与绘画环境交互的代理。 对于具有如此大的连续动作空间的强化学习任务,训练过程可能在计算上是昂贵的并且可能需要较长的时间才能收敛。

可微分辨渲染是计算机图形学中广泛研究的主题。 它用于解决逆渲染问题。一些可微分渲染器明确地模拟了参数和观测之间的关系,其他人使用神经网络来近似结果,因为神经网络是强大的函数逼近器。

StrokeNet的结构

Stroke的定义

我们的笔划由更少的点组成。我们认为许多轨迹点是多余的,因为笔划线可以通过具有较少锚点的样条曲线来拟合。例如,为了拟合直线,无论长度如何,仅需要两个端点。
在这里插入图片描述
对这些值进行归一化,使得坐标对应于默认的OpenGL坐标系。

Agent and Generator

在这里插入图片描述

Generator

生成器分为两个部分:

  • position encoder:把 ( x i ; y i ; p i ) (xi; yi; pi) (xi;yi;pi)编码成 64 ∗ 64 64 * 64 6464的特征图;
  • brush encoder:把颜色和半径编码成 64 ∗ 64 64 * 64 6464的特征图。

最后把两个encoder得到的特征图进行concat,送入反卷积层中进行解码。

为了保留每个点 ( x i ; y i ; p i ) (xi; yi; pi) (xi;yi;pi)的顺序和压力信息,位置编码器首先通过在该点上放置亮点将 ( x i ; y i ) (xi; yi) (xi;yi)映射到 64 ∗ 64 64 * 64 6464矩阵上的相应位置。这是通过2D高斯函数建模的,其峰值缩放(sigma)为1,这简化为:
在这里插入图片描述
对于 i 从 1 到 n 的所有点都计算一遍 64 ∗ 64 64*64 6464特征图上每个点 ( x ; y ) (x; y) (x;y)的值,最后得到16个单通道的特征图,每个特征图上都有16个点中的一个点。
在这里插入图片描述
通过乘以相应的压力 p i pi pi,现在有16个位置特征。生成器的这一部分用随机坐标单独训练,直到它产生准确可靠的信号。这一步相当于一个映射,通过将16个点的坐标映射到 64 ∗ 64 64*64 6464特征图的相应位置。
在这里插入图片描述
但是,如果我们直接将这些特征馈送到网络的(反)卷积层中,则由于单个亮度特征的稀疏性,生成器部分失效。相反,我们采用每两个相邻的特征图并将它们加在一起,最终得到15个单通道的特征图。现在,每个特征图 f i fi fi表示笔画的一部分。

通过学习连接 n − 1 n-1 n1段曲线,我们能够重建笔画。通过附加编码颜色和半径数据,我们现在具有 64 ∗ 64 ∗ n 64 * 64 * n 6464n形状的特征图。最后再将这个特征图送入反卷积层中。

Agent

代理是类似VGG的CNN,其将目标图像编码成基础笔划表示s。具有不同激活的三个并行FC解码器用于解码来自该特征的位置(tanh),压力(sigmoid)和brush data(sigmoid)。使用平均池化而不是最大池化来改善梯度流。

Environment

用于拟合锚点的的样条曲线通过所有控制点,与更常用的Bezier曲线不同。然后通过采样点进行插值,并在每个中心点周围绘制圆圈。对于圆内的每个像素,其颜色取决于各种因素,包括画笔的属性,混合算法等。
在这里插入图片描述

Training Methods

Dataset for generator

使用三体运动的方法,我们收集了大约600K图像,因为几乎没有生成成本样本。(这部分不太明白)

Dataset for agent

为了证明我们的神经环境的有效性,我们训练了一个代理人在几个流行的数据集上执行绘图任务,从字符到绘图,生成器部分被冻结。

为了证明我们的神经环境的有效性,我们训练了一个代理人在几个流行的数据集上执行绘图任务,从角色到绘图,生成器部分被冻结。

对于MNIST和Omniglot,我们训练了一个代理人在一个笔画中绘制字符。 我们后来在更复杂的数据集上训练了the recurrent StrokeNet,如QuickDraw和KanjiVG。 我们使用抗锯齿和填充将所有输入图像的大小调整为 256 ∗ 256 256*256 256256

Loss Fuction

首先,我们训练由函数pos引导的位置编码器,该函数将坐标映射到具有 l 2 l_2 l2距离的 64 ∗ 64 64 * 64 6464矩阵以测量损失。接下来,我们冻结位置编码器并训练生成器的其他部分,再次使用 l 2 l_2 l2损失来测量三体数据集的性能。可以发现,较小的批次大小可以产生更准确的图像。我们训练生成器的批次大小为64,直到损失不再增加。 然后我们将批次大小设置为32以锐化神经网络。
在这里插入图片描述
这里求和项约束相邻点之间的平均距离,其中 λ \lambda λ表示惩罚强度。如果我们丢弃这一项,那么代理就无法了解笔画中点的正确顺序,因为生成器本身对所有输入情况都不鲁棒,并且很可能对相邻点之间具有大间隙的序列产生错误的结果。简单来说就是尽可能让神经网络产生一系列有顺序的坐标点。

Experiments

Single-Step StrokeNet

可以看出,单个笔画为不同形状提供了丰富的表现力。在Omniglot数据集上,由于许多字符由多个笔划组成,而代理只能绘制一个笔划,因此代理会尝试捕获字符的轮廓。
在这里插入图片描述

Recurrent-Step StrokeNet

对于更复杂的数据集,需要多个笔画步骤。 同样,代理可以很好地捕获给定图像的轮廓。
在这里插入图片描述
github代码

这篇关于StrokeNet:a neural painting environment的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/541577

相关文章

Android Environment 获取的路径问题

1. 以获取 /System 路径为例 /*** Return root of the "system" partition holding the core Android OS.* Always present and mounted read-only.*/public static @NonNull File getRootDirectory() {return DIR_ANDR

MonoHuman: Animatable Human Neural Field from Monocular Video 翻译

MonoHuman:来自单目视频的可动画人类神经场 摘要。利用自由视图控制来动画化虚拟化身对于诸如虚拟现实和数字娱乐之类的各种应用来说是至关重要的。已有的研究试图利用神经辐射场(NeRF)的表征能力从单目视频中重建人体。最近的工作提出将变形网络移植到NeRF中,以进一步模拟人类神经场的动力学,从而动画化逼真的人类运动。然而,这种流水线要么依赖于姿态相关的表示,要么由于帧无关的优化而缺乏运动一致性

pip install pyaudio sounddevice error: externally-managed-environment

shgbitai@shgbitai-C9X299-PGF:~/pythonworkspace/ai-accompany$ pip install pyaudio sounddeviceerror: externally-managed-environment× This environment is externally managed╰─> To install Python package

Creating OpenAI Gym Environment from Map Data

题意:从地图数据创建 OpenAI Gym 环境 问题背景: I am just starting out with reinforcement learning and trying to create a custom environment with OpenAI gym. However, I am stumped with trying to create an enviro

A Comprehensive Survey on Graph Neural Networks笔记

一、摘要-Abstract 1、传统的深度学习模型主要处理欧几里得数据(如图像、文本),而图神经网络的出现和发展是为了有效处理和学习非欧几里得域(即图结构数据)的信息。 2、将GNN划分为四类:recurrent GNNs(RecGNN), convolutional GNNs,(GCN), graph autoencoders(GAE), and spatial–temporal GNNs(S

Navicat Premium上出现Cannot create oci environment错误的解决办法

因为要连接运程的Orcale数据库,由于一些原因连不上,于是我把顶栏里的工具->选项->Oic(最最下面的一个)的oci.dll给替换了,然后就一直出现Cannot create oci environment这个错误 这是由于替换的oci.dll的版本不对,于是替换了各种版本有时候也会出现这个错误 最后就是因为版本不对,先看好安装的版本然后下载一个相对应的 下载地址:http://ww

OpenSNN推文:神经网络(Neural Network)相关论文最新推荐(九月份)(一)

基于卷积神经网络的活动识别分析系统及应用 论文链接:oalib简介:  活动识别技术在智能家居、运动评估和社交等领域得到广泛应用。本文设计了一种基于卷积神经网络的活动识别分析与应用系统,通过分析基于Android搭建的前端采所集的三向加速度传感器数据,对用户的当前活动进行识别。实验表明活动识别准确率满足了应用需求。本文基于识别的活动进行卡路里消耗计算,根据用户具体的活动、时间以及体重计算出相应活

Convolutional Neural Networks for Sentence Classification论文解读

基本信息 作者Yoon Kimdoi发表时间2014期刊EMNLP网址https://doi.org/10.48550/arXiv.1408.5882 研究背景 1. What’s known 既往研究已证实 CV领域著名的CNN。 2. What’s new 创新点 将CNN应用于NLP,打破了传统NLP任务主要依赖循环神经网络(RNN)及其变体的局面。 用预训练的词向量(如word2v

Show,Attend and Tell: Neural Image Caption Generation with Visual Attention

简单的翻译阅读了一下 Abstract 受机器翻译和对象检测领域最新工作的启发,我们引入了一种基于注意力的模型,该模型可以自动学习描述图像的内容。我们描述了如何使用标准的反向传播技术,以确定性的方式训练模型,并通过最大化变分下界随机地训练模型。我们还通过可视化展示了模型如何能够自动学习将注视固定在显着对象上,同时在输出序列中生成相应的单词。我们通过三个基准数据集(Flickr9k,Flickr

Image Transformation can make Neural Networks more robust against Adversarial Examples

Image Transformation can make Neural Networks more robust against Adversarial Examples 创新点 1.旋转解决误分类 总结 可以说简单粗暴有效