打倒PaintsChainer★
おうちで始めるDCGAN…
2017/02/16
Developers Summit 2017
十字静@超未来工房
今回のネタ
今話題のAI自動彩色を
おうちでやってみた
こんなあなたに聞いてほしい♥
‖ PaintsChainerを見てすごいと思った
‖ AIの使いみちを知りたい
‖ DeepLearningさわってみたいけどきっかけがない
1
自己紹介
‖ 十字 静/Sei, TOAZA
‖ 角川でラノベとか書いてる
‖ 技術系同人サークル「超未来工房」
あしたDevBooksで頒布します!
2
AI自動彩色ソフト「PaintsChainer」
PCへの入力
‖ 線画
‖ 色ヒント
3
‖ 入力画像
‖ AIが自動で彩色してくれる!
‖ 出力画像
PaintsChainerと、うちのAIさん
PCで作った画像
‖ 学習データ600,000枚
‖ 500まんえんのGPUサーバ
‖ 学習データ1024枚
‖ 3まんえんのAzure Instance
4
‖ PaintsChainer ‖ うちのAIさん
PaintsChainerと、うちのAIさん
PCで作った画像
‖ 学習データ600,000枚
‖ 500まんえんのGPUサーバ
‖ 学習データ1024枚
‖ .3まんえんのAzure Instance
5
‖ PaintsChainer
うちのAIで作った画像
‖ うちのAIさん
PaintsChainerと、うちのAIさん
PCで作った画像
‖ 学習データ600,000枚
‖ 500まんえんのGPUサーバ
6
‖ PaintsChainer
うちのAIで作った画像
‖ うちのAIさん
‖ 学習データ1024枚
‖ .3まんえんのAzure Instance
で、どうやってやったのさ?
Deep Convolusional Generative
Adversarial Network
DCGAN
DCGAN :Deep Convolutional Generative Adversarial Network
Data Set
入力画像 偽のペア
• True Pair
• Fake Pair
入力画像
Generator Discriminator
7
探偵犯人
騙す!
見破る!
Generatorの使いみち
出力画像入力画像
Generator
コナンくん絶対騙すマン
‖ 線画+色ヒント ‖ 着色画像
‖ テーマ ‖ 詩
‖ コード進行 ‖ 楽曲
8
‖ 風景写真 ‖ 新海誠風の背景 取組中!
‖ 棒人間 ‖ 線画 C92予定
入力と出力のペアさえあれば、人間の創造性を学習できる
苦労話
結局、データセットが
問題なのよね
‖ OpenCVで完成画像から線画と色ヒントを作る→挫折
• ある線が「色の境界」なのか「影の境界」なのかを判定できず、学習に失敗
‖ ならば完成画像から鉛筆画と色ヒントを作る→挫折
• 学習はうまくいったものの、そもそも鉛筆画を描けるだけの技量がない
‖ 最終的に線画to鉛筆画&鉛筆画to着色の2段階で学習→成功
‖ 結論: 教師データセットをうまく作ることが成功のコツ
9
ちなみに
ヒントなしの着色精度は
お察しください……
PaintsChainerで作った画像 うちのAIで作った画像
‖ PaintsChainer ‖ うちのAIさん
×
Special THX!
たいやま
@tai2an
やっぱりPaintsChainerには
勝てなかったよ……
打倒 PaintsChainer  おうちで始めるDCGAN

打倒 PaintsChainer おうちで始めるDCGAN

Editor's Notes

  • #5 今話題のPaintsChainerは、人工知能を使ってイラストに色をつけるソフトです。 こんな風に線画と色ヒントを入力として与えると (クリック) 人工知能が自動的に彩色をしてくれます。 このPaintsChainerをおうちでやってみようというのが今回のネタです。
  • #6 さて、このPaintsChainer、60万枚の画像と500万円のサーバーを使って動いています。 僕のおうちは500万円ポンッと払えるほどお金持ちではないので、工夫をして学習を行いました。 その結果がこちらです。 (クリック) まぁ悪くない結果なんじゃないかなーと思います。 問題はどれだけ時間とお金がかかったかです。うちのAIさん、たった1024枚の画像と3万円のAzureインスタンスで動いてます。
  • #7 1024枚の画像と、3万円のインスタンス!
  • #8 1024枚の画像と、3万円のインスタンス!!
  • #9 いいじゃんいいじゃん! で、これどうやってやったの? という話で出てくるのが
  • #10 Deep Convolusional Generative Adversarial Network DCGANというアルゴリズムです。
  • #11 DCGANの概略はこんな感じです。 (タメ) ……これだと解りづらいようなので、たとえ話でご説明します。 Discriminatorがコナンくんで、Generatorが犯人です。 DCGANが学習するデータセットには、あらかじめ入力画像と出力画像のペアが入っています。 (クリック) 犯人はペアを持たない1枚の画像を持ってきて、そこから偽のペアを作り、こっそりデータセットに忍び込ませます。 偽のペアがコナンくんを騙せれば犯人の勝ち、偽のペアを見破ることができればコナンくんの勝ち。 (クリック) このゲームを繰り返すことで、コナンくんと犯人は推理力と偽装力を上げていきます。
  • #12 80000回ほどコナンくんを連載すると、Generatorは「コナンくん絶対騙すマン」に進化します。 たとえば線画と色ヒントから着色画像を作る、 風景画像から新海誠風の背景を作る、 棒人間を書いたら線画にしてくれる、 なんてこともできるようになります。 あるいはテーマを設定すると、そのテーマに沿った詩を書いてくれたり コード進行を入力すると、そのコードに会うメロディを作ってくれるように学習することも可能です。 入力と出力のペアさえ用意すれば、DCGANはそれを学習することができるのです。
  • #13 データセットさえあれば。……そう、けっきょくデータセットが一番大変なんです。
  • #14 今回作成したAIはChainerを用いて実装し、Azureインスタンス上で学習を行いました。 またPaintsChainer作者のtaizanさんからは、作成した画像の使用をこころよく許可いただきました。 今発表の機会をいただいた翔泳社の方々と会わせ、この場を借りて御礼申し上げます。ありがとうございました。