デカール画像の類似画像検索やりたいなーと思って、ここ数日、色々弄っておりました。結論としては、Webのサービスとしてやることは諦めたものの、成果というか、こんなことは出来た、という記録は残しておこうかと。
やったこと(読み飛ばしてOK)
1月25日12:00くらい時点での全デカール画像(約72万画像)から特徴量を取得。モデルはVGG16で、重みはImageNetのものをそのまま使用。検索したい画像の特徴量を算出し、デカール画像の特徴量との距離を1個1個計算していって、近いものが類似画像だ!とする超絶力業。距離の計算は、とりあえずコサイン類似度を使用した。
デカールの画像は480×360で、それを224×224に変えて特徴量を取っているので、検索する画像もそれに倣う必要がある。やる前は、縦横比が違っても何とかならないかなーと期待していたんだが、そこまで甘くなかった模様。ある程度で構わないので、縦横比は合わせる必要がある。合わせないと全然類似度が上がらない。。。
ともかく、こんな力業で、かつ実行環境は手元の貧弱なGPU環境(GeForce GTX1650)のため、1回の検索で1時間半くらいかかる(もう少し最適化は出来そうだけど)。また、各デカール画像の特徴量をnpy形式で保存しているため、保管にも70GBくらいかかる。もしかするとAWSの超凄い環境借りることが出来れば実用に乗せることも出来るのかもしれんが、流石に、月何万何十万も出す気にはならんわ……そういうのは潤沢にお金のある公式にお任せしよう。
ということで類似画像検索してみる
①マツダの100周年ロゴ(?)
デカール検索で、少なくともGTSport上に1つあるのは分かっている。
https://www.gran-turismo.com/jp/gtsport/user/discover/search/decal/decal/1470613/7422020157576315400
色味も異なり、いきなり不得意なものをチョイスしたかも……
結果がこちら
http://gtswiki.gt-beginners.net/decal/similar/20200126225050_CsCEb.htm
素晴らしい!最上位に、欲しい画像が来た。類似度は約0.68。
全体的に、円を描いて中心に文字を書くようなロゴが、類似度の高い画像として上がってきている。ケロリンとか笑える。
②血小板ちゃん
類似画像検索をやり始める前に、画像の分類を試していたときに見つけた画像をチョイス。ネットで検索してみたところ、このデカール画像がネットに転がっている画像をベースにして作られていることが一目で分かったので、元画像を検索にかければ引っかかるだろうと踏んだ。
結果がこちら。
http://gtswiki.gt-beginners.net/decal/similar/20200126225050_7Aiuw.htm
まぁ、そりゃ引っかかるよね。類似度は0.66と0.63
アニメキャラの全身が見える立ち絵が、類似の画像として上がってきている模様。最近のアニメキャラよりも、ネロのほうが類似度が高いとかどうなってるんだろう。
③Shellのロゴ
次はShellのロゴ。黄色背景とか、デカールにはないだろうが、どうか。
結果がこちら。
http://gtswiki.gt-beginners.net/decal/similar/20200126225050_VOOQE.htm
Hellが最上位に来ちゃったよw
しかも類似度が0.688と高い。ただまぁ正しいShellの画像も類似度0.677と上位に来ているので、まぁ良しとしよう。
にしてもShellのロゴ多すぎない? Hellも多いけどw
④イカ娘
次は、目に付いた「イカ娘」。デカール画像を検索に使っても仕方ないので、ネットから拾ってきた画像を使う。全く同じものは無さそうだが、どこまで引っ掛けられるか。
http://gtswiki.gt-beginners.net/decal/similar/20200126225050_dJrJW.htm
うーん、類似度トップにイカ娘がきたが、それ以外は全く関係無いな……
類似度は0.34。なんとなくこう、斜めに構えている感じの画像が上がってきている模様。多分似た構図で、更に色味が似ているから偶然上位に来たんじゃないかと思う。
⑤DAINICHIロゴ
最後はダメ元。あの車に付いているデカールが知りたい!だけどなんの情報もねぇ!というときに使えるかどうか。そもそもそういうケースって、元々の画像もそんなに画質が良くないので、十中八九無理だろうなぁとは思うんだけど。今回検索に使った画像も、ネットに落ちてた画像から、このロゴの部分だけをくりぬいたもの。
結果がこちら。
http://gtswiki.gt-beginners.net/decal/similar/20200126225050_pv2i8.htm
いや、結果見たときにちょっと興奮した。マジで。凄くない?
正直言って引っかかるとは思わなかったよ……
感想
機械学習というのもおこがましく、単純にVGG16の重みを使って類似画像検索に転用できるか試してみただけだが、なかなか面白かった。
今回は使った画像がたまたま良かっただけかも知れないが、使えないことも無さそう。専門家がもっとマシなモデルと実装をしてくれれば、実用に乗るんじゃないかなぁ?