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

TAMALOG

プログラミングがあれば遠いところへ行けます。プログラムと人の共生を記録します。

画像収集基盤の構築ログ2

目的は、人間の代わりに画像を集めてきてくれるシステムを構築すること。個人的な趣味からイラスト画像を対象としている。

tamanobi.hatenablog.com

画像収集基盤という名前だが、何かコードネームが欲しい。

進捗

  • 管理サーバーをインターネットに公開した
  • illustration2vecで画像の特徴ベクトルを抽出できることがわかった
  • Jubatusを使って類似画像の近傍探索ができることがわかった
  • プライベートGitLabにリポジトリを作成した
  • YOLOv2を用いた画像の自動クロッピングを実装した
  • mitproxyを使えば閲覧とスクレイピングが同時に行えることがわかった
  • 画像のランキング・選抜について調査をした
    • 選挙方式の一つであるシュルツ方式を調べた
    • Elo Ratingを調べた
    • 多腕バンディットアルゴリズムを調べた
    • 人の手を介したソートアルゴリズムの構想をまとめた
  • 構成図を書いた

次にやること

  • 画像収集用のストレージを購入する(購入完了)
  • illustration2vec + Jubatusを使った類似画像検索を試す
    • alt-i2vを試してもいいかもしれない
  • YOLO v2によるスマートクロッピングを管理画面に導入する
  • MySQLを使ったバッチ処理環境を構築する
    • 画像をillustration2vecを使ってメタ情報を付与する
  • クローラー戦略を考える
  • ユーザが気軽に画像分類するにはどうするか考える
    • ユーザ行動を教師データとして利用するにはどうするか
    • Labellio
  • 構想を整理する
    • ユーザが好みそうな画像を収集するクローラー戦略を作るのか
    • ユーザが好みそうな画像を推薦するのか

作業記録

スマートクロップ

画像を正方形サムネイルに変換するときのクロッピング戦略をYOLO v2という一般物体認識アルゴリズムを基に構築した。アルゴリズムの実装自体は難しくなかったが、PILとOpenCV(Numpy)のデータ構造の相互変換に戸惑った。クロッピングがうまく行ったかどうかの指標はあるのだろうか?まだ調べていないが、画像周りのアルゴリズムの指標はまだ未成熟のようだ。

インターネットへの公開

自宅の外でも作業がしたかったため、サーバーをインターネットへ公開することにした。キャッシュ+リバースプロキシとしてNginxを導入した。現在サムネイル生成には、thumborというpythonで書かれた画像変換サーバーを用いている。クエリとして画像変換対象のURLを含める必要があるが、Nginxのmerge_slashにより///に変換されてしまい、原因を調べるのに多くの時間使ってしまった。今までlocalhostだけで動作確認ができていた管理サーバーだが、外部公開の問題を早期に解消できたのは良かった。

人力ソート

人の判断基準を学習させたいと昔から思っていた。そのきっかけはキャラソートだった。特定の作品に登場するキャラクターを2名表示して「どちらが好きか」という二者択一の比較を行っていくもの。人の「好き」という気持ちは体系化されていないことが多く、このようなツールを利用することで自分の嗜好が整理されることに僕は感動を覚えた。自分の判断基準を学習して将来的には自分の代わりに自分の分身がインターネットを探ってくれる未来を夢見ている。

画像収集のための判断基準を学習するためには、ユーザ行動を画像の評価として結びつけなければならない。評価についてはいくつかアイデアがある。画像のLikeなどは重要な指標になることはあたりまえだが、多くの画像が並んでいるような状況でその画像を選んだことにも着目したい。選ばれなかった画像の評価を下げるという評価を試してみたい。また、人は好きよりも嫌いに反応しやすいため、LikeよりもDislikeに比重を置きたいと思っている。

類似画像検索

類似画像検索を行うにあたり思い出したことがあった。とあるニュースで、類似画像検索では違いが重要であると報道されていた(http://jp.techcrunch.com/2011/12/07/20111206cmu-researchers-one-up-google-image-search-and-photosynth-with-visual-similarity-engine/)。可能であれば、現在構築中のシステムにもこのアイデアは導入したい。

この記事を書いている最中に、以下の記事を見つけた。このOSSをうまく使えれば、Jubatusよりも早い類似画像検索が実装できるかもしれない。

itpro.nikkeibp.co.jp

github.com

参考資料