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

TAMALOG

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

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

目的

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

tamanobi.hatenablog.com

進捗

  • Dockerのネットワーク絡みの問題を解消
  • 暫定的にローカルに保存していた画像をテーブルに格納した
  • Viewのコード整理(DRY)
  • Controllerのコード整理(ハードコーディング除去)

  • そろそろクローリング戦略に手をつけたい

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

目的

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

tamanobi.hatenablog.com

進捗

雑感

これまでやりたいと思っていたことが優秀なミドルウェアによってスムーズに実現できている。この数日間は特にDockerにとても助けられている。それぞれ別の役割を持ったアプリケーションサーバーが10弱も必要になったことがわかったときにはシステムの起動・再起動をどう制御しようか思いつかなかった。Dockerであれば構成がテキストファイルとして管理できる。再起動も容易だ。こんなに便利な存在を教えてくれた GitHub - isucon/isucon6-final には感謝している。ISUCONは勝ち負けのあるコンテストだが、負けたからといって学びがないわけではない。雑なアプリケーションがどういうものか知ることができるし、そもそもアプリケーションの構成も学びになる。Dockerもそれで知った。たったひとつのコマンドでミドルウェアを含めてアプリケーションが立ち上がる様は、圧巻だった。

参考文献

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

目的

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

tamanobi.hatenablog.com

進捗

  • Jubatusの近似近傍探索を試した
    • illustration2vecを使って1000次元弱の特徴量をJubatusに登録した
    • 登録データから類似画像を検索する事に成功した

類似画像検索について

illustration2vecはイラストのタグ(一人の女性、猫耳、青い髪など)を学習・推論する手法です。1000個のタグを学習していれば、最終的な出力は1000次元ベクトルとなります。Jubatusにはこのデータを登録しています。つまり、illustration2vecを特徴量抽出として利用しているわけですが、タグというイラストのメタ情報を予測する性質があります。描かれているそのものを対象とした類似画像検索よりも、抽象度の高い検索をかけることが可能です。似ている画像を探すのではなく似たような画像を探すような、探索的検索に力を発揮しそうです。

Jubatusでは、画像データを渡すとORB特徴量を取り出す機能があります。ORB特徴量は画像特徴量の一種で、画像の拡大・縮小・回転・トリミング・ノイズに対して頑健な特徴量です。パテントフリーなので安心して使えます。illustration2vecとORBそれぞれでJubatusの近傍探索を試してみたいと思います。それぞれ違う用途として使えそうで楽しみです。

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

目的

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

tamanobi.hatenablog.com

進捗

  • スクレイピングを試せるような管理画面を作成
    • これまでのCLIをウェブアプリ化
    • プレビュー(Dry Run)機能を追加
    • CSSフレームワークの選定
    • リファクタリング
  • 推薦システムに関する論文を読んだ

f:id:tamanobi:20170504212532p:plain

余談

SAOをやっと視聴しましたが、夢のある話でとても良いですね。アニメーションの話つながりで思い出しましたが、「東のエデン」という作品で「東のエデンシステム」というシステムが登場します。カメラをかざすだけでそこに写っている物体が何かわかるそういうシステムです。最近の機械学習界隈でそのシステムの実現が現実味を帯びてきています。あのシステムの存在は僕にとって大きな衝撃を与えてくれたのでかなりワクワクしています。

参考資料

Alpine LinuxのRoswell環境をDockerで作った

複数のmacOSでLispプログラムを書くとき、環境を用意することが面倒なので、RoswellのDockerをAlpine Linuxベースで作成しました。デプロイ時にもコンテナがあれば便利ですね!

https://hub.docker.com/r/tamanobi/alpine-roswell/

今度はこのコンテナを使ってHerokuにLispウェブアプリをデプロイする予定です。

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

目的

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

進捗

  • 画像ストレージを用意するにあたってオブジェクトストレージを用意した
    • RiakCSかCephを利用しようとしたが、ローカルホストだけで動作できるminioを利用した
  • オーケストレーションが困難になってきたため、Dockerの調査を行った
    • 新規導入したオブジェクトストレージ(minio)と画像変換(thumbor)だけDockerで起動するようにした

興味深い記事

画像処理において、学習したい画像かどうかをスクリーニングすることは膨大なコストがかかるので、この作業自体を自動化したい

人と機械学習のちょうど良い住み分けだと思います。この方のブログは、いつも面白いです。

参考資料

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

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

tamanobi.hatenablog.com

広告配信システムを構築し、十数年間運用してきた人と話す機会がありました。その人が構築したシステムは細かい変更こそされど、アーキテクチャを変えずに運用しているそうです。その堅牢でハイパフォーマンス、そして何よりも柔軟なシステムに強い感銘を受けました。

現在の構築中の画像収集基盤は、かなりポータビリティが低く、別の環境で再構築しようとするとかなり時間がかかる見込みです。最近、簡単なウェブアプリを通じて、Dockerを触る機会があったので少し勉強をしています。

画像収集基盤の構成要素

各サーバーは試験的に立ち上げたものを含めると、それなりに数があります。これまで少しずつ増やしていきましたが、再度構築するには骨が折れる数です。特にインストール手順が複雑なライブラリがいくつかあるので、再現すらできないかもしれないです。

Dockerの基本的な操作についてはわかるようになったので、これらの構成をコンテナに分けようかな。

  • データベースサーバー
  • 自動タグ付けサーバー
  • 自動クロップサーバー
  • 特徴抽出サーバー
  • 管理サーバー
  • コンテンツ推薦サーバー
  • 行動ログ集約サーバー
  • スクレイピングサーバー
  • データ収集バッチサーバー
  • プロキシサーバー
  • クローラーサーバー(未定)
  • オブジェクティブストレージ(未定)

参考資料