x1, x2, y1, y2 = apply_offsets(face_coordinates, offsets) gray_face = gray_image[y1:y2, x1:x2] # processing input try: gray_face = cv2.resize(gray_face, (target_size)) except: continue gray_face = preprocess_input(gray_face, True) gray_face = np.expand_dims(gray_face, 0) gray_face = np.expand_dims(gray_face, -1) # prediction predicted_class = np.argmax(model.predict(gray_face)) label_text = labels[predicted_class] gradient_function = compile_gradient_function(model, predicted_class, 'conv2d_7') register_gradient() guided_model = modify_backprop(model, 'GuidedBackProp', task) saliency_function = compile_saliency_function(guided_model, 'conv2d_7') guided_gradCAM = calculate_guided_gradient_CAM(gray_face, gradient_function, saliency_function) guided_gradCAM = cv2.resize(guided_gradCAM, (x2-x1, y2-y1)) rgb_guided_gradCAM = np.repeat(guided_gradCAM[:, :, np.newaxis], 3, axis=2) rgb_image[y1:y2, x1:x2, :] = rgb_guided_gradCAM draw_bounding_box((x1, y1, x2 - x1, y2 - y1), rgb_image, color) bgr_image = cv2.cvtColor(rgb_image, cv2.COLOR_RGB2BGR) cv2.imwrite('../images/guided_gradCAM.png', bgr_image)
rgb_image = cv2.cvtColor(bgr_image, cv2.COLOR_BGR2RGB) faces = detect_faces(face_detection, gray_image) for face_coordinates in faces: x1, x2, y1, y2 = apply_offsets(face_coordinates, offsets) gray_face = gray_image[y1:y2, x1:x2] try: gray_face = cv2.resize(gray_face, (target_size)) except: continue gray_face = preprocess_input(gray_face, True) gray_face = np.expand_dims(gray_face, 0) gray_face = np.expand_dims(gray_face, -1) guided_gradCAM = calculate_guided_gradient_CAM(gray_face, gradient_function, saliency_function) guided_gradCAM = cv2.resize(guided_gradCAM, (x2-x1, y2-y1)) try: rgb_guided_gradCAM = np.repeat(guided_gradCAM[:, :, np.newaxis], 3, axis=2) rgb_image[y1:y2, x1:x2, :] = rgb_guided_gradCAM except: continue draw_bounding_box((x1, y1, x2 - x1, y2 - y1), rgb_image, color) bgr_image = cv2.cvtColor(rgb_image, cv2.COLOR_RGB2BGR) try: cv2.imshow('window_frame', bgr_image) except: continue if cv2.waitKey(1) & 0xFF == ord('q'): break