【元記事をASCII.jpで読む】

機械学習を用いて線画に自動着色する「PaintsChainer」。その精度の高さに多くの絵描きが驚嘆し、そして魅了されている。正解のない自動着色という分野に挑んだPreferred Networks(PFN)の米辻泰山氏、PaintsChainerをお絵描きサービスに取り込んだピクシブの清水智雄氏、古賀和樹氏、川田寛氏、そして機械学習のための高火力コンピューティングを提供したさくらインターネットの須藤武文氏に話を聞いた。(インタビュー:アスキー編集部 大谷イビサ 以下、敬称略)

AdventCalenderネタからサービス化した「PaintsChainer」

大谷:PaintsChainer使ってみましたが、なんだかすごいの声しか出ないですね。イラスト描き志望のうちの娘の線画を登録してみましたが、着色だけはいきなりプロ並みになって大喜びです。まずは開発に至るまでの経緯を教えてください。

米辻:PFNから一昨年のChainerのAdventCalenderで、DCGANというニューラルネットを使って、顔イラストを自動生成するという記事が上がっていたんです。私はPFNに入る前にその記事を読んでいましたが、「64×64ピクセルでなんとなく顔っぽく見える」くらいまでできるなら、次は着色も行けるんじゃないかなと漠然と考えていました。ここらへんがきっかけですかね。

その後、縁あってロボットのエンジニアとしてPFNに入社し、半年くらいロボットに専念した後、ディープラーニングを勉強しようと思ってAdventCalendarで試作したのがPaintsChainerです。画像分類のサンプルプログラムだけじゃ面白くないので、具体的な問題として線画を着色するということにチャレンジしました。もともと弊社には前述した記事を書くようなビジョン系の研究エンジニアもいましたので、周りの方にろいろ教えてもらって、線画を登録したら自動着色してくれるサービスができました。

大谷:ブログでの「すげええ!!」がブレイクのきっかけなんですよね。

米辻:そうなんです。12月に公開したブログが非常に好評だったことから、2017年1月からサービスとして公開しています。僕も、今ではほぼPaintsChainer専任でやらせてもらっています。

PaintsChainerの自動着色は「答えをでっち上げる」に近い

大谷:そもそもこれってどうやって自動着色しているんでしょうか? 私のような非エンジニアに対して説明してもらえますか?

米辻:たとえば白黒写真の自動着色はPaintsChainer以前からあるのですが、これはどちらかというと正解がわかっているクラシフィケーション(分類)の問題なんです。白黒なら当てるのは残りの2チャンネルでいいし、正解が見たければ、写真や自然物を見ればいい。でも、線画の自動着色となると相当難しい。髪であれば写真なら黒、金、白くらいでいいのですが、イラストの場合は極論どんな色でもいい。だから、「正解がない」とすら言えるんです。

大谷:確かにそうですよね。髪の色が赤でも、青でも、自分のイメージ通りだったら、ユーザーはうれしいです。

米辻:だから、色の推測よりも、むしろ画像生成なんです。答えを当てるのではなく、答えをでっち上げるに近い。そのため、正解に属するグループと偽物に属するグループを見分けられるようにネットワークをトレーニングさせ、違和感を感じないモノに仕上げる感じです。人間もいったん色を塗ってみて、違和感を感じたら、また塗り直して仕上げるので、似たような作業をやっていると思うんです。

大谷:「この色は許容するけど、これは違和感を感じる」という色やタッチを学習させているというイメージでしょうかね。

米辻:学習に際してはある程度ヒントを反映するとか、変な画像を出さないとか、ベタ(塗りつぶし)のある画像など、完全な線画でないような入力でもある程度差異を吸収するといったことはしますが、実は明確なルールはほとんど設けていません。だから、ポケモンをいっぱい捕まえてきて、個体値を厳選するみたいな地道な作業です(笑)。

大谷:昨年以来、エンジンは進化しているのでしょうか?

米辻:まずは初期モデルとして「たんぽぽ」というモノを作りました。5月にピクシブさんと共同で「さつき」を発表し、10月には新たに「かんな」をリリースしています。

初期モデルのたんぽぽは、似たような色でぼかす傾向にあります。金髪と肌色は似た色なので、そこに近い色を塗って、減点を避けます。とりあえずベースは黄色塗っておいて、ほかの場所は差し色を入れておくみたいな気持ちなのかなと推測します(笑)。

大谷:気持ち(笑)。

米辻:イラストの初心者もとりあえずぼかすという方は多いのですが、たんぽぽもそんな傾向。いまだにたんぽぽのふわっとした彩色が好きというユーザーさんも多いです。

大谷:たんぽぽは、後から出てきたさつきやかんなと、どこが違うのでしょうか?

米辻:たんぽぽとさつきはモデルの構造や使っているデータがいっしょで、トレーニングの過程だけが違います。パラメータだけ違うので兄弟みたいです。一方、かんなはモデル自体がほかの2つと異なり、性能がいいはずです。まあ、着色で言う性能ってなんだよという話ですが(笑)。

大谷:確かに。正解がないところに、自問自答しながらやっているんですね。

米辻:性能というより、性格が違うという感じですかね。たとえば、かんなは線が入っていないところにハイライト入れられるのですが、どこでも入れて良いわけじゃない。

とはいえ、今は性能とは違う領域に来ています。学校の教育のように正解かどうか○×付けるのではなく、エンジニアが数値的に善し悪しを判断するのでもなく、むしろデザインやセルフブランディングの世界。「私はこのスタイルで行くから、ちゃんと着いてきてね」みたいな感じです。

当初はWebサーバーもGPUサーバー上にあった

大谷:で、このPaintsChainerの計算リソースを支えるのが、さくらの高火力コンピューティングなんですよね。

米辻:はい。もともとPFNは、さくらの高火力コンピューティングを使用していたので、PaintsChainerのデモでもさくらの高火力コンピューティングを借りて使用しました。PaintsChinerはとにかく最初のバズりがすごくて、1サーバー4GPUではまったく追いつかず、結局、5台並べて20GPUでやっていました。

当初は複数台を前提としてなかったので、ラウンドロビンも適当。Webサーバーのホスティングもさくらの高火力コンピューティングでした(笑)。

大谷:GPUサーバーでWebサイトとはなんと贅沢! 急作り感がすごいですね。

米辻:データベースや認証という概念もなく、単にローカルにファイルが保存されているだけなので、あわててデータベース化して、Webサービス化しました。しかも研究用途なので、ネットワークも細くて、帯域が足りなくなるんです。そこでさくらインターネットさんに泣きついて、帯域を増やしてもらいました。

大谷:確かに画像がバンバン飛んでくるわけですから、帯域細いと厳しいですね。

須藤:高火力コンピューティングって、基本計算リソースなので、インターネットと通信したりしないんです。その点、PaintsChainerは一番インターネットと通信したサーバーになるのではないかと(笑)。

大谷:処理的には、たんぽぽ、さつき、かんなで違うんですか?

米辻:かんなはモデル自体が大きくなっているので、計算量がだいぶ増えてますね。その代わり、瞳とかにも自動で着色してくれたりします。

自動着色機能なんて一過性のブームだと思っていた

大谷:続いてPaintsChainerの自動着色機能を取り込んでいる「pixiv Sketch」のチームの3人です。さっそくpixiv Sketchについて教えてください。

清水:はい。われわれは「pixiv」というイラストSNSをやっていますが、より手軽に投稿できる場所として「pixiv Sketch」というサービスも展開しています。pixiv Sketch自体にお絵描き機能を持っているのですが、基本的にはどんなイラストでも投稿できます。そんな中、PaintsChainerで着色した作品が増えてきたのです。それでpixiv SketchにPaintsChainerの機能を追加したいと思い、API連携をさせてもらいサービスに取り込みました。

大谷:ピクシブとしては、PaintsChainerはどんなイメージだったんですか?

古賀:自分自身はpixiv Sketchのディレクターでありながら、pixiv Sketchを使ってイラスト描くユーザーでもあるので、最初にPaintsChainerを使ったときは「お絵かきの未来がきたー!!」って感じでした(笑)。

今でも自動着色をヘビーに利用していますし、新しい着色モデルが出るたびに、その動きに驚かされます。以前、米辻さんが「着色モデルの構築は、アーティストを育てている感じ」という表現をされていたのですが、非常にしっくりきたことを覚えています。

大谷:ピクシブさんって昔からイラスト描く人に目を向けたサービス作ってますよね。

古賀:うちの会社は、技術だけでなくプロダクトとしての完成度を重視しており、「結局、ユーザーがそれやってどこが楽しくて、使ってくれるのか?」という所まで、きちんと落としてプロダクトを作っています。その点、PaintsChainerは単純に技術だけじゃなくて、プロダクトとして非常に優れていると思います。

大谷:リードエンジニアの清水さんはどうですか?

清水:なにより、色塗りの次元を超えてます。絵を描いてくれている感じです。私は技術寄りの人間なので、「機械学習やディープラーニングを活用したら、イラストってここまで自動でできるんだー」という納得感はあったし、公開されてからのPaintsChainerのバズりぶりも知ってました。でも、そのときは一過性のブームだと思ったんです。

大谷:なるほど。自動着色のニーズがあまりないと感じたわけですね。

清水:イラスト描く人にとって、着色ってものすごく重要な部分。クリエイティビティを発露できる場面でもあるんです。ですから、多少試す人はいるかもしれないけど、自分の作品に使うユーザーなんて、そんなに多くないと思っていました。でも、PaintsChainerがリリースされて時間が経っても、多くのユーザーさんが使っているのを見て、「これはもしや新たな可能性なのでは?」と感じました。

大谷:というと?

清水:着色は確かに重要な要素なんですが、その分、めちゃくちゃ難しいんです。そして、一番時間もかかります。実際、pixiv Sketch LIVE(ライブ配信)でお絵かきを見ていても、線画より着色に多くの時間を費やしているし、着色で脱落するユーザーも多いと思います。自分の思っているとおりに塗れないとか、塗りきれなくて完成しないので、絵を描くこと自体をあきらめてしまうんです。

大谷:なんだか完成しないガンプラと同じですね。そうなると、クリエイティビティの発露以前の、楽しくない作業になってしまいますよね。

清水:そうなんです。でも、PaintsChainerが着色してくれることによって、とりあえずイラストが完成する。人に見せてもいい状態に持って行ける。ここにすごい可能性を感じたんです。

川田:もともとコンピューターって、専門性が必要なところを一気にジャンプさせてくれる役割があるじゃないですか。イラストの世界も同じですよね。紙ではなく、デジタルを使うのは、書き損じてもやり直しができるから。紙の上では描くのが難しいまっすぐな線だって、デジタルだったら簡単に描ける。Photoshopの絆創膏ツールだって、なかったらレタッチが相当大変ですよね。初めてPaintsChainer使ったときも、着色で必要なテクや知識をスキップさせてくれる技術なんだなと感じました。

大谷:イラスト描く人を理解しているピクシブさんらしい考え方ですね。うちの娘も確かに着色のところで挫折しているので、考え方がすばらしいです。

清水:なにより、気軽にお絵描きを楽しもうというpixiv Sketchのコンセプトにすごいマッチするので、なんとしてでもPaintsChainerの機能を取り込みたいと思いました。

教科書の端に描いた落書きが作品に

大谷:とはいえ、この2社はどうやってつながったんでしょうか?

古賀:同時期に、トップベースと現場ベースとやりとりがあったと記憶してます。現場としては、pixiv Sketchで投稿された中で、PaintsChainerで着色された作品が増えてきたという実態が先にありました。

清水:そこで現場も盛り上がって、米辻さんに会いに行きました。それが今年(2017年)の2月ですね。

大谷:具体的にはどう連携しているのですか?

清水:API経由ですね。自動着色する画像ファイルをPFNさんに送って、さくらの高火力コンピューティングで演算して、着色したものをPixiv Sketchで表示しています。Web版だけではなく、AndroidやiOS版のアプリからも利用できます。

川田:pixiv Sketchはお絵描きの敷居をいかに下げるかが大きなテーマなので、PaintsChainerのような技術はいち早く取り入れたいと思っていました。だから、すごくいい出会いでした。

大谷:ちなみに現状、ユーザーさんはどんな感じで使っているのですか? PCやタブレットで線画を作って、それに色を付けるようなイメージ?

清水:pixiv Sketchがメインにしている中高生とかは完全にスマートフォンですね。タブレットは少数です。

米辻:PaintsChainerユーザーの場合、紙に描いたものを撮影して、自動着色します。間にイラストアプリとかが入らない新しいフローだと思います。だから、教科書やノートの端に描いた落書きを着色しているパターンも多いですね(笑)。

清水:僕らのpixiv Sketchはそれくらいの気軽さで絵を描いて、投稿してもらいたいというコンセプト。最初は落書きですが、人に見てもらうと向上心が沸くじゃないですか。そういうのが沸くと、本格的に絵を描こうと思うし、そこのステップを用意できたというのがすごくよかったです。ユーザーさんのニーズにも合ってます。

米辻:PaintsChinerでおおまかな色を載せて、そこから細かいところを修正するという方もいます。その意味では、すでにイラスト初心者のショートカットツールというだけではないです。

清水:これ以上描かないイラストを「供養」する場合に、PaintsChainerを使う方も多いですね。せめて着色まで終わらせて、供養したいみたいなニーズがあるみたいです。

川田:PaintsChainerを見てると、今までのお絵描きツールってローカルPCでできることしかやってこなかったんだなとつくづく思います。GPUがしこたま積んであるサーバーにアクセスしてOKなんだったら、いろいろなことできるんだなあと思います……と、さくらさん的にいいコメントしておきました(笑)。

GPUの物量勝負だけじゃなく、総合力も必要になる

大谷:最近のアップデートや今後の可能性についてお話しいただきたいと思います。

米辻:PaintsChainer本体にはリアルタイムプレビューの機能が付きましたね。ヒントを与えるだけで、ダイナミックに着色が変わります。イメージしたものに近づけるために、トライ&エラーするのに便利です。期待値とずれないものができます。計算量は増えたのですが、一時期のバズりが落ち着いてきたので、やってみました。

古賀:リアルタイムプレビュー機能は、非常に素晴らしい機能です。pixiv Sketchにも早く入れたいのですが、確かに計算量がすごそうですね。とはいえ、GPUは「一度使うとやめられない」依存症になると聞きます(笑)。わかりやすい機能ではないですが、処理時間が速いということは、ユーザーエクスペリエンスに大きな影響を与えるので。

米辻:最近は弊社でもGPUを並列処理できる「ChainerMN」を展開していて、いろいろなお客様で使ってもらっています。確かに昔はGPUを1枚使って学習結果が出るまで1週間待っていられたんですけど、最近はあるならあるだけ頂戴という話になりますね(笑)。

先ほどのリアルタイムプレビューも、究極はマウスオーバーするたびに着色が変わるというやり方です。でも、ローカルである程度処理回すならともかく、ネットワーク経由でやるとさすがに死にます。ヒント1つ与えるのと、マウスムーブだとやりとりも二桁くらい違うので。

古賀:いやいや、一度やってみてもいいんじゃないですか?だって、現実世界では、絵の具も筆からたれるわけだし(笑)。

大谷:人ごとだと思ってますよね(笑)。

須藤:そこまで来るとGPUというより、総合力の世界ですね。PaintsChainerをきっかけにうちで検討を始めたのはインファレンスに最適化したインスタンスです。高火力のインスタンスって学習にかなり比重を置いているのですが、学習させないでひたすらモデルだけを回すインファレンス用途があってもよいのかなと。

米辻:あとGPUのオートスケーリングですかね。AWSやAzureでGPUのオートスケールを使うと、コスト的にちょっと厳しい。とはいえ、今のさくらさんだと1枚ずつセットアップしなければならないので、いい知見にはなりましたが、しんどいのも事実です。

大谷:最後は今後の展開についてお聞かせください。

米辻:プロの方にも使っていただけるよう処理精度や解像度を高めるという方向性はありますし、線画を自動生成するというのも案としてはあります。ただ、レイヤー機能を付けてほしいといった要望まで進めると、PhotoshopをWeb上で作るみたいな話になるので、悩みどころです。PaintsChainerはサービス指向ではありますけど、あくまでPFNのプレゼンスを上げる役割なので。

大谷:とはいえ、PFNを知らなくても、PaintsChinerは知っているみたいな人もいそうですけどね。ピクシブさんはどんな方向性でしょうか?

清水:とにかくお絵かきを簡単に楽しんでもらうのが軸なので、そこはずらさないように、PaintsChinerの進化について行きたいと思います。

機械学習で線画を自動着色する「PaintsChainer」の楽しすぎる未来