コード例 #1
0
ファイル: tester.py プロジェクト: szymek325/MasterThesis
 def __init__(self):
     self.logger = LoggerFactory()
     self.imagesProvider = PeopleImagesProvider()
     self.recognizersProvider = FaceRecognizerProvider()
     self.openCvRecognizer = OpenCvFaceRecognizerForTesting()
     self.azureRecognizer = AzureFaceRecognizer()
     self.faceDetector = FaceDetectorsManager()
     self.neuralNetworkToUse = 40
コード例 #2
0
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
コード例 #3
0
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} ")
コード例 #4
0
ファイル: tester.py プロジェクト: szymek325/MasterThesis
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} ")
コード例 #5
0
 def __init__(self):
     self.logger = LoggerFactory()
     self.faceDetectorsManager = FaceDetectorsManager()
     self.resultsOperator = ResultsOperator()
     self.inputFileProvider = InputFileProvider()
コード例 #6
0
 def __init__(self):
     self.logger = LoggerFactory()
     self.faceDetectorManager = FaceDetectorsManager()
     self.imageConverter = ImageConverter()
     self.recognitionResultRepo = RecognitionResultRepository()
コード例 #7
0
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)
コード例 #8
0
 def __init__(self):
     self.logger = LoggerFactory()
     self.faceDetectorManager = FaceDetectorsManager()
     self.imageConverter = ImageConverter()