はじめに
グランドレベル中居君のCMでお馴染み「デレステ」や、その派生元である「モバマス」に
登場するキャラクターに「五十嵐響子」と「椎名法子」が居ます。
この二人は初心者には見分けづらいと評判なので、自動で識別できないか試しました。
キャラ紹介
二人の違いを簡単な表にまとめてみました。
髪型とその色だけで見分けようとすると、結構難しそうです。
五十嵐響子 | 椎名法子 | |
---|---|---|
属性 | Cute | Cute |
髪型 | サイドテール | ポニーテール |
髪色 | 茶色 | 茶色 |
年齢 | 15 | 13 |
CV | 種﨑敦美 | 都丸ちよ |
五十嵐響子(いがらしきょうこ)
鳥取県出身で、Cute属性のユニットである「ピンクチェックスクール」に所属しています。
その楽曲「ラブレター」のMVがニコニコ動画で再生数100万回を超えました。
以降、苗字を省略して単に「響子」と呼称します。
椎名法子(しいなのりこ)
大阪府出身で、同じくCute属性のユニット「メロウイエロー」に所属しています。
ドーナツが大好きで、常時ドーナツを持ち歩いています。
こちらも以降、単に「法子」と呼称します。
方法
使用したのは公式イラストのみで、二次創作イラストは使っていません。
ネックとなるのが画像数の少なさで、この二人の公式イラストは数十枚しかありません。
また、アニメ版の登場シーンも僅かなため、畳み込み層の学習に必要な画像数が得られません。
そこで、学習済みのVGG16モデルを用いて特徴を抽出して最後の判定結果を出力する段だけ
この二人の判定に挿げ替える転移学習という方式を使います。
私が参考にした記事はこちらです。
Deep learningで画像認識⑧〜Kerasで畳み込みニューラルネットワーク vol.4〜
コード
以下にあります。
https://github.com/YankeeDeltaBravo225/fine_tuning
使い方と改変方法も載せてあるので、暇なら自分の好きなキャラで試してみてください。
@kazuki_hayakawa さんの Keras(Tensorflow)の学習済みモデルのFine-tuningで少ない画像からごちうさのキャラクターを分類する分類モデルを作成する
のGithub上のコードからForkさせてもらいました。
モデル
上記の記事で詳しく解説されているため、ここでは省略します。
keras.utils.plot_model で図にしたものがこちら。
最後だけが自前の層です。
使用する画像
デレステはまだイラスト数がそこまで無いため、派生元である「モバマス」のイラストを使用しました。
それでも、響子が36枚、法子が30枚しかありません。
法子の30枚の画像のうち、20枚を訓練用、残り10枚をテスト用に割り振りました。響子も同様です。
データ拡張
さすがに数十枚では厳しいので、伸ばしたり縮めたり回転させたりで枚数を水増しします。
これの処理もKerasでImageDataGeneratorとして用意されています。
パラメータは以下の様にしました。
パラメータ | 効能 | 使用した値 |
---|---|---|
rescale | 積算するスケール値 | 1/255 |
zoom_range | ランダム拡大縮小 | 0.1 |
rotation_range | ランダム回転範囲 | 10 |
width_shift_range | 横方向のランダム伸び縮み範囲 | 0.2 |
height_shift_range | 縦方向のランダム伸び縮み範囲 | 0.2 |
shear_range | ランダムなシアー変形 | 0.1 |
channel_shift_range | 色チャンネルのランダム変換 | 40 |
horizontal_flip | ランダム左右反転 | False(デフォルト) |
vertical_flip | ランダム上下反転 | False(デフォルト) |
Kerasによるデータ拡張 が詳しいです。
Kerasのドキュメントはこちら
結果
TensorBoardのスクリーンショットをそのまま載せています。
エポック数が30なので、増やして行けば精度が向上していきそうですが、
40にしたところ逆に悪化してしまいました。
更にもっと増やせば精度が再度上がって行きそうな気配はします。
デレステのイラストを識別
ここまで、モバマスのイラストを訓練用、検証用に使用してきました。
これでデレステのイラストが識別できるか試してみました。
(モバマスからの流用イラストは除いています。)
法子
カード | 五十嵐響子 | 椎名法子率 | 正誤 |
---|---|---|---|
[Ring♪Ring♪フィーリング]椎名法子 | 6.40% | 93.60% | ○ |
[Ring♪Ring♪フィーリング]椎名法子+ | 0.41% | 99.59% | ○ |
[Kawaii make MY day!]椎名法子 | 6.39% | 93.61% | ○ |
[Kawaii make MY day!]椎名法子+ | 12.77% | 87.23% | ○ |
響子
カード | 五十嵐響子 | 椎名法子率 | 正誤 |
---|---|---|---|
[あったかハート]五十嵐響子 | 98.04% | 1.96% | ○ |
[あったかハート]五十嵐響子+ | 3.94% | 96.06% | × |
[ラブレター]五十嵐響子 | 36.93% | 63.07% | × |
[ラブレター]五十嵐響子+ | 8.94% | 91.06% | × |
[ドラマティック・ナイト]五十嵐響子 | 98.11% | 1.89% | ○ |
[ドラマティック・ナイト]五十嵐響子+ | 15.13% | 84.87% | × |
[With Love]五十嵐響子 | 50.85% | 49.15% | ○ |
[With Love]五十嵐響子+ | 64.83% | 35.17% | ○ |
感想
デレステの12枚のイラストのうち8枚が正解なのですが、
響子に限って言えば正解率50%なため、
迷ったら法子と判定する微妙な感じになってしまいました。
特に「[あったかハート]五十嵐響子+」と「[ラブレター]五十嵐響子+」は
かなり自信満々に誤判定してしまっています。
データ拡張のパラメータを調整したり、エポック数を増やして行けば
もう少しマシな結果になりそうな気はします。
声をスペクトログラム化したものをCNNにかけたら声優を識別できないかな。
サンプルの収集が大変そうだけど。