class MRFaceTaskSimulation(object): def __init__(self, file_list, **kwargs): self.file_list = file_list gpu_or_cpu = kwargs['hardware_type'] resources_dir = kwargs['resources_dir'] colorferet_tar = os.path.join(resources_dir, kwargs['colorferet']) cascade_cpu = os.path.join(resources_dir, kwargs['cascade_cpu']) cascade_gpu = os.path.join(resources_dir, kwargs['cascade_gpu']) tar_stem = kwargs['colorferet'].split('.')[0] colorferet_dir = os.path.join(resources_dir, tar_stem) with tarfile.open(colorferet_tar) as tar: tar.extractall(path=colorferet_dir) self.detector = create_detector(gpu_or_cpu, cascade_cpu, cascade_gpu) self.recognizer = create_recognizer(colorferet_dir) shutil.rmtree(colorferet_dir, ignore_errors=True) self.timer = Timer() def run(self): race_count = { 'Black-or-African-American': 0, 'Asian': 0, 'Asian-Middle-Eastern': 0, 'Hispanic': 0, 'Native-American': 0, 'Other': 0, 'Pacific-Islander': 0, 'White': 0 } for file_path in self.file_list: frame = cv2.imread(file_path) frame_bgr = None print file_path if len(frame.shape) == 3: if frame.shape[2] > 1: frame_bgr = frame frame = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) for (x, y, w, h) in self.detector.detect(file_path): cutout = cv2.resize(frame[y:y+h, x:x+w], (256, 256)) race_predicted_num, conf = self.recognizer.predict(cutout) race_predicted_str = labels_int[int(race_predicted_num)] race_count[race_predicted_str] += 1 results = [] for race in race_count: count = race_count[race] results.append((race, count)) self.timer.end() return results
def __init__(self, file_list, **kwargs): self.file_list = file_list gpu_or_cpu = kwargs['hardware_type'] resources_dir = kwargs['resources_dir'] colorferet_tar = os.path.join(resources_dir, kwargs['colorferet']) cascade_cpu = os.path.join(resources_dir, kwargs['cascade_cpu']) cascade_gpu = os.path.join(resources_dir, kwargs['cascade_gpu']) tar_stem = kwargs['colorferet'].split('.')[0] colorferet_dir = os.path.join(resources_dir, tar_stem) with tarfile.open(colorferet_tar) as tar: tar.extractall(path=colorferet_dir) self.detector = create_detector(gpu_or_cpu, cascade_cpu, cascade_gpu) self.recognizer = create_recognizer(colorferet_dir) shutil.rmtree(colorferet_dir, ignore_errors=True) self.timer = Timer()