Love Propaganda

sometimes post something.

AIは魔理沙ちゃんの夢を見るか?

お久しぶりです。気が付けば最後の投稿から3年近くが経とうとしていました。

特にこの三年間で何かあったわけではありませんが、大きな変化といえば1年ほど前からペンタブでデジタル絵を描き始めました。 ペンタブ買ったのはちょうど前のはてなアカウントのはてダでブログを熱心に書いてた中学時代だったのですが、なぜそのころからちゃんと描かなかったのだろうと後悔しております。多少はまともな絵になってたかもしれん。 まあでもうごメモで絵を描いてた経験は微妙に生きてるのでそこはよかった。

前回の記事がPCパーツを新しくした、という記事でしたが去年また新しくPCを組み、今ではRyzen5 3600のRTX2070なんていう当時の貯金じゃ絶対に組めない構成になってます。時の流れは早いですね。 当時大学1年だったわたくしももう卒論を終わらせてあと2か月もしないうちに就職です。

その卒論の内容は物体検出のAIモデルを使ったものなのですが、今回の記事もそれに関連したものです。

(技術系の記事はGitHubかQiitaでやれという感じですが、使い方が分からない)

今回は魔理沙ちゃんを物体検出モデルに学習させ、検出させます

そもそもYOLOv4とは何ぞや

YOLOv4は2020年4月に公開された新しめの物体検出モデルです。物体検出とは画像内にある物体の位置を特定し分類する技術の事です。(卒論でも書いた)

このモデルを使って魔理沙ちゃんを学習させ、検出させるというわけです

Q.なんで魔理沙ちゃんを検出しようと思ったの?

A.可愛いから。

準備

学習させるデータとして魔理沙ちゃんをありったけ用意します……実はそんなに数無くても割と検出はしてくれます。

魔理沙ちゃんのデータ
(opencv使って画像並べるのが賢いやり方でしょうけど面倒なのでフォルダそのままスクショしました)

風神録のスクショのファイル名がth9(花映塚のナンバリング)なのは気にしないでください。

今回は原作の立ち絵を検出する目的だったので原作のスクリーンショットだけを教師データにしていますが、もし東方キャラの集合イラストなんかで検出するみたいな話であれば幅を持たせるためにpixivなんかに投稿されてるイラストを教師データにしてもいいかもしれません。

AIに学習させるためのデータを用意したらアノテーションと呼ばれる作業に移ります。長くつらい作業です。 アノテーションツールには「LabelImg」などがありますが、自分はマイクロソフトが公開しているVoTTというソフトを利用してタグ付けしました。 詳しい使い方は調べてください。

アノテーションしたデータをPascal VOC形式でインポートし、convert2yoloというツールを利用してYOLOv4で利用可能な形式に変換します。 詳しい使い方は調べてください。

最後に適切なディレクトリ構成にして準備完了です。

学習

コンフィグとかいじってdarknet detecter train <data> <config> <weights>を実行するだけ!

あとは気長に待ちます。クラスが霊夢魔理沙の2種類だけだったので6時間くらいで終わりました。(やっぱCUDAコアの数が多いRTX3080欲しいわ)

結果

風地神輝紺天鬼の立ち絵で学習させたのでそれ以外の作品の魔理沙を検出させてみました。

妖々夢魔理沙ちゃんの推論結果

画像の魔理沙ちゃん、いい笑顔です。愛してるよ。 結構いい精度で検出してくれましたね。

霊夢の推論結果

一応申し訳程度に学習させた霊夢もバッチリ認識してくれました。

一方で検出しない例もあり、まぁ右の帽子脱いでる魔理沙ちゃん(かわいいね)が認識できないのはともかく、何故かキャラ選択画面の魔理沙ちゃんは検出してくれませんでした。

(賢いのでこっちではちゃんとopencv使って並べました)

でも適当にネットで拾ってきた同じような画像だとちゃんと魔理沙ちゃんを検出してるんですよね。ただこっちは確率が低かったので偶然かもしれません。

一応pixivなんかで投稿されてるファンイラストも一部検出できたりします。dairiさんの立ち絵なんかもちゃんと分類してくれました。

展望?

次は立ち絵が多めのほかの主人公クラスのキャラ(咲夜、妖夢鈴仙、早苗)も含めた学習データを作ってみようかなと思います。 目指すは全キャラ学習でしょうか。

正直立ち絵が一作品分しかないみたいなキャラクターはpixivに投稿されたイラストを教師データにしたい ただ学習データ作成のために利用してもいいのかは怪しいところがあるのでちょっと判断が難しいところです。

ちなみにニコニコではAI学習用のデータセットが貰えるらしいです。

あとはGANで存在しないZUN絵魔理沙ちゃんとかも生成してみたいですね。

同じくAIで画像処理する系の研究してるチームの仲間から聞いたところ、CycleGANなるものを使うと「ただの馬に縞模様を追加してシマウマとして出力する」といった画像の生成が可能らしい? AIの力で魔理沙ちゃんにいろんなキャラの服装させることができそうです。


執筆者:リコリス twitter.com discord : Licorice#0508