public static void SaveKITTIResultVideosLocally(List <SatyamResultsTableEntry> entries, string directoryName, int fps = 10) { directoryName = directoryName + "\\Raw"; if (!Directory.Exists(directoryName)) { Directory.CreateDirectory(directoryName); } SatyamJobStorageAccountAccess satyamStorage = new SatyamJobStorageAccountAccess(); for (int i = 0; i < entries.Count; i++) { SatyamResultsTableEntry entry = entries[i]; SatyamResult satyamResult = JSonUtils.ConvertJSonToObject <SatyamResult>(entry.ResultString); SatyamTask task = JSonUtils.ConvertJSonToObject <SatyamTask>(satyamResult.TaskParametersString); MultiObjectTrackingSubmittedJob job = JSonUtils.ConvertJSonToObject <MultiObjectTrackingSubmittedJob>(task.jobEntry.JobParameters); //VATIC_DVA_CrowdsourcedResult taskr = VATIC_DVA_CrowdsourcedResult.createVATIC_DVA_CrowdsourcedResultUsingSatyamBlobImageCount(satyamResult.TaskResult, task.SatyamURI, task.SatyamJobSubmissionsTableEntryID.ToString(), job.FrameRate); //MultiObjectTrackingResult res = taskr.getCompressedTracksInTimeSegment(); string[] names = task.SatyamURI.Split('/'); string videoName = names[names.Length - 2] + "_" + entry.ID; string[] fields = videoName.Split('_'); string videoSequence = fields[fields.Length - 5]; int startingFrame = Convert.ToInt32(fields[fields.Length - 2]); int maxChunkEndFrame = startingFrame + job.ChunkDuration * job.FrameRate; int noFrameOverlap = (int)(job.ChunkOverlap * job.FrameRate); if (startingFrame != 0) { startingFrame -= noFrameOverlap; } if (entry.JobGUID == "1e43a983-548d-4a2e-8161-5537eb985902") { videoSequence = getCorrectSequenceNo(videoSequence); } string videoFrameDir = DirectoryConstants.KITTITrackingImages + videoSequence; List <string> files = Directory.GetFiles(videoFrameDir).ToList(); List <string> ImageURLs = new List <string>(); for (int j = startingFrame; j < files.Count && j < maxChunkEndFrame; j++) { ImageURLs.Add(files[j]); } if (ImageURLs.Count == 0) { continue; } VATIC_DVA_CrowdsourcedResult taskr = new VATIC_DVA_CrowdsourcedResult(satyamResult.TaskResult, videoName, entry.ID.ToString(), ImageURLs.Count, job.FrameRate); MultiObjectTrackingResult res = taskr.getCompressedTracksInTimeSegment(); generateVideoForEvaluation(ImageURLs, res, directoryName, videoName, job.FrameRate); } }
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); }
public static SortedDictionary <string, List <SatyamAggregatedResultsTableEntry> > GroupChunksByVideoName(List <SatyamAggregatedResultsTableEntry> entries) { SortedDictionary <string, List <SatyamAggregatedResultsTableEntry> > entriesPerVideo = new SortedDictionary <string, List <SatyamAggregatedResultsTableEntry> >(); int fps = 0; for (int i = 0; i < entries.Count; i++) { SatyamAggregatedResultsTableEntry entry = entries[i]; SatyamAggregatedResult satyamAggResult = JSonUtils.ConvertJSonToObject <SatyamAggregatedResult>(entry.ResultString); SatyamTask aggTask = JSonUtils.ConvertJSonToObject <SatyamTask>(satyamAggResult.TaskParameters); string video = URIUtilities.localDirectoryNameFromURI(aggTask.SatyamURI); string[] fields = video.Split('_'); string videoName = ""; for (int j = 0; j < fields.Length - 2; j++) { // remove the starting frame videoName += fields[j]; if (j == fields.Length - 3) { break; } videoName += '_'; MultiObjectTrackingSubmittedJob job = JSonUtils.ConvertJSonToObject <MultiObjectTrackingSubmittedJob>(aggTask.jobEntry.JobParameters); fps = job.FrameRate; } if (!entriesPerVideo.ContainsKey(videoName)) { entriesPerVideo.Add(videoName, new List <SatyamAggregatedResultsTableEntry>()); } entriesPerVideo[videoName].Add(entries[i]); } return(entriesPerVideo); }
//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) //{ // string resultString = null; // List<ObjectCountingResult> resultList = new List<ObjectCountingResult>(); // foreach (SatyamResultsTableEntry entry in results) // { // SatyamResult res = JSonUtils.ConvertJSonToObject<SatyamResult>(entry.ResultString); // 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); // 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 bool IsAcceptable(SatyamAggregatedResultsTableEntry aggResult, SatyamResultsTableEntry result, double MAX_ABSOLUTE_COUNT_DEVIATION = TaskConstants.OBJECT_COUNTING_MTURK_MAX_ABSOLUTE_COUNT_DEVIATION_FOR_PAYMENT, double MAX_DEVIATION_FRACTION = TaskConstants.OBJECT_COUNTING_MTURK_MAX_DEVIATION_FRACTION_FOR_PAYMENT) { SatyamResult res = JSonUtils.ConvertJSonToObject <SatyamResult>(result.ResultString); SatyamAggregatedResult aggres = JSonUtils.ConvertJSonToObject <SatyamAggregatedResult>(aggResult.ResultString); ObjectCountingResult r = JSonUtils.ConvertJSonToObject <ObjectCountingResult>(res.TaskResult); ObjectCountingAggregatedResult ragg = JSonUtils.ConvertJSonToObject <ObjectCountingAggregatedResult>(aggres.AggregatedResultString); double maxdev = MAX_ABSOLUTE_COUNT_DEVIATION; if (ragg.Count * MAX_DEVIATION_FRACTION > maxdev) { maxdev = ragg.Count * MAX_DEVIATION_FRACTION; } if (Math.Abs(ragg.Count - r.Count) <= maxdev) { return(true); } else { return(false); } }
public static void SaveResultVideosLocally(List <SatyamResultsTableEntry> entries, string directoryName, int fps = 10) { directoryName = directoryName + "\\Raw"; if (!Directory.Exists(directoryName)) { Directory.CreateDirectory(directoryName); } SatyamJobStorageAccountAccess satyamStorage = new SatyamJobStorageAccountAccess(); for (int i = 0; i < entries.Count; i++) { SatyamResultsTableEntry entry = entries[i]; SatyamResult satyamResult = JSonUtils.ConvertJSonToObject <SatyamResult>(entry.ResultString); SatyamTask task = JSonUtils.ConvertJSonToObject <SatyamTask>(satyamResult.TaskParametersString); MultiObjectTrackingSubmittedJob job = JSonUtils.ConvertJSonToObject <MultiObjectTrackingSubmittedJob>(task.jobEntry.JobParameters); //VATIC_DVA_CrowdsourcedResult taskr = new VATIC_DVA_CrowdsourcedResult(satyamResult.TaskResult, task.SatyamURI, start, end, task.SatyamJobSubmissionsTableEntryID.ToString()); VATIC_DVA_CrowdsourcedResult taskr = MultiObjectTrackingAggregator.createVATIC_DVA_CrowdsourcedResultUsingSatyamBlobImageCount(satyamResult.TaskResult, task.SatyamURI, entry.ID.ToString(), job.FrameRate); MultiObjectTrackingResult res = taskr.getCompressedTracksInTimeSegment(); List <string> ImageURLs = satyamStorage.getURLListOfSubDirectoryByURL(task.SatyamURI); string[] names = task.SatyamURI.Split('/'); string videoName = names[names.Length - 2] + "_" + entry.ID; generateVideoForEvaluation(ImageURLs, res, directoryName, videoName, job.FrameRate); } }
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 void SaveResultVideosLocally(List <SatyamResultsTableEntry> entries, string directoryName, int fps = 10) { directoryName = directoryName + "\\Raw"; if (!Directory.Exists(directoryName)) { Directory.CreateDirectory(directoryName); } SatyamJobStorageAccountAccess satyamStorage = new SatyamJobStorageAccountAccess(); for (int i = 0; i < entries.Count; i++) { SatyamResultsTableEntry entry = entries[i]; SatyamResult satyamResult = JSonUtils.ConvertJSonToObject <SatyamResult>(entry.ResultString); SatyamTask task = JSonUtils.ConvertJSonToObject <SatyamTask>(satyamResult.TaskParametersString); MultiObjectTrackingSubmittedJob job = JSonUtils.ConvertJSonToObject <MultiObjectTrackingSubmittedJob>(task.jobEntry.JobParameters); string blobDir = URIUtilities.localDirectoryFullPathFromURI(task.SatyamURI); //VATIC_DVA_CrowdsourcedResult taskr = new VATIC_DVA_CrowdsourcedResult(satyamResult.TaskResult, task.SatyamURI, start, end, task.SatyamJobSubmissionsTableEntryID.ToString()); VATIC_DVA_CrowdsourcedResult taskr = MultiObjectTrackingAggregator.createVATIC_DVA_CrowdsourcedResultUsingSatyamBlobImageCount(satyamResult.TaskResult, blobDir, entry.ID.ToString(), job.FrameRate); MultiObjectTrackingResult res = taskr.getCompressedTracksInTimeSegment(); List <string> ImageURLs = satyamStorage.getURLListOfSpecificExtensionUnderSubDirectoryByURI(blobDir, new List <string>() { "jpg", "png" }); string videoName = URIUtilities.localDirectoryNameFromURI(blobDir) + "_" + URIUtilities.filenameFromURINoExtension(task.SatyamURI) + "_" + entry.ID; MultiObjectTrackingAnalyzer.generateVideoForEvaluation(ImageURLs, res, directoryName, videoName, job.FrameRate); } }
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); }
protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { //first update all the masterpage related entities: ContentPlaceHolder mpContentPlaceHolder = (ContentPlaceHolder)this.Master.Master.FindControl("MainTemplatePlaceHolder"); DropDownList ddlist1 = (DropDownList)mpContentPlaceHolder.FindControl("TemplatesDropDownList"); ddlist1.Items.FindByText("Multi-Object Tracking").Selected = true; Label usernameLabel = (Label)this.Master.Master.FindControl("UsernameLabel"); usernameLabel.Text = userName; //Create a new Job GUID NewJobGUID.Text = Guid.NewGuid().ToString(); } else { string jsonString = Hidden_SubCategories.Value; if (jsonString != "") { subCategories = JSonUtils.ConvertJSonToObject <Dictionary <String, List <String> > >(jsonString); } else { subCategories = new Dictionary <string, List <string> >(); } } }
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); }
private static void ValidateSatyamCARPKObjectCountingAggregationResult(List <SatyamAggregatedResultsTableEntry> aggResultEntries, out double totalError, out double totalGroundTruth) { List <double> aggResultCounts = new List <double>(); List <int> GroundTruthCounts = new List <int>(); List <double> abs_errors = new List <double>(); List <double> errors = new List <double>(); foreach (SatyamAggregatedResultsTableEntry aggResultEntry in aggResultEntries) { SatyamSaveAggregatedDataSatyam data = new SatyamSaveAggregatedDataSatyam(aggResultEntry); string fileName = URIUtilities.filenameFromURINoExtension(data.SatyamURI); string labelFilePath = DirectoryConstants.CARPKCountingLabels + fileName + ".txt"; string[] labels = File.ReadAllLines(labelFilePath); int GroundtruthCount = labels.Length; string jobGUID = aggResultEntry.JobGUID; int taskID = aggResultEntry.SatyamTaskTableEntryID; String resultString = data.AggregatedResultString; ObjectCountingAggregatedResult result = JSonUtils.ConvertJSonToObject <ObjectCountingAggregatedResult>(resultString); aggResultCounts.Add(result.Count); GroundTruthCounts.Add(GroundtruthCount); abs_errors.Add(Math.Abs(GroundtruthCount - result.Count)); errors.Add(GroundtruthCount - result.Count); } totalError = abs_errors.Sum(); totalGroundTruth = GroundTruthCounts.Sum(); double totalErrorRatio = totalError / totalGroundTruth; Console.WriteLine("Error: {0} / {1} = {2}", totalError, totalGroundTruth, totalErrorRatio); Console.WriteLine("Total Aggregated {0}", aggResultEntries.Count); }
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 SortedDictionary <DateTime, List <SatyamResultsTableEntry> > SortResultsBySubmitTime_OneResultPerTurkerPerTask(List <SatyamResultsTableEntry> entries) { SortedDictionary <DateTime, List <SatyamResultsTableEntry> > entriesBySubmitTime = new SortedDictionary <DateTime, List <SatyamResultsTableEntry> >(); Dictionary <int, List <string> > WorkersPerTask = new Dictionary <int, List <string> >(); foreach (SatyamResultsTableEntry entry in entries) { if (!WorkersPerTask.ContainsKey(entry.SatyamTaskTableEntryID)) { WorkersPerTask.Add(entry.SatyamTaskTableEntryID, new List <string>()); } string workerID = JSonUtils.ConvertJSonToObject <SatyamResult>(entry.ResultString).amazonInfo.WorkerID; if (!WorkersPerTask[entry.SatyamTaskTableEntryID].Contains(workerID)) { //enclose only non-duplicate results, one per each worker. WorkersPerTask[entry.SatyamTaskTableEntryID].Add(workerID); if (!entriesBySubmitTime.ContainsKey(entry.SubmitTime)) { entriesBySubmitTime.Add(entry.SubmitTime, new List <SatyamResultsTableEntry>()); } entriesBySubmitTime[entry.SubmitTime].Add(entry); } } return(entriesBySubmitTime); }
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 SaveAggregatedResultVideosLocally(List <SatyamAggregatedResultsTableEntry> entries, string directoryName) { directoryName = directoryName + "\\Aggregated"; if (!Directory.Exists(directoryName)) { Directory.CreateDirectory(directoryName); } SatyamJobStorageAccountAccess satyamStorage = new SatyamJobStorageAccountAccess(); for (int i = 0; i < entries.Count; i++) { SatyamAggregatedResultsTableEntry entry = entries[i]; SatyamAggregatedResult satyamAggResult = JSonUtils.ConvertJSonToObject <SatyamAggregatedResult>(entry.ResultString); SatyamTask aggTask = JSonUtils.ConvertJSonToObject <SatyamTask>(satyamAggResult.TaskParameters); MultiObjectTrackingSubmittedJob job = JSonUtils.ConvertJSonToObject <MultiObjectTrackingSubmittedJob>(aggTask.jobEntry.JobParameters); MultiObjectTrackingAggregatedResult aggresult = JSonUtils.ConvertJSonToObject <MultiObjectTrackingAggregatedResult>(satyamAggResult.AggregatedResultString); List <string> ImageURLs = satyamStorage.getURLListOfSubDirectoryByURL(aggTask.SatyamURI); string videoName = URIUtilities.localDirectoryNameFromURI(aggTask.SatyamURI) + "_" + entry.ID; generateVideoForEvaluation(ImageURLs, aggresult.tracklets, directoryName, videoName, job.FrameRate); } }
//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); }
public static void SaveResultOnlyText(string jobGUID) { string directoryName = DirectoryConstants.defaultTempDirectory + "\\" + jobGUID + "\\"; SatyamResultsTableAccess resultsDB = new SatyamResultsTableAccess(); List <SatyamResultsTableEntry> entries = resultsDB.getEntriesByGUID(jobGUID); resultsDB.close(); if (!Directory.Exists(directoryName)) { Directory.CreateDirectory(directoryName); } directoryName = directoryName + "\\Raw\\"; if (!Directory.Exists(directoryName)) { Directory.CreateDirectory(directoryName); } for (int i = 0; i < entries.Count; i++) { SatyamResultsTableEntry entry = entries[i]; SatyamResult satyamResult = JSonUtils.ConvertJSonToObject <SatyamResult>(entry.ResultString); SatyamTask task = JSonUtils.ConvertJSonToObject <SatyamTask>(satyamResult.TaskParametersString); SatyamJob job = task.jobEntry; string result = satyamResult.TaskResult; string ofilename = URIUtilities.filenameFromURI(task.SatyamURI); string[] fields = ofilename.Split('.'); string fileName = ""; for (int j = 0; j < fields.Count(); j++) { fileName += fields[j]; if (j == fields.Count() - 1) { break; } fileName += "."; } //string fileName = ofilename; fileName = fileName + "-Result"; fileName = fileName + "-" + entry.ID; Console.WriteLine("Saving " + fileName); string resultFile = directoryName + fileName + ".txt"; StreamWriter f = new System.IO.StreamWriter(resultFile); f.WriteLine(result); f.Close(); } }
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); } }
public static bool AggregatedResultEqualsGroundTruth(string satyamUri, string resultString) { //string[] uri_parts = satyamUri.Split('/'); //string[] name_parts = uri_parts[uri_parts.Length - 1].Split('_'); //string imageName = name_parts[0]; string fileName = URIUtilities.filenameFromURI(satyamUri); string imageCategoryName = fileName.Split('_')[0]; SingleObjectLabelingAggregatedResult result = JSonUtils.ConvertJSonToObject <SingleObjectLabelingAggregatedResult>(resultString); return(result.Category.Equals(GroundTruth[imageCategoryName], StringComparison.InvariantCultureIgnoreCase)); }
public static void SaveResultImagesLocally(List <SatyamResultsTableEntry> entries, string directoryName) { if (!Directory.Exists(directoryName)) { Directory.CreateDirectory(directoryName); } directoryName = directoryName + "\\Raw\\"; if (!Directory.Exists(directoryName)) { Directory.CreateDirectory(directoryName); } for (int i = 0; i < entries.Count; i++) { SatyamResultsTableEntry entry = entries[i]; SatyamResult satyamResult = JSonUtils.ConvertJSonToObject <SatyamResult>(entry.ResultString); SatyamTask task = JSonUtils.ConvertJSonToObject <SatyamTask>(satyamResult.TaskParametersString); SatyamJob job = task.jobEntry; string result = satyamResult.TaskResult; Image originalImage = ImageUtilities.getImageFromURI(task.SatyamURI); Image ResultImage = DrawResultStringOnImage(result, originalImage); string ofilename = URIUtilities.filenameFromURI(task.SatyamURI); string[] fields = ofilename.Split('.'); string fileName = ""; for (int j = 0; j < fields.Count(); j++) { fileName += fields[j]; if (j == fields.Count() - 1) { break; } fileName += "."; } //string fileName = ofilename; fileName = fileName + "-Result"; fileName = fileName + "-" + entry.ID; Console.WriteLine("Saving " + fileName); ImageUtilities.saveImage(ResultImage, directoryName, fileName); string resultFile = directoryName + fileName + ".txt"; StreamWriter f = new System.IO.StreamWriter(resultFile); f.WriteLine(result); f.Close(); } }
private MultiObjectLocalizationAndLabelingResult LoadTFServingResult(SatyamTaskTableEntry entry) { SatyamTask task = JSonUtils.ConvertJSonToObject <SatyamTask>(entry.TaskParametersString); string image_url = task.SatyamURI; SatyamJob jobDefinitionEntry = task.jobEntry; MultiObjectLocalizationAndLabelingSubmittedJob job = JSonUtils.ConvertJSonToObject <MultiObjectLocalizationAndLabelingSubmittedJob>(jobDefinitionEntry.JobParameters); List <string> categories = job.Categories; MultiObjectLocalizationAndLabelingResult res = TensorflowServingClient.GetImageDetectionResult(image_url, categories); return(res); }
public SatyamSaveAggregatedDataRequester(SatyamAggregatedResultsTableEntry entry) { SatyamAggregatedResult result = JSonUtils.ConvertJSonToObject <SatyamAggregatedResult>(entry.ResultString); SatyamTask task = JSonUtils.ConvertJSonToObject <SatyamTask>(result.TaskParameters); SatyamJob job = task.jobEntry; //OrignialURI = task.OriginalURI; JobGUID = entry.JobGUID; JobTemplateType = entry.JobTemplateType; UserID = entry.UserID; JobSubmitTime = job.JobSubmitTime; JobParameters = job.JobParameters; JobCompletionTime = DateTime.Now; AggregatedResultString = result.AggregatedResultString; }
public static bool AggregatedResultEqualsGroundTruth(string satyamUri, string resultString) { string fileName = URIUtilities.filenameFromURINoExtension(satyamUri); string VideoCategory = getVideoCategoryFromFileName(fileName); if (VideoCategory == "") { Console.WriteLine("this video doesn't have valid category in filename"); } SingleObjectLabelingAggregatedResult result = JSonUtils.ConvertJSonToObject <SingleObjectLabelingAggregatedResult>(resultString); return(result.Category.Equals(VideoCategory, StringComparison.InvariantCultureIgnoreCase)); }
//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 MultiObjectLocalizationAndLabelingResult LoadLatestProgressiveAggregationResult(SatyamTaskTableEntry entry) { SatyamAggregatedProgressiveResultsTableAccess aggDB = new SatyamAggregatedProgressiveResultsTableAccess(); SatyamAggregatedProgressiveResultsTableEntry aggEntry = aggDB.getLatestEntryWithMostResultsAggregatedByTaskID(entry.ID); if (aggEntry == null) { return(null); } Hidden_PrevResultID.Value = aggEntry.ID.ToString(); SatyamAggregatedResult satyamResult = JSonUtils.ConvertJSonToObject <SatyamAggregatedResult>(aggEntry.ResultString); MultiObjectLocalizationAndLabelingAggregatedResult aggRes = JSonUtils.ConvertJSonToObject <MultiObjectLocalizationAndLabelingAggregatedResult>(satyamResult.AggregatedResultString); MultiObjectLocalizationAndLabelingResult res = aggRes.boxesAndCategories; return(res); }
public static bool PreprocessSubmittedData(SatyamJobSubmissionsTableAccessEntry jobEntry) { string satyamContainerName = JobTemplateToSatyamContainerNameMap[jobEntry.JobTemplateType]; string GUID = jobEntry.JobGUID; string satyamDirectoryName = GUID; SatyamJob job = JSonUtils.ConvertJSonToObject <SatyamJob>(jobEntry.JobParametersString); bool success = false; switch (job.JobTemplateType) { case TaskConstants.TrackletLabeling: case TaskConstants.TrackletLabeling_MTurk: success = VATIC_Tracklet.ProcessAndUploadToAzureBlob(jobEntry); break; case TaskConstants.Tracking: case TaskConstants.Tracking_MTurk: success = TrackingDataPreprocessor.ProcessAndUploadToAzureBlob(jobEntry); break; case TaskConstants.Classification_Video: case TaskConstants.Classification_Video_MTurk: success = VideoClassficationPreprocessor.ProcessAndUploadToAzureBlob(jobEntry); break; case TaskConstants.Classification_Image: case TaskConstants.Classification_Image_MTurk: case TaskConstants.Counting_Image: case TaskConstants.Counting_Image_MTurk: case TaskConstants.Counting_Video: case TaskConstants.Counting_Video_MTurk: case TaskConstants.Detection_Image: case TaskConstants.Detection_Image_MTurk: case TaskConstants.Segmentation_Image: case TaskConstants.Segmentation_Image_MTurk: case TaskConstants.OpenEndedQuestion_Image: case TaskConstants.OpenEndedQuestion_Image_MTurk: default: // all the images to satyam location success = DefaultDataPreprocessor.copyDataFromUserBlobToSatyamBlob(jobEntry); break; } return(success); }
public List <int> getAllTaskIDsAWorkerHasDoneForAGUID(string WorkerID, string guid) { List <int> ret = new List <int>(); List <SatyamResultsTableEntry> entries = getEntriesByGUID(guid); foreach (SatyamResultsTableEntry entry in entries) { SatyamResult result = JSonUtils.ConvertJSonToObject <SatyamResult>(entry.ResultString); if (result.amazonInfo.WorkerID == WorkerID) { ret.Add(result.TaskTableEntryID); } } return(ret); }
public static List <SatyamResultsTableEntry> getAllEntriesByGUIDFilteredByHITID(string guid, string hitid) { List <SatyamResultsTableEntry> ret = new List <SatyamResultsTableEntry>(); SatyamResultsTableAccess resDB = new SatyamResultsTableAccess(); List <SatyamResultsTableEntry> res = resDB.getEntriesByGUID(guid); resDB.close(); foreach (SatyamResultsTableEntry r in res) { SatyamResult rr = JSonUtils.ConvertJSonToObject <SatyamResult>(r.ResultString); if (rr.amazonInfo.HITID == hitid) { ret.Add(r); } } return(ret); }