Пример #1
0
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))
Пример #2
0
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))
Пример #3
0
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))
Пример #4
0
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))
Пример #5
0
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))
Пример #6
0
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))
Пример #7
0
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))
Пример #8
0
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))