PAPER

2017.04.15 Up

Posted by piqcy

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

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

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

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

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

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

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

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

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

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

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

tensorflow/magenta/models/sketch_rnn/

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

arXiv(2017.04.11公開)

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.

TAG