日本からAmazon Mechanical Turkで作業を依頼してみた
TL;DR
Amazon Mechanical Turkで日本からのタスク依頼が可能になった[1]ので、リクエスタ用のアカウントを作って簡単なタスクを依頼してみました。
Amazon Mechanical Turkとは
https://aws.amazon.com/jp/mturk/
アカウントの作成から公開まで
アカウントの作成
Amazon Mechanical Turkのランディングページ からアカウントを作成します。 試したことがないので詳細は不明ですが、以前はアカウントの作成に米国の住所と銀行口座が必要[2]だったとのことです。 今回は日本の住所とクレジットカードを登録してアカウントを作成しました。
依頼するタスク
今回は、「犬の表情を推定する」という問題にチャレンジします。 ワーカに6枚の犬の画像を見てもらい、それぞれの画像に対して、表情を選択肢から選んでもらうというタスクを依頼します。 選択肢には喜怒哀楽(Joy, Anger, Sadness, Happiness)の4つを設けることにしました。(犬にこのような分類の勘定があるのかはよくわかりませんが、人間から見た時の表情を推定してみることにします)
犬の写真には、自分が個人的に撮影したものを用いるため、正解はありません。
プロジェクト(タスク)の作成
Amazon Mechanical Turkにログイン後のダッシュボードから、Create
タブを選択してプロジェクトを作成します。 サイドバーにプロジェクトテンプレートのリストが表示されるので、適当な項目(今回は、Tagging of an Image)を選びます。
プロジェクトを作成すると、ワーカの画面で表示されるプロジェクト概要や、報酬を設定する画面に移るので、適当に入力します。 今回は、1タスクに対する報酬を$0.1とし、25名のワーカに作業を依頼することにしました。
設定が終わると、タスクのデザインを編集する画面に移ります。 プロジェクトのテンプレートが入力されていて、タスクのデザインをリッチエディタで編集することが出来ます。
このタスクのデザインはHTMLで記述されていて、エディタのソース
というボタンを押すと、ソースコードを直接編集することが出来ます。 ソースを見ると、Bootstrap3が読み込まれた簡単なテンプレートのようなので、編集して次のようなタスクを作成しました。
回答する部分はフォームになっているので、inputタグなどのnameやvalueなどの属性を適用に書き換えることが出来ます。 タスク結果にあるワーカの回答がname: valueの組で格納されることになります。
テンプレートにはSubmitボタンは記述されていませんが、Previewを見るとボタンが追加されているので、テンプレートに含まれるコメントの末尾に挿入されているようです。(要検証)
タスクの編集が終わったらFinishボタンを押します。
タスクを公開する
Amazon Mechanical TurkのダッシュボードからCreate
タブをすると、先ほど作成したプロジェクトが表示されるので、Publish Batch
ボタンを押します。
タスクの概要とタスクの画面が表示されるので、問題がなければ次の画面(タスク依頼料の見積もりなどの確認画面)に進んでタスクを公開します。
公開したタスクをワーカの画面から探してみる
しばらく(5分ぐらい)すると、ワーカ用のアカウントから、先ほど作成したタスクを見つけることが出来ました。 ワーカはタスクの画面を見てから作業を実施するかを判断できるようになっています。
結果を確認する
公開してから30分ほどで、リクエスタの管理画面から全てのタスクが処理済みになっているのを確認しました。
results
ボタンを押すと、作業したワーカとそのワーカのこれまでの承認率、回答の概要を閲覧することが出来ます。 スパムワーカ等による回答が含まれていた場合は、この画面から承認のチェックを外すなどの対応ができるようになっています。 今回は正確な回答を得る必要はないので、全ワーカの回答を承認しました。
ワーカの回答結果は、承認後の画面からCSV形式でダウンロードすることが出来ます。
結果を集計する
ダウンロードしたCSVファイルには、
- タスクの概要(説明文とか)
- 承認した時刻のタイムスタンプ
- 作業開始した時刻のタイムスタンプ
- 作業完了した時刻のタイムスタンプ
- タスクの回答
- その他(ワーカのIDやタスク割り当てIDなど)
が含まれていました。
ここでは、タスクの回答の項目をみて、各画像の犬の表情を集計していきます。
今回ワーカに依頼したタスクは、「6枚の犬の画像をみて、それぞれの表情を4つの選択肢(喜怒哀楽)から選んでもらう」というものでした。 このタスクを25名のワーカに依頼したので、各画像について4つの選択肢が選ばれたの分布を見ていくことにします。
怒ってます。
どういった経緯でこうなったのか忘れてしまいましたが、ルンバがクラッシュして犬が喜んでいるようにみえるので大体合ってると思います。
これはたぶん幸せそう。
寝ているという点では幸せそうですが、この目は呆れているように見えます。
これはたぶん幸せそう。
もはや抵抗することすら面倒くさいといったところでしょうか。いつも寝てる時に写真撮ってごめんよ。
まとめ
この記事では、Amazon Mechanical Turkでのリクエスタ登録が日本からも可能になったことを受けて、アカウントの作成から簡単なタスクの依頼し集計するまでの手順を試してみました。
今回取り上げた、「犬の表情を推定する問題」はおそらく教師データがないので計算機処理するのが難しいと考えられますが、Amazon Mechanical Turkを用いてタスクの準備から集計までを含めても2時間程度で終えることが出来ました。自分が個人的に撮影した画像に対してタグ付けを行ったので、正解はありませんが、概ね納得のできる(直感に沿う)結果が得られたのではないかと思います。(本当の感情は犬に聞いてみないとわかりませんが)
今回はテンプレートをベースとしたシンプルなタスクを作成しましたが、Amazon Mechanical TurkではAPIを用いて細かいタスクの制御ができるらしいので、次回はそのあたりにチャレンジしてみようと思います。
参考文献
[1] https://blog.mturk.com/mturk-is-now-available-to-requesters-from-43-countries-77d16e6a164e
[2] http://yukino.moo.jp/2014-04-21-NAIST-crowdsourcing.pdf