Quelle für die Zwei-Personen-Chat-Schnittstelle zum Sammeln des visdialen Datensatzes (arxiv.org/abs/1611.08669) auf Amazon Mechanical Turk.
Wenn Sie diesen Code nützlich finden, sollten Sie unsere Arbeit zitieren:
@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}
}
Die Echtzeit-Chat-Schnittstelle wurde mit node.js und socket.io erstellt. Wir verwenden Redis, um einen Bilderpool für Live -Hits zu verwalten, und alle Daten befinden sich schließlich in einer MySQL -Datenbank.
In einer Datenbanktabelle werden Bilder aus dem Coco -Datensatz mit jeweils zufällig ausgewählter Bildunterschrift gespeichert. Anschließend wird eine Reihe von Bildern aus dieser Tabelle auf eine Redisliste gedrückt, um Hits zu starten. Der Webserver, der der Chat -Schnittstelle entspricht, kombiniert zwei AMT -Mitarbeiter, weist sie Rollen (Fragesteller oder Antworter) zu und zeigt eine entsprechende Schnittstelle an, wählt ein Bild aus der Redisliste aus, um Daten zu sammeln und ihre Konversation in der Datenbank zu speichern. Außerdem kennzeichnet das Bild als „vollständige“, sobald der Hit durchgeführt wird. Dies geschieht parallel, sodass die Arbeiter nicht warten müssen, und der Server stellt sicher, dass die Mitarbeiter eindeutige IDs haben. Trennungen werden anmutig behandelt - der verbleibende Arbeiter wird gebeten, weiterhin Fragen zu stellen oder Fakten (Untertitel) bis zu 10 Nachrichten bereitzustellen. Sobald die Treffer abgeschlossen sind, können Skripte in mturk_scripts/approve verwendet werden, um Treffer zu überprüfen, zu genehmigen, Treffer abzulehnen und Mitarbeiter zu bezahlen.
POP -Bilder aus der Redisliste, ruft relevante Daten aus den MySQL -Tabellen ab, rendert die Chat -Oberfläche und kombiniert die Mitarbeiter auf AMT, speichert übermitteltes Daten an MySQL -Tabellen
npm install (aus dem Ordner nodejs )example.config.js in config.js und setzenstatic/dataset zu /path/to/mscoco/images/index.html Zeile 276node index.js sollte nun die Schnittstelle unter 127.0.0.1:5000 bedienenSkripte zum Einrichten der MySQL -Datenbank, zur Aufgabe der Redisliste und zur Genehmigung/Ablehnung von Treffern
example.config.json in config.json und setzen Sie MySQL -Anmeldeinformationen. from_timestamp ist unix Timestamp, bevor er eine Reihe von Hits startetcreateDatabase.py und fillDatabase.py erstellen MySQL -Tabellen, bevölkern Sie es mit Coco -Bildern und -unterschriften und generieren die Redisliste für eine Stapel -HitscreateHits.py startet Treffer auf AMT mturk_scripts/approve )example.config.json in config.json und setzen Sie MySQL -Anmeldeinformationenexample.constants.py in constants.py und setzenreviewHits.py wird abgeschlossene Hits und speichert sie bei amthitsQues.csv und amthitsAns.csv zur ÜberprüfungreviewRejectedHits.py rejectHits.py den CSV -Dateien überprüft wurden (durch Ändern von "nicht genehmigten" payWorkers.py "reviewRejection" oder "genehmigen"), werden approveHits.py .Teile dieses Codes (MTurk-Skripte) sind an @JCJohnsons Simple-AMT-Projekt angepasst.
BSD