def __init__(self): self.logger = LoggerFactory() self.imagesProvider = PeopleImagesProvider() self.recognizersProvider = FaceRecognizerProvider() self.openCvRecognizer = OpenCvFaceRecognizerForTesting() self.azureRecognizer = AzureFaceRecognizer() self.faceDetector = FaceDetectorsManager() self.neuralNetworkToUse = 40
class OpenCvFaceRecognizerForTesting(): def __init__(self): self.logger = LoggerFactory() self.faceDetectorManager = FaceDetectorsManager() self.imageConverter = ImageConverter() def recognize_with_single_recognizer_with_haar(self, face_recognizer, image_path): detection_start = time.time() image = cv2.imread(image_path) detected_faces = self.faceDetectorManager.get_face_by_haar(image) detection_end = time.time() detection_time = detection_end - detection_start start_time = time.time() self.logger.info(f"Using {face_recognizer} recognizer on {image_path}") if len(detected_faces) is 0: return 0 (startX, startY, endX, endY) = detected_faces[0] predict_image = self.imageConverter.convert_to_np_array( image[startY:endY, startX:endX]) nbr_predicted, confidence = face_recognizer.predict(predict_image) return nbr_predicted def recognize_with_single_recognizer_with_dnn(self, face_recognizer, image_path): detection_start = time.time() image = cv2.imread(image_path) detected_faces = self.faceDetectorManager.get_face_by_dnn(image) detection_end = time.time() detection_time = detection_end - detection_start start_time = time.time() self.logger.info(f"Using {face_recognizer} recognizer on {image_path}") if len(detected_faces) is 0: return 0 (startX, startY, endX, endY) = detected_faces[0] predict_image = self.imageConverter.convert_to_np_array( image[startY:endY, startX:endX]) nbr_predicted, confidence = face_recognizer.predict(predict_image) return nbr_predicted
class DetectionRequestsManager(): def __init__(self): self.logger = LoggerFactory() self.faceDetectorsManager = FaceDetectorsManager() self.resultsOperator = ResultsOperator() self.inputFileProvider = InputFileProvider() def process_request(self, request: Detection): self.logger.info( f"Working on Face Detection Request id: {request.id} started") input_file_path = self.inputFileProvider.get_detection_input_file_path( request.id) self.logger.info(f"Running all face detectors") results = self.faceDetectorsManager.get_faces_on_image_from_file_path( input_file_path) self.resultsOperator.prepare_and_upload_results( request.id, results, input_file_path) self.logger.info(f"Finished Face Detection Request id: {request.id} ")
class Tester: def __init__(self): self.logger = LoggerFactory() self.imagesProvider = PeopleImagesProvider() self.recognizersProvider = FaceRecognizerProvider() self.openCvRecognizer = OpenCvFaceRecognizerForTesting() self.azureRecognizer = AzureFaceRecognizer() self.faceDetector = FaceDetectorsManager() self.neuralNetworkToUse = 40 def test_all_photos(self): faces = 0 all_photos_with_people = self.imagesProvider.get_image_paths_for_people(range(2, 102), 20) self.logger.info("test") for person_id, person_image in all_photos_with_people: found_faces= self.faceDetector.get_face_by_azure(person_image) if found_faces == 0 or len(found_faces) == 0: continue else: faces = faces + 1 self.logger.info(f"FACES: {faces} ")
def __init__(self): self.logger = LoggerFactory() self.faceDetectorsManager = FaceDetectorsManager() self.resultsOperator = ResultsOperator() self.inputFileProvider = InputFileProvider()
def __init__(self): self.logger = LoggerFactory() self.faceDetectorManager = FaceDetectorsManager() self.imageConverter = ImageConverter() self.recognitionResultRepo = RecognitionResultRepository()
class OpenCvFaceRecognizer(): def __init__(self): self.logger = LoggerFactory() self.faceDetectorManager = FaceDetectorsManager() self.imageConverter = ImageConverter() self.recognitionResultRepo = RecognitionResultRepository() def recognize_face_from_image(self, request_id, recognizers, image_path): detection_start = time.time() image = cv2.imread(image_path) detected_faces = self.faceDetectorManager.get_face_by_dnn(image) detection_end = time.time() detection_time = detection_end - detection_start for face_recognizer, file_id in recognizers: start_time = time.time() self.logger.info( f"Using {face_recognizer} recognizer created from {file_id} file id" ) if len(detected_faces) is 0: self.__add_empty_result__(file_id, request_id, start_time, detection_time) for (startX, startY, endX, endY) in detected_faces: predict_image = self.imageConverter.convert_to_np_array( image[startY:endY, startX:endX]) nbr_predicted, confidence = face_recognizer.predict( predict_image) self.__add_result__(confidence, file_id, nbr_predicted, request_id, start_time, detection_time) def recognize_with_single_recognizer(self, face_recognizer, image_path): detection_start = time.time() image = cv2.imread(image_path) detected_faces = self.faceDetectorManager.get_face_by_haar(image) detection_end = time.time() detection_time = detection_end - detection_start start_time = time.time() self.logger.info(f"Using {face_recognizer} recognizer on {image_path}") if len(detected_faces) is 0: return 0 (startX, startY, endX, endY) = detected_faces[0] predict_image = self.imageConverter.convert_to_np_array( image[startY:endY, startX:endX]) nbr_predicted, confidence = face_recognizer.predict(predict_image) return nbr_predicted def __add_result__(self, confidence, file_id, nbr_predicted, request_id, start_time, detection_time): self.logger.info( f"Recognized identity: {nbr_predicted} confidence:{confidence}") end_time = time.time() process_time = end_time - start_time + detection_time result = RecognitionResult(nbr_predicted, request_id, confidence, file_id, str(process_time)) self.recognitionResultRepo.add_recognition_result(result) def __add_empty_result__(self, azure_file, request_id, start_time, detection_time): end_time = time.time() process_time = end_time - start_time + detection_time result = RecognitionResult(0, request_id, 0, azure_file.id, str(process_time), "No faces detected") self.recognitionResultRepo.add_recognition_result(result)
def __init__(self): self.logger = LoggerFactory() self.faceDetectorManager = FaceDetectorsManager() self.imageConverter = ImageConverter()