Fonte da interface de bate-papo em duas pessoas usada para coletar o conjunto de dados visdial (arxiv.org/abs/1611.08669) no Amazon Mechanical Turk.
Se você achar esse código útil, considere citar nosso trabalho:
@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}
}
A interface de bate-papo em tempo real é criada usando Node.js e Socket.io. Usamos o Redis para manter um pool de imagens para hits ao vivo e todos os dados finalmente residem em um banco de dados MySQL.
Uma tabela de banco de dados armazena imagens do conjunto de dados Coco, cada uma com uma legenda escolhida aleatoriamente. Um lote de imagens desta tabela é então empurrado para uma lista Redis para o lançamento de hits. O servidor da web correspondente ao bate -papo emparelha dois trabalhadores da AMT, atribui funções (questionador ou atendente) e mostra a interface correspondente, escolhe uma imagem da lista Redis para coletar dados e salvar sua conversa no banco de dados, também marcando essa imagem como 'completa' quando o acerto for feito. Isso acontece em paralelo para que os trabalhadores não fiquem esperando, e o servidor garante que os trabalhadores tenham IDs únicos. As desconexões são tratadas graciosamente - é solicitado que o trabalhador restante continue fazendo perguntas ou fornecendo fatos (legendas) até 10 mensagens. Depois que os acertos estiverem concluídos, os scripts em mturk_scripts/approve podem ser usados para revisar, aprovar, rejeitar hits e pagar os trabalhadores.
Pops Imagens da lista Redis, recupera dados relevantes das tabelas MySQL, renderiza a interface de bate -papo e combina os trabalhadores da AMT, SAVEs enviados dados para MySQL Tables
npm install (da pasta nodejs )example.config.js para config.js , e defina credenciais MySQL e Redisstatic/dataset para /path/to/mscoco/images/index.html 276node index.js agora deve servir a interface em 127.0.0.1:5000Scripts para configurar o banco de dados MySQL, preencher a lista Redis e aprovar/rejeitar hits
example.config.json para config.json e defina credenciais do MySQL. from_timestamp é o timestamp Unix antes de lançar um lote de hitscreateDatabase.py e fillDatabase.py Crie tabelas MySQL, preenchem -as com imagens e legendas e geram a lista Redis para um lote de hitscreateHits.py lança hits na AMT mturk_scripts/approve )example.config.json para config.json e defina credenciais do MySQLexample.constants.py para constants.py e defina credenciais da AMTreviewHits.py é concluído e salva -os em amthitsQues.csv e amthitsAns.csv para revisãopayWorkers.py que os hits foram revisados nos arquivos CSV (alterando 'NotApprove' para 'revisamReject' ou 'Aprove'), execute approveHits.py para marcar hits aprovados para pagamento e reviewRejectedHits.py rejectHits.py .As partes deste código (scripts mTurk) são adaptadas do projeto simples do @jcjohnson.
BSD