def submit_quality(): ibs = current_app.ibs method = request.form.get('quality-submit', '') imgsetid = request.args.get('imgsetid', '') imgsetid = None if imgsetid == 'None' or imgsetid == '' else int(imgsetid) aid = int(request.form['quality-aid']) turk_id = request.cookies.get('turk_id', -1) src_ag = request.args.get('src_ag', '') src_ag = None if src_ag == 'None' or src_ag == '' else int(src_ag) dst_ag = request.args.get('dst_ag', '') dst_ag = None if dst_ag == 'None' or dst_ag == '' else int(dst_ag) if method.lower() == 'delete': ibs.delete_annots(aid) print('[web] (DELETED) turk_id: %s, aid: %d' % (turk_id, aid, )) aid = None # Reset AID to prevent previous else: if src_ag is not None and dst_ag is not None: appf.movegroup_aid(ibs, aid, src_ag, dst_ag) quality = int(request.form['quality-value']) ibs.set_annot_qualities([aid], [quality]) print('[web] turk_id: %s, aid: %d, quality: %d' % (turk_id, aid, quality)) # Return HTML refer = request.args.get('refer', '') if len(refer) > 0: return redirect(appf.decode_refer_url(refer)) else: return redirect(url_for('turk_quality', imgsetid=imgsetid, src_ag=src_ag, dst_ag=dst_ag, previous=aid))
def submit_quality(): ibs = current_app.ibs method = request.form.get("quality-submit", "") imgsetid = request.args.get("imgsetid", "") imgsetid = None if imgsetid == "None" or imgsetid == "" else int(imgsetid) aid = int(request.form["quality-aid"]) turk_id = request.cookies.get("turk_id", -1) src_ag = request.args.get("src_ag", "") src_ag = None if src_ag == "None" or src_ag == "" else int(src_ag) dst_ag = request.args.get("dst_ag", "") dst_ag = None if dst_ag == "None" or dst_ag == "" else int(dst_ag) if method.lower() == "delete": ibs.delete_annots(aid) print("[web] (DELETED) turk_id: %s, aid: %d" % (turk_id, aid)) aid = None # Reset AID to prevent previous else: if src_ag is not None and dst_ag is not None: appf.movegroup_aid(ibs, aid, src_ag, dst_ag) quality = int(request.form["quality-value"]) ibs.set_annot_qualities([aid], [quality]) print("[web] turk_id: %s, aid: %d, quality: %d" % (turk_id, aid, quality)) # Return HTML refer = request.args.get("refer", "") if len(refer) > 0: return redirect(appf.decode_refer_url(refer)) else: return redirect(url_for("turk_quality", imgsetid=imgsetid, src_ag=src_ag, dst_ag=dst_ag, previous=aid))
def submit_viewpoint(): ibs = current_app.ibs method = request.form.get('viewpoint-submit', '') imgsetid = request.args.get('imgsetid', '') imgsetid = None if imgsetid == 'None' or imgsetid == '' else int(imgsetid) src_ag = request.args.get('src_ag', '') src_ag = None if src_ag == 'None' or src_ag == '' else int(src_ag) dst_ag = request.args.get('dst_ag', '') dst_ag = None if dst_ag == 'None' or dst_ag == '' else int(dst_ag) aid = int(request.form['viewpoint-aid']) turk_id = request.cookies.get('turk_id', -1) if method.lower() == 'delete': ibs.delete_annots(aid) print('[web] (DELETED) turk_id: %s, aid: %d' % (turk_id, aid, )) aid = None # Reset AID to prevent previous if method.lower() == 'make junk': ibs.set_annot_quality_texts([aid], [const.QUAL_JUNK]) print('[web] (SET AS JUNK) turk_id: %s, aid: %d' % (turk_id, aid, )) redirection = request.referrer if 'aid' not in redirection: # Prevent multiple clears if '?' in redirection: redirection = '%s&aid=%d' % (redirection, aid, ) else: redirection = '%s?aid=%d' % (redirection, aid, ) return redirect(redirection) if method.lower() == 'rotate left': theta = ibs.get_annot_thetas(aid) theta = (theta + PI / 2) % TAU ibs.set_annot_thetas(aid, theta) (xtl, ytl, w, h) = ibs.get_annot_bboxes(aid) diffx = int(round((w / 2.0) - (h / 2.0))) diffy = int(round((h / 2.0) - (w / 2.0))) xtl, ytl, w, h = xtl + diffx, ytl + diffy, h, w ibs.set_annot_bboxes([aid], [(xtl, ytl, w, h)]) print('[web] (ROTATED LEFT) turk_id: %s, aid: %d' % (turk_id, aid, )) redirection = request.referrer if 'aid' not in redirection: # Prevent multiple clears if '?' in redirection: redirection = '%s&aid=%d' % (redirection, aid, ) else: redirection = '%s?aid=%d' % (redirection, aid, ) return redirect(redirection) if method.lower() == 'rotate right': theta = ibs.get_annot_thetas(aid) theta = (theta - PI / 2) % TAU ibs.set_annot_thetas(aid, theta) (xtl, ytl, w, h) = ibs.get_annot_bboxes(aid) diffx = int(round((w / 2.0) - (h / 2.0))) diffy = int(round((h / 2.0) - (w / 2.0))) xtl, ytl, w, h = xtl + diffx, ytl + diffy, h, w ibs.set_annot_bboxes([aid], [(xtl, ytl, w, h)]) print('[web] (ROTATED RIGHT) turk_id: %s, aid: %d' % (turk_id, aid, )) redirection = request.referrer if 'aid' not in redirection: # Prevent multiple clears if '?' in redirection: redirection = '%s&aid=%d' % (redirection, aid, ) else: redirection = '%s?aid=%d' % (redirection, aid, ) return redirect(redirection) else: if src_ag is not None and dst_ag is not None: appf.movegroup_aid(ibs, aid, src_ag, dst_ag) value = int(request.form['viewpoint-value']) yaw = appf.convert_old_viewpoint_to_yaw(value) species_text = request.form['viewpoint-species'] ibs.set_annot_yaws([aid], [yaw], input_is_degrees=False) ibs.set_annot_species([aid], [species_text]) print('[web] turk_id: %s, aid: %d, yaw: %d' % (turk_id, aid, yaw)) # Return HTML refer = request.args.get('refer', '') if len(refer) > 0: return redirect(appf.decode_refer_url(refer)) else: return redirect(url_for('turk_viewpoint', imgsetid=imgsetid, src_ag=src_ag, dst_ag=dst_ag, previous=aid))
def submit_additional(): ibs = current_app.ibs method = request.form.get('additional-submit', '') imgsetid = request.args.get('imgsetid', '') imgsetid = None if imgsetid == 'None' or imgsetid == '' else int(imgsetid) aid = int(request.form['additional-aid']) turk_id = request.cookies.get('turk_id', -1) if method.lower() == 'delete': ibs.delete_annots(aid) print('[web] (DELETED) turk_id: %s, aid: %d' % (turk_id, aid, )) aid = None # Reset AID to prevent previous else: sex = int(request.form['additional-sex-value']) age = int(request.form['additional-age-value']) age_min = None age_max = None # Sex if sex >= 2: sex -= 2 else: sex = -1 if age == 1: age_min = None age_max = None elif age == 2: age_min = None age_max = 2 elif age == 3: age_min = 3 age_max = 5 elif age == 4: age_min = 6 age_max = 11 elif age == 5: age_min = 12 age_max = 23 elif age == 6: age_min = 24 age_max = 35 elif age == 7: age_min = 36 age_max = None ibs.set_annot_sex([aid], [sex]) nid = ibs.get_annot_name_rowids(aid) DAN_SPECIAL_WRITE_AGE_TO_ALL_ANOTATIONS = True if nid is not None and DAN_SPECIAL_WRITE_AGE_TO_ALL_ANOTATIONS: aid_list = ibs.get_name_aids(nid) ibs.set_annot_age_months_est_min(aid_list, [age_min] * len(aid_list)) ibs.set_annot_age_months_est_max(aid_list, [age_max] * len(aid_list)) else: ibs.set_annot_age_months_est_min([aid], [age_min]) ibs.set_annot_age_months_est_max([aid], [age_max]) print('[web] turk_id: %s, aid: %d, sex: %r, age: %r' % (turk_id, aid, sex, age)) # Return HTML refer = request.args.get('refer', '') if len(refer) > 0: return redirect(appf.decode_refer_url(refer)) else: return redirect(url_for('turk_additional', imgsetid=imgsetid, previous=aid))
def submit_detection(): ibs = current_app.ibs method = request.form.get('detection-submit', '') imgsetid = request.args.get('imgsetid', '') imgsetid = None if imgsetid == 'None' or imgsetid == '' else int(imgsetid) gid = int(request.form['detection-gid']) turk_id = request.cookies.get('turk_id', -1) if method.lower() == 'delete': # ibs.delete_images(gid) # print('[web] (DELETED) turk_id: %s, gid: %d' % (turk_id, gid, )) pass elif method.lower() == 'clear': aid_list = ibs.get_image_aids(gid) ibs.delete_annots(aid_list) print('[web] (CLEAERED) turk_id: %s, gid: %d' % (turk_id, gid, )) redirection = request.referrer if 'gid' not in redirection: # Prevent multiple clears if '?' in redirection: redirection = '%s&gid=%d' % (redirection, gid, ) else: redirection = '%s?gid=%d' % (redirection, gid, ) return redirect(redirection) else: current_aid_list = ibs.get_image_aids(gid) # Make new annotations width, height = ibs.get_image_sizes(gid) # Get aids annotation_list = json.loads(request.form['detection-annotations']) bbox_list = [ ( int( width * (annot['left'] / 100.0) ), int( height * (annot['top'] / 100.0) ), int( width * (annot['width'] / 100.0) ), int( height * (annot['height'] / 100.0) ), ) for annot in annotation_list ] theta_list = [ float(annot['theta']) for annot in annotation_list ] survived_aid_list = [ None if annot['id'] is None else int(annot['id']) for annot in annotation_list ] species_list = [ annot['label'] for annot in annotation_list ] # Delete annotations that didn't survive kill_aid_list = list(set(current_aid_list) - set(survived_aid_list)) ibs.delete_annots(kill_aid_list) for aid, bbox, theta, species in zip(survived_aid_list, bbox_list, theta_list, species_list): if aid is None: ibs.add_annots([gid], [bbox], theta_list=[theta], species_list=[species]) else: ibs.set_annot_bboxes([aid], [bbox]) ibs.set_annot_thetas([aid], [theta]) ibs.set_annot_species([aid], [species]) ibs.set_image_reviewed([gid], [1]) print('[web] turk_id: %s, gid: %d, bbox_list: %r, species_list: %r' % (turk_id, gid, annotation_list, species_list)) # Return HTML refer = request.args.get('refer', '') if len(refer) > 0: return redirect(appf.decode_refer_url(refer)) else: return redirect(url_for('turk_detection', imgsetid=imgsetid, previous=gid))
def submit_viewpoint(): ibs = current_app.ibs method = request.form.get("viewpoint-submit", "") imgsetid = request.args.get("imgsetid", "") imgsetid = None if imgsetid == "None" or imgsetid == "" else int(imgsetid) src_ag = request.args.get("src_ag", "") src_ag = None if src_ag == "None" or src_ag == "" else int(src_ag) dst_ag = request.args.get("dst_ag", "") dst_ag = None if dst_ag == "None" or dst_ag == "" else int(dst_ag) aid = int(request.form["viewpoint-aid"]) turk_id = request.cookies.get("turk_id", -1) if method.lower() == "delete": ibs.delete_annots(aid) print("[web] (DELETED) turk_id: %s, aid: %d" % (turk_id, aid)) aid = None # Reset AID to prevent previous if method.lower() == "make junk": ibs.set_annot_quality_texts([aid], [const.QUAL_JUNK]) print("[web] (SET AS JUNK) turk_id: %s, aid: %d" % (turk_id, aid)) redirection = request.referrer if "aid" not in redirection: # Prevent multiple clears if "?" in redirection: redirection = "%s&aid=%d" % (redirection, aid) else: redirection = "%s?aid=%d" % (redirection, aid) return redirect(redirection) if method.lower() == "rotate left": theta = ibs.get_annot_thetas(aid) theta = (theta + PI / 2) % TAU ibs.set_annot_thetas(aid, theta) (xtl, ytl, w, h) = ibs.get_annot_bboxes(aid) diffx = int(round((w / 2.0) - (h / 2.0))) diffy = int(round((h / 2.0) - (w / 2.0))) xtl, ytl, w, h = xtl + diffx, ytl + diffy, h, w ibs.set_annot_bboxes([aid], [(xtl, ytl, w, h)]) print("[web] (ROTATED LEFT) turk_id: %s, aid: %d" % (turk_id, aid)) redirection = request.referrer if "aid" not in redirection: # Prevent multiple clears if "?" in redirection: redirection = "%s&aid=%d" % (redirection, aid) else: redirection = "%s?aid=%d" % (redirection, aid) return redirect(redirection) if method.lower() == "rotate right": theta = ibs.get_annot_thetas(aid) theta = (theta - PI / 2) % TAU ibs.set_annot_thetas(aid, theta) (xtl, ytl, w, h) = ibs.get_annot_bboxes(aid) diffx = int(round((w / 2.0) - (h / 2.0))) diffy = int(round((h / 2.0) - (w / 2.0))) xtl, ytl, w, h = xtl + diffx, ytl + diffy, h, w ibs.set_annot_bboxes([aid], [(xtl, ytl, w, h)]) print("[web] (ROTATED RIGHT) turk_id: %s, aid: %d" % (turk_id, aid)) redirection = request.referrer if "aid" not in redirection: # Prevent multiple clears if "?" in redirection: redirection = "%s&aid=%d" % (redirection, aid) else: redirection = "%s?aid=%d" % (redirection, aid) return redirect(redirection) else: if src_ag is not None and dst_ag is not None: appf.movegroup_aid(ibs, aid, src_ag, dst_ag) value = int(request.form["viewpoint-value"]) yaw = appf.convert_old_viewpoint_to_yaw(value) species_text = request.form["viewpoint-species"] ibs.set_annot_yaws([aid], [yaw], input_is_degrees=False) ibs.set_annot_species([aid], [species_text]) print("[web] turk_id: %s, aid: %d, yaw: %d" % (turk_id, aid, yaw)) # Return HTML refer = request.args.get("refer", "") if len(refer) > 0: return redirect(appf.decode_refer_url(refer)) else: return redirect(url_for("turk_viewpoint", imgsetid=imgsetid, src_ag=src_ag, dst_ag=dst_ag, previous=aid))
def submit_additional(): ibs = current_app.ibs method = request.form.get("additional-submit", "") imgsetid = request.args.get("imgsetid", "") imgsetid = None if imgsetid == "None" or imgsetid == "" else int(imgsetid) aid = int(request.form["additional-aid"]) turk_id = request.cookies.get("turk_id", -1) if method.lower() == "delete": ibs.delete_annots(aid) print("[web] (DELETED) turk_id: %s, aid: %d" % (turk_id, aid)) aid = None # Reset AID to prevent previous else: sex = int(request.form["additional-sex-value"]) age = int(request.form["additional-age-value"]) age_min = None age_max = None # Sex if sex >= 2: sex -= 2 else: sex = -1 if age == 1: age_min = None age_max = None elif age == 2: age_min = None age_max = 2 elif age == 3: age_min = 3 age_max = 5 elif age == 4: age_min = 6 age_max = 11 elif age == 5: age_min = 12 age_max = 23 elif age == 6: age_min = 24 age_max = 35 elif age == 7: age_min = 36 age_max = None ibs.set_annot_sex([aid], [sex]) nid = ibs.get_annot_name_rowids(aid) DAN_SPECIAL_WRITE_AGE_TO_ALL_ANOTATIONS = True if nid is not None and DAN_SPECIAL_WRITE_AGE_TO_ALL_ANOTATIONS: aid_list = ibs.get_name_aids(nid) ibs.set_annot_age_months_est_min(aid_list, [age_min] * len(aid_list)) ibs.set_annot_age_months_est_max(aid_list, [age_max] * len(aid_list)) else: ibs.set_annot_age_months_est_min([aid], [age_min]) ibs.set_annot_age_months_est_max([aid], [age_max]) print("[web] turk_id: %s, aid: %d, sex: %r, age: %r" % (turk_id, aid, sex, age)) # Return HTML refer = request.args.get("refer", "") if len(refer) > 0: return redirect(appf.decode_refer_url(refer)) else: return redirect(url_for("turk_additional", imgsetid=imgsetid, previous=aid))
def submit_detection(): ibs = current_app.ibs method = request.form.get("detection-submit", "") imgsetid = request.args.get("imgsetid", "") imgsetid = None if imgsetid == "None" or imgsetid == "" else int(imgsetid) gid = int(request.form["detection-gid"]) turk_id = request.cookies.get("turk_id", -1) if method.lower() == "delete": # ibs.delete_images(gid) # print('[web] (DELETED) turk_id: %s, gid: %d' % (turk_id, gid, )) pass elif method.lower() == "clear": aid_list = ibs.get_image_aids(gid) ibs.delete_annots(aid_list) print("[web] (CLEAERED) turk_id: %s, gid: %d" % (turk_id, gid)) redirection = request.referrer if "gid" not in redirection: # Prevent multiple clears if "?" in redirection: redirection = "%s&gid=%d" % (redirection, gid) else: redirection = "%s?gid=%d" % (redirection, gid) return redirect(redirection) else: current_aid_list = ibs.get_image_aids(gid) # Make new annotations width, height = ibs.get_image_sizes(gid) # Get aids annotation_list = json.loads(request.form["detection-annotations"]) bbox_list = [ ( int(width * (annot["left"] / 100.0)), int(height * (annot["top"] / 100.0)), int(width * (annot["width"] / 100.0)), int(height * (annot["height"] / 100.0)), ) for annot in annotation_list ] theta_list = [float(annot["theta"]) for annot in annotation_list] survived_aid_list = [None if annot["id"] is None else int(annot["id"]) for annot in annotation_list] species_list = [annot["label"] for annot in annotation_list] # Delete annotations that didn't survive kill_aid_list = list(set(current_aid_list) - set(survived_aid_list)) ibs.delete_annots(kill_aid_list) for aid, bbox, theta, species in zip(survived_aid_list, bbox_list, theta_list, species_list): if aid is None: ibs.add_annots([gid], [bbox], theta_list=[theta], species_list=[species]) else: ibs.set_annot_bboxes([aid], [bbox]) ibs.set_annot_thetas([aid], [theta]) ibs.set_annot_species([aid], [species]) ibs.set_image_reviewed([gid], [1]) print( "[web] turk_id: %s, gid: %d, bbox_list: %r, species_list: %r" % (turk_id, gid, annotation_list, species_list) ) # Return HTML refer = request.args.get("refer", "") if len(refer) > 0: return redirect(appf.decode_refer_url(refer)) else: return redirect(url_for("turk_detection", imgsetid=imgsetid, previous=gid))