Amazon Web Services ブログ
Amazon Rekognitionを使ってMacOS Finderのタグ機能を更に良いものにしよう
こちらは、AWSのGlobal Startup EvangelistであるMackenzie Kosut(@mkosut)によってAWS Startups Blogに投稿された「Using Amazon Rekognition to enhance MacOS Finder Tags」の翻訳記事です。
日曜の朝、私はラップトップにある何百枚もの写真が保存されている大きなフォルダを眺めていました。サムネイルは素晴らしいのですが、私が本当にやりたかったことは、簡単にそしてクイックに”崖”の写真を探し当てることでした。
OS X Mavericksからタグ機能が使えるようになり、Finderウインドウでタグ付けされたファイルを探せるようになっています。そこで、私はラップトップからAmazon Rekognitionに写真を送信し、それぞれの写真についてAmazon RekognitionのDeep Learningベースの画像認識を行い、そして、識別情報をタグとしてファイルに登録し、Finderでそのファイルを開けるようにする、という一連の処理に関してどの程度の手間がかかるのか知りたいと思っていました。
これが実現できると、FinderもしくはSpotlight(MacOSの検索機能)において、Tag:<term>という形で検索できるようになります。例えば、全ての猫(cat)の写真を引き当てたい場合は Tag:Cat と入力することで結果を得ることが出来る、というものです。
writexattrs
ファンクションのコードスニペットをオンラインで見つけた後、そうこうするうちに、Amazon Rekognitionに写真を送り、Tagの結果を得て、それらをファイルに登録することが出来てしまいました。約30分の間に50行ほどのコードを書いて、それが実際に動作するプロトタイプになりました。
コードは https://github.com/mkosut/rekognition_osx_tagfile にありますので、是非ご覧になさってください。
多数の写真がある大きなフォルダーについても正しく動作しました。そして、パフォーマンス向上のため、アップロードの前にイメージのリサイズを行い、プロセスをマルチスレッドで行えるようなpull requestをチームの中のメンバーが送ってくれました。
私が本当に欲しかったものは、画像がフォルダに追加された時に自動でタグ付けされる、というものでした。私はそのためにMacOS Automatorを活用しました。Automatorでは使い勝手の良い簡単なインターフェースを通じてフォルダーのアクティビティをウォッチすることができ、新しいファイルが書き込まれたらアクションを走らせることができます。これはAmazon S3にファイルのファイルが変更された時にAWS Lambdaの処理をいつでも自動的に稼働させるものと似ていると言えるでしょう。
このワークフローは”TagMe”フォルダーに新しいファイルが書き込まれるのを待ち受け、それらを rek_osx_tagfile.py スクリプトにファイル名をパラメーターとして渡して起動します。
それでは最終テストです:
成功しました!
このhackを通して私は大きな気付きを得ました。それは、AWSはどんなことにも活用できるケーパビリティを持っているということです。ここには非力な1台のラップトップしかありませんが、私はAmazon Rekognitionの巨大なDeep Learning基盤を用いることで大量の写真の解析をすることができましたし、何より少ないコードでそれを実現できました!
翻訳:篠原英治(原文:「Using Amazon Rekognition to enhance MacOS Finder Tags」 – https://thinkwithwp.com/blogs/startups/using-amazon-rekognition-to-enhance-macos-finder-tags/)