Amazon Rekognitionを使ってMacOS Finderのタグ機能を更に良いものにしよう | Amazon Web Services ブログ
こちらを読んでいて、面白そうだったのでやって見ました。
やっていることは、あるフォルダに画像が置かれると、Amazon Rekoginitionを使ってLabelを取得し、その値をplistにformatしてxattrでtagをセットするという仕組みです。
内部的に一旦jpg変換してからrequestしているのもあり、1画像あたり2〜6秒程度時間が掛かります。
MacのFolder Action初めて使いましたが、これは面白いです。
色々自動化できそう。
こんな感じ
この画像だと、
Alcohol, Beer, Beverage,Drink, Cup が設定されました。
spotlightのtag検索だと、こういう感じ。finderの検索も同じようにできます。
また、finder上でもtagを見ることができます。
やり方
pip installとかAWS側の設定は基本的な話なので省略。
ソース
automator workflow
対象フォルダをworkflowで設定すると、installすることができます。
shellのパスなどを修正すればautomatorとしてはokです。
shellについては、私は以下のようにしてみました。
export AWS_DEFAULT_PROFILE=rek LOG="/var/log/aws_rekognition.log" echo "-- start $(date)" >> ${LOG} for f in "$@" do echo "/usr/local/bin/python3 ~/lib/rekognition_osx_tagfile/rek_osx_tag.py -f $f" >> ${LOG} /usr/local/bin/python3 ~/lib/rekognition_osx_tagfile/rek_osx_tag.py -f "$f" >> ${LOG} 2>&1 done echo "-- end $(date)" >> ${LOG} echo "" >> ${LOG}
AWS_DEFAULT_PROFILE についてですが、
Amazon Rekognition のregionは東京にはないので、profileを分けて実行するようにしています。
profileは aws configure --profile your_profile_name
で作成可能です。
Folder Action
対象フォルダを右クリックし、Services > Folder Action Setup… で対象フォルダと実行サービスの紐付けを行い、有効化します。
使い勝手について
Beerの画像のように分かりやすといいのですが、もう少し複雑なものだと大量にタグがセットされてしまいます。
例えば、台湾のお寺の写真だと
こんなに沢山(script内で最大数は50に設定されています)。
People, Person, Human, Architecture, Shrine, Temple, Worship, Bar Counter, Pub, Night Club, Night Life, Clothing, Dress, Road, Street, Town, Subway, Train, Train Station, Vehicle, Costume, Alley, Alleyway
python script内でconfidenceを50としているのが、少し緩い印象。
ここは、-c オプションで変更可能ですが、調整した方がいいかもしれません。