📄

絵を「描く」プロセスの模倣 – A Neural Representation of Sketch Drawings

Entry
絵を「描く」プロセスの模倣 – A Neural Representation of Sketch Drawings
Simple Title
絵を「描く」プロセスの模倣 – A Neural Representation of Sketch Drawings
Description
絵を「描く」プロセスの模倣 – A Neural Representation of Sketch Drawings
Type
Paper
Year
2017
Posted at
April 15, 2017
Tags
image
image

Overview

私達がペンを持って絵を描くとき、それは様々な軌跡の線(ストローク)で表現されます。そして、書き上げられた絵は実際の写真とは異なるものの、非常によく対象の特徴(ネコのひげ、人の顔、車の形など・・・)を捉えています。

image

Abstract

We present sketch-rnn, a recurrent neural network (RNN) able to construct stroke-based drawings of common objects. The model is trained on thousands of crude human-drawn images representing hundreds of classes. We outline a framework for conditional and unconditional sketch generation, and describe new robust training methods for generating coherent sketch drawings in a vector format.

Motivation

このプロセスを、機械学習により再現できないかという試みが、表題の「A Neural Representation of Sketch Drawings」となります。これは、GANなどのピクセル単位の画像(ラスタライズ画像)を生成するのとは異なり、ストローク単位の画像(ベクター画像)を生成するという点で、既存の画像生成とはアプローチが大きく異なります。

その手法の中核となるのは、ストロークを生んでいる「ペンの状態」に着目し、その状態遷移を学習させるというアイデアです。

Architecture

論文では、ペンの状態を以下のようにモデル化しています。

image

Quick, Draw!というAIに何を書いているか当てさせるゲームから収集したストロークのデータを、この「ペンの状態」のリストに変換して学習データとしています。

「ペンの状態」の遷移を学習するのに利用しているのが、下記のようなモデルです。Encoder-Decoderモデルに、Variational Auto Encoder(VAE)を組み合わせた形となります(sketch-rnnと名付けられています)。

image

EncoderはBi-directionalなRNNとなっていて、これで「ペンの状態」の遷移(=ストローク)の情報をエンコードします。Decoderでは、まずこのエンコードされた情報(h)から潜在構造を表現する分布のパラメーターを推定します(これはVAEの仕組みと同様です)。その分布の出力(z)から、「ペンの状態」を表すためのそれぞれの分布(ペンの動き(Δx, Δy)はGaussian Mixture Model (GMM) 、ペンの状態(p1, p2, p3)はカテゴリカル分布)のパラメーターをさらに推定します。この推定を順々に繰り返していくのがDecoderの動きになります。

Results

学習させたモデルで生成した結果は、以下のようになっています(トップの画像とは別の例をピックアップしました)。

image

このほか、論文中ではイラストのアナロジーにも挑戦しています。このほかの実験でも、モデルがイラストの潜在的な特徴をよくとらえていることが示唆されています。

image

Further Thoughts

このsketch-rnnの実装、そして学習に利用したデータセットは公開を企画しているとのことです⇒公開されました!以下から入手可能です。

学習に利用したQuick, Draw!のデータセット、また追加の学習用データセット(漢字や羊、象形文字の描画データなどが提供されています)も公開されています。是非試してみてください!

Links