あいであのーと

それは備忘録の類い

【五月病企画】技術で初音ミクを描く【hatsunemikuredraw】

みなさんこんばんは。五月ですね。

 

いつも堅苦しいことばかり書いている私も、今月は五月病なので楽しいことを考えます。

 

みなさんは#hatsunemikuredrawあるいは#HatsuneMikuDrawをご存知ですか?

ちょうど三年前くらいの今、各々のスタイルでセーラームーンを描くという#sailormoonredrawが流行し、それに追随して登場したのが#hatsunemikuredrawでした。コンセプトは同じく、各々のスタイルで初音ミクを描くというやつです。

 

私はかつて#hatsunemikuredrawを眺めるのが好きでした。それなので、今日は私も満を持して#hatsunemikuredrawをします。

dic.pixiv.net

dic.nicovideo.jp

 

技術で描く

五月病なので、技術に頼ります。

 

具体的には、画像を生成する類いの深層学習を用います。数ある手法の中から、今回はGANとDiffusionを採用します。

 

初音ミクを学習してもらうので、まずは初音ミクをかき集める必要があります。

#hatsunemikuredrawのうち、適当な基準*1を満たす画像を、1,000枚くらい*2集めてきました。

 

処理が大変なので、画像は256ピクセル四方にリサイズします。

 

GAN

GANことGenerative Adversarial Networkとは、敵対的生成ネットワークです。次のやり方と比べて、こちらは今やトラディショナルみたいです。

 

作り方はよくわからないので、DCGANのチュートリアルを用います。

pytorch.org

 

チュートリアルに倣って、2,000ステップくらい訓練します。ほかの細かいハイパパラメータはよくわからないので、とくに気にせずそのまま設定していきます。

 

これが私の#hatsunemikuredrawです。

 

たくさんの初音ミクが生成*3されました。よく見るとガビガビですが、背格好や髪の色はさまざまです。

さまざまとは言いましたが、かなり抽象化されているようにも見えます。初音ミク初音ミクたらしめる特徴を抽出して、まんべんなく反映している感じでしょうか。

 

このチュートリアルでは、学習の経過を見ることができました。徐々に初音ミクを学んでいく様子がわかります。

 

Diffusion

こちらはより今っぽいやり方です。今っぽいだけあって、私もよく知りません。なんかこう、ブワッとやってブワッと戻したら画像になるみたいな、そんな感じだったと思います。

 

これに関しては、それ用のライブラリがあるみたいなので、さっそく使います。

huggingface.co

 

Diffusion Pipelineによって、Unconditional Image Generationをします。

ハイパパラメータは例を参考に、雰囲気で設定します。今度は4,000ステップくらい訓練してみます。

 

これも私の#hatsunemikuredrawです。

 

先ほどの結果とはまた雰囲気が違い、ちょっと水彩画みたいな印象があります。また先ほどと比べて、より多様性がある気がします。さすがは新しいやり方。

ケーススタディとしては、まず1行1列がとてもきれいに生成されていて、すばらしいです。ほかにも2行3列はかなりデフォルメ調で、かわいさがあります。

 

あとがき

五月病の私に代わって*4、技術に初音ミクを描いてもらいました。

1,000枚の#hatsunemikuredrawを学習させることで、かなりの初音ミクを生成することができました。ガビガビだったりぼやけていたりしている気がしますが、いかんせんニコニコ技術部みたいなことが好きなので、五月病の私は満足です。

ありがとうございました。

 

参考ページ

 

*1:背景が白く無地で、髪を含めた全身が写っており、物をなにも持っていないものに絞ります。

*2:#hatsunemikuredrawがしたかっただけなので、データセットは公開しません。

*3:日本において、著作物を深層学習にあてることは可能ですが、出力には注意が必要です。この記事でも細心の注意を払っていますが、場合によっては公開停止も検討します。

*4:画像の収集からモデルの訓練、著作権に関する調査まで、自ら描くより手間がかかっているとかいないとか。