プログラミング、フリーダイビング、ブロックチェーンのブログ

プログラミング道場

Rekognitionを使った画像検索サービスの作成方法【AWSは便利!】

更新日:

本記事の内容


今回は私が作成した画像で検索できるWebサイトの作成方法を紹介します。
設計方法や実際のコードを見られるので、かなり勉強になるはずです。
興味がある方は、読んでみて下さい。
GithubのURLはこの二つです。
コード1
コード2

私が作ったWebサイトの内容

今回、私が作成したサービスは、画像をアップロードすると、類似のAV女優を探し出してくれるというものです。
アップロードした写真は河北彩花です。
それに対して、同じ写真は類似度が99%と表示されているのは当然として、別の写真も92%と表示されています。
「永井みひな」や「河合あすな」も類似度が90%以上と表示されています。
確かに似ている気がします。
AWS Rekognitionは素晴らしいサービスです。

姉妹サイトで、乃木坂46を検索するサイトも作成しました。
こちらがアップロードした写真です。
結構、似ている気がします。

Webサイトを停止した理由

成果物に対してはかなり満足したのですが、このサイトは停止することにしました。
理由はRekognitionの値段が高いからです。
Image APIを通して画像を1,000枚処理すると、150円ほどかかります。
今回、女優のデータベースには100人ほど登録しました。
それは、一回の画像の検索で100回のAPIを投げることを意味します。
すると、一回の検索で15円ほどかかってしまいます。

個人でやる分には、リスクの高いサイトだなと判断して止めることにしました。

Webサイトの設計

ただし、折角なので記録は残しておこうかと思いたって、この記事を書くことにしました。
今回の大きな設計ポイントは、以下のようになります。

  1. AWSにCollectionを作成して、そこに画像を作成する。
  2. AWSのCollectionに対してAPIを投げて、結果を取得する。
  3. DMMのAV女優APIに問い合わせをして、趣味やアフィリエイトリンクを取得する。

では、順番に説明していきます。



AWSにCollectionを作成して、Collectionに画像を登録する

AWS Rekognitionで画像を検索するためには、Collectionを作成してやる必要があります。
Collectionには、対象物を入れます。
例えば、「堀北真希」を画像で検索したいとします。
そのさいには、まずは「horikita」というCollectionを作成してやり、そこに「堀北真希」の画像を登録する作業が必要になります。
「horikita」というColllectionに対して多くの画像を登録すればするほど、「堀北真希」を判断する精度は高くなるはずです。

実際の作業ですが、まずはS3上にバケットを作成します。
バケットとは、画像を保存する場所のようなものです。
通常は、ドメイン名を使います。
今回は、このように定義しました。

bucket_name="s3://imagine-sweetheart.com"
aws s3 mb $bucket_name

次に、バケットに堀北真希の画像をアップロードします。

aws s3 sync $source $bucket_name --acl public-read

そして、そのアップロードした画像をCollectionに登録してやります。

response = client.index_faces()

今、説明した作業を図にすると、このようになります。

AWSのCollectionに対してAPIを投げて、結果を取得する

次は、出来上がったCollectionに対して検索をします。
堀北真希に似た知人の写真をAWS Rekognitionになげてやれば、類似度が返ってきます。

response=rekognition.search_faces_by_image()

 

DMMのAV女優APIにAPIを投げて、趣味やアフィリエイトリンクを取得する

機能的には上の2つだけでもよかったのですが、最後に表示するAV女優の趣味とアフィリエイトリンクが欲しかったので、DMM APIも使用することにしました。

コードの解説

こちらのレポジトリにAWSにCollectionを作成する部分のソースコードをアップロードしました。

./s3.sh

このコードでバケットを作成して、ローカルにある画像をS3にアップロードしています。

create_collection_and_register_face.py

このコードで、ローカルにある複数の画像をCollectionに登録してやります。Collection名は、ローカルのディレクトリ名と同様にしました。

こちらのレポジトリでは、AWSに画像検索とDMMにAV女優検索のAPIを投げています。

def upload():

Flaskを使っており、このコードが起点になっています。
最初の方の処理は画像の加工をしています。

  • 検索したい画像をアップロード
  • 画像の圧縮
  • 画像のバリデーション
  • 画像をS3に保存

次にAWS Rekognitionに検索のAPIをなげるところですが、ここは少し工夫をしました。
通常のloop処理でAPIをなげると時間がかかってしまうからです。
Collectionの回数分だけAPIをなげる必要があり、今回であれば100人のAV女優をCollectionに登録したので、100回のAPIをなげる必要があります。
ただ、それを順番に待っているのは時間の無駄なので、並列処理を行うことにしました。
その処理がここです。

cmd = ['/usr/bin/python3','/var/www/html/bin/async_find_girl_and_dmm.py', file_name, threshold]

それが終わった後で、line 100行目辺りからDMMのAPIを呼び出して、スリーサイズ、趣味といった情報を取得しています。

str = 'https://api.dmm.com/affiliate/v3/ActressSearch?api_id='
str += DMM_APPID + '&affiliate_id=' + API_AFFILIATE_ID + '&hits=4&'
str += 'keyword=' + urllib.parse.quote_plus(girl_name_ja, encoding='utf-8')
str += '&output=json'
dmm_data = urllib.request.urlopen(str)

以上で、簡単ながらソースコードの説明を終わります。
コード量はそれなりにありますが、実際のところかは大したことはやっていません。

最後に一つ。
このサービスを作る上で、一番、大変だったことはCollectionに登録する顔写真を手動で集めることでした(笑)
本格的にやるなら、その作業を自動化しないと駄目ですね!

Good luck with your engineer life!

この記事が面白かった人は、こちらの記事も読んでみて下さい。

Pythonの学習でおすすめの本と動画【2021年最新】

初心者向け【入門編】 スラスラ読める Pythonふりがなプログラミング ふりがなプログラミングシリーズのPython版です。 文句なしに、やさしい内容なので、これからプログラミングを始めてみようという人は、この本から始めると良いかもしれま ...

続きを見る

機械学習で何ができますか?【医療からキュウリの選別まで】

機械学習という言葉をよく耳にしますが、それで何ができるのでしょうか? 機械学習でできること 顔の検出 画像の中にある顔を検出することができます。 顔の分析 性別、「目が開いているかどうか」、「笑っているかどうか」などを判別することができます ...

続きを見る

AWSの学習でおすすめの本と動画【2021年最新】

資格編 改訂新版 徹底攻略 AWS認定 ソリューションアーキテクト 図も多く初心者でも理解しやすく、よくまとまっているテキストです。 これ1冊では合格は難しいかもしれませんが、ダウンロードの模試も1回分ついているので、悪くないです。 一夜漬 ...

続きを見る

AIについて詳しく知りたい人は、この記事を読んで下さい

AIを学びたい人におすすめの本【2021年最新】

人工知能は人間を超えるか AIの第一人者である、東大の教授である松尾さんが書いた本です。 Googleが開発したアルファ碁などで使われているディープラーニングについて解説があります。 これからの社会で起こること、起こらないことをわかりやすく ...

続きを見る


統計学をより詳しく勉強したい人は、この記事を読んで下さい

統計学の学習でおすすめの本と動画【2021年最新】

初心者向け マンガでわかる統計学 素朴な疑問からゆる~く解説 初心者にわかりやすいと評判の本です。 カラー刷りで、漫画イラストを絡めながら統計に関する情報が記載されています。 一度は統計学に挫折した人でも、この本ならばきっとやれると思います ...

続きを見る


数学をより詳しく勉強したい人は、この記事を読んで下さい

機械学習に備えて数学を学習するためのおすすめの本と動画【2021年最新】

中学生レベル 中学校3年分の数学が教えられるほどよくわかる 大人になって数学から離れている人にオススメの一冊です。 中学生が読んでも大人が読んでも役に立つ本です。 「なんとなく」の理解から「人に教えられる」ほどの理解になるはずです^^ 高校 ...

続きを見る


IT業界について詳しく知りたい人は、この記事を読んで下さい

IT業界にいる人におすすめの本【2021年最新】

IT技術を使った会社の生存戦略 ソフトウェア・ファースト Sierを使った開発には限界がきており、これからは事業会社がエンジニアを雇用することで、ITの手の内化が必要だと、筆者は述べています。 現在のSierを使った開発方法の問題点と、事業 ...

続きを見る


Rをより詳しく勉強したい人は、この記事を読んで下さい

Rの学習でおすすめの本と動画【2021年最新】

統計 Rによるやさしい統計学 Rによる統計手法が関数ごとに非常にわかりやすく書かれています。 全て読めば、R関係のソフトウェアの統計解析が理解できるように思います。 Rによる多変量解析入門 多変量解析について勉強したい人にオススメの一冊です ...

続きを見る

関連コンテンツ

-AI, IT業界

Copyright© プログラミング道場 , 2021 All Rights Reserved Powered by AFFINGER4.