なんのフレンズかは気になるけど、図書館が遠い件
アニメ「けものフレンズ」では、カバンが「自分がなんのフレンズなのか」を調べるために図書館まで旅をしていた。たつき監督はインタビューで、このアニメには「ロードムービー」的な側面がある、というような発言をしていた。最終話のボスの発言にグッとくるものがあるのも、放送が終わった後になんとも寂しい感覚が残ったのも、ロードムービーならではのものだったのかもしれない。
一方で、僕には「自分がなんのフレンズなのか」知るためにあんな過酷な旅をできるほどの体力と根性はない。図書館がこっちにきてほしい。あるいは、スマホのカメラとかをうまいこと使って、わざわざ図書館まで行かなくてもなんのフレンズか判定してほしい。
ので、作った。
作ったものはこちら。PC/スマホどちらからでも利用できます。
※サンプルの画像はひのきおさんの画像を利用させていただきました m(_ _)m
フレンズ判定の仕組みは、下記の通り。
まず、インターネット上に公開されているコスプレイヤーさん達の画像を検索して、ひたすら学習をさせる。フレンズは動物が「ヒト化」したもの(という設定)なので、ある意味コスプレイヤーさん達の画像というのはピッタリなのかもしれない。ただ、意外と枚数が集まらず、苦戦した。もっと枚数があれば精度を上げることができるのだけど…。とりあえず今は「カバン、サーバル、アライさん、フェネック、コツメカワウソ、トキ、ハシビロコウ」の7種類を学習させている。なお、画像分類の実装はTensorFlow + Kerasで行なっている。ディープラーニング!!!!
判定の際には、まずアップロードされた画像から顔の検出を行う。背景など、判定をする上でノイズとなりうる要素の影響をなるべく小さくするため。顔部分の検出にはGoogle Cloud Vision APIを使用した。
顔を検出できたら顔周辺に注目をして、あらかじめ学習済みのモデルを使って、「なんのフレンズか」の判定を行う。全てのフレンズの判定スコアが低い場合は、顔周辺から範囲を広げて判定し直す。
当然ながら、コスプレ画像(もちろん未学習のもの)だと割と高い精度で判定に成功するのだが、コスプレ画像以外でも判定することはできる。
ただ、他のフレンズに比べると「カバン」が圧倒的に化粧が薄いというか、素の人間に近い風貌をしているため、「カバン」と判定される率が高い。
日曜日の夜に思いついて、夏コミに合わせて突貫工事で作ってしまったのでだいぶ雑ではあるが、ぼちぼち試してくれている人がいて嬉しい。色々調整していって、そのうちゴールデンウィークに作った「ボス」に組み込んでみようと思う。
この数日間、毎晩数百枚のけものフレンズのコスプレ画像を見ていて、何かに目覚めそうになった。しかし、時折髭面の男性によるコスプレ画像が現れるたびに、現実に戻されてきた。なお、髭面の男性によるコスプレも今回の学習データには含まれている。
まとめ
- ネット上のコスプレ画像を学習させて、フレンズ分類するサービスを作った。
- 「カバン」だけ普通の人間に近い風貌をしているため、コスプレしていない画像を入力するとカバン判定される率が高い。
- 今回初めてTensorFlowを使って自分でネットワークの構築と学習をさせてみてわかったのだが、アライさんのコスプレをする人には可愛い人が多い。
というわけで、よかったら使ってみてください。
技術的な補足説明はまた後ほど。
2017.08.14 追記1
同じタイミングで、同じようなテーマで取り組んでいる方がいた!
こちらの方は、アニメの画像を使って学習させているご様子。出力層の活性化関数はSoftmaxかな
2017.08.14 追記2
フレンズ判定器を作った時の記録(1日目〜6日目) – なんてこったいブログ
突貫工事の様子をこちらに書いた。
技術的な説明は少しずつQiitaに書いてます。