Files
insightface/detection/RetinaFace/rcnn/utils/load_data.py

65 lines
2.0 KiB
Python
Raw Normal View History

2019-05-03 11:51:35 +08:00
import numpy as np
from ..logger import logger
from ..config import config
from ..dataset import *
2020-11-06 13:59:21 +08:00
def load_gt_roidb(dataset_name,
image_set_name,
root_path,
dataset_path,
2019-05-03 11:51:35 +08:00
flip=False):
""" load ground truth roidb """
imdb = eval(dataset_name)(image_set_name, root_path, dataset_path)
roidb = imdb.gt_roidb()
print('roidb size', len(roidb))
if flip:
roidb = imdb.append_flipped_images(roidb)
print('flipped roidb size', len(roidb))
return roidb
2020-11-06 13:59:21 +08:00
def load_proposal_roidb(dataset_name,
image_set_name,
root_path,
dataset_path,
proposal='rpn',
append_gt=True,
flip=False):
2019-05-03 11:51:35 +08:00
""" load proposal roidb (append_gt when training) """
imdb = eval(dataset_name)(image_set_name, root_path, dataset_path)
gt_roidb = imdb.gt_roidb()
roidb = eval('imdb.' + proposal + '_roidb')(gt_roidb, append_gt)
if flip:
roidb = imdb.append_flipped_images(roidb)
return roidb
def merge_roidb(roidbs):
""" roidb are list, concat them together """
roidb = roidbs[0]
for r in roidbs[1:]:
roidb.extend(r)
return roidb
def filter_roidb(roidb):
""" remove roidb entries without usable rois """
def is_valid(entry):
""" valid images have at least 1 fg or bg roi """
overlaps = entry['max_overlaps']
fg_inds = np.where(overlaps >= config.TRAIN.FG_THRESH)[0]
2020-11-06 13:59:21 +08:00
bg_inds = np.where((overlaps < config.TRAIN.BG_THRESH_HI)
& (overlaps >= config.TRAIN.BG_THRESH_LO))[0]
2019-05-03 11:51:35 +08:00
valid = len(fg_inds) > 0 or len(bg_inds) > 0
#valid = len(fg_inds) > 0
return valid
num = len(roidb)
filtered_roidb = [entry for entry in roidb if is_valid(entry)]
num_after = len(filtered_roidb)
2020-11-06 13:59:21 +08:00
logger.info('load data: filtered %d roidb entries: %d -> %d' %
(num - num_after, num, num_after))
2019-05-03 11:51:35 +08:00
return filtered_roidb