def view_imagesets(): ibs = current_app.ibs filtered = True imgsetid = request.args.get('imgsetid', '') if len(imgsetid) > 0: imgsetid_list = imgsetid.strip().split(',') imgsetid_list = [ None if imgsetid_ == 'None' or imgsetid_ == '' else int(imgsetid_) for imgsetid_ in imgsetid_list ] else: imgsetid_list = ibs.get_valid_imgsetids() filtered = False start_time_posix_list = ibs.get_imageset_start_time_posix(imgsetid_list) datetime_list = [ ut.unixtime_to_datetimestr(start_time_posix) if start_time_posix is not None else 'Unknown' for start_time_posix in start_time_posix_list ] gids_list = [ ibs.get_valid_gids(imgsetid=imgsetid_) for imgsetid_ in imgsetid_list ] aids_list = [ ut.flatten(ibs.get_image_aids(gid_list)) for gid_list in gids_list ] images_reviewed_list = [ appf.imageset_image_processed(ibs, gid_list) for gid_list in gids_list ] annots_reviewed_viewpoint_list = [ appf.imageset_annot_viewpoint_processed(ibs, aid_list) for aid_list in aids_list ] annots_reviewed_quality_list = [ appf.imageset_annot_quality_processed(ibs, aid_list) for aid_list in aids_list ] image_processed_list = [ images_reviewed.count(True) for images_reviewed in images_reviewed_list ] annot_processed_viewpoint_list = [ annots_reviewed.count(True) for annots_reviewed in annots_reviewed_viewpoint_list ] annot_processed_quality_list = [ annots_reviewed.count(True) for annots_reviewed in annots_reviewed_quality_list ] reviewed_list = [ all(images_reviewed) and all(annots_reviewed_viewpoint) and all(annot_processed_quality) for images_reviewed, annots_reviewed_viewpoint, annot_processed_quality in zip(images_reviewed_list, annots_reviewed_viewpoint_list, annots_reviewed_quality_list) ] imageset_list = zip( imgsetid_list, ibs.get_imageset_text(imgsetid_list), ibs.get_imageset_num_gids(imgsetid_list), image_processed_list, ibs.get_imageset_num_aids(imgsetid_list), annot_processed_viewpoint_list, annot_processed_quality_list, start_time_posix_list, datetime_list, reviewed_list, ) imageset_list.sort(key=lambda t: t[7]) return appf.template('view', 'imagesets', filtered=filtered, imgsetid_list=imgsetid_list, imgsetid_list_str=','.join(map(str, imgsetid_list)), num_imgsetids=len(imgsetid_list), imageset_list=imageset_list, num_imagesets=len(imageset_list))
def turk_detection(): ibs = current_app.ibs refer_aid = request.args.get('refer_aid', None) imgsetid = request.args.get('imgsetid', '') imgsetid = None if imgsetid == 'None' or imgsetid == '' else int(imgsetid) gid_list = ibs.get_valid_gids(imgsetid=imgsetid) reviewed_list = appf.imageset_image_processed(ibs, gid_list) progress = '%0.2f' % (100.0 * reviewed_list.count(True) / len(gid_list), ) imagesettext = None if imgsetid is None else ibs.get_imageset_text(imgsetid) gid = request.args.get('gid', '') if len(gid) > 0: gid = int(gid) else: gid_list_ = ut.filterfalse_items(gid_list, reviewed_list) if len(gid_list_) == 0: gid = None else: # gid = gid_list_[0] gid = random.choice(gid_list_) previous = request.args.get('previous', None) finished = gid is None review = 'review' in request.args.keys() display_instructions = request.cookies.get('detection_instructions_seen', 1) == 0 display_species_examples = False # request.cookies.get('detection_example_species_seen', 0) == 0 if not finished: gpath = ibs.get_image_thumbpath(gid, ensure_paths=True, draw_annots=False) image = ibs.get_images(gid) image_src = appf.embed_image_html(image) # Get annotations width, height = ibs.get_image_sizes(gid) aid_list = ibs.get_image_aids(gid) annot_bbox_list = ibs.get_annot_bboxes(aid_list) annot_thetas_list = ibs.get_annot_thetas(aid_list) species_list = ibs.get_annot_species_texts(aid_list) # Get annotation bounding boxes annotation_list = [] for aid, annot_bbox, annot_theta, species in zip(aid_list, annot_bbox_list, annot_thetas_list, species_list): temp = {} temp['left'] = 100.0 * (annot_bbox[0] / width) temp['top'] = 100.0 * (annot_bbox[1] / height) temp['width'] = 100.0 * (annot_bbox[2] / width) temp['height'] = 100.0 * (annot_bbox[3] / height) temp['label'] = species temp['id'] = aid temp['theta'] = float(annot_theta) annotation_list.append(temp) if len(species_list) > 0: species = max(set(species_list), key=species_list.count) # Get most common species elif appf.default_species(ibs) is not None: species = appf.default_species(ibs) else: species = KEY_DEFAULTS[SPECIES_KEY] else: gpath = None species = None image_src = None annotation_list = [] callback_url = '%s?imgsetid=%s' % (url_for('submit_detection'), imgsetid, ) return appf.template('turk', 'detection', imgsetid=imgsetid, gid=gid, refer_aid=refer_aid, species=species, image_path=gpath, image_src=image_src, previous=previous, imagesettext=imagesettext, progress=progress, finished=finished, annotation_list=annotation_list, display_instructions=display_instructions, display_species_examples=display_species_examples, callback_url=callback_url, callback_method='POST', EMBEDDED_CSS=None, EMBEDDED_JAVASCRIPT=None, review=review)
def view_images(): ibs = current_app.ibs filtered = True imgsetid_list = [] gid = request.args.get('gid', '') imgsetid = request.args.get('imgsetid', '') page = max(0, int(request.args.get('page', 1))) if len(gid) > 0: gid_list = gid.strip().split(',') gid_list = [ None if gid_ == 'None' or gid_ == '' else int(gid_) for gid_ in gid_list ] elif len(imgsetid) > 0: imgsetid_list = imgsetid.strip().split(',') imgsetid_list = [ None if imgsetid_ == 'None' or imgsetid_ == '' else int(imgsetid_) for imgsetid_ in imgsetid_list ] gid_list = ut.flatten([ ibs.get_valid_gids(imgsetid=imgsetid) for imgsetid_ in imgsetid_list ]) else: gid_list = ibs.get_valid_gids() filtered = False # Page page_start = min(len(gid_list), (page - 1) * appf.PAGE_SIZE) page_end = min(len(gid_list), page * appf.PAGE_SIZE) page_total = int(math.ceil(len(gid_list) / appf.PAGE_SIZE)) page_previous = None if page_start == 0 else page - 1 page_next = None if page_end == len(gid_list) else page + 1 gid_list = gid_list[page_start:page_end] print('[web] Loading Page [ %d -> %d ] (%d), Prev: %s, Next: %s' % (page_start, page_end, len(gid_list), page_previous, page_next, )) image_unixtime_list = ibs.get_image_unixtime(gid_list) datetime_list = [ ut.unixtime_to_datetimestr(image_unixtime) if image_unixtime is not None else 'Unknown' for image_unixtime in image_unixtime_list ] image_list = zip( gid_list, [ ','.join(map(str, imgsetid_list_)) for imgsetid_list_ in ibs.get_image_imgsetids(gid_list) ], ibs.get_image_gnames(gid_list), image_unixtime_list, datetime_list, ibs.get_image_gps(gid_list), ibs.get_image_party_tag(gid_list), ibs.get_image_contributor_tag(gid_list), ibs.get_image_notes(gid_list), appf.imageset_image_processed(ibs, gid_list), ) image_list.sort(key=lambda t: t[3]) return appf.template('view', 'images', filtered=filtered, imgsetid_list=imgsetid_list, imgsetid_list_str=','.join(map(str, imgsetid_list)), num_imgsetids=len(imgsetid_list), gid_list=gid_list, gid_list_str=','.join(map(str, gid_list)), num_gids=len(gid_list), image_list=image_list, num_images=len(image_list), page=page, page_start=page_start, page_end=page_end, page_total=page_total, page_previous=page_previous, page_next=page_next)