読者です 読者をやめる 読者になる 読者になる

みずぴー日記

陽気なプログラマが世界を廻す

4コマ漫画の画像管理✨

NEW GAME! のコマ検索 - みずぴー日記で作っていたソフトウェアのうち、画像以外の部分を公開した。

f:id:mzp:20160404222443p:plain

レポジトリ

https://github.com/mzp/EagleJumpSystem

検索機能

NEW GAME! のコマ検索 - みずぴー日記で述べたように

  • 台詞
  • 登場キャラクター

によって該当するコマを検索できる。

f:id:mzp:20160404224140p:plain

入力補助機能

検索機能を実現するために、各コマにはメタデータ(台詞、登場キャラクター)を入力する必要がある。 このメタデータの入力を補助する機能もいくつか実装した。

コマ分割

ページを取り込む際に、画像をコマごとに分割する。これはゆゆ式を無限に楽しみたかった話 〜 ゆゆ式 Advent Calendar 2014 20日目 〜 - non117's diaryツールをほぼそのまま利用している。

f:id:mzp:20160404223001p:plain

テキストの自動認識

Google CloudVisionAPIによりコマ中のテキストを自動で認識する。

ただし利用には別途APIキーの取得が必要である。APIキーの取得方法はCloud Vision APIの使い方まとめ (サンプルコード付き)が分かりやすかった。

f:id:mzp:20160404225745p:plain

キャラクターの半自動認識

ある程度の量のキャラクターの分類を手動で行なえば、残りの画像については機械学習により自動でタグづけが行なえる。

ただし、登場回数の少ないキャラクターは学習データが少ないので、そこは手動でタグをつける必要がある。また、顔認識をした上でキャラクターの分類をしているため、「手のみ登場している」といったコマについては対応できない。

この部分のコードはTensorFlowでアニメゆるゆりの制作会社を識別する - kivantium活動日記をかなり参考にしている。

f:id:mzp:20160404225858p:plain

その他

既知のバグ

もしくは面倒で直してない箇所リスト。

  • コマごとの分割の際に、まれに0バイトの画像が生成される。 今は、定期的に手動で find . -size 0 -exec rm {} \; を実行して削除しているが、そもそも生成されないようにしたい。
  • 素朴なデータの格納方法をしているため、画像が増えるとどんどん遅くなっていく。

名前

レポジトリ名のEagleJumpSystemはNEW GAME!に登場するイーグルジャンプ社に由来する。

f:id:mzp:20160404222622p:plain