in lib/datasets/ava.py [0:0]
def load_boxes_and_labels(filenames, is_train, detect_thresh, full_eval):
"""Loading boxes and labels from csv files."""
ret = {}
count = 0
unique_box_count = 0
for filename in filenames:
with open(filename, 'r') as f:
for line in f:
row = line.strip().split(',')
assert len(row) == 7 or len(row) == 8
video_name, frame_sec = row[0], int(row[1])
# We "define" the subset of AVA validation set to be the
# frames where frame_sec % 4 == 0.
if (not is_train and not full_eval and frame_sec % 4 != 0):
continue
box_key = ','.join(row[2:6])
box = map(float, row[2:6])
label = -1 if row[6] == '' else int(row[6])
if len(row) == 8:
# When we use predicted boxes to train/eval, we have scores.
score = float(row[7])
if score < detect_thresh:
continue
if video_name not in ret:
ret[video_name] = {}
for sec in AVA_VALID_FRAMES:
ret[video_name][sec] = {}
if box_key not in ret[video_name][frame_sec]:
ret[video_name][frame_sec][box_key] = [box, []]
unique_box_count += 1
ret[video_name][frame_sec][box_key][1].append(label)
if label != -1:
count += 1
for video_name in ret.keys():
for frame_sec in ret[video_name].keys():
ret[video_name][frame_sec] = ret[video_name][frame_sec].values()
logger.info('Finished loading annotations from')
for filename in filenames:
logger.info(" %s" % filename)
logger.info("Number of unique boxes: %d" % unique_box_count)
logger.info("Number of annotations: %d" % count)
return ret