【機械学習】二次元イラストの画像補完で遊ぼう[DeepCreamPy]
画像補完ってすごくない? いや,すごい.
画像補完は画像の一部を隠しても,何かしらの方法でその部分を推測する技術です.
今回はそんな画像補完の中でもDeepCreamPyをやってみます.
"二次元イラストのモザイクを取ることができる!"という謳い文句によってあまり記事もないし,敬遠されてそうですが普通にすごい技術です.
検索しても使い方があまり出てこないので,この記事では丁寧に書いていきます.
Pythonとかは入ってる前提です.
今回は珍しくWindowsでやったので,Python入ってない人はこれを参考にしてインストールしてみてください.
あくまで技術を体験しようって感じなので,変な画像は使いません.
***追記***
2019年 8月現在,v2.0.0がリリースされました.
この記事はv2.0.0以前のものです.
DeepCreamPyとは?
DeepCreamPyは画像補完してくれるAIです.
この画像がサンプルとしてありました.
左側画像の緑色の部分を補完したのが右側画像ですね.
DeepCreamPyでは緑色に塗った部分をAIが補完してくれるみたいです.
なんか元々の画像と思えるほど高精度です.
DeepCreamPyはソースコードを実行するものと,実行ファイルになっているものの2つがあるみたいです.
今回は前者のソースコードを用います.
DeepCreamPyを説明する数少ないサイトでは実行ファイルを使っているものが多そうですが,ソースコードの方が安心感ありますから.
***追記***
DeepCreamPyは以下のことができます.
1.緑色に塗った部分を補完する
ー>緑色部分の周りの色等から緑色部分がどんな色で塗られていたかを補完します.上の画像はこれです.
2.緑色に塗った部分にあるモザイクを補完する.
ー>緑に塗った画像に加えて元の画像も入力し,モザイクも判断材料に使います.
つまり,前者(1)は緑色部分をゼロの状態から補完し,後者(2)は緑色はただのマスクでモザイクをとります.
この記事では,1つ目の緑部分をそのまま補完する方しかやってません.
ダウンロード
***追記***
v2.0.0ではこのやり方だと学習済みモデルをダウンロードできません.
この記事はv1.3.0のものなのでgithubからv1.3.0のものをダウンロードすればこの記事の通りにできるはずです.
v1.3.0をダウンロードするにはリンク先にある緑色の”Clone or download”というボタンから見て一番左にある”Branch:master”をクリックします.
その後,Tagsを押し,v1.3.0-betaを選択すれば以降は記事の通りできます.
その代り,最新バージョンではなくなってしまいます.
暇があったら最新バージョン対応版も書くかもしれません.
GitHubからダウンロードしましょう.
> GitHub - deeppomf/DeepCreamPy: Decensoring Hentai with Deep Neural Networks
ZIPをダウンロードしたら解凍してください.
解凍が済んだら,学習モデルをダウンロードします.
"models"内にある,いかにもダウンロードしろよってファイルを開きましょう.
↓↓↓↓↓↓↓↓↓↓
開くとエラーが出ますがダウンロードを選び続けてください.
↓↓↓↓↓↓↓↓↓↓
ダウンロードが完了したら解凍し,元々いた"models"の中に"model.h5"を移します.
これでDeepCreamPyのダウンロードは終了です.
入力画像を作成
サンプルで示した通り,補完したい部分を緑色(#00ff00)で塗った画像が必要になります.
緑色を塗るためにペイントツールをインストールしましょう.
私は"GIMP"を使用しました.
> 「GIMP」無料で高機能な画像編集・処理ソフト - 窓の杜
PCにデフォルトで入ってる"ペイント"を使ってもいいんですが,線が細すぎるのでオススメはしません.
一応どっちもやり方書きます.
どちらにせよDeepCreamPyはPNGにしか対応していないので,保存形式はPNGにしてください.
・ペイントでやる場合
ペイントの場合はデフォルトでは緑色がないので作ります.
↓↓↓↓↓↓↓↓↓↓
"これ"を選択するか,右下の赤緑青のうち,緑だけを255にすると緑色(#00ff00)が作成できます.
この色で塗ってください.
・GIMPでやる場合
起動したら,塗りたい画像をドラックアンドドロップします.
早速,緑色を作ります.
↓↓↓↓↓↓↓↓↓↓
Gだけ100にするか,HTML表記を#00ff00にすれば完成です.
塗るときはこの鉛筆で塗ってください.
横のブラシで塗ると線の中に緑(#00ff00)でない部分ができてしまいます.
太さはサイズで調整しましょう.
GIMPの場合,保存の仕方に注意点があります.
塗り終わったら,"ファイル" > ”名前をつけてエクスポート”を選択します.
ここで,PNGにしてエクスポートしようとすると以下の画面が出てきます.
この全部のチェックを外してエクスポートしましょう.(RGBαのα(透過率)があるとダメだからです.)
これで入力画像作成は終了です.
実践
入力画像を移動させます.
移動先は"DeepCreamPy-master"の"decensor_input"です.
中にサンプルが入っていますが消して大丈夫です.
また,入力画像は一枚だけに限定されていないので複数入れておけば全部やってくれます.
後は"decensor.py"を実行するだけです.
コンソール画面で"DeepCreamPy-master"の階層まで行き,以下を実行してください.
>>> python decensor.py
実行結果はこんな感じになると思います.
Press...が出たら,Enter押せば終了です.
結果は"decensor_output"に出ます.
結果
AnimeEffectsのときに頑張って書いたやつでやってみると
なんか絵がショボすぎる.
ということで,ネットからフリー素材を拾ってやってみました.
パッとみて補完したことがわからないレベルですね.
次は,色があまりないと難しいのではないかと踏んでカラフルでない画像で挑戦!
注意書きには白黒画像は無理ですって書いてますがどうなるか?
すごいです.
むしろ補完したところ全然わかんなくない?
さらに,同じ絵の目とヘッドホンを隠してみました.
さずがに左目は全部隠したので厳しそうですね.
右目はいい感じに補完してくれてます.
ヘッドホンは耳にあたる部分の隠す領域が大きすぎたのか少し変になってしまいました.
次は,人じゃない画像でも試してみました.
学習には人物イラストを多めに入れてそうですがいかに?
普通に補完してますね.
最後に,なんとなく実写の人間でやってみよう.
は!?一番すごいじゃん!!
二次元イラストの画像補完じゃなかったのですか??
NVIDIAが公開してるやつ(Inpainting Demo)ぐらいすごい.
総括
画像補完をやってみました.
確かにすごい技術ですが,なかなか使い道が難しそうですね.
写真なら消したい物体を消すことができますが,イラストならそもそも書くなって話ですから.
ちなみに,最後にちょっと書いたNVIDIAのやつは写真の画像補完で,目や口など全部消しても補完できます.
学習は海外の人でやっているので外人っぽくなります.
サイト上で簡単にできるのでこっちでも遊んでみてください.
最後の一言
画像系の機械学習は結果がわかりやすくて楽しい!
以上!