Category: Artificial Intelligence*


Pollexy – Amazon Polly と Raspberry Pi で構築した特別なニーズをサポートする音声アシスタント

4 月は Autism Awareness month (自閉症啓発月間) です。米国では 68 人中に 1 人の子供が自閉症スペクトラム障害 (ASD) と診断されています (2014 年 CDC 調査)。 今回のブログでは AWS のシニア DevOps クラウドアーキテクトの Troy Larson が、息子の Calvin をサポートするために取り組んでいるプロジェクトについて紹介します。これまでにも、AWS がどのようにしてこれほどたくさんの様々なアイデアを出し合えるのか聞かれたことがあります。場合によっては、とても個人的な理由で大切な誰かの役に立ちたいという願いからアイデアが浮かぶこともあるのですが、この Pollexy はまさにその例です。まずは Pollexy に関する記事を読んでから、こちらの動画をご覧ください。 -Ana


背景

私はここ何年もの間、自閉症で会話の少ない 16 歳のティーンエイジャーの親であるコンピュータプログラマーとして、どうにかテクノロジーを使ってより安全で幸せかつ快適な暮らしをつくることができないかと常に模索していました。このプロジェクトのチャレンジとなる根源は、人との交流におけるすべての基本、つまりコミュニケーションです。息子の Calvin は口頭による指示には反応しますが、責任を持って発言することができません。彼のこれまでの人生において、私達が会話をしたことは一度もないのです。自分の部屋で一人で遊んでいることはできても、すべてのタスクや一連のタスクをこなすには、他の誰かが口頭で彼に促す必要があります。我が家には他にも子供がおり、家庭内で担当するその他の役割もありますから、Calvin にかかりっきりになることで家庭内の雰囲気に負の影響が出てしまうことも否めません。

事の発端

去年開催された re:Invent で Amazon PollyAmazon Lex のことを初めて耳にしてから、すぐにこうした技術を活用してどのように息子をサポートできるか考え始めました。息子は人による口頭指示に対しては問題なく対応することができますが、デジタル音声を理解することはできるのだろうか? という疑問がありました。そこで、ある土曜日に Raspberry Pi を息子の部屋に設定し、ドアを閉め、息子に気付かれないように家族と一緒に様子をうかがってみることにしました。Raspberry Pi に接続し、聞き慣れた西海岸の発音による Joanna を選び Polly を介して息子に問いかけてみました。「Calvin、トイレ休憩の時間だよ。部屋から出てトイレに行きなさい。」すると、数秒後に息子の部屋のドアノブが回る音がしました。我々家族は思わず隠れていた場所から頭を出して覗いてみると、息子はよく分からないといった顔つきで私をちらりと見て、そのまま Joanna が指示したようにバスルームに向かっていったのでした。Calvin が聞いたことも見たこともない人物の声による指示を聞き、それに応えたことを目の当たりにした私達は驚きで顔を見合わせたほどです。この一件に関するアイデアを同僚達と話し合ったところ、そのうちの一人が、毎年恒例の AWS Sales Kick-Off ミーティングで開催される IoT と AI のサイエンスフェアに参加してみたらどうだろう、と提案してきました。Polly と Lex のリリースから 2 か月そして 3500 ものコードを作成後、Pollexy は (Calvin 同伴) サイエンスフェアでデビューを飾りました。

概要

Pollexy (“Polly” + “Lex”) は Raspberry Pi とモバイルベースの特別なニーズに応える音声アシスタントです。ヘルパーは Pollexy を使用して、音声によるタスクの指示や、定期的に行うスケジュールもしくはオンデマンドのスケジュールに関するメッセージを再生するように設定できます。たとえば、ヘルパーは定期的に服用する薬のリマインダーメッセージをスケジュールしたり、毎時間のトイレ休憩を促すメッセージを設定することができます。また、同時に Amazon Echo とモバイルデバイスを使用して特定のメッセージをすぐに再生するようにリクエストすることも可能です。ヘルパーは相手がメッセージを聞いたか確認するように設定することもできます。たとえば、Pollexy が最初に「青いボタンを押してください (Push the blue button)」と言わない限り、息子は Pollexy に反応しません。息子が青いボタンを押すまで、Pollexy はメインのメッセージを再生しないようになっています。また他の状況では Lex を使用して口頭で応答したり、確認が不要なユーザーもいるでしょう。どちらにしても、自分のニーズに適うように Pollexy をカスタマイズすることができるのです。そしてもっとも重要かつチャレンジとなるポイントは、大きな家に住んでいる場合、メッセージを再生する部屋に相手がいるか確認するにはどうしたらいいのか? という点です。特別なニーズのある大人が離れに住んでいる場合はどうでしょう?リビングにいるのかキッチンにいるのか分からない場合は?相手が複数人いる場合は?屋内にいる複数の人物がそれぞれ別の部屋にいた場合、各自にそれぞれ別のメッセージを送りたい場合はどうでしょう?では、次に基本的な要素と全容についてご説明します。

Pollexy の基本的要素

Amazon のリーダーシッププリンシプルは「Invent and Simplify (発明と簡素化)」です。Amazon では Pollexy アーキテクチャの複雑性を最小限に抑えたいと考えています。Pollexy で連係しているオブジェクトとコンポーネントは、簡単に説明できる方法でそれぞれ 3 つのタイプに分けることができます。

オブジェクト #1: ユーザー

Pollexy でサポートできるユーザー数には制限がありません。ユーザーは独自の特定できる名前です。「確認する」など基本的な事項を設定できます。さらに大きなポイントは場所をスケジュールで特定できることです。つまり、誰かがいる家の特定の場所に対して Outlook のようなスケジュールを作成することができるのです。

オブジェクト #2: 場所

場所はデバイスが物理的に設置されている独自の場所を識別します。ユーザーのロケーションスケジュールをベースに、Pollexy はどのデバイスを順次に使用して連絡するか把握することができます。必要に応じてデバイスを「消音」モードにすることもできます (お昼寝中など)。

オブジェクト #3: メッセージ

もちろん、これが本来の目的です。各メッセージには、ユーザーそして定期的に実行するスケジュールが連携されます (1 回限りのメッセージを除く)。Pollexy はメッセージの再生準備が整うと、ユーザーの場所を確認することができるのでメッセージには場所情報は保存されません。

コンポーネント #1: スケジューラー

メッセージはどれもスケジュールする必要があります。これはコマンドラインツールです。たとえば「Calvin に「午後 8 時までに歯を磨くこと」と伝えてください」と言った場合、このメッセージは DynamoDB に保管され、Lambda 関数のキューイングを待つことになります。

コンポーネント #2: キューイングエンジン

Lambda はスケジューラーを毎秒ごとに実行しチェックして、メッセージがあるか、また再生できるメッセージがあるか確認します。再生するメッセージがある場合、ユーザーの場所のスケジュールを確認してメッセージを再生またはその場所に SQS キューを送ります。

コンポーネント #3: スピーカーエンジン

Raspberry Pi デバイスでは毎分ごとにスピーカーエンジンが起動し、その場所の SQS を確認します。メッセージがある場合、スピーカーエンジンはユーザーの設定を確認しメッセージを再生するためにコミュニケーションを開始します。相手が応答しない場合、スピーカーエンジンはスケジュールでそのユーザーに別の場所が指定されているか確認し、その 2 番目の場所の SQS キューにメッセージを送ります。結果としてメッセージは再生されるか、タイムアウトになります (そのユーザーが 1 日中留守にしている場合など)。

ユーザーへの配慮と自由がキーポイント

私達は大方、個人のプライバシーや個人情報への配慮というものはごく普通のことだと捉えていると思います。特別なサポートを必要としている人達にとって、常に誰かに見られているということは、プライバシーや自由というものがどれだけ欠如している状況であるのか想像してみてください。自閉症と向き合っている人達にとっては、他者が個人のスペースに入り込むことを強く疎ましく思い、場合によってはそれが怒りや不満に繋がることもあります。Pollexy は不満をもたらすことがなく、穏やかな友達といった存在として日常におけるサポートを提供し、ユーザーに自信を持たせながら、誰もが望む個人のプライバシーや自由が尊重されていると思わせることができるツールです。

-Troy Larson

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://aws.amazon.com/blogs/startups/using-amazon-rekognition-to-enhance-macos-finder-tags/

Amazon Rekognition の更新 – 顔の推定年齢範囲

Amazon Rekognition は当社の人工知能サービスの 1 つです。Rekognition では、画像内の物体、シーン、および顔を検出できるほか、顔を検出して比較することができます。Rekognition は、バックグラウンドで詳細な神経ネットワークモデルを使用して、毎日数十億の画像を分析しています (詳細については、「Amazon Rekognition – ディープラーニングによる画像の検出と認識」を参照してください)。Amazon Rekognition は、画像で見つけた顔ごとに属性の配列を返します。本日、推定年齢範囲という新しい属性を追加します。この値は年数で表され、整数のペアとして返されます。年齢範囲は重なる場合があります。つまり、5 歳の顔の推定範囲は 4~6 歳になるが、6 歳の顔の推定範囲は 4~8 歳となる場合があります。この新しい属性を使用すれば、公共安全アプリケーションの増強、人口動態の収集、必要な期間を対象とした写真の整理が可能になります。この新機能を少し楽しむため (私はこの投稿を金曜日の午後に書いています)、自分の写真アーカイブを掘り起こして、Rekognition に私の年齢を推定させてみました。答えは次のようになりました。最初から始めましょう。この写真では、おそらく私は 2 歳でした。

この写真は、1966 年の春に私の祖母の家で撮られたものです。

私は 6 歳でした。Rekognition は私の年齢を 6~13 歳と推定しました。

2003 年の私の最初の公式な Amazon PR 写真では、私は 43 歳でした。

これには 17 年の範囲があり、私の実年齢はちょうどその中間でした。そして私の最新の (2015 年後半) の PR 写真 (55 歳) です。

これもまたかなり幅がありますが、私の年齢はちょうど中間です。一般的に、顔の実年齢は Rekognition で示された年齢の範囲に収まりますが、正確に中間になることを当てにしないでください。この機能は提供が開始されており、今すぐ使い始めることができます。

Jeff;