技術

Amazon Rekognitionを使うと写真に自動でタグを付けられます。

投稿日:2017年4月30日 更新日:

こんにちは、高石です。

来月20日(5月20日)はエンたまもくもく会#5です。
毎度参加者も増えてきて、楽しみも増してきます!

まだ、枠がありますので、エントリーがまだの方はエントリーしてみてくださいね。初めての方も大歓迎!!!

エントリーはこちら

前回の様子はこちらでレポートしてくれているので雰囲気がわかると思います!

 

さて、今回の記事では、以前のもくもく会で、私がもくもくと試したAmazon Rekognitionの利用例についてご紹介します。

まず、Amazon Rekognitionを知らない方のために 公式サイトの言葉を借りて説明すると、

Amazon Rekognition は、画像の分析をアプリケーションに簡単に追加できるようにするサービスです。 Rekognition では、画像内の物体、シーン、顔の検出、顔の検索と比較、および不適切なコンテンツの識別ができます。 Rekognition の API を使えば、深層学習に基づく高度な視覚検索やイメージ分析をアプリケーションにすばやく組み込むことができます。

https://aws.amazon.com/jp/rekognition/から引用

簡単言うと人工知能で画像の内容は判別してくれるサービスです。
画像解析がこんなに簡単にできるなんて、いい時代に生まれたとつくづく思います。

 

そんな便利なAmazon Rekognitionを使った利用例を紹介します。

利用例といいつつ紹介するのはこちらのサイトの内容そのままなのでオリジナリティはほぼゼロです。

https://aws.amazon.com/jp/blogs/startups/using-amazon-rekognition-to-enhance-macos-finder-tags/

あるフォルダに画像が置かれると、Amazon Rekoginitionを使って画像の内容を解析し、Finderのtagを自動でつけてくれるという内容です。
これで画像の検索も簡単にできるようになります!便利です!自動化が好きな私としては最高です!
(tag付けまでは少し(5-6秒)時間がかかります。)

流れは

  1. フォルダにファイルが置かれるとフォルダアクションでシェル起動
  2. PythonにてAmazon Rekognition APIを呼び出し、結果をplistにformatしてxattrでtagにセット

という感じです。

手順

Pyhonの実行環境やAWS CLIは入っている前提です。
入ってない人は調べて入れてください。

次にローカルにプロファイルの設定。
Amazon Rekognitionは東京リージョンに無いので、米国東部(バージニア北部)(us-east-1)で専用のprofileを作っています。

$ aws configure --profile rekognition
AWS Access Key ID [AKIA************hoge]:AKIA************hoge
AWS Secret Access Key [****************hOgE]:****************hOgE
Default region name [ap-northeast-1]:us-east-1
Default output format [None]:json

次はPythonやシェルのスクリプトファイルを落としてきます。

スクリプトはこちら。
https://github.com/mkosut/rekognition_osx_tagfile

さらに、Automatorでフォルダアクションを登録します。

cloneしたファイルの中にのrekognition_tagPhotos.workflow.zipを解凍しできた、rekognition_tagPhotos.workflowをAutomatorで開きます。
シェルはprofileさえ合っていればそのままでも動きますが、今回はこんな感じに書き換えました。

export AWS_DEFAULT_PROFILE=rekognition
LOG_FILE="/var/log/aws/aws_rekognition.log"
for f in "$@"
do
  echo "/usr/local/bin/python3 (git cloneしたフォルダ)/rekognition_osx_tagfile/rek_osx_tag.py -f $f" >> ${LOG_FILE}
  /usr/local/bin/python3 (git cloneしたフォルダ)/rekognition_osx_tagfile/rek_osx_tag.py -f "$f" >> ${LOG_FILE} 2>&1
done

Automatorの「”フォルダアクション”は、次の場所に追加されたファイルやフォルダを受け取る:」では、今回タグ付け対象にするフォルダを指定し、保存します。

再度、rekognition_tagPhotos.workflowを開き、インストール。
インストール後は、
「/Users/(username)/Library/Workflows/Applications/Folder Actions」

「rekognition_tagPhotos.workflow」
が保存されます。

これで準備完了です。

実行

あとはタグ付け対象にしたフォルダに画像ファイルをドラッグ&ドロップするだけです。

ドラッグするとこん感じでタグ付けされます。

ネコちゃんに自動タグ付けされた内容はこんな感じ。Adorable(愛らしい),Animal(動物),Cat(ねこ),Mammal(哺乳類),Pet(ペット)。まあ大体あってますね。

複数のファイルを同時にドラッグ&ドロップしても大丈夫。

ちょっと時間はかかりますが、こんな感じで全部タグづけされます。

ああ、楽しい。自動化最高です。

-技術

執筆者:


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

関連記事

[Xcode] The executable was signed with invalid entitlements. でアプリを実機確認できない!

こんにちは。たなかです。 作ったiOSアプリを実機確認したくて、Xcodeからデ …

[Angular6] Angularのユニットテストでprivate変数を読み込む

Angularでテストコードを書いている時、component側で定義しているp …

no image

[TypeScript]enumを代入記法で書いた場合に、値からキーが取れるか調べてみた。

TypeScriptのenumのドキュメント(TypeScript Deep D …

[Xcode]Provisioning ProfileのUUIDを確認する方法

どうも田中です。 iOSアプリの審査に向けて作業している最中、buildエラーに …

ブラウザでRailsのrouting設定を確認する

こんにちは Railsでroutingを確認する時、コマンドでrails rou …