イラストがジャ○プ寄りかマ○ジン寄りかを見分ける機械学習プログラムを作ってみた話

以前、「ディープラーニングで日本酒をレコメンドするアプリを作った話」というエントリを書いたのですが、その後日譚。(ディープラーニングのコードは掲載しませんのでご了承ください)

何を作ったか

タイトルにもある通り、アップロードした画像を元に「ジャ○プ寄りかマ○ジン寄りかを見分ける」というのをディープラーニングでやってみました。先日作ったプロダクトは、単純な数字を入力にしてディープラーニングを行うというものだったんですが、ディープラーニングがブームになってた頃に頻繁に見かけた「画像のディープラーニング」を自分でもやってました。

どうして作ったか

「思いついたから」の一言に尽きます。何か画像を使ってディープラーニングのプログラム作りたいなーとぼんやり思ってたんですが、題材が見つからずしばらく放置していたところ、普段から愛読している某少年漫画雑誌が目に入りまして。
「これの表紙データを学習させたら、どっちの雑誌の絵柄っぽいかを判定できるのでは?」と思ったので実際やってみました。

実装

調べたら同じような実装をすでにされている方の記事がいくつか見つかりまして、見比べてみると機械学習部分は皆さんだいたい一緒だったのでひとまずそれに倣ってみました。
今後パラメータとか調整しながら精度がどのくらい変わるのか実験してみようと思います。

教師データは著作権の関係で貼れませんが2018年に発売された2誌の表紙データです。1誌当たり50枚くらい。少ないですよね。わかります。
なので、正直精度は期待してませんでした。
実際、学習結果を表示させたらたしか80%くらいの精度だったような気がします。

機械学習以外の部分だと、PythonでWebページ作って、ファイルをアップロードする部分と今回作ったモデルをロードして機械学習を実行&結果を表示させる部分を作りました。
出力結果はこんな感じ。(一部伏せ字にしています)
ジャ○プっぽい確率 = 71.2%
確率高い方を画面上に表示しつつ、さらにその確率を表示させるようにしてみました。

コード

ここに書こうかなーと思ったけど、他で公開しようと思うので、割愛。

結果

テストデータとして、2誌3枚ずつ、2019年の表紙データを用意して動かしてみました。
その結果、それぞれ1枚ずつ誤検知。4/6の正解率なので、80%以下じゃんって思いましたが、気にしないことにします。
ちなみに表紙がグラビアのやつはほぼ100%マ○ジンと判定されました。

今後

今回作ったプログラムを公開したり、教師データを増やしたりパラメータをいじったりしてこのまま精度を高めていくという方向にはいかないかなーと思います。
それよりも、先日作った(スタートアップやりたい勢とスタートアップにカジュアルに関わりたい勢のマッチングを考えた話)スタートアップとエンジニアのコミュニティの方で、興味ある方がおられないか探してみようかと。
独学で、たいした知識もない中でやってるのでそもそもやり方が合ってるのか疑問に感じることは多々ありますが、これをベースにして誰かの役に立てるものを作れたら嬉しいです。