Amazon Mechanical TurkでVisdial Dataset(arxiv.org/abs/1611.08669)を収集するために使用される2人のチャットインターフェイスのソース。
このコードが便利だと思う場合は、私たちの作品を引用することを検討してください。
@inproceedings{visdial,
title={{V}isual {D}ialog},
author={Abhishek Das and Satwik Kottur and Khushi Gupta and Avi Singh
and Deshraj Yadav and Jos'e M.F. Moura and Devi Parikh and Dhruv Batra},
booktitle={Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition},
year={2017}
}
リアルタイムチャットインターフェイスは、node.jsとsocket.ioを使用して構築されます。 Redisを使用して、ライブヒット用の画像のプールを維持し、すべてのデータは最終的にMySQLデータベースに存在します。
データベーステーブルには、ランダムに選択されたキャプションが付いたCoCoデータセットの画像を保存します。このテーブルの画像のバッチが、ヒットを起動するためにRedisリストに押し込まれます。チャットインターフェイスに対応するWebサーバーは、2つのAMTワーカーをペアにし、ロール(質問者または回答者)を割り当て、Redisリストから画像を選択してデータを収集してデータベースで会話を保存し、ヒットが完了すると「完了」します。これは並行して発生しているため、労働者は待機しておらず、サーバーは労働者が一意のIDを持っていることを保証します。切断は優雅に処理されます - 残りの労働者は、質問を続けたり、最大10のメッセージを事実(キャプション)の提供を続けるように求められます。ヒットが完了すると、 mturk_scripts/approveのスクリプトを使用して、ヒットを承認、拒否し、労働者を支払うことができます。
Redisリストから画像をポップし、MySQLテーブルから関連するデータを取得し、チャットインターフェイスをレンダリングし、AMTでワーカーをペアにし、提出されたデータをMySQLテーブルに保存します
npm installを使用して依存関係をインストールする( nodejsフォルダーから)example.config.jsをconfig.jsにコピーし、mysqlとredis資格情報を設定しますstatic/datasetから/path/to/mscoco/images/index.html行276のアプリパス(vhostから)を更新しますnode index.jsを実行すると、127.0.0.1:5000でインターフェイスを提供する必要がありますMySQLデータベースを設定し、Redisリストに登録し、ヒットを承認/拒否するスクリプト
example.config.jsonをconfig.jsonにコピーし、mysql資格情報を設定します。 from_timestampはヒットのバッチを起動する前にUnixタイムスタンプですcreateDatabase.pyおよびfillDatabase.py mysqlテーブルを作成し、ココ画像とキャプションを入力し、ヒットのバッチ用のredisリストを生成しますcreateHits.py AMTでヒットを起動しますmturk_scripts/approve )example.config.jsonをconfig.jsonにコピーし、mysql資格情報を設定しますexample.constants.pyをconstants.pyにコピーし、amt資格情報を設定しますreviewHits.pyヒットを完了し、レビューのためにamthitsQues.csvとamthitsAns.csvに保存しますapproveHits.pyを実行して、支払いおよびreviewRejectedHits.py承認済みヒットをマークし、ヒットrejectHits.py 、最終的にpayWorkers.py処理するために支払いを行うこのコードの一部(Mturkスクリプト)は、 @JCJohnsonのSimple-AMTプロジェクトから採用されています。
BSD