Beispiel #1
0
    def get_all_predictions(self, test_images_path: str,
                            use_image_splitting: bool,
                            batch_size: int) -> [PredictionsSummary]:
        source_image_infos = ImageInfo.load_image_infos_from_directory(
            test_images_path)
        test_image_infos = MasterImageClassifier.__generate_all_test_images(
            source_image_infos, use_image_splitting)

        prediction_summaries = []
        images_per_test_id = int(
            round(len(test_image_infos) / len(source_image_infos), 0))
        request_size = MathUtils.lcm(batch_size, images_per_test_id)

        while len(test_image_infos) > 0:
            batch_test_image_infos = []
            # To reduce memory footprint- only request a portion at a time that is lcm of the batch size and number of
            # test images per test id, to group same test id images together
            while len(test_image_infos) > 0 and len(
                    batch_test_image_infos) < request_size:
                batch_test_image_infos.append(test_image_infos.pop())

            prediction_summaries.extend(
                self.__get_predictions_for_all_images(batch_test_image_infos,
                                                      batch_size))

        return prediction_summaries
Beispiel #2
0
    def get_image_divided_into_three_quarters_cross(source_image_info: ImageInfo) -> [ImageInfo]:
        new_image_infos = []
        three_quarters_height = ImageSplitter.__get_three_quarters_height(source_image_info)
        three_quarters_width = ImageSplitter.__get_three_quarters_width(source_image_info)
        one_quarter_height = source_image_info.get_height() - three_quarters_height
        one_quarter_width = source_image_info.get_width() - three_quarters_width

        # Top Center
        new_image_infos.append(ImageSplitter.__get_image_portion(source_image_info, one_quarter_width, 0, three_quarters_width, three_quarters_height))
        # Bottom Center
        new_image_infos.append(ImageSplitter.__get_image_portion(source_image_info, one_quarter_width, one_quarter_height + 1, three_quarters_width, three_quarters_height))
        # Left Center
        new_image_infos.append(ImageSplitter.__get_image_portion(source_image_info, 0, one_quarter_width, three_quarters_width, three_quarters_height))
        # Right Center
        new_image_infos.append(ImageSplitter.__get_image_portion(source_image_info, one_quarter_height + 1, one_quarter_height, three_quarters_width, three_quarters_height))
        return new_image_infos
Beispiel #3
0
    def get_image_divided_into_square_three_quarters_corners(source_image_info: ImageInfo) -> [ImageInfo]:
        new_image_infos = []

        three_quarters_height = ImageSplitter.__get_three_quarters_height(source_image_info)
        three_quarters_width = ImageSplitter.__get_three_quarters_width(source_image_info)
        one_quarter_height = source_image_info.get_height() - three_quarters_height
        one_quarter_width = source_image_info.get_width() - three_quarters_width

        # Top Left
        new_image_infos.append(ImageSplitter.__get_image_portion(source_image_info, 0, 0, three_quarters_width, three_quarters_height))
        # Top Right
        new_image_infos.append(ImageSplitter.__get_image_portion(source_image_info, one_quarter_width + 1, 0, three_quarters_width, three_quarters_height))
        # Bottom Left
        new_image_infos.append(ImageSplitter.__get_image_portion(source_image_info, 0, one_quarter_height + 1, three_quarters_width, three_quarters_height))
        # Bottom Right
        new_image_infos.append(ImageSplitter.__get_image_portion(source_image_info, one_quarter_width + 1, one_quarter_height + 1, three_quarters_width, three_quarters_height))
        return new_image_infos
Beispiel #4
0
    def get_image_divided_into_horizontal_halves(source_image_info: ImageInfo) -> [ImageInfo]:
        new_image_infos = []
        full_width = source_image_info.get_width()
        half_height = ImageSplitter.__get_half_height(source_image_info)

        # Top Half
        new_image_infos.append(ImageSplitter.__get_image_portion(source_image_info, 0, 0, full_width, half_height))
        # Bottom Half
        new_image_infos.append(ImageSplitter.__get_image_portion(source_image_info, 0, half_height + 1, full_width, half_height))
        return new_image_infos
Beispiel #5
0
    def get_image_divided_into_vertical_halves(source_image_info: ImageInfo) -> [ImageInfo]:
        new_image_infos = []
        full_height = source_image_info.get_height()
        half_width = ImageSplitter.__get_half_width(source_image_info)

        # Left Half
        new_image_infos.append(ImageSplitter.__get_image_portion(source_image_info, 0, 0, half_width, full_height))
        # Right Half
        new_image_infos.append(ImageSplitter.__get_image_portion(source_image_info, half_width + 1, 0, half_width, full_height))
        return new_image_infos
Beispiel #6
0
 def __get_three_quarters_width(source_image_info: ImageInfo) -> int:
     full_width = source_image_info.get_width()
     three_quarters_width = round(full_width * 3 / 4, 0) - 1
     return int(three_quarters_width)
Beispiel #7
0
 def __get_three_quarters_height(source_image_info: ImageInfo) -> int:
     full_height = source_image_info.get_height()
     three_quarters_height = round(full_height * 3 / 4, 0) - 1
     return int(three_quarters_height)
Beispiel #8
0
 def __get_half_height(source_image_info: ImageInfo) -> int:
     full_height = source_image_info.get_height()
     half_height = round(full_height / 2, 0) - 1
     return int(half_height)
Beispiel #9
0
 def __get_half_width(source_image_info: ImageInfo) -> int:
     full_width = source_image_info.get_width()
     half_width = round(full_width / 2, 0) - 1
     return int(half_width)
Beispiel #10
0
 def __get_image_portion(source_image_info, begin_x: int, begin_y: int, width: int, height: int):
     crop_box = CropBox(begin_x, begin_y, width, height)
     return ImageInfo.get_instance(source_image_info.get_image_number(), source_image_info.get_image_path(), crop_box)