public static void CreateDemoJob_OBJECT_COUNTING_IN_VIDEO() { SatyamJob job = new SatyamJob(); AzureInformation AzureInfo = new AzureInformation(); AzureInfo.AzureBlobStorageConnectionString = SatyamJobStorageAccountAccess.connection_string; AzureInfo.AzureBlobStorageContainerName = "demo"; AzureInfo.AzureBlobStorageContainerDirectoryName = "PedestrianCountingDemo"; AmazonMTurkHITInformation AmazonInfo = new AmazonMTurkHITInformation(); ObjectCountingSubmittedJob template = new ObjectCountingSubmittedJob(); template.ObjectName = "pedestrian"; template.Description = "By pedestrians we mean people walking or on wheel chairs not cyclists."; job.JobGUIDString = "OBJECT_COUNTING_IN_VIDEO_DEMO"; job.amazonHITInformation = AmazonInfo; job.azureInformation = AzureInfo; job.JobSubmitTime = DateTime.Now; job.JobTemplateType = "OBJECT_COUNTING_IN_VIDEO_DEMO"; job.UserID = TaskConstants.AdminName; job.JobParameters = JSonUtils.ConvertObjectToJSon <ObjectCountingSubmittedJob>(template); string JobParametersString = JSonUtils.ConvertObjectToJSon <SatyamJob>(job); SatyamJobSubmissionsTableAccess jobDB = new SatyamJobSubmissionsTableAccess(); jobDB.AddEntry(job.JobTemplateType, job.UserID, job.JobGUIDString, JobParametersString, job.JobSubmitTime); jobDB.close(); }
public static void SaveByGUIDSatyam(string guid) { //get all aggregated results SatyamAggregatedResultsTableAccess resultsDB = new SatyamAggregatedResultsTableAccess(); List <SatyamAggregatedResultsTableEntry> results = resultsDB.getEntriesByGUID(guid); resultsDB.close(); if (results.Count == 0) { return; } StringBuilder s = new StringBuilder(); for (int i = 0; i < results.Count; i++) { SatyamSaveAggregatedDataSatyam data = new SatyamSaveAggregatedDataSatyam(results[i]); String jsonString = JSonUtils.ConvertObjectToJSon <SatyamSaveAggregatedDataSatyam>(data); s.Append(jsonString); if (i == results.Count - 1) { s.Append("\n"); } } string dataToBeSaved = s.ToString(); SatyamJobStorageAccountAccess storage = new SatyamJobStorageAccountAccess(); string FileName = "AggregatedResults-" + results[0].JobGUID + ".txt"; string satyamDirectoryName = SatyamTaskGenerator.JobTemplateToSatyamContainerNameMap[results[0].JobTemplateType]; //switch(results[0].JobTemplateType) //{ // case TaskConstants.Classification_Image: // case TaskConstants.Classification_Image_MTurk: // satyamDirectoryName = "singleobjectlabeling"; // break; // case TaskConstants.Classification_Video: // case TaskConstants.Classification_Video_MTurk: // satyamDirectoryName = "singleobjectlabelinginvideo"; // break; // case TaskConstants.Counting_Image: // case TaskConstants.Counting_Image_MTurk: // satyamDirectoryName = "objectcounting"; // break; // case TaskConstants.Counting_Video: // case TaskConstants.Counting_Video_MTurk: // satyamDirectoryName = "objectcountinginvideo"; // break; // case TaskConstants.Detection_Image: // case TaskConstants.Detection_Image_MTurk: // satyamDirectoryName = "multiobjectlocalizationandlabeling"; // break; // case TaskConstants.Tracking: // case TaskConstants.Tracking_MTurk: // satyamDirectoryName = "multiobjecttracking"; // break; //} storage.SaveATextFile(satyamDirectoryName, results[0].JobGUID, FileName, dataToBeSaved); }
public static string GetAggregatedResultString(List <SatyamResultsTableEntry> results) { if (results.Count == 0) { return(null); } string resultString = null; List <ImageSegmentationResult> resultList = new List <ImageSegmentationResult>(); List <string> WorkersPerTask = new List <string>(); SatyamResult res0 = JSonUtils.ConvertJSonToObject <SatyamResult>(results[0].ResultString); SatyamTask task = JSonUtils.ConvertJSonToObject <SatyamTask>(res0.TaskParametersString); string SatyamURL = task.SatyamURI; string guid = results[0].JobGUID; foreach (SatyamResultsTableEntry entry in results) { SatyamResult res = JSonUtils.ConvertJSonToObject <SatyamResult>(entry.ResultString); // remove duplicate workers result string workerID = res.amazonInfo.WorkerID; if (WorkersPerTask.Contains(workerID)) { continue; } string assignmentID = res.amazonInfo.AssignmentID; if (assignmentID == "" || assignmentID == "ASSIGNMENT_ID_NOT_AVAILABLE") { continue; } //enclose only non-duplicate results, one per each worker. if (workerID != "" && workerID != TaskConstants.AdminID) { // make a pass for test and admins WorkersPerTask.Add(workerID); } ImageSegmentationResult taskr = JSonUtils.ConvertJSonToObject <ImageSegmentationResult>(res.TaskResult); resultList.Add(taskr); } ImageSegmentationAggregatedResult r = getAggregatedResult(resultList, SatyamURL, guid); if (r != null) { string rString = JSonUtils.ConvertObjectToJSon <ImageSegmentationAggregatedResult>(r); SatyamAggregatedResult aggResult = new SatyamAggregatedResult(); aggResult.SatyamTaskTableEntryID = results[0].SatyamTaskTableEntryID; aggResult.AggregatedResultString = rString; SatyamResult res = JSonUtils.ConvertJSonToObject <SatyamResult>(results[0].ResultString); aggResult.TaskParameters = res.TaskParametersString; resultString = JSonUtils.ConvertObjectToJSon <SatyamAggregatedResult>(aggResult); } return(resultString); }
public static void PopulateTasksIntoTaskTable(SatyamJobSubmissionsTableAccessEntry job) { List <SatyamTask> tasks = generate(job); if (tasks == null) { return; } SatyamTaskTableAccess dbAccess = new SatyamTaskTableAccess(); foreach (SatyamTask task in tasks) { String JobTemplateType = job.JobTemplateType; String UserID = job.UserID; String JobGUID = job.JobGUID; String JsonString = JSonUtils.ConvertObjectToJSon <SatyamTask>(task); DateTime SubmitTime = job.JobSubmitTime; double price = task.jobEntry.amazonHITInformation.Price; dbAccess.AddEntry(JobTemplateType, UserID, JobGUID, JsonString, SubmitTime, price); } dbAccess.close(); // add the total task number to job submission table SatyamJobSubmissionsTableAccess jobDB = new SatyamJobSubmissionsTableAccess(); jobDB.UpdateEntryProgress(job.JobGUID, tasks.Count.ToString()); jobDB.close(); }
public static string GetAggregatedResultString(List <SatyamResultsTableEntry> results, int MinResults = TaskConstants.OBJECT_COUNTING_MTURK_MIN_RESULTS_TO_AGGREGATE, int MaxResults = TaskConstants.OBJECT_COUNTING_MTURK_MAX_RESULTS_TO_AGGREGATE, double MAX_ABSOLUTE_COUNT_DEVIATION_LOWERBOUND = TaskConstants.OBJECT_COUNTING_MTURK_MAX_ABSOLUTE_COUNT_DEVIATION_LOWERBOUND, double MAX_DEVIATION_FRACTION = TaskConstants.OBJECT_COUNTING_MTURK_MAX_DEVIATION_FRACTION, double SUPER_MAJORITY_VALUE = TaskConstants.OBJECT_COUNTING_MTURK_SUPER_MAJORITY_VALUE) { Console.WriteLine("Aggregating"); string resultString = null; List <ObjectCountingResult> resultList = new List <ObjectCountingResult>(); List <SatyamResult> SatyamResultList = new List <SatyamResult>(); foreach (SatyamResultsTableEntry entry in results) { SatyamResult res = JSonUtils.ConvertJSonToObject <SatyamResult>(entry.ResultString); SatyamResultList.Add(res); ObjectCountingResult taskr = JSonUtils.ConvertJSonToObject <ObjectCountingResult>(res.TaskResult); resultList.Add(taskr); } //ObjectCountingAggregatedResult r = getAggregatedResult(resultList, MinResults, MaxResults, MAX_ABSOLUTE_COUNT_DEVIATION_LOWERBOUND, MAX_DEVIATION_FRACTION, SUPER_MAJORITY_VALUE); ObjectCountingAggregatedResult r = getAggregatedResultUsingWorkerStatistics(SatyamResultList, MinResults, MaxResults, MAX_ABSOLUTE_COUNT_DEVIATION_LOWERBOUND, MAX_DEVIATION_FRACTION, SUPER_MAJORITY_VALUE); if (r != null) { string rString = JSonUtils.ConvertObjectToJSon <ObjectCountingAggregatedResult>(r); SatyamAggregatedResult aggResult = new SatyamAggregatedResult(); aggResult.SatyamTaskTableEntryID = results[0].SatyamTaskTableEntryID; aggResult.AggregatedResultString = rString; SatyamResult res = JSonUtils.ConvertJSonToObject <SatyamResult>(results[0].ResultString); aggResult.TaskParameters = res.TaskParametersString; resultString = JSonUtils.ConvertObjectToJSon <SatyamAggregatedResult>(aggResult); } return(resultString); }
public static string GetAggregatedResultString(List <SatyamResultsTableEntry> results, int MinResults = TaskConstants.SINGLE_OBJECT_LABLING_MTURK_MIN_RESULTS_TO_AGGREGATE, int MaxResults = TaskConstants.SINGLE_OBJECT_LABLING_MTURK_MAX_RESULTS_TO_AGGREGATE, double probabilityThreshold = TaskConstants.SINGLE_OBJECT_LABLING_MTURK_MAJORITY_THRESHOLD) { string resultString = null; List <SingleObjectLabelingResult> resultList = new List <SingleObjectLabelingResult>(); foreach (SatyamResultsTableEntry entry in results) { SatyamResult res = JSonUtils.ConvertJSonToObject <SatyamResult>(entry.ResultString); SingleObjectLabelingResult taskr = JSonUtils.ConvertJSonToObject <SingleObjectLabelingResult>(res.TaskResult); resultList.Add(taskr); } SingleObjectLabelingAggregatedResult r = getAggregatedResult(resultList, MinResults, MaxResults, probabilityThreshold); if (r != null) { string rString = JSonUtils.ConvertObjectToJSon <SingleObjectLabelingAggregatedResult>(r); SatyamAggregatedResult aggResult = new SatyamAggregatedResult(); aggResult.SatyamTaskTableEntryID = results[0].SatyamTaskTableEntryID; aggResult.AggregatedResultString = rString; SatyamResult res = JSonUtils.ConvertJSonToObject <SatyamResult>(results[0].ResultString); aggResult.TaskParameters = res.TaskParametersString; resultString = JSonUtils.ConvertObjectToJSon <SatyamAggregatedResult>(aggResult); } return(resultString); }
//protected void SubmitButton_Click(object sender, EventArgs e) private void storeResult() { DateTime SubmitTime = DateTime.Now; DateTime PageLoadTime = Convert.ToDateTime(Hidden_PageLoadTime.Value); SatyamTaskTableEntry taskEntry = JSonUtils.ConvertJSonToObject <SatyamTaskTableEntry>(Hidden_TaskEntryString.Value); string tracksString = TracksOutput_Hidden.Value; string urlList = Hidden_ImageURLList.Value; string[] fields = urlList.Split(','); DateTime start = DateTime.MinValue; List <DateTime> frameTimes = new List <DateTime>(); //double frameTimeSpanInMiliseconds = (Convert.ToDouble(Hidden_ChunkDuration.Value) / (double)fields.Length) * 1000; double frameTimeSpanInMiliseconds = (double)(1000) / Convert.ToDouble(fps_Hidden.Value); for (int i = 0; i < fields.Length; i++) { DateTime t; t = start.AddMilliseconds(frameTimeSpanInMiliseconds * i); frameTimes.Add(t); } string s = Raw_VATIC_DVA_Crowdsourced_Track_Collection.Raw_VATIC_DVA_Crowdsourced_Track_Collection_ToTrackStrings(tracksString, frameTimes); SatyamResult result = new SatyamResult(); result.TaskParametersString = taskEntry.TaskParametersString; result.TaskStartTime = PageLoadTime; result.TaskEndTime = SubmitTime; result.TaskTableEntryID = taskEntry.ID; AmazonTaskResultInfo amazonInfo = new AmazonTaskResultInfo(); amazonInfo.AssignmentID = ""; amazonInfo.WorkerID = ""; amazonInfo.HITID = ""; result.amazonInfo = amazonInfo; result.TaskResult = s; string resultString = JSonUtils.ConvertObjectToJSon <SatyamResult>(result); SatyamResultsTableAccess resultdb = new SatyamResultsTableAccess(); resultdb.AddEntry(taskEntry.JobTemplateType, taskEntry.UserID, taskEntry.JobGUID, resultString, taskEntry.ID, PageLoadTime, SubmitTime); resultdb.close(); //SatyamTaskTableAccess taskDB = new SatyamTaskTableAccess(); //taskDB.IncrementDoneScore(taskEntry.ID); bool NotDone = getNewRandomJob(); if (NotDone == false) { Response.Redirect("AllJobsDone.aspx"); } }
public static string getJobStatus(string request) { SatyamJobSubmissionsTableAccess dbaccess = new SatyamJobSubmissionsTableAccess(); List <SatyamJobSubmissionsTableAccessEntry> entries = dbaccess.getAllEntriesByUserID(request); string JsonString = JSonUtils.ConvertObjectToJSon(entries); dbaccess.close(); return(JsonString); }
private bool getNewRandomJob() { double price = 0; bool success = Double.TryParse(Hidden_Price.Value, out price); if (!success) { price = 0; } SatyamTaskTableAccess taskTableDB = new SatyamTaskTableAccess(); SatyamTaskTableEntry entry = null; if (SubmitButton.Enabled == true) { //entry = taskTableDB.getMinimumTriedEntryByTemplateAndPrice(TaskConstants.Counting_Image_MTurk, price); entry = taskTableDB.getMinimumTriedNewEntryForWorkerIDByTemplateAndPrice(Hidden_AmazonWorkerID.Value, TaskConstants.Counting_Image_MTurk, price); } else { entry = taskTableDB.getMinimumTriedEntryByTemplate(TaskConstants.Counting_Image_MTurk); } if (entry != null) { taskTableDB.IncrementDoneScore(entry.ID); SatyamTask task = JSonUtils.ConvertJSonToObject <SatyamTask>(entry.TaskParametersString); string uri = task.SatyamURI; DisplayImage.ImageUrl = uri; SatyamJob jobDefinitionEntry = task.jobEntry; ObjectCountingSubmittedJob job = JSonUtils.ConvertJSonToObject <ObjectCountingSubmittedJob>(jobDefinitionEntry.JobParameters); ObjectNameLabel.Text = job.ObjectName; ObjectNameLabel1.Text = job.ObjectName; Hidden_TasksPerJob.Value = jobDefinitionEntry.TasksPerJob.ToString(); if (job.Description != "") { DescriptionPanel.Visible = true; DescriptionTextPanel.Controls.Add(new LiteralControl(job.Description)); } Hidden_TaskEntryString.Value = JSonUtils.ConvertObjectToJSon <SatyamTaskTableEntry>(entry); Hidden_PageLoadTime.Value = DateTime.Now.ToString(); NoLabeled.Text = Hidden_NoImagesDone.Value; taskTableDB.close(); return(true); } else { taskTableDB.close(); return(false); } }
//protected void Page_Unload(object sender, EventArgs e) //{ // if (!DoneFlag) // { // SatyamTaskTableEntry taskEntry = JSonUtils.ConvertJSonToObject<SatyamTaskTableEntry>(Hidden_TaskEntryString.Value); // if (taskEntry == null) return; // // Decrement the DoneScore, releasing token after latest results are saved. // SatyamTaskTableAccess taskTableDB = new SatyamTaskTableAccess(); // taskTableDB.DecrementDoneScore(taskEntry.ID); // taskTableDB.close(); // } //} protected void SubmitButton_Click(object sender, EventArgs e) { DateTime SubmitTime = DateTime.Now; DateTime PageLoadTime = Convert.ToDateTime(Hidden_PageLoadTime.Value); SatyamTaskTableEntry taskEntry = JSonUtils.ConvertJSonToObject <SatyamTaskTableEntry>(Hidden_TaskEntryString.Value); SatyamResult result = new SatyamResult(); result.TaskParametersString = taskEntry.TaskParametersString; result.TaskStartTime = PageLoadTime; result.TaskEndTime = SubmitTime; result.TaskTableEntryID = taskEntry.ID; AmazonTaskResultInfo amazonInfo = new AmazonTaskResultInfo(); amazonInfo.AssignmentID = ""; amazonInfo.WorkerID = ""; amazonInfo.HITID = ""; result.amazonInfo = amazonInfo; result.TaskResult = Hidden_Result.Value; result.PrevResultID = Convert.ToInt32(Hidden_PrevResultID.Value); string resultString = JSonUtils.ConvertObjectToJSon <SatyamResult>(result); SatyamResultsTableAccess resultdb = new SatyamResultsTableAccess(); resultdb.AddEntry(taskEntry.JobTemplateType, taskEntry.UserID, taskEntry.JobGUID, resultString, taskEntry.ID, PageLoadTime, SubmitTime); resultdb.close(); SatyamTaskTableManagement.UpdateResultNumber(taskEntry.ID); // Decrement the DoneScore, releasing token after latest results are saved. SatyamTaskTableAccess taskTableDB = new SatyamTaskTableAccess(); //taskTableDB.DecrementDoneScore(taskEntry.ID); taskTableDB.UpdateDoneScore(taskEntry.ID, 0); taskTableDB.close(); //DoneFlag = true; //bool NotDone = getNewRandomJob(); //if (NotDone == false) //{ Response.Redirect("AllJobsDone.aspx"); //} }
public static void SaveAllWorkerInfo(string filepath) { StreamWriter sw = new StreamWriter(filepath); WorkerInfoTableAccess wita = new WorkerInfoTableAccess(); List <WorkerInfoTableEntry> infos = wita.getAllEntries(); //List<string> workerinfos = new List<string>(); foreach (WorkerInfoTableEntry i in infos) { string info = JSonUtils.ConvertObjectToJSon(i); //workerinfos.Add(info); sw.WriteLine(info); } sw.Close(); }
private bool getNewRandomJob() { SatyamTaskTableAccess taskTableDB = new SatyamTaskTableAccess(); SatyamTaskTableEntry entry = taskTableDB.getMinimumTriedEntryByTemplate(TaskConstants.Segmentation_Image); taskTableDB.close(); if (entry == null) { return(false); } taskTableDB = new SatyamTaskTableAccess(); taskTableDB.IncrementDoneScore(entry.ID); taskTableDB.close(); SatyamTask task = JSonUtils.ConvertJSonToObject <SatyamTask>(entry.TaskParametersString); string uri = task.SatyamURI; TheImage.ImageUrl = uri; SatyamJob jobDefinitionEntry = task.jobEntry; ImageSegmentationSubmittedJob job = JSonUtils.ConvertJSonToObject <ImageSegmentationSubmittedJob>(jobDefinitionEntry.JobParameters); List <string> categories = job.Categories; CategorySelection_RadioButtonList.Items.Clear(); for (int i = 0; i < categories.Count; i++) { ListItem l = new ListItem(categories[i]); CategorySelection_RadioButtonList.Items.Add(l); } if (job.Description != "") { DescriptionPanel.Visible = true; DescriptionTextPanel.Controls.Add(new LiteralControl(job.Description)); } Hidden_BoundaryLines.Value = JSonUtils.ConvertObjectToJSon(job.BoundaryLines); Hidden_TaskEntryString.Value = JSonUtils.ConvertObjectToJSon <SatyamTaskTableEntry>(entry); Hidden_PageLoadTime.Value = DateTime.Now.ToString(); return(true); }
protected void SubmitButton_Click(object sender, EventArgs e) { DateTime SubmitTime = DateTime.Now; DateTime PageLoadTime = Convert.ToDateTime(Hidden_PageLoadTime.Value); SatyamTaskTableEntry taskEntry = JSonUtils.ConvertJSonToObject <SatyamTaskTableEntry>(Hidden_TaskEntryString.Value); SatyamResult result = new SatyamResult(); result.TaskParametersString = taskEntry.TaskParametersString; result.TaskStartTime = PageLoadTime; result.TaskEndTime = SubmitTime; result.TaskTableEntryID = taskEntry.ID; AmazonTaskResultInfo amazonInfo = new AmazonTaskResultInfo(); amazonInfo.AssignmentID = Hidden_AmazonAssignmentID.Value; amazonInfo.WorkerID = Hidden_AmazonWorkerID.Value; amazonInfo.HITID = Hidden_HITID.Value; amazonInfo.PricePerHIT = Convert.ToDouble(Hidden_Price.Value); result.amazonInfo = amazonInfo; result.TaskResult = Hidden_Result.Value; string resultString = JSonUtils.ConvertObjectToJSon <SatyamResult>(result); SatyamResultsTableAccess resultdb = new SatyamResultsTableAccess(); resultdb.AddEntry(taskEntry.JobTemplateType, taskEntry.UserID, taskEntry.JobGUID, resultString, taskEntry.ID, PageLoadTime, SubmitTime); resultdb.close(); SatyamTaskTableManagement.UpdateResultNumber(taskEntry.ID); if (!Testing) { SatyamAmazonHITTableAccess HITdb = new SatyamAmazonHITTableAccess(); string HITID = result.amazonInfo.HITID; HITdb.UpdateStatusByHITID(HITID, HitStatus.submitted); HITdb.close(); AmazonMTurkNotification.submitAmazonTurkHit(result.amazonInfo.AssignmentID, result.amazonInfo.WorkerID, false); } Response.Redirect("AllJobsDone.aspx"); //} }
public static void testJSONString() { MultiObjectLocalizationAndLabelingResult res = new MultiObjectLocalizationAndLabelingResult(); res.objects = new List <MultiObjectLocalizationAndLabelingResultSingleEntry>(); MultiObjectLocalizationAndLabelingResultSingleEntry entry = new MultiObjectLocalizationAndLabelingResultSingleEntry(); entry.boundingBox = new BoundingBox(5, 15, 25, 35); entry.Category = "Car"; res.objects.Add(entry); entry = new MultiObjectLocalizationAndLabelingResultSingleEntry(); entry.boundingBox = new BoundingBox(45, 55, 65, 75); entry.Category = "Bus"; res.objects.Add(entry); string jsonString = JSonUtils.ConvertObjectToJSon <MultiObjectLocalizationAndLabelingResult>(res); }
protected void SubmitButton_Click(object sender, EventArgs e) { DateTime SubmitTime = DateTime.Now; DateTime PageLoadTime = Convert.ToDateTime(Hidden_PageLoadTime.Value); if (CategorySelection_RadioButtonList.SelectedIndex != -1) { SatyamTaskTableEntry taskEntry = JSonUtils.ConvertJSonToObject <SatyamTaskTableEntry>(Hidden_TaskEntryString.Value); SatyamResult result = new SatyamResult(); result.TaskParametersString = taskEntry.TaskParametersString; result.TaskStartTime = PageLoadTime; result.TaskEndTime = SubmitTime; result.TaskTableEntryID = taskEntry.ID; AmazonTaskResultInfo amazonInfo = new AmazonTaskResultInfo(); amazonInfo.AssignmentID = ""; amazonInfo.WorkerID = ""; amazonInfo.HITID = ""; result.amazonInfo = amazonInfo; SingleObjectLabelingResult sresult = new SingleObjectLabelingResult(); sresult.Category = CategorySelection_RadioButtonList.Items[CategorySelection_RadioButtonList.SelectedIndex].Text; string sresultString = JSonUtils.ConvertObjectToJSon <SingleObjectLabelingResult>(sresult); result.TaskResult = sresultString; string resultString = JSonUtils.ConvertObjectToJSon <SatyamResult>(result); SatyamResultsTableAccess resultdb = new SatyamResultsTableAccess(); resultdb.AddEntry(taskEntry.JobTemplateType, taskEntry.UserID, taskEntry.JobGUID, resultString, taskEntry.ID, PageLoadTime, SubmitTime); resultdb.close(); //SatyamTaskTableAccess taskDB = new SatyamTaskTableAccess(); //taskDB.IncrementDoneScore(taskEntry.ID); bool status = getNewRandomJob(); if (!status) { Response.Redirect("AllJobsDone.aspx"); } } }
public static void SaveByGUIDRequester(string guid) { //get all the results of a GUID SatyamResultsTableAccess resultsDB = new SatyamResultsTableAccess(); List <SatyamResultsTableEntry> results = resultsDB.getEntriesByGUID(guid); if (results.Count == 0) { resultsDB.close(); return; } //get the azure info SatyamResult result = JSonUtils.ConvertJSonToObject <SatyamResult>(results[0].ResultString); SatyamTask task = JSonUtils.ConvertJSonToObject <SatyamTask>(result.TaskParametersString); SatyamJob job = task.jobEntry; string ConnectionString = job.azureInformation.AzureBlobStorageConnectionString; string ContainerName = job.azureInformation.AzureBlobStorageContainerName; string DirectoryName = job.azureInformation.AzureBlobStorageContainerDirectoryName; //create the data to be saved List <SatyamResultSaveDataRequester> savingDataList = new List <SatyamResultSaveDataRequester>(); StringBuilder s = new StringBuilder(); for (int i = 0; i < results.Count; i++) { SatyamResultSaveDataRequester data = new SatyamResultSaveDataRequester(results[i]); String jsonString = JSonUtils.ConvertObjectToJSon(data); s.Append(jsonString); if (i == results.Count - 1) { s.Append("\n"); } } string dataToBeSaved = s.ToString(); BlobContainerManager bcm = new BlobContainerManager(); bcm.Connect(ConnectionString); string FileName = "Results-" + results[0].JobGUID + ".txt"; bcm.SaveATextFile(ContainerName, DirectoryName, FileName, dataToBeSaved); resultsDB.close(); }
public static void AdjustTasksByGUID(string guid, double price) { SatyamTaskTableAccess taskDB = new SatyamTaskTableAccess(); List <SatyamTaskTableEntry> entries = taskDB.getAllEntriesByGUID(guid); taskDB.ClearByJobGUID(guid); /// update the price and the taskparam... foreach (SatyamTaskTableEntry entry in entries) { int taskID = entry.ID; SatyamTask task = JSonUtils.ConvertJSonToObject <SatyamTask>(entry.TaskParametersString); task.jobEntry.amazonHITInformation.Price = price; string newTaskParams = JSonUtils.ConvertObjectToJSon(task); taskDB.AddEntryWithSpecificID(taskID, entry.JobTemplateType, entry.UserID, entry.JobGUID, newTaskParams, entry.JobSubmitTime, price); } taskDB.close(); }
protected void AddCategoryButton_Click(object sender, EventArgs e) { string newCategory = AddCategoryTextBox.Text; if (newCategory == "") { return; } else if (subCategories.Keys.ToList().Contains(newCategory)) { return; } ListItem item = new ListItem(newCategory); CategoryListBox.Items.Add(item); AddCategoryTextBox.Text = ""; subCategories.Add(newCategory, new List <string>()); Hidden_SubCategories.Value = JSonUtils.ConvertObjectToJSon <Dictionary <String, List <String> > >(subCategories); }
protected void DeleteSubCategoryButton_Click(object sender, EventArgs e) { string category = CategoryListBox.SelectedValue; List <ListItem> subcategoriesToBeDeleted = new List <ListItem>(); for (int i = 0; i < SubCategoryListBox.Items.Count; i++) { if (SubCategoryListBox.Items[i].Selected) { subcategoriesToBeDeleted.Add(SubCategoryListBox.Items[i]); } } for (int i = 0; i < subcategoriesToBeDeleted.Count; i++) { subCategories[category].Remove(subcategoriesToBeDeleted[i].Text); SubCategoryListBox.Items.Remove(subcategoriesToBeDeleted[i]); } Hidden_SubCategories.Value = JSonUtils.ConvertObjectToJSon <Dictionary <String, List <String> > >(subCategories); }
public static void CreateDemoJob_SINGLE_OBJECT_LABLING() { SatyamJob job = new SatyamJob(); Console.WriteLine("here 1"); AzureInformation AzureInfo = new AzureInformation(); AzureInfo.AzureBlobStorageConnectionString = SatyamJobStorageAccountAccess.connection_string; AzureInfo.AzureBlobStorageContainerName = "demo"; AzureInfo.AzureBlobStorageContainerDirectoryName = "testSingleObjectLabelingImages"; AmazonMTurkHITInformation AmazonInfo = new AmazonMTurkHITInformation(); SingleObjectLabelingSubmittedJob template = new SingleObjectLabelingSubmittedJob(); List <string> categories = new List <string>() { "Car", "Bus" }; template.Categories = categories; template.Description = "Car: Includes SUV's, Vans with upto 6 passengers, Jeeps and Pickcups. Click <a href=\"http://satyamtaskpages.azurewebsites.net/CategoryExamplesPageForDemo.aspx\"> here</a> to see examples of the various categories."; job.JobGUIDString = "SINGLE_OBJECT_LABLING_DEMO"; job.amazonHITInformation = AmazonInfo; job.azureInformation = AzureInfo; job.JobSubmitTime = DateTime.Now; job.JobTemplateType = "SINGLE_OBJECT_LABLING_DEMO"; job.UserID = TaskConstants.AdminName; job.JobParameters = JSonUtils.ConvertObjectToJSon <SingleObjectLabelingSubmittedJob>(template); string JobParametersString = JSonUtils.ConvertObjectToJSon <SatyamJob>(job); SatyamJobSubmissionsTableAccess jobDB = new SatyamJobSubmissionsTableAccess(); jobDB.AddEntry(job.JobTemplateType, job.UserID, job.JobGUIDString, JobParametersString, job.JobSubmitTime); jobDB.close(); }
protected void SubmitButton_Click(object sender, EventArgs e) { DateTime SubmitTime = DateTime.Now; DateTime PageLoadTime = Convert.ToDateTime(Hidden_PageLoadTime.Value); SatyamTaskTableEntry taskEntry = JSonUtils.ConvertJSonToObject <SatyamTaskTableEntry>(Hidden_TaskEntryString.Value); SatyamResult result = new SatyamResult(); result.TaskParametersString = taskEntry.TaskParametersString; result.TaskStartTime = PageLoadTime; result.TaskEndTime = SubmitTime; result.TaskTableEntryID = taskEntry.ID; AmazonTaskResultInfo amazonInfo = new AmazonTaskResultInfo(); amazonInfo.AssignmentID = ""; amazonInfo.WorkerID = ""; amazonInfo.HITID = ""; result.amazonInfo = amazonInfo; result.TaskResult = Hidden_Result.Value; string resultString = JSonUtils.ConvertObjectToJSon <SatyamResult>(result); SatyamResultsTableAccess resultdb = new SatyamResultsTableAccess(); resultdb.AddEntry(taskEntry.JobTemplateType, taskEntry.UserID, taskEntry.JobGUID, resultString, taskEntry.ID, PageLoadTime, SubmitTime); resultdb.close(); //SatyamTaskTableAccess taskDB = new SatyamTaskTableAccess(); //taskDB.IncrementDoneScore(taskEntry.ID); bool NotDone = getNewRandomJob(); if (NotDone == false) { Response.Redirect("AllJobsDone.aspx"); } }
public static void CreateDemoJob_SINGLE_OBJECT_LABLING_IN_VIDEO() { SatyamJob job = new SatyamJob(); AzureInformation AzureInfo = new AzureInformation(); AzureInfo.AzureBlobStorageConnectionString = SatyamJobStorageAccountAccess.connection_string; AzureInfo.AzureBlobStorageContainerName = "demo"; AzureInfo.AzureBlobStorageContainerDirectoryName = "TestVideoClassificationMP4"; AmazonMTurkHITInformation AmazonInfo = new AmazonMTurkHITInformation(); SingleObjectLabelingSubmittedJob template = new SingleObjectLabelingSubmittedJob(); List <string> categories = new List <string>() { "Biking", "HorseRiding", "SkateBoarding" }; template.Categories = categories; template.Description = ""; job.JobGUIDString = "SINGLE_OBJECT_LABLING_IN_VIDEO_DEMO"; job.amazonHITInformation = AmazonInfo; job.azureInformation = AzureInfo; job.JobSubmitTime = DateTime.Now; job.JobTemplateType = "SINGLE_OBJECT_LABLING_IN_VIDEO_DEMO"; job.UserID = TaskConstants.AdminName; job.JobParameters = JSonUtils.ConvertObjectToJSon <SingleObjectLabelingSubmittedJob>(template); string JobParametersString = JSonUtils.ConvertObjectToJSon <SatyamJob>(job); SatyamJobSubmissionsTableAccess jobDB = new SatyamJobSubmissionsTableAccess(); jobDB.AddEntry(job.JobTemplateType, job.UserID, job.JobGUIDString, JobParametersString, job.JobSubmitTime); jobDB.close(); }
private bool getNewRandomJob() { SatyamTaskTableAccess taskTableDB = new SatyamTaskTableAccess(); SatyamTaskTableEntry entry = taskTableDB.getMinimumTriedEntryByTemplate(TaskConstants.Counting_Video); if (entry != null) { taskTableDB.IncrementDoneScore(entry.ID); SatyamTask task = JSonUtils.ConvertJSonToObject <SatyamTask>(entry.TaskParametersString); string uri = task.SatyamURI; Hidden_VideoURL.Value = uri; SatyamJob jobDefinitionEntry = task.jobEntry; ObjectCountingSubmittedJob job = JSonUtils.ConvertJSonToObject <ObjectCountingSubmittedJob>(jobDefinitionEntry.JobParameters); ObjectNameLabel.Text = job.ObjectName; ObjectNameLabel1.Text = job.ObjectName; if (job.Description != "") { DescriptionPanel.Visible = true; DescriptionTextPanel.Controls.Add(new LiteralControl(job.Description)); } CountTextBox.Text = ""; Hidden_TaskEntryString.Value = JSonUtils.ConvertObjectToJSon <SatyamTaskTableEntry>(entry); Hidden_PageLoadTime.Value = DateTime.Now.ToString(); taskTableDB.close(); return(true); } else { taskTableDB.close(); return(false); } }
public static void CreateDemoJob_OBJECT_COUNTING_IN_IMAGE() { SatyamJob job = new SatyamJob(); Console.WriteLine("here 1"); AzureInformation AzureInfo = new AzureInformation(); AzureInfo.AzureBlobStorageConnectionString = SatyamJobStorageAccountAccess.connection_string; AzureInfo.AzureBlobStorageContainerName = "demo"; AzureInfo.AzureBlobStorageContainerDirectoryName = "catsCount"; AmazonMTurkHITInformation AmazonInfo = new AmazonMTurkHITInformation(); ObjectCountingSubmittedJob template = new ObjectCountingSubmittedJob(); template.ObjectName = "cat"; template.Description = "By cat we mean house cat and not the general category of cat family like lions or tigers."; job.JobGUIDString = "OBJECT_COUNTING_IN_IMAGE_DEMO"; job.amazonHITInformation = AmazonInfo; job.azureInformation = AzureInfo; job.JobSubmitTime = DateTime.Now; job.JobTemplateType = "OBJECT_COUNTING_IN_IMAGE_DEMO"; job.UserID = TaskConstants.AdminName; job.JobParameters = JSonUtils.ConvertObjectToJSon <ObjectCountingSubmittedJob>(template); string JobParametersString = JSonUtils.ConvertObjectToJSon <SatyamJob>(job); SatyamJobSubmissionsTableAccess jobDB = new SatyamJobSubmissionsTableAccess(); jobDB.AddEntry(job.JobTemplateType, job.UserID, job.JobGUIDString, JobParametersString, job.JobSubmitTime); jobDB.close(); }
public static void SaveByGUIDSatyam(string guid) { //get all the results of a GUID SatyamResultsTableAccess resultsDB = new SatyamResultsTableAccess(); List <SatyamResultsTableEntry> results = resultsDB.getEntriesByGUID(guid); if (results.Count == 0) { resultsDB.close(); return; } //create the data to be saved List <SatyamResultSaveDataSatyam> savingDataList = new List <SatyamResultSaveDataSatyam>(); StringBuilder s = new StringBuilder(); for (int i = 0; i < results.Count; i++) { SatyamResultSaveDataSatyam data = new SatyamResultSaveDataSatyam(results[i]); String jsonString = JSonUtils.ConvertObjectToJSon(data); s.Append(jsonString); if (i == results.Count - 1) { s.Append("\n"); } } string dataToBeSaved = s.ToString(); SatyamJobStorageAccountAccess storage = new SatyamJobStorageAccountAccess(); string FileName = "Results-" + results[0].JobGUID + ".txt"; string satyamDirectoryName = SatyamTaskGenerator.JobTemplateToSatyamContainerNameMap[results[0].JobTemplateType]; storage.SaveATextFile(satyamDirectoryName, results[0].JobGUID, FileName, dataToBeSaved); resultsDB.close(); }
protected void AddSubCategoryButton_Click(object sender, EventArgs e) { string category = CategoryListBox.SelectedValue; string newSubCategory = AddSubCategoryTextBox.Text; bool forall = false; if (newSubCategory == "") { return; } else if (category == "") { // add for all forall = true; } else if (subCategories[category].Contains(newSubCategory)) { return; } ListItem item = new ListItem(newSubCategory); SubCategoryListBox.Items.Add(item); AddSubCategoryTextBox.Text = ""; if (forall) { foreach (string cat in subCategories.Keys) { subCategories[cat].Add(newSubCategory); } } else { subCategories[category].Add(newSubCategory); } Hidden_SubCategories.Value = JSonUtils.ConvertObjectToJSon <Dictionary <String, List <String> > >(subCategories); }
protected void JobSubmitButton_Click(object sender, EventArgs e) { string AzureBlobStorageConnectionString = AzureBlobStorageConnectionStringTextBox.Text; string AzureContainer = AzureBlobStorageContainerNameTextBox.Text; string AzureContainerDirectory = AzureBlobStorageContainerDirectoryNameTextBox.Text; string AmazonAccessKeyIDValue = AmazonAccessKeyID.Text; string AmazonSecretAccessKeyIDValue = AmazonSecretAccessKeyID.Text; string Description = CategoryDescription.Text; double pricePerImage = 0; double price = 0; string jobGuid = NewJobGUID.Text; string AmazonTaskTitle = AmazonTaskTitleTextBox.Text; string AmazonTaskDescription = AmazonTaskDescriptionTextBox.Text; string AmazonTaskKeywords = AmazonTaskKeywordsTextBox.Text; if (AzureBlobStorageConnectionString == "" || AzureContainer == "") { Template_ErrorMessageLabel.Text = "Error : Azure Connection String and Container are mandatory fields."; Template_ErrorMessageLabel.ForeColor = System.Drawing.Color.Red; Template_ErrorMessageLabel.Font.Bold = true; return; } AzureConnectionInfo connectionInfo = new AzureConnectionInfo(AzureBlobStorageConnectionString, AzureContainer, AzureContainerDirectory); int noFiles = connectionInfo.getNoFiles(); if (noFiles == -1) { Template_ErrorMessageLabel.Text = "Error : Invalid Azure Location"; Template_ErrorMessageLabel.ForeColor = System.Drawing.Color.Red; Template_ErrorMessageLabel.Font.Bold = true; return; } else if (noFiles == 0) { Template_ErrorMessageLabel.Text = "Error : There are 0 files at the Azure Location"; Template_ErrorMessageLabel.ForeColor = System.Drawing.Color.Red; Template_ErrorMessageLabel.Font.Bold = true; return; } if (Hidden_MechanicalTurk.Value == "true") { bool success = Double.TryParse(PriceTextBox.Text, out pricePerImage); if (!success) { Template_ErrorMessageLabel.Text = "Error : Non-numerical price entered"; Template_ErrorMessageLabel.ForeColor = System.Drawing.Color.Red; Template_ErrorMessageLabel.Font.Bold = true; return; } pricePerImage = pricePerImage / 100; //convert to dollars price = pricePerImage; //need to round to cents price = Math.Floor(price * 100) / 100; if (price <= 0) { Template_ErrorMessageLabel.Text = "Error : The Price is Zero"; Template_ErrorMessageLabel.ForeColor = System.Drawing.Color.Red; Template_ErrorMessageLabel.Font.Bold = true; return; } AmazonMTurkHIT hit = new AmazonMTurkHIT(); success = hit.setAccount(AmazonAccessKeyIDValue, AmazonSecretAccessKeyIDValue, false); if (!success) { Template_ErrorMessageLabel.Text = "Error : Invalid Amazon Turk Account"; Template_ErrorMessageLabel.ForeColor = System.Drawing.Color.Red; Template_ErrorMessageLabel.Font.Bold = true; return; } double balance = hit.getAccountBalance(); if (balance < 0) { Template_ErrorMessageLabel.Text = "Error : Invalid Amazon Turk Account"; Template_ErrorMessageLabel.ForeColor = System.Drawing.Color.Red; Template_ErrorMessageLabel.Font.Bold = true; return; } double moneyNeeded = 4 * price * noFiles / TaskConstants.SINGLE_OBJECT_LABLING_MTURK_MAX_IMAGES_PER_TASK; if (balance < moneyNeeded) { Template_ErrorMessageLabel.Text = "Error : Insufficient money in Amazon Turk Account. You will need at least " + moneyNeeded + "$."; Template_ErrorMessageLabel.ForeColor = System.Drawing.Color.Red; Template_ErrorMessageLabel.Font.Bold = true; return; } if (AmazonTaskTitle == "") { Template_ErrorMessageLabel.Text = "Image Classification Task"; } if (AmazonTaskTitle == "") { Template_ErrorMessageLabel.Text = "Quickly earn money by simply selecting what an image looks like!"; } if (AmazonTaskKeywords == "Pictures, Classify, Categorize") { Template_ErrorMessageLabel.Text = ""; } } AzureInformation AzureInfo = new AzureInformation(); AzureInfo.AzureBlobStorageConnectionString = AzureBlobStorageConnectionString; AzureInfo.AzureBlobStorageContainerName = AzureContainer; AzureInfo.AzureBlobStorageContainerDirectoryName = AzureContainerDirectory; AmazonMTurkHITInformation AmazonInfo = new AmazonMTurkHITInformation(); if (Hidden_MechanicalTurk.Value == "true") { AmazonInfo.AmazonAccessKeyID = AmazonAccessKeyIDValue; AmazonInfo.AmazonSecretAccessKeyID = AmazonSecretAccessKeyIDValue; AmazonInfo.Price = price; //in dollars AmazonInfo.AmazonMTurkTaskTitle = AmazonTaskTitle; AmazonInfo.AmazonMTurkTaskDescription = AmazonTaskDescription; AmazonInfo.AmazonMTurkTaskKeywords = AmazonTaskKeywords; } else { AmazonInfo.AmazonAccessKeyID = ""; AmazonInfo.AmazonSecretAccessKeyID = ""; AmazonInfo.Price = 0; AmazonInfo.AmazonMTurkTaskTitle = ""; AmazonInfo.AmazonMTurkTaskDescription = ""; AmazonInfo.AmazonMTurkTaskKeywords = ""; } SingleObjectLabelingSubmittedJob jobParameters = new SingleObjectLabelingSubmittedJob(); jobParameters.Description = Description; SatyamJob job = new SatyamJob(); job.UserID = userName; job.amazonHITInformation = AmazonInfo; job.azureInformation = AzureInfo; job.JobGUIDString = jobGuid; if (Hidden_MechanicalTurk.Value == "true") { job.JobTemplateType = TaskConstants.CameraPoseEsitmation_MTurk; job.TasksPerJob = 1; } else { job.JobTemplateType = TaskConstants.CameraPoseEsitmation; job.TasksPerJob = 0; //does not matter } job.JobSubmitTime = DateTime.Now; job.JobParameters = JSonUtils.ConvertObjectToJSon <SingleObjectLabelingSubmittedJob>(jobParameters); string jobDefinition = JSonUtils.ConvertObjectToJSon <SatyamJob>(job); SatyamJobSubmissionsTableAccess dbAccess = new SatyamJobSubmissionsTableAccess(); dbAccess.AddEntry(job.JobTemplateType, job.UserID, job.JobGUIDString, jobDefinition, job.JobSubmitTime); dbAccess.close(); Response.Redirect("NewJobSubmitted.aspx"); }
private bool getNewRandomJob() { SatyamTaskTableAccess taskTableDB = new SatyamTaskTableAccess(); SatyamTaskTableEntry entry = taskTableDB.getMinimumTriedEntryByTemplate(TaskConstants.Tracking); if (entry != null) { taskTableDB.IncrementDoneScore(entry.ID); SatyamTask task = JSonUtils.ConvertJSonToObject <SatyamTask>(entry.TaskParametersString); SatyamJobStorageAccountAccess satyamStorage = new SatyamJobStorageAccountAccess(); List <string> ImageURLs = satyamStorage.getURLListOfSubDirectoryByURL(task.SatyamURI); //string urls = ""; //for (int i=0;i<ImageURLs.Count;i++) //{ // urls += ImageURLs[i]; // if (i == ImageURLs.Count - 1) break; // urls += ','; //} Hidden_ImageURLList.Value = ObjectsToStrings.ListString(ImageURLs, ','); SatyamJob jobDefinitionEntry = task.jobEntry; MultiObjectTrackingSubmittedJob job = JSonUtils.ConvertJSonToObject <MultiObjectTrackingSubmittedJob>(jobDefinitionEntry.JobParameters); Dictionary <string, List <string> > subcategories = job.Categories; List <string> categories = subcategories.Keys.ToList(); //CategorySelection_RakdioButtonList.Items.Clear(); for (int i = 0; i < categories.Count; i++) { ListItem l = new ListItem(categories[i]); //CategorySelection_RadioButtonList.Items.Add(l); } if (job.Description != "") { //DescriptionPanel.Visible = true; //DescriptionTextPanel.Controls.Add(new LiteralControl(job.Description)); } //Hidden_BoundaryLines.Value = JSonUtils.ConvertObjectToJSon(job.BoundaryLines); Hidden_TaskEntryString.Value = JSonUtils.ConvertObjectToJSon <SatyamTaskTableEntry>(entry); Hidden_PageLoadTime.Value = DateTime.Now.ToString(); // pass parameters from old template Slug_Hidden.Value = "null"; Start_Hidden.Value = "0"; Stop_Hidden.Value = (ImageURLs.Count - 1).ToString(); Skip_Hidden.Value = "0"; PerObject_Hidden.Value = "0.1"; Completion_Hidden.Value = "0.5"; BlowRadius_Hidden.Value = "0"; JobId_Hidden.Value = "1"; LabelString_Hidden.Value = ObjectsToStrings.ListString(categories.ToList(), ','); Attributes_Hidden.Value = ObjectsToStrings.DictionaryStringListString(subcategories, ',', ':', '_'); Training_Hidden.Value = "0"; fps_Hidden.Value = job.FrameRate.ToString(); Hidden_ChunkDuration.Value = job.ChunkDuration.ToString(); var web = new WebClient(); System.Drawing.Image x = System.Drawing.Image.FromStream(web.OpenRead(ImageURLs[0])); ImageWidth_Hidden.Value = x.Width.ToString(); ImageHeight_Hidden.Value = x.Height.ToString(); // image boundary for now //string[] region = new string[] { "0-0-1242-0-1242-375-0-375-0-0" }; string[] region = new string[] { "0-0-" + x.Width + "-0-" + x.Width + "-" + x.Height + "-0-" + x.Height + "-0-0" }; RegionString_Hidden.Value = ObjectsToStrings.ListString(region, ','); taskTableDB.close(); return(true); } else { taskTableDB.close(); return(false); } }
// If the results were not good enough, or aggregation method changed, retargeted, users might want to reopen the job // All we need to do: (IN STRICT ORDER) // clear all results back to inconclusive, // remove all aggregated results // restore the task table as it was for the guid, // change the job status back to launched, and // WARNING: // for safety, this has to be run atomically synchronously, without any parallel process. for now. public static void reopenJobForMoreResults(string guid) { SatyamJobSubmissionsTableAccess jobDB = new SatyamJobSubmissionsTableAccess(); SatyamJobSubmissionsTableAccessEntry jobEntry = jobDB.getEntryByJobGIUD(guid); jobDB.close(); if (jobEntry.JobStatus != JobStatus.completed) { Console.WriteLine("Job not completed yet!"); return; } SatyamAggregatedResultsTableAccess aggResultDB = new SatyamAggregatedResultsTableAccess(); bool delSuccess = aggResultDB.DeleteEntriesByGUID(guid); aggResultDB.close(); if (!delSuccess) { Console.WriteLine("Delete Agg Result DB Failed"); return; } SatyamResultsTableAccess resultDB = new SatyamResultsTableAccess(); if (!resultDB.UpdateStatusByGUID(guid, ResultStatus.inconclusive)) { Console.WriteLine("Update Result DB Failed"); //resultDB.close(); //return; } List <SatyamResultsTableEntry> results = resultDB.getEntriesByGUID(guid); resultDB.close(); Dictionary <int, SatyamTask> taskParamsByTaskID = new Dictionary <int, SatyamTask>(); foreach (SatyamResultsTableEntry result in results) { if (taskParamsByTaskID.ContainsKey(result.SatyamTaskTableEntryID)) { continue; } SatyamResult satyamRes = JSonUtils.ConvertJSonToObject <SatyamResult>(result.ResultString); SatyamTask task = JSonUtils.ConvertJSonToObject <SatyamTask>(satyamRes.TaskParametersString); taskParamsByTaskID.Add(result.SatyamTaskTableEntryID, task); } SatyamTaskTableAccess taskDB = new SatyamTaskTableAccess(); foreach (int taskID in taskParamsByTaskID.Keys) { SatyamTask task = taskParamsByTaskID[taskID]; SatyamJob job = task.jobEntry; bool suc = taskDB.AddEntryWithSpecificID(taskID, job.JobTemplateType, job.UserID, job.JobGUIDString, JSonUtils.ConvertObjectToJSon(task), job.JobSubmitTime, job.amazonHITInformation.Price); if (!suc) { Console.WriteLine("Update Task Table Failed"); taskDB.close(); return; } } taskDB.close(); jobDB = new SatyamJobSubmissionsTableAccess(); bool success = jobDB.UpdateEntryStatus(guid, JobStatus.launched); jobDB.close(); if (!success) { Console.WriteLine("Update Job Entry Failed"); return; } }
public static void EvaluateAndPrintConfusionMatrixOfAggregatedResultEntries(List <SatyamAggregatedResultsTableEntry> aggResultEntries, string outputFile, out int noCorrect, //out SortedDictionary<string, Dictionary<string, int>> confusionMatrix_res_groundtruth, //out SortedDictionary<string, Dictionary<string, int>> confusionMatrix_groundtruth_res, bool prepareDataForTraining = false, string outputDirectory = null) { noCorrect = 0; //SortedDictionary<string, Dictionary<string, int>> confusionMatrix_res_groundtruth = new SortedDictionary<string, Dictionary<string, int>>(); //SortedDictionary<string, Dictionary<string, int>> confusionMatrix_groundtruth_res = new SortedDictionary<string, Dictionary<string, int>>(); List <KeyValuePair <string, string> > detections_gts = new List <KeyValuePair <string, string> >(); WebClient wc = new WebClient(); foreach (SatyamAggregatedResultsTableEntry aggResultEntry in aggResultEntries) { SatyamSaveAggregatedDataSatyam data = new SatyamSaveAggregatedDataSatyam(aggResultEntry); SingleObjectLabelingAggregatedResult aggResult = JSonUtils.ConvertJSonToObject <SingleObjectLabelingAggregatedResult>(data.AggregatedResultString); string fileName = URIUtilities.filenameFromURI(data.SatyamURI); string VideoCategoryGroundTruth = getVideoCategoryFromFileName(fileName); detections_gts.Add(new KeyValuePair <string, string>(aggResult.Category, VideoCategoryGroundTruth)); //if (!confusionMatrix_res_groundtruth.ContainsKey(aggResult.Category)) //{ // confusionMatrix_res_groundtruth.Add(aggResult.Category, new Dictionary<string, int>()); //} //if (!confusionMatrix_res_groundtruth[aggResult.Category].ContainsKey(VideoCategoryGroundTruth)) //{ // confusionMatrix_res_groundtruth[aggResult.Category].Add(VideoCategoryGroundTruth, 0); //} //if (!confusionMatrix_groundtruth_res.ContainsKey(VideoCategoryGroundTruth)) //{ // confusionMatrix_groundtruth_res.Add(VideoCategoryGroundTruth, new Dictionary<string, int>()); //} //if (!confusionMatrix_groundtruth_res[VideoCategoryGroundTruth].ContainsKey(aggResult.Category)) //{ // confusionMatrix_groundtruth_res[VideoCategoryGroundTruth].Add(aggResult.Category, 0); //} //confusionMatrix_res_groundtruth[aggResult.Category][VideoCategoryGroundTruth]++; //confusionMatrix_groundtruth_res[VideoCategoryGroundTruth][aggResult.Category]++; if (aggResult.Category.Equals(VideoCategoryGroundTruth, StringComparison.InvariantCultureIgnoreCase)) { noCorrect++; } else { Console.WriteLine("{0}, Groundtruth: {1}, Aggregated: {2}, Votes: {3}", fileName, VideoCategoryGroundTruth, aggResult.Category, JSonUtils.ConvertObjectToJSon(aggResult.metaData)); } // prepare training dataset if (prepareDataForTraining) { if (!Directory.Exists(outputDirectory + "\\" + aggResult.Category)) { Directory.CreateDirectory(outputDirectory + "\\" + aggResult.Category); } wc.DownloadFile(data.SatyamURI, outputDirectory + "\\" + aggResult.Category + "\\" + fileName); } } SortedDictionary <string, Dictionary <string, int> > confusionMatrix_res_groundtruth; SortedDictionary <string, Dictionary <string, int> > confusionMatrix_groundtruth_res; SatyamResultValidationToolKit.getConfusionMat(detections_gts, out confusionMatrix_res_groundtruth, out confusionMatrix_groundtruth_res); SatyamResultValidationToolKit.printConfusionMatrix(confusionMatrix_groundtruth_res, confusionMatrix_res_groundtruth, outputFile); }