709

この記事は最終更新日から5年以上が経過しています。

更新日

投稿日 2017年01月27日

線画着色webサービスPaintsChainerを公開した

http://paintschainer.preferred.tech
こちらに先月記事にした線画の着色のデモを公開しました!!
反響の大きかった皆さんに試していただけます!!(ちょっと期待値が上がり過ぎてないといいですがw)

http://qiita.com/taizan/items/cf77fd37ec3a0bef5d9d
以前の記事『初心者がchainerで線画着色してみた。わりとできた。』はこちら。
⇓そしてこちらがもじゃくっきーさんの使用例になっております。
スクリーンショット 2017-07-28 16.01.35.png

GPUを使っている関係上アクセスが集中したりすると遅くなったりサーバーが落ちたりする可能性もありますが、生暖かく見守っていただければと思います。←たくさんの方に広まったこともあって、めっちゃ重くなっています。ぐぬぬぬ

スクリーンショット 2017-01-27 14.38.28.png

画面はこんな感じっす。
線画ファイルを選択するととりあえず自動で塗ってくれます。
※ただし、現状ではgifや透過pngは対応してません。 jpgか普通のpngでお願いします

ファイル選択してしばらくすると↓みたいな感じで、線画と着色結果1段目と着色結果2段目が表示されます。1段目が大体128px 2段目が大体512pxです。

スクリーンショット 2017-01-27 17.31.20.png

次にカラーパレットから着色したい色を選んでヒントをつけていきます。
あまり彩度の高い色より、淡い色をつけたほうがなんとなくうまくいくケースが多いです。

スクリーンショット 2017-01-27 17.36.45.png

ヒントをつけたらcolorizeボタンを押せばヒントを参考に着色してくれます。
雑なヒントでうまくいく場合もありますが、細かくヒントを与えないといい感じにならないケースもあります。
コツがわかるとニューラルネットの気持ちがわかるようになってきます。

スクリーンショット 2017-01-27 17.41.06.png

画像ごとに色んなパラーメータを手動で調節すると更に上手くケースもあるのですが、今回は割愛してます。

前回はモデルだけでしたが、トレーニング、UIも含んだソースコードをgithubに上げました。
https://github.com/taizan/PaintsChainer
学習済みのモデルデータもこちらからダウンロード出来ます。
http://paintschainer.preferred.tech/downloads/

なので、GPUがあれば手軽にクローン環境を作れます。
まだまだ調教不足なところもあるので、ファインチューニングしてもっといい感じにしてやってください。
そのうち使わなかったモデル群も供養がてらにうpしようかと思います。

あと、仕事中に結構な工数を使ったので、chainerのPRという言い訳をするために、chainerにぜひスターつけたりプルリクしてコントリビュータになったりしてください。chainerをよろしくお願いします。

今回のシステムを作るにあたり、協力していただいたmattyaさんrezoolabさんに感謝!!

新規登録して、もっと便利にQiitaを使ってみよう

  1. あなたにマッチした記事をお届けします
  2. 便利な情報をあとで効率的に読み返せます
ログインすると使える機能について
taizan
@taizan
メカ系エンジニア 最近でーぷらーにんぐ的なこともすこし
この記事は以下の記事からリンクされています

コメント

はじめまして。この記事に感動して自分でもローカルに環境を作ろうと思っているのですが、いくつか質問があります。

1) 学習済みの結果を実行するだけでもGPUは必要でしょうか?
2) 学習させる環境はCUDAだけに依存でしょうか? Linux、Windows、Mac、どれでも可能でしょうか?

よろしくお願いします。

0

コメントありがとうございます。
実行自体はCPUでもできるはずですが、現状のソースコードはGPUを使っているので一部書き換える必要があります。
python3, opencv, chainer, cuda, cudnnあたりがセットアップされていれば大丈夫です。
どれでも可能ですが、Linuxが一番トラブルが少ないです

1

ありがとうございました。試してみます。GPUを(というかゲーム用のグラボを)買う口実ができたようでうれしいです。あとこの記事を読んだプロの漫画家の方に相談されたのですが、解像度を上げることはできないのでしょうか? 入力のベクトルを大きくすることになる(=計算量が増える)ので簡単ではないとは思うのですが。

0
(編集済み)

はじめまして。ローカルに環境を作ってみたのですが、http://paintschainer.preferred.tech/で同じ線画で実行したものと比べても色彩の結果が異なります。肌色が全然肌色にならず、全体的に肌が青っぽいです。
学習済みモデルデータはwgetで指定のディレクトリにダウンロードして置けばよいのでしょうか?

CentOS7.2でpyenvでminiconda3-4.1.11をインストール、
conda install --channel https://conda.anaconda.org/menpo opencv3
sudo yum install libpng12-devel
pip install Pillow
と実行して、python server.pyがエラーなしに動作するところまでは行きました。

1

うーーん、その状態で着色結果が出てるなら動作としては良さそうなので、ちょっとすぐには原因がわかりませんね。。。

0

解像度を上げるのは技術的には可能ですが、ちょっとサーバの負荷が今ですらアレなのでホスティングは厳しいです。
waifux2などの外部サービスを使っていただくか、もとサイズの線画と他のソフトで合成するのが簡単かと

0
(編集済み)

差し支えなければPython環境をどう構築されたか教えていただければ、そちらで試してみます。
ちなみに上記線画で試すと以下のような色合いになります。
https://gyazo.com/6f4a101b0cc4c876d177ca6622c956e2

0

なんかBGR読み込みからのYUV変換あたりでチャンネルが入れ替わってるみたいな感じしますね。
僕の環境はubuntuでanaconda入れてmenpoでopencv入れて、と大体同じ感じのはず。今手元に端末ないのでバージョンとかは後日書きます

0

ありがとうございます。
環境をanaconda3-4.1.1に切り替えて、
conda install --channel https://conda.anaconda.org/menpo opencv (opencv3ではなく)
で実行すると改善しました。
https://gyazo.com/7f2d6a1a56f3cafcc20d38799bf8cf4d
微妙に地の色が残っていたりまったく同じ結果ではありませんが。

0

on CPUで動くPaintsChainer serverにできたので貼っておきます
https://gist.github.com/opaai/cd2df5c0714fcfea31ba962c424f18ff

0

肌色が全然肌色にならず、全体的に肌が青っぽいです。

Windows 10, Macbook Proのon CPUで確認した範囲ではこちらでも同じ現象でした。
のでBGR/RGBを入れ替えて対応しました。

2
(編集済み)

taizan 様

素晴らしいコード、ありがとうございます。いろいろと試して楽しませていただきました。
http://itsukara.hateblo.jp/entry/2017/01/29/053708

ただ、当方の環境ではGPUメモリ不足で動かなかったため、CPUでも動くように修正し、pull requestを出させていただきました。GPUメモリ不足やGPU無しで困っている人が他にもいらっしゃると思いますので、merge頂ければありがたく、よろしくお願いいたします。(conflictsはありません)

修正内容ですが、元々CPUで使う場合は"python server.py -g -1"とすれば動くはずなのですが、"cgi_exe.py"で "self.gpu >= 0" か判定して処理を分ける部分が抜けていたので、追加したものです。

ちなみに、トレーニングと異なり、単に判定するだけなので、CPUでも十分に速いですね。
また、WindowsのchanierでGPUを使うところは結構苦労することが多いようで、当方も苦労しましたが、CPUで使うだけなら"pip install chanier"一発で済むので、超簡単ですね。

各位

merge前にCPUで試したい方は下記をお使いください。
https://github.com/Itsukara/PaintsChainer.git

追記

githubなど知らない人のために、簡単なインストール方法を下記記事に追記しておきました。
http://itsukara.hateblo.jp/entry/2017/01/29/064926

1

I had to say this is a very nice and fancy work! From my point of view is it sufficient for published in some top conferences (still need some work on the paper and further ideas).

I am wondering are you affiliated with any university or companies?

0

素晴らしい記事をありがとうございます!

プログラムの事が全くわからない絵描きです。

お手すきの際でかまいませんので、
クローン環境の構築に必要なソフトや手順などをご教授願えないでしょうか。

0

導入記事ありがとうございます。後ほどマージします。

Im working in Preferred Networks developing deep-learning framework chainer itself.
This result is not published. Current research of deep-learning is too competitive...

環境の作り方については、後日記事を作っていけたらと思いますー

0

win10にpythonとchainerを入れる手順を記事にしました
http://qiita.com/parco_opaai/items/5f654237afde9db85beb

2
(編集済み)

Itsukara さんと parco_opaai さんの記事を元に、Windows7(64) + Python(64) で動作確認しました。

1) Windows7(32) だとやはり(たぶん)メモリ不足で大きい画像が出力されない。

2) 実行時にエラーのあるモジュールを順にインストールした(Python知らないので)
pip install numpy
pip install chainer
pip install opencv-python
pip install Pillow

Itsukara さんの opencv と opencv-python は違うものだと思われる。

3) その理由で、parco_opaai さん指摘の BGR => RGB が必要でした

正常
KN4IRSMC96ONXB9PHFMR2F18NDKWDNBP_0.jpg

問題の画像
H00VUU2UNRM19NTEKTQLE87M614TSQPM_0.jpg

みなさん、とても楽しかったです。どうもありがとうございました。

0

素晴らしい記事ありがとうございます。
とても興味深く拝見させて頂きました。

今のところMac環境でlocalサーバを立てて、
ランダムな画像に着色して遊ぶところまで出来ました。

僕は全くのchainer初心者なのですが、
ここからどのようにすればファインチューニング出来るのでしょうか...?

この質問はgithub上で下記のissueを発行させて頂きました:
https://github.com/taizan/PaintsChainer/issues/13

この記事でchainerにとても興味が湧きました!
大枠だけでもご教授頂ければ幸いです。

0

VirtualBoxでもCPU版なら簡単に動作しました。
Ubuntu 16.04 Server
メモリは1024Mでも充分そうです。
CPUはi7を2コア。
HDD容量は8GB有れば問題有りません。

環境構築でPCが壊れるのは嫌だと言う方は仮想環境で試してみては

0
(編集済み)

色がおかしいのですが...

最新版(2017/1/31 21:39)を本家github(下記)からダウンロードして試したところ、残念ながら、特に速くなったり、機能が追加されている気はしません。また、残念ながら、色が妙に青みがかっています。

githubサイトを見ると、OpenCVのインストール方法が書かれているので、それをやらないとだめなのかと思ったのですが、そのサイトに書かれたテスト用のデモを現在環境で実行したところ、そのサイトに表示される絵が、そのままの色で表示され、何の問題も発生しませんでした。ということは、github参照サイトでの面倒なインストールをしなくても、"conda install opencv"で十分だったということと考えています。

何が問題が教えていただけますでしょうか。よろしくお願いいたします。 

上記テスト用デモの表示状況含め、詳細は下記を参照願います。
http://itsukara.hateblo.jp/entry/2017/01/31/215712

ちなみに、以前のソースと比べたら、img2imgDataset.pyの旧版と新版で下記のように変わってますが、学習データは旧版で学習させていると思いますので、ソースと学習データが合っていないのでは?
旧版:image2 = cv2.cvtColor(image2, cv2.COLOR_BGR2YUV)
新版:image2 = cv2.cvtColor(image2, cv2.COLOR_RGB2YUV)

本件、githubのissueで議論中です。下記を参照ください。学習データはYUVなので、単に、画像の入出力がRGBかBGRかという問題とのこと。これは、@abbychauさんが解決しました(OpenCVのバージョンを見て自動的に判定できるらしいです)
https://github.com/pfnet/PaintsChainer/issues/50

なお、誤ったカラー出力でも、カラー表示を入れ替えると、旧版と同じに表示されます。具体的には、出力画像をIfranViewで読み込んで、"画像"->"色の入れ替え"で"RGB -> BGR"を選択すると、旧版と同じ色使いになります。

追記(2017/2/4 17:25)

久々に確認したところ、色が青くなる件は既に対策済でした。

ただ、Ubuntuでopencvをインストールするとき、"conda install opencv"だと色が青くなります。これに対し"conda install --channel https://conda.anaconda.org/menpo opencv3"でインストールすれば、ちゃんとした色になります。opencv3.1.0のバグかもしれません。詳細は、下記の最後の方を参照ください。
https://github.com/pfnet/PaintsChainer/issues/50

追記(2017/2/5)

色(PaintsChanier)の件、久しぶりに最新版をダウンロードして試してみたら、当方の貧弱なGPU RAM(2GB)でも動くようになっており、サイズが500x500位の画像では3秒ぐらいで処理が完了。爆速になっていた。

0
(編集済み)

学習済みデータのダウンロードが出来ないようですね。
http://paintschainer.preferred.tech/downloads/
↑は404になります。
アクセスが集中して負荷も大変だと思います。

0

すみません、復帰したと思います。

1

はじめまして。非常に楽しく読ませていただきました。絵業界に大きな波紋を呼びそうですね。

http://kanjilog.com/paintschainer/
こんな記事を書きました。
下手絵は、うまくいかないのかもしれません(笑)

失礼いたしました。

1

はじめまして。PaintsChainerの実装を見ているんですが

で、モノクロ1chの線画に、3ch加えて -512, 128, 128 で塗りつぶしているように見えるんですが、ここが何をやっているかよくわからず・・ YUV的な何かなんでしょうか・・?
その後のブロックで追加の3chにヒントの色を訓練画像から適当にピックアップして与えているようなんですが、なぜまず-512,128,128で塗りつぶすのかがわからず、と言った感じです。

よろしくお願いいたします。

0

@kenmaz
すみません、コメントに気づくのが遅れておりました。
ヒントなしの場合はYチャンネル(つまり輝度)を-512に初期化しています。
これは例えば0で初期化すると、黒とヒントなしを区別できないので、輝度を-の大きな値にするという方法を取っています。
かわりにもう一つチャンネルを追加してヒントの有無を入れるチャンネルを入れても良いです。

1
あなたもコメントしてみませんか :)
新規登録
すでにアカウントを持っている方はログイン
記事投稿キャンペーン開催中
コマンドライン実行機能が実装される「T-DASH」を使って、CI/CD連携をしてみよう!
~
新しくなったSkyWayを使ってみよう!
~
709