このサイトを作ろうと思った動機
このサイトは閉鎖しましたが、経緯とコードの解説はこちらの記事で行っています。
画像を使ったAV女優の検索を提供しているサイトは、いくつかあります。
しかしながら、2つの問題がありました。
- 精度があまり高くない。
- 検索にヒットしたAV女優のどういった表情が、自分の持っている画像と似ているのかわからない。
そのため、自分で自分の要求を満たすアプリを作成することに決めました。
作るべき機能の一覧
- 画像の収集
- Rekognition APIの実装
- DMM APIの実装
- サーバーとインフラの構築
- Web画面の作り込み
- レスポンシブデザイン
画像の収集
すみません、ここに関しては手作業でやりました。
今後はクローリングとOpen CVを使って自動化するかもしれません。
もしくは、Open CVの代わりにRekognitionの顔認識サービスを使って自動化するかもしれません。
今回は、Amazon Rekognitionの精度を知りたくて、綺麗な顔写真が欲しかったので手作業で始めました。
Rekognition APIの実装
主な機能は2つです。
collectionの作成
これは、例えば、aragaki-yuiというcollectionを作成して、そこに画像を登録していく作業です。
新垣結衣の写真を登録すればするほど、新垣結衣を顔写真で判別するスキルが向上していきます。
顔写真の検索
作成した後に、顔写真を登録したcollectionに対して、検索したい顔写真を渡して類似度を知ることができます。
検索したい顔写真の人が、どれだけ新垣結衣に似ているかを判断してくれます。
今回は100人以上のcollectionを作成しました。
100人分のcollectionがあれば、それらに対して100回のAPIリクエストを送信して結果を知る必要があります。
Threadを使って一気に大量のAPIリクエストを送信しようとしましたが、Rekognitionから過負荷のエラーが返ってきました。
今のところ、このエラーがサービスにおける一番のボトルネックです。
これに関しては、現在、Amazonのサポートに問い合わせて、上限を引き上げてもらうように交渉中です。
DMM APIの実装
検索したAV女優の様々な個人情報は、みんなが気になるところです。
DMM APIを使ってAV女優の個人情報とアフィリエイトリンクを取得するようにしました。
サーバーとインフラの構築
サーバーの作成は一般的な技術を使って行いました。
AWSは本当に便利です。
- Elastic Load Balancing(ロードバランサ)
- EC2(Apache + Flaskのサーバー)
- S3(ファイルストレージ)
- Route 53(ドメインの取得)
Web画面の作り込み
今回は、PythonのFlaskフレームワークを作成しました。
ここでは、大して難しいことはやっていません。
しいて言うならば、アップロードした画像の圧縮ぐらいでしょうか。
レスポンシブデザイン
Bootstrapを作ってレスポンシブデザインを試みました。
拙いデザインですが、それでも時間がかかりました。
デザインスキルは向上させたいですね。。。
まとめ
思ったより満足ゆくサイトができました。
FacebookやTwitterから顔写真をダウンロードして、それを検索してみると、確かに似たAV女優がヒットしてきます。
Amazonさん、流石です!
男(俺)の夢を叶えてくれて、本当にありがとう。