if config.DATASET == 'IOG': # load Label Encoder and mean files print('[INFO] loading label encoders and mean files...') age_le = pickle.loads(open(deploy.AGE_LABEL_ENCODER, 'rb').read()) gender_le = pickle.loads(open(deploy.GENDER_LABEL_ENCODER, 'rb').read()) age_means = json.loads(open(deploy.AGE_MEAN).read()) gender_means = json.loads(open(deploy.GENDER_MEAN).read()) # initialize image preprocessors age_mp = MeanPreprocessor(age_means['R'], age_means['G'], age_means['B']) gender_mp = MeanPreprocessor(gender_means['R'], gender_means['G'], gender_means['B']) age_preds, gender_preds = predict(face, sp, age_mp, gender_mp, cp, iap, deploy.AGE_NETWORK_PATH, deploy.GENDER_NETWORK_PATH, age_le, gender_le) # visualize age and gender predictions age_canvas = AgeGenderHelper.visualize_age(age_preds, age_le) gender_canvas = AgeGenderHelper.visualize_gender(gender_preds, gender_le) elif config.DATASET == 'ADIENCE': # age_preds_cross, gender_preds_cross = [], [] i = 0 # load Label Encoder and mean files print(f'[INFO] loading label encoders and mean files for cross validation {i}...') age_le = pickle.loads(open(deploy.AGE_LABEL_ENCODERS[i], 'rb').read()) gender_le = pickle.loads(open(deploy.GENDER_LABEL_ENCODERS[i], 'rb').read()) age_means = json.loads(open(deploy.AGE_MEANS[i]).read()) gender_means = json.loads(open(deploy.GENDER_MEANS[i]).read()) # initialize image preprocessors age_mp = MeanPreprocessor(age_means['R'], age_means['G'], age_means['B'])
# detect faces in grayscale image rects = detector(gray, 1) # loop over face detections for rect in rects: # determine facial landmarks for face region, then align face shape = predictor(gray, rect) face = fa.align(image, gray, rect) age_preds, gender_preds = prediction(config, face, sp, age_mp, gender_mp, cp, age_model, gender_model) # visualize age and gender predictions age_canvas = agh.visualize_age(age_preds, age_le) gender_canvas = agh.visualize_gender(gender_preds, gender_le) # draw bounding box around face clone = image.copy() x, y, w, h = face_utils.rect_to_bb(rect) cv2.rectangle(clone, (x, y), (x + w, y + h), (0, 255, 0), 2) # show output iamge cv2.imshow('Input', clone) cv2.imshow('Face', face) cv2.imshow('Age Probabilities', age_canvas) cv2.imshow('Gender Probabilities', gender_canvas) cv2.waitKey(0) elif 'ADIENCE' in config.DATASET: