From adbca17e28f0e1d5531393ad52e206c75c3b882e Mon Sep 17 00:00:00 2001 From: Bepitic Date: Mon, 15 Jul 2024 15:47:29 +0200 Subject: [PATCH 01/42] Add Task EXPLANATION and the visualization of images with description. Signed-off-by: bepitic --- src/anomalib/__init__.py | 1 + src/anomalib/utils/visualization/image.py | 209 ++++++++++++++++++---- 2 files changed, 179 insertions(+), 31 deletions(-) diff --git a/src/anomalib/__init__.py b/src/anomalib/__init__.py index 1b7a30497c..614f14dc21 100644 --- a/src/anomalib/__init__.py +++ b/src/anomalib/__init__.py @@ -22,3 +22,4 @@ class TaskType(str, Enum): CLASSIFICATION = "classification" DETECTION = "detection" SEGMENTATION = "segmentation" + EXPLANATION = "explanation" diff --git a/src/anomalib/utils/visualization/image.py b/src/anomalib/utils/visualization/image.py index d2e1cb0d6e..aeeee4e886 100644 --- a/src/anomalib/utils/visualization/image.py +++ b/src/anomalib/utils/visualization/image.py @@ -3,6 +3,7 @@ # Copyright (C) 2022-2024 Intel Corporation # SPDX-License-Identifier: Apache-2.0 +import textwrap from collections.abc import Iterator from enum import Enum from pathlib import Path @@ -16,7 +17,9 @@ from anomalib import TaskType from anomalib.data.utils import read_image -from anomalib.utils.post_processing import add_anomalous_label, add_normal_label, draw_boxes, superimpose_anomaly_map +from anomalib.utils.post_processing import (add_anomalous_label, + add_normal_label, draw_boxes, + superimpose_anomaly_map) from .base import BaseVisualizer, GeneratorResult, VisualizationStep @@ -39,6 +42,7 @@ def __init__( image: np.ndarray, pred_score: float, pred_label: str, + text_descr: str | None = None, anomaly_map: np.ndarray | None = None, gt_mask: np.ndarray | None = None, pred_mask: np.ndarray | None = None, @@ -47,6 +51,8 @@ def __init__( box_labels: np.ndarray | None = None, normalize: bool = False, ) -> None: + + self.text_descr = text_descr self.anomaly_map = anomaly_map self.box_labels = box_labels self.gt_boxes = gt_boxes @@ -61,7 +67,9 @@ def __init__( self.anomalous_boxes: np.ndarray | None = None if anomaly_map is not None: - self.heat_map = superimpose_anomaly_map(self.anomaly_map, self.image, normalize=normalize) + self.heat_map = superimpose_anomaly_map( + self.anomaly_map, self.image, normalize=normalize + ) if self.gt_mask is not None and self.gt_mask.max() <= 1.0: self.gt_mask *= 255 @@ -69,7 +77,9 @@ def __init__( self.pred_mask = pred_mask if self.pred_mask is not None and self.pred_mask.max() <= 1.0: self.pred_mask *= 255 - self.segmentations = mark_boundaries(self.image, self.pred_mask, color=(1, 0, 0), mode="thick") + self.segmentations = mark_boundaries( + self.image, self.pred_mask, color=(1, 0, 0), mode="thick" + ) if self.segmentations.max() <= 1.0: self.segmentations = (self.segmentations * 255).astype(np.uint8) @@ -88,11 +98,29 @@ def __repr__(self) -> str: f"anomaly_map={self.anomaly_map}, gt_mask={self.gt_mask}, " f"gt_boxes={self.gt_boxes}, pred_boxes={self.pred_boxes}, box_labels={self.box_labels}" ) - repr_str += f", pred_mask={self.pred_mask}" if self.pred_mask is not None else "" + repr_str += ( + f", pred_mask={self.pred_mask}" if self.pred_mask is not None else "" + ) repr_str += f", heat_map={self.heat_map}" if self.heat_map is not None else "" - repr_str += f", segmentations={self.segmentations}" if self.segmentations is not None else "" - repr_str += f", normal_boxes={self.normal_boxes}" if self.normal_boxes is not None else "" - repr_str += f", anomalous_boxes={self.anomalous_boxes}" if self.anomalous_boxes is not None else "" + repr_str += ( + f", segmentations={self.segmentations}" + if self.segmentations is not None + else "" + ) + repr_str += ( + f", normal_boxes={self.normal_boxes}" + if self.normal_boxes is not None + else "" + ) + repr_str += ( + f", anomalous_boxes={self.anomalous_boxes}" + if self.anomalous_boxes is not None + else "" + ) + repr_str += ( + f", text_descr={self.text_descr}" if self.text_descr is not None else "" + ) + repr_str += ")" return repr_str @@ -141,11 +169,15 @@ def _visualize_batch(self, batch: dict) -> Iterator[GeneratorResult]: if "image_path" in batch: height, width = batch["image"].shape[-2:] image = (read_image(path=batch["image_path"][i]) * 255).astype(np.uint8) - image = cv2.resize(image, dsize=(width, height), interpolation=cv2.INTER_AREA) + image = cv2.resize( + image, dsize=(width, height), interpolation=cv2.INTER_AREA + ) elif "video_path" in batch: height, width = batch["image"].shape[-2:] image = batch["original_image"][i].squeeze().cpu().numpy() - image = cv2.resize(image, dsize=(width, height), interpolation=cv2.INTER_AREA) + image = cv2.resize( + image, dsize=(width, height), interpolation=cv2.INTER_AREA + ) else: msg = "Batch must have either 'image_path' or 'video_path' defined." raise KeyError(msg) @@ -160,17 +192,47 @@ def _visualize_batch(self, batch: dict) -> Iterator[GeneratorResult]: image_result = ImageResult( image=image, - pred_score=batch["pred_scores"][i].cpu().numpy().item() if "pred_scores" in batch else None, - pred_label=batch["pred_labels"][i].cpu().numpy().item() if "pred_labels" in batch else None, - anomaly_map=batch["anomaly_maps"][i].cpu().numpy() if "anomaly_maps" in batch else None, - pred_mask=batch["pred_masks"][i].squeeze().int().cpu().numpy() if "pred_masks" in batch else None, - gt_mask=batch["mask"][i].squeeze().int().cpu().numpy() if "mask" in batch else None, + pred_score=( + batch["pred_scores"][i].cpu().numpy().item() + if "pred_scores" in batch + else None + ), + pred_label=( + batch["pred_labels"][i].cpu().numpy().item() + if "pred_labels" in batch + else None + ), + anomaly_map=( + batch["anomaly_maps"][i].cpu().numpy() + if "anomaly_maps" in batch + else None + ), + pred_mask=( + batch["pred_masks"][i].squeeze().int().cpu().numpy() + if "pred_masks" in batch + else None + ), + gt_mask=( + batch["mask"][i].squeeze().int().cpu().numpy() + if "mask" in batch + else None + ), gt_boxes=batch["boxes"][i].cpu().numpy() if "boxes" in batch else None, - pred_boxes=batch["pred_boxes"][i].cpu().numpy() if "pred_boxes" in batch else None, - box_labels=batch["box_labels"][i].cpu().numpy() if "box_labels" in batch else None, + pred_boxes=( + batch["pred_boxes"][i].cpu().numpy() + if "pred_boxes" in batch + else None + ), + box_labels=( + batch["box_labels"][i].cpu().numpy() + if "box_labels" in batch + else None + ), normalize=self.normalize, ) - yield GeneratorResult(image=self.visualize_image(image_result), file_name=file_name) + yield GeneratorResult( + image=self.visualize_image(image_result), file_name=file_name + ) def visualize_image(self, image_result: ImageResult) -> np.ndarray: """Generate the visualization for an image. @@ -209,12 +271,24 @@ def _visualize_full(self, image_result: ImageResult) -> np.ndarray: image_grid.add_image(image_result.image, "Image") if image_result.gt_boxes is not None: - gt_image = draw_boxes(np.copy(image_result.image), image_result.gt_boxes, color=(255, 0, 0)) - image_grid.add_image(image=gt_image, color_map="gray", title="Ground Truth") + gt_image = draw_boxes( + np.copy(image_result.image), + image_result.gt_boxes, + color=(255, 0, 0), + ) + image_grid.add_image( + image=gt_image, color_map="gray", title="Ground Truth" + ) else: image_grid.add_image(image_result.image, "Image") - pred_image = draw_boxes(np.copy(image_result.image), image_result.normal_boxes, color=(0, 255, 0)) - pred_image = draw_boxes(pred_image, image_result.anomalous_boxes, color=(255, 0, 0)) + pred_image = draw_boxes( + np.copy(image_result.image), + image_result.normal_boxes, + color=(0, 255, 0), + ) + pred_image = draw_boxes( + pred_image, image_result.anomalous_boxes, color=(255, 0, 0) + ) image_grid.add_image(pred_image, "Predictions") if self.task == TaskType.SEGMENTATION: if image_result.pred_mask is None: @@ -223,19 +297,40 @@ def _visualize_full(self, image_result: ImageResult) -> np.ndarray: image_grid.add_image(image_result.image, "Image") if image_result.gt_mask is not None: - image_grid.add_image(image=image_result.gt_mask, color_map="gray", title="Ground Truth") + image_grid.add_image( + image=image_result.gt_mask, color_map="gray", title="Ground Truth" + ) image_grid.add_image(image_result.heat_map, "Predicted Heat Map") - image_grid.add_image(image=image_result.pred_mask, color_map="gray", title="Predicted Mask") - image_grid.add_image(image=image_result.segmentations, title="Segmentation Result") + image_grid.add_image( + image=image_result.pred_mask, color_map="gray", title="Predicted Mask" + ) + image_grid.add_image( + image=image_result.segmentations, title="Segmentation Result" + ) elif self.task == TaskType.CLASSIFICATION: image_grid.add_image(image_result.image, title="Image") if image_result.heat_map is not None: image_grid.add_image(image_result.heat_map, "Predicted Heat Map") if image_result.pred_label: - image_classified = add_anomalous_label(image_result.image, image_result.pred_score) + image_classified = add_anomalous_label( + image_result.image, image_result.pred_score + ) else: - image_classified = add_normal_label(image_result.image, 1 - image_result.pred_score) + image_classified = add_normal_label( + image_result.image, 1 - image_result.pred_score + ) image_grid.add_image(image=image_classified, title="Prediction") + elif self.task == TaskType.EXPLANATION: + description = "" + if image_result.text_descr: + description = image_result.text_descr + + image_classified = add_normal_label( + image_result.image, 1 - image_result.pred_score + ) + image_grid.add_image( + image_classified, title="Explanation of Image", description=description + ) return image_grid.generate() @@ -258,7 +353,11 @@ def _visualize_simple(self, image_result: ImageResult) -> np.ndarray: color=(0, 0, 255), ) if image_result.gt_boxes is not None: - image_with_boxes = draw_boxes(image=image_with_boxes, boxes=image_result.gt_boxes, color=(255, 0, 0)) + image_with_boxes = draw_boxes( + image=image_with_boxes, + boxes=image_result.gt_boxes, + color=(255, 0, 0), + ) return image_with_boxes if self.task == TaskType.SEGMENTATION: visualization = mark_boundaries( @@ -270,10 +369,36 @@ def _visualize_simple(self, image_result: ImageResult) -> np.ndarray: return (visualization * 255).astype(np.uint8) if self.task == TaskType.CLASSIFICATION: if image_result.pred_label: - image_classified = add_anomalous_label(image_result.image, image_result.pred_score) + image_classified = add_anomalous_label( + image_result.image, image_result.pred_score + ) else: - image_classified = add_normal_label(image_result.image, 1 - image_result.pred_score) + image_classified = add_normal_label( + image_result.image, 1 - image_result.pred_score + ) return image_classified + + if self.task == TaskType.EXPLANATION: + image_grid = _ImageGrid() + description = "" + if image_result.text_descr: + description = image_result.text_descr + + if image_result.pred_label: + image_classified = add_anomalous_label( + image_result.image, image_result.pred_score + ) + else: + image_classified = add_normal_label( + image_result.image, 1 - image_result.pred_score + ) + + image_grid.add_image( + image_classified, title="Explanation of Image", description=description + ) + + return image_grid.generate() + msg = f"Unknown task type: {self.task}" raise ValueError(msg) @@ -290,15 +415,27 @@ def __init__(self) -> None: self.figure: matplotlib.figure.Figure | None = None self.axis: Axes | np.ndarray | None = None - def add_image(self, image: np.ndarray, title: str | None = None, color_map: str | None = None) -> None: + def add_image( + self, + image: np.ndarray, + title: str | None = None, + color_map: str | None = None, + description: str | None = None, + ) -> None: """Add an image to the grid. Args: image (np.ndarray): Image which should be added to the figure. title (str): Image title shown on the plot. + description (str): Description of the image shown on the plot TaskType.EXPLANATION. color_map (str | None): Name of matplotlib color map used to map scalar data to colours. Defaults to None. """ - image_data = {"image": image, "title": title, "color_map": color_map} + image_data = { + "image": image, + "title": title, + "color_map": color_map, + "descr": description, + } self.images.append(image_data) def generate(self) -> np.ndarray: @@ -324,6 +461,16 @@ def generate(self) -> np.ndarray: axis.imshow(image_dict["image"], image_dict["color_map"], vmin=0, vmax=255) if image_dict["title"] is not None: axis.title.set_text(image_dict["title"]) + if image_dict["descr"] is not None: + wrapped_text = textwrap.fill( + image_dict["descr"], + width=70 // num_cols, + ) # Adjust 'width' based on your subplot size and preference + + axis.set_title(wrapped_text, fontsize=10) + + self.figure.subplots_adjust(top=0.7) + self.figure.canvas.draw() # convert canvas to numpy array to prepare for visualization with opencv img = np.frombuffer(self.figure.canvas.tostring_rgb(), dtype=np.uint8) From 5611ec1dbbd45715eb3717975849ffdddcd99c73 Mon Sep 17 00:00:00 2001 From: Bepitic Date: Mon, 15 Jul 2024 15:48:09 +0200 Subject: [PATCH 02/42] upd dataset task with explanation Signed-off-by: bepitic --- src/anomalib/data/base/dataset.py | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/src/anomalib/data/base/dataset.py b/src/anomalib/data/base/dataset.py index 7cfba278ac..2f00838ba7 100644 --- a/src/anomalib/data/base/dataset.py +++ b/src/anomalib/data/base/dataset.py @@ -17,7 +17,8 @@ from torchvision.tv_tensors import Mask from anomalib import TaskType -from anomalib.data.utils import LabelName, masks_to_boxes, read_image, read_mask +from anomalib.data.utils import (LabelName, masks_to_boxes, read_image, + read_mask) _EXPECTED_COLUMNS_CLASSIFICATION = ["image_path", "split"] _EXPECTED_COLUMNS_SEGMENTATION = [*_EXPECTED_COLUMNS_CLASSIFICATION, "mask_path"] @@ -61,7 +62,9 @@ class AnomalibDataset(Dataset, ABC): Defaults to ``None``. """ - def __init__(self, task: TaskType | str, transform: Transform | None = None) -> None: + def __init__( + self, task: TaskType | str, transform: Transform | None = None + ) -> None: super().__init__() self.task = TaskType(task) self.transform = transform @@ -83,7 +86,9 @@ def __len__(self) -> int: """Get length of the dataset.""" return len(self.samples) - def subsample(self, indices: Sequence[int], inplace: bool = False) -> "AnomalibDataset": + def subsample( + self, indices: Sequence[int], inplace: bool = False + ) -> "AnomalibDataset": """Subsamples the dataset at the provided indices. Args: @@ -169,7 +174,7 @@ def __getitem__(self, index: int) -> dict[str, str | torch.Tensor]: image = read_image(image_path, as_tensor=True) item = {"image_path": image_path, "label": label_index} - if self.task == TaskType.CLASSIFICATION: + if self.task in (TaskType.CLASSIFICATION, TaskType.EXPLANATION): item["image"] = self.transform(image) if self.transform else image elif self.task in (TaskType.DETECTION, TaskType.SEGMENTATION): # Only Anomalous (1) images have masks in anomaly datasets @@ -179,7 +184,9 @@ def __getitem__(self, index: int) -> dict[str, str | torch.Tensor]: if label_index == LabelName.NORMAL else read_mask(mask_path, as_tensor=True) ) - item["image"], item["mask"] = self.transform(image, mask) if self.transform else (image, mask) + item["image"], item["mask"] = ( + self.transform(image, mask) if self.transform else (image, mask) + ) if self.task == TaskType.DETECTION: # create boxes from masks for detection task @@ -204,5 +211,7 @@ def __add__(self, other_dataset: "AnomalibDataset") -> "AnomalibDataset": msg = "Cannot concatenate datasets that are not of the same type." raise TypeError(msg) dataset = copy.deepcopy(self) - dataset.samples = pd.concat([self.samples, other_dataset.samples], ignore_index=True) + dataset.samples = pd.concat( + [self.samples, other_dataset.samples], ignore_index=True + ) return dataset From 8ed23a35c0624875683d8cbb782b38afd4515b56 Mon Sep 17 00:00:00 2001 From: Bepitic Date: Mon, 15 Jul 2024 16:31:07 +0200 Subject: [PATCH 03/42] fix tasktype on metrics, depth, cataset, inferencer. Signed-off-by: bepitic --- src/anomalib/callbacks/metrics.py | 34 ++++- src/anomalib/data/base/dataset.py | 20 ++- src/anomalib/data/base/depth.py | 8 +- .../deploy/inferencers/openvino_inferencer.py | 27 +++- src/anomalib/utils/visualization/image.py | 141 ++++++++---------- 5 files changed, 128 insertions(+), 102 deletions(-) diff --git a/src/anomalib/callbacks/metrics.py b/src/anomalib/callbacks/metrics.py index 6a7b173272..72a491e881 100644 --- a/src/anomalib/callbacks/metrics.py +++ b/src/anomalib/callbacks/metrics.py @@ -76,7 +76,7 @@ def setup( pixel_metric_names: list[str] | dict[str, dict[str, Any]] if self.pixel_metric_names is None: pixel_metric_names = [] - elif self.task == TaskType.CLASSIFICATION: + elif self.task in (TaskType.CLASSIFICATION, TaskType.EXPLANATION): pixel_metric_names = [] logger.warning( "Cannot perform pixel-level evaluation when task type is classification. " @@ -89,14 +89,23 @@ def setup( ) if isinstance(pl_module, AnomalyModule): - pl_module.image_metrics = create_metric_collection(image_metric_names, "image_") - if hasattr(pl_module, "pixel_metrics"): # incase metrics are loaded from model checkpoint + pl_module.image_metrics = create_metric_collection( + image_metric_names, + "image_", + ) + if hasattr( + pl_module, + "pixel_metrics", + ): # incase metrics are loaded from model checkpoint new_metrics = create_metric_collection(pixel_metric_names) for name in new_metrics: if name not in pl_module.pixel_metrics: pl_module.pixel_metrics.add_metrics(new_metrics[name]) else: - pl_module.pixel_metrics = create_metric_collection(pixel_metric_names, "pixel_") + pl_module.pixel_metrics = create_metric_collection( + pixel_metric_names, + "pixel_", + ) self._set_threshold(pl_module) def on_validation_epoch_start( @@ -122,7 +131,11 @@ def on_validation_batch_end( if outputs is not None: self._outputs_to_device(outputs) - self._update_metrics(pl_module.image_metrics, pl_module.pixel_metrics, outputs) + self._update_metrics( + pl_module.image_metrics, + pl_module.pixel_metrics, + outputs, + ) def on_validation_epoch_end( self, @@ -157,7 +170,11 @@ def on_test_batch_end( if outputs is not None: self._outputs_to_device(outputs) - self._update_metrics(pl_module.image_metrics, pl_module.pixel_metrics, outputs) + self._update_metrics( + pl_module.image_metrics, + pl_module.pixel_metrics, + outputs, + ) def on_test_epoch_end( self, @@ -182,7 +199,10 @@ def _update_metrics( image_metric.update(output["pred_scores"], output["label"].int()) if "mask" in output and "anomaly_maps" in output: pixel_metric.to(self.device) - pixel_metric.update(torch.squeeze(output["anomaly_maps"]), torch.squeeze(output["mask"].int())) + pixel_metric.update( + torch.squeeze(output["anomaly_maps"]), + torch.squeeze(output["mask"].int()), + ) def _outputs_to_device(self, output: STEP_OUTPUT) -> STEP_OUTPUT | dict[str, Any]: if isinstance(output, dict): diff --git a/src/anomalib/data/base/dataset.py b/src/anomalib/data/base/dataset.py index 2f00838ba7..3a80d89f9e 100644 --- a/src/anomalib/data/base/dataset.py +++ b/src/anomalib/data/base/dataset.py @@ -17,13 +17,14 @@ from torchvision.tv_tensors import Mask from anomalib import TaskType -from anomalib.data.utils import (LabelName, masks_to_boxes, read_image, - read_mask) +from anomalib.data.utils import LabelName, masks_to_boxes, read_image, read_mask _EXPECTED_COLUMNS_CLASSIFICATION = ["image_path", "split"] +_EXPECTED_COLUMNS_EXPLANATION = ["image_path", "split"] _EXPECTED_COLUMNS_SEGMENTATION = [*_EXPECTED_COLUMNS_CLASSIFICATION, "mask_path"] _EXPECTED_COLUMNS_PERTASK = { "classification": _EXPECTED_COLUMNS_CLASSIFICATION, + "explanation": _EXPECTED_COLUMNS_EXPLANATION, "segmentation": _EXPECTED_COLUMNS_SEGMENTATION, "detection": _EXPECTED_COLUMNS_SEGMENTATION, } @@ -63,7 +64,9 @@ class AnomalibDataset(Dataset, ABC): """ def __init__( - self, task: TaskType | str, transform: Transform | None = None + self, + task: TaskType | str, + transform: Transform | None = None, ) -> None: super().__init__() self.task = TaskType(task) @@ -87,7 +90,9 @@ def __len__(self) -> int: return len(self.samples) def subsample( - self, indices: Sequence[int], inplace: bool = False + self, + indices: Sequence[int], + inplace: bool = False, ) -> "AnomalibDataset": """Subsamples the dataset at the provided indices. @@ -184,9 +189,7 @@ def __getitem__(self, index: int) -> dict[str, str | torch.Tensor]: if label_index == LabelName.NORMAL else read_mask(mask_path, as_tensor=True) ) - item["image"], item["mask"] = ( - self.transform(image, mask) if self.transform else (image, mask) - ) + item["image"], item["mask"] = self.transform(image, mask) if self.transform else (image, mask) if self.task == TaskType.DETECTION: # create boxes from masks for detection task @@ -212,6 +215,7 @@ def __add__(self, other_dataset: "AnomalibDataset") -> "AnomalibDataset": raise TypeError(msg) dataset = copy.deepcopy(self) dataset.samples = pd.concat( - [self.samples, other_dataset.samples], ignore_index=True + [self.samples, other_dataset.samples], + ignore_index=True, ) return dataset diff --git a/src/anomalib/data/base/depth.py b/src/anomalib/data/base/depth.py index dbd5377cb6..c824b9bee0 100644 --- a/src/anomalib/data/base/depth.py +++ b/src/anomalib/data/base/depth.py @@ -46,9 +46,13 @@ def __getitem__(self, index: int) -> dict[str, str | torch.Tensor]: image = to_tensor(Image.open(image_path)) depth_image = to_tensor(read_depth_image(depth_path)) - item = {"image_path": image_path, "depth_path": depth_path, "label": label_index} + item = { + "image_path": image_path, + "depth_path": depth_path, + "label": label_index, + } - if self.task == TaskType.CLASSIFICATION: + if self.task in (TaskType.CLASSIFICATION, TaskType.EXPLANATION): item["image"], item["depth_image"] = ( self.transform(image, depth_image) if self.transform else (image, depth_image) ) diff --git a/src/anomalib/deploy/inferencers/openvino_inferencer.py b/src/anomalib/deploy/inferencers/openvino_inferencer.py index 91970a0adf..f6677bc1f5 100644 --- a/src/anomalib/deploy/inferencers/openvino_inferencer.py +++ b/src/anomalib/deploy/inferencers/openvino_inferencer.py @@ -28,7 +28,9 @@ if TYPE_CHECKING: from openvino import CompiledModel else: - logger.warning("OpenVINO is not installed. Please install OpenVINO to use OpenVINOInferencer.") + logger.warning( + "OpenVINO is not installed. Please install OpenVINO to use OpenVINOInferencer.", + ) class OpenVINOInferencer(Inferencer): @@ -111,7 +113,10 @@ def __init__( self.task = TaskType(task) if task else TaskType(self.metadata["task"]) - def load_model(self, path: str | Path | tuple[bytes, bytes]) -> tuple[Any, Any, "CompiledModel"]: + def load_model( + self, + path: str | Path | tuple[bytes, bytes], + ) -> tuple[Any, Any, "CompiledModel"]: """Load the OpenVINO model. Args: @@ -144,7 +149,11 @@ def load_model(self, path: str | Path | tuple[bytes, bytes]) -> tuple[Any, Any, cache_folder.mkdir(exist_ok=True) core.set_property({"CACHE_DIR": cache_folder}) - compile_model = core.compile_model(model=model, device_name=self.device, config=self.config) + compile_model = core.compile_model( + model=model, + device_name=self.device, + config=self.config, + ) input_blob = compile_model.input(0) output_blob = compile_model.output(0) @@ -239,7 +248,11 @@ def forward(self, image: np.ndarray) -> np.ndarray: """ return self.model(image) - def post_process(self, predictions: np.ndarray, metadata: dict | DictConfig | None = None) -> dict[str, Any]: + def post_process( + self, + predictions: np.ndarray, + metadata: dict | DictConfig | None = None, + ) -> dict[str, Any]: """Post process the output predictions. Args: @@ -278,11 +291,13 @@ def post_process(self, predictions: np.ndarray, metadata: dict | DictConfig | No pred_idx = pred_score >= metadata["image_threshold"] pred_label = LabelName.ABNORMAL if pred_idx else LabelName.NORMAL - if task == TaskType.CLASSIFICATION: + if task in (TaskType.CLASSIFICATION, TaskType.EXPLANATION): _, pred_score = self._normalize(pred_scores=pred_score, metadata=metadata) elif task in (TaskType.SEGMENTATION, TaskType.DETECTION): if "pixel_threshold" in metadata: - pred_mask = (anomaly_map >= metadata["pixel_threshold"]).astype(np.uint8) + pred_mask = (anomaly_map >= metadata["pixel_threshold"]).astype( + np.uint8, + ) anomaly_map, pred_score = self._normalize( pred_scores=pred_score, diff --git a/src/anomalib/utils/visualization/image.py b/src/anomalib/utils/visualization/image.py index aeeee4e886..247c84dbd9 100644 --- a/src/anomalib/utils/visualization/image.py +++ b/src/anomalib/utils/visualization/image.py @@ -17,9 +17,7 @@ from anomalib import TaskType from anomalib.data.utils import read_image -from anomalib.utils.post_processing import (add_anomalous_label, - add_normal_label, draw_boxes, - superimpose_anomaly_map) +from anomalib.utils.post_processing import add_anomalous_label, add_normal_label, draw_boxes, superimpose_anomaly_map from .base import BaseVisualizer, GeneratorResult, VisualizationStep @@ -51,7 +49,6 @@ def __init__( box_labels: np.ndarray | None = None, normalize: bool = False, ) -> None: - self.text_descr = text_descr self.anomaly_map = anomaly_map self.box_labels = box_labels @@ -68,7 +65,9 @@ def __init__( if anomaly_map is not None: self.heat_map = superimpose_anomaly_map( - self.anomaly_map, self.image, normalize=normalize + self.anomaly_map, + self.image, + normalize=normalize, ) if self.gt_mask is not None and self.gt_mask.max() <= 1.0: @@ -78,7 +77,10 @@ def __init__( if self.pred_mask is not None and self.pred_mask.max() <= 1.0: self.pred_mask *= 255 self.segmentations = mark_boundaries( - self.image, self.pred_mask, color=(1, 0, 0), mode="thick" + self.image, + self.pred_mask, + color=(1, 0, 0), + mode="thick", ) if self.segmentations.max() <= 1.0: self.segmentations = (self.segmentations * 255).astype(np.uint8) @@ -98,28 +100,12 @@ def __repr__(self) -> str: f"anomaly_map={self.anomaly_map}, gt_mask={self.gt_mask}, " f"gt_boxes={self.gt_boxes}, pred_boxes={self.pred_boxes}, box_labels={self.box_labels}" ) - repr_str += ( - f", pred_mask={self.pred_mask}" if self.pred_mask is not None else "" - ) + repr_str += f", pred_mask={self.pred_mask}" if self.pred_mask is not None else "" repr_str += f", heat_map={self.heat_map}" if self.heat_map is not None else "" - repr_str += ( - f", segmentations={self.segmentations}" - if self.segmentations is not None - else "" - ) - repr_str += ( - f", normal_boxes={self.normal_boxes}" - if self.normal_boxes is not None - else "" - ) - repr_str += ( - f", anomalous_boxes={self.anomalous_boxes}" - if self.anomalous_boxes is not None - else "" - ) - repr_str += ( - f", text_descr={self.text_descr}" if self.text_descr is not None else "" - ) + repr_str += f", segmentations={self.segmentations}" if self.segmentations is not None else "" + repr_str += f", normal_boxes={self.normal_boxes}" if self.normal_boxes is not None else "" + repr_str += f", anomalous_boxes={self.anomalous_boxes}" if self.anomalous_boxes is not None else "" + repr_str += f", text_descr={self.text_descr}" if self.text_descr is not None else "" repr_str += ")" return repr_str @@ -170,13 +156,17 @@ def _visualize_batch(self, batch: dict) -> Iterator[GeneratorResult]: height, width = batch["image"].shape[-2:] image = (read_image(path=batch["image_path"][i]) * 255).astype(np.uint8) image = cv2.resize( - image, dsize=(width, height), interpolation=cv2.INTER_AREA + image, + dsize=(width, height), + interpolation=cv2.INTER_AREA, ) elif "video_path" in batch: height, width = batch["image"].shape[-2:] image = batch["original_image"][i].squeeze().cpu().numpy() image = cv2.resize( - image, dsize=(width, height), interpolation=cv2.INTER_AREA + image, + dsize=(width, height), + interpolation=cv2.INTER_AREA, ) else: msg = "Batch must have either 'image_path' or 'video_path' defined." @@ -192,46 +182,19 @@ def _visualize_batch(self, batch: dict) -> Iterator[GeneratorResult]: image_result = ImageResult( image=image, - pred_score=( - batch["pred_scores"][i].cpu().numpy().item() - if "pred_scores" in batch - else None - ), - pred_label=( - batch["pred_labels"][i].cpu().numpy().item() - if "pred_labels" in batch - else None - ), - anomaly_map=( - batch["anomaly_maps"][i].cpu().numpy() - if "anomaly_maps" in batch - else None - ), - pred_mask=( - batch["pred_masks"][i].squeeze().int().cpu().numpy() - if "pred_masks" in batch - else None - ), - gt_mask=( - batch["mask"][i].squeeze().int().cpu().numpy() - if "mask" in batch - else None - ), + pred_score=(batch["pred_scores"][i].cpu().numpy().item() if "pred_scores" in batch else None), + pred_label=(batch["pred_labels"][i].cpu().numpy().item() if "pred_labels" in batch else None), + anomaly_map=(batch["anomaly_maps"][i].cpu().numpy() if "anomaly_maps" in batch else None), + pred_mask=(batch["pred_masks"][i].squeeze().int().cpu().numpy() if "pred_masks" in batch else None), + gt_mask=(batch["mask"][i].squeeze().int().cpu().numpy() if "mask" in batch else None), gt_boxes=batch["boxes"][i].cpu().numpy() if "boxes" in batch else None, - pred_boxes=( - batch["pred_boxes"][i].cpu().numpy() - if "pred_boxes" in batch - else None - ), - box_labels=( - batch["box_labels"][i].cpu().numpy() - if "box_labels" in batch - else None - ), + pred_boxes=(batch["pred_boxes"][i].cpu().numpy() if "pred_boxes" in batch else None), + box_labels=(batch["box_labels"][i].cpu().numpy() if "box_labels" in batch else None), normalize=self.normalize, ) yield GeneratorResult( - image=self.visualize_image(image_result), file_name=file_name + image=self.visualize_image(image_result), + file_name=file_name, ) def visualize_image(self, image_result: ImageResult) -> np.ndarray: @@ -277,7 +240,9 @@ def _visualize_full(self, image_result: ImageResult) -> np.ndarray: color=(255, 0, 0), ) image_grid.add_image( - image=gt_image, color_map="gray", title="Ground Truth" + image=gt_image, + color_map="gray", + title="Ground Truth", ) else: image_grid.add_image(image_result.image, "Image") @@ -287,7 +252,9 @@ def _visualize_full(self, image_result: ImageResult) -> np.ndarray: color=(0, 255, 0), ) pred_image = draw_boxes( - pred_image, image_result.anomalous_boxes, color=(255, 0, 0) + pred_image, + image_result.anomalous_boxes, + color=(255, 0, 0), ) image_grid.add_image(pred_image, "Predictions") if self.task == TaskType.SEGMENTATION: @@ -298,14 +265,19 @@ def _visualize_full(self, image_result: ImageResult) -> np.ndarray: image_grid.add_image(image_result.image, "Image") if image_result.gt_mask is not None: image_grid.add_image( - image=image_result.gt_mask, color_map="gray", title="Ground Truth" + image=image_result.gt_mask, + color_map="gray", + title="Ground Truth", ) image_grid.add_image(image_result.heat_map, "Predicted Heat Map") image_grid.add_image( - image=image_result.pred_mask, color_map="gray", title="Predicted Mask" + image=image_result.pred_mask, + color_map="gray", + title="Predicted Mask", ) image_grid.add_image( - image=image_result.segmentations, title="Segmentation Result" + image=image_result.segmentations, + title="Segmentation Result", ) elif self.task == TaskType.CLASSIFICATION: image_grid.add_image(image_result.image, title="Image") @@ -313,11 +285,13 @@ def _visualize_full(self, image_result: ImageResult) -> np.ndarray: image_grid.add_image(image_result.heat_map, "Predicted Heat Map") if image_result.pred_label: image_classified = add_anomalous_label( - image_result.image, image_result.pred_score + image_result.image, + image_result.pred_score, ) else: image_classified = add_normal_label( - image_result.image, 1 - image_result.pred_score + image_result.image, + 1 - image_result.pred_score, ) image_grid.add_image(image=image_classified, title="Prediction") elif self.task == TaskType.EXPLANATION: @@ -326,10 +300,13 @@ def _visualize_full(self, image_result: ImageResult) -> np.ndarray: description = image_result.text_descr image_classified = add_normal_label( - image_result.image, 1 - image_result.pred_score + image_result.image, + 1 - image_result.pred_score, ) image_grid.add_image( - image_classified, title="Explanation of Image", description=description + image_classified, + title="Explanation of Image", + description=description, ) return image_grid.generate() @@ -370,11 +347,13 @@ def _visualize_simple(self, image_result: ImageResult) -> np.ndarray: if self.task == TaskType.CLASSIFICATION: if image_result.pred_label: image_classified = add_anomalous_label( - image_result.image, image_result.pred_score + image_result.image, + image_result.pred_score, ) else: image_classified = add_normal_label( - image_result.image, 1 - image_result.pred_score + image_result.image, + 1 - image_result.pred_score, ) return image_classified @@ -386,15 +365,19 @@ def _visualize_simple(self, image_result: ImageResult) -> np.ndarray: if image_result.pred_label: image_classified = add_anomalous_label( - image_result.image, image_result.pred_score + image_result.image, + image_result.pred_score, ) else: image_classified = add_normal_label( - image_result.image, 1 - image_result.pred_score + image_result.image, + 1 - image_result.pred_score, ) image_grid.add_image( - image_classified, title="Explanation of Image", description=description + image_classified, + title="Explanation of Image", + description=description, ) return image_grid.generate() From d5baf6ba4c550f7d414a56c5efbaf4ff126be963 Mon Sep 17 00:00:00 2001 From: Bepitic Date: Tue, 16 Jul 2024 23:42:50 +0200 Subject: [PATCH 04/42] fix lint on visualization/image --- src/anomalib/utils/visualization/image.py | 148 ++++++---------------- 1 file changed, 36 insertions(+), 112 deletions(-) diff --git a/src/anomalib/utils/visualization/image.py b/src/anomalib/utils/visualization/image.py index 247c84dbd9..b44fa1876d 100644 --- a/src/anomalib/utils/visualization/image.py +++ b/src/anomalib/utils/visualization/image.py @@ -1,5 +1,6 @@ """Image/video generator.""" + # Copyright (C) 2022-2024 Intel Corporation # SPDX-License-Identifier: Apache-2.0 @@ -17,7 +18,12 @@ from anomalib import TaskType from anomalib.data.utils import read_image -from anomalib.utils.post_processing import add_anomalous_label, add_normal_label, draw_boxes, superimpose_anomaly_map +from anomalib.utils.post_processing import ( + add_anomalous_label, + add_normal_label, + draw_boxes, + superimpose_anomaly_map, +) from .base import BaseVisualizer, GeneratorResult, VisualizationStep @@ -64,11 +70,7 @@ def __init__( self.anomalous_boxes: np.ndarray | None = None if anomaly_map is not None: - self.heat_map = superimpose_anomaly_map( - self.anomaly_map, - self.image, - normalize=normalize, - ) + self.heat_map = superimpose_anomaly_map(self.anomaly_map, self.image, normalize=normalize) if self.gt_mask is not None and self.gt_mask.max() <= 1.0: self.gt_mask *= 255 @@ -76,12 +78,7 @@ def __init__( self.pred_mask = pred_mask if self.pred_mask is not None and self.pred_mask.max() <= 1.0: self.pred_mask *= 255 - self.segmentations = mark_boundaries( - self.image, - self.pred_mask, - color=(1, 0, 0), - mode="thick", - ) + self.segmentations = mark_boundaries(self.image, self.pred_mask, color=(1, 0, 0), mode="thick") if self.segmentations.max() <= 1.0: self.segmentations = (self.segmentations * 255).astype(np.uint8) @@ -155,19 +152,11 @@ def _visualize_batch(self, batch: dict) -> Iterator[GeneratorResult]: if "image_path" in batch: height, width = batch["image"].shape[-2:] image = (read_image(path=batch["image_path"][i]) * 255).astype(np.uint8) - image = cv2.resize( - image, - dsize=(width, height), - interpolation=cv2.INTER_AREA, - ) + image = cv2.resize(image, dsize=(width, height), interpolation=cv2.INTER_AREA) elif "video_path" in batch: height, width = batch["image"].shape[-2:] image = batch["original_image"][i].squeeze().cpu().numpy() - image = cv2.resize( - image, - dsize=(width, height), - interpolation=cv2.INTER_AREA, - ) + image = cv2.resize(image, dsize=(width, height), interpolation=cv2.INTER_AREA) else: msg = "Batch must have either 'image_path' or 'video_path' defined." raise KeyError(msg) @@ -182,20 +171,17 @@ def _visualize_batch(self, batch: dict) -> Iterator[GeneratorResult]: image_result = ImageResult( image=image, - pred_score=(batch["pred_scores"][i].cpu().numpy().item() if "pred_scores" in batch else None), - pred_label=(batch["pred_labels"][i].cpu().numpy().item() if "pred_labels" in batch else None), - anomaly_map=(batch["anomaly_maps"][i].cpu().numpy() if "anomaly_maps" in batch else None), - pred_mask=(batch["pred_masks"][i].squeeze().int().cpu().numpy() if "pred_masks" in batch else None), - gt_mask=(batch["mask"][i].squeeze().int().cpu().numpy() if "mask" in batch else None), + pred_score=batch["pred_scores"][i].cpu().numpy().item() if "pred_scores" in batch else None, + pred_label=batch["pred_labels"][i].cpu().numpy().item() if "pred_labels" in batch else None, + anomaly_map=batch["anomaly_maps"][i].cpu().numpy() if "anomaly_maps" in batch else None, + pred_mask=batch["pred_masks"][i].squeeze().int().cpu().numpy() if "pred_masks" in batch else None, + gt_mask=batch["mask"][i].squeeze().int().cpu().numpy() if "mask" in batch else None, gt_boxes=batch["boxes"][i].cpu().numpy() if "boxes" in batch else None, - pred_boxes=(batch["pred_boxes"][i].cpu().numpy() if "pred_boxes" in batch else None), - box_labels=(batch["box_labels"][i].cpu().numpy() if "box_labels" in batch else None), + pred_boxes=batch["pred_boxes"][i].cpu().numpy() if "pred_boxes" in batch else None, + box_labels=batch["box_labels"][i].cpu().numpy() if "box_labels" in batch else None, normalize=self.normalize, ) - yield GeneratorResult( - image=self.visualize_image(image_result), - file_name=file_name, - ) + yield GeneratorResult(image=self.visualize_image(image_result), file_name=file_name) def visualize_image(self, image_result: ImageResult) -> np.ndarray: """Generate the visualization for an image. @@ -234,28 +220,12 @@ def _visualize_full(self, image_result: ImageResult) -> np.ndarray: image_grid.add_image(image_result.image, "Image") if image_result.gt_boxes is not None: - gt_image = draw_boxes( - np.copy(image_result.image), - image_result.gt_boxes, - color=(255, 0, 0), - ) - image_grid.add_image( - image=gt_image, - color_map="gray", - title="Ground Truth", - ) + gt_image = draw_boxes(np.copy(image_result.image), image_result.gt_boxes, color=(255, 0, 0)) + image_grid.add_image(image=gt_image, color_map="gray", title="Ground Truth") else: image_grid.add_image(image_result.image, "Image") - pred_image = draw_boxes( - np.copy(image_result.image), - image_result.normal_boxes, - color=(0, 255, 0), - ) - pred_image = draw_boxes( - pred_image, - image_result.anomalous_boxes, - color=(255, 0, 0), - ) + pred_image = draw_boxes(np.copy(image_result.image), image_result.normal_boxes, color=(0, 255, 0)) + pred_image = draw_boxes(pred_image, image_result.anomalous_boxes, color=(255, 0, 0)) image_grid.add_image(pred_image, "Predictions") if self.task == TaskType.SEGMENTATION: if image_result.pred_mask is None: @@ -264,17 +234,9 @@ def _visualize_full(self, image_result: ImageResult) -> np.ndarray: image_grid.add_image(image_result.image, "Image") if image_result.gt_mask is not None: - image_grid.add_image( - image=image_result.gt_mask, - color_map="gray", - title="Ground Truth", - ) + image_grid.add_image(image=image_result.gt_mask, color_map="gray", title="Ground Truth") image_grid.add_image(image_result.heat_map, "Predicted Heat Map") - image_grid.add_image( - image=image_result.pred_mask, - color_map="gray", - title="Predicted Mask", - ) + image_grid.add_image(image=image_result.pred_mask, color_map="gray", title="Predicted Mask") image_grid.add_image( image=image_result.segmentations, title="Segmentation Result", @@ -284,30 +246,17 @@ def _visualize_full(self, image_result: ImageResult) -> np.ndarray: if image_result.heat_map is not None: image_grid.add_image(image_result.heat_map, "Predicted Heat Map") if image_result.pred_label: - image_classified = add_anomalous_label( - image_result.image, - image_result.pred_score, - ) + image_classified = add_anomalous_label(image_result.image, image_result.pred_score) else: - image_classified = add_normal_label( - image_result.image, - 1 - image_result.pred_score, - ) + image_classified = add_normal_label(image_result.image, 1 - image_result.pred_score) image_grid.add_image(image=image_classified, title="Prediction") elif self.task == TaskType.EXPLANATION: description = "" if image_result.text_descr: description = image_result.text_descr - image_classified = add_normal_label( - image_result.image, - 1 - image_result.pred_score, - ) - image_grid.add_image( - image_classified, - title="Explanation of Image", - description=description, - ) + image_classified = add_normal_label(image_result.image, 1 - image_result.pred_score) + image_grid.add_image(image_classified, title="Explanation of Image", description=description) return image_grid.generate() @@ -330,11 +279,7 @@ def _visualize_simple(self, image_result: ImageResult) -> np.ndarray: color=(0, 0, 255), ) if image_result.gt_boxes is not None: - image_with_boxes = draw_boxes( - image=image_with_boxes, - boxes=image_result.gt_boxes, - color=(255, 0, 0), - ) + image_with_boxes = draw_boxes(image=image_with_boxes, boxes=image_result.gt_boxes, color=(255, 0, 0)) return image_with_boxes if self.task == TaskType.SEGMENTATION: visualization = mark_boundaries( @@ -346,15 +291,9 @@ def _visualize_simple(self, image_result: ImageResult) -> np.ndarray: return (visualization * 255).astype(np.uint8) if self.task == TaskType.CLASSIFICATION: if image_result.pred_label: - image_classified = add_anomalous_label( - image_result.image, - image_result.pred_score, - ) + image_classified = add_anomalous_label(image_result.image, image_result.pred_score) else: - image_classified = add_normal_label( - image_result.image, - 1 - image_result.pred_score, - ) + image_classified = add_normal_label(image_result.image, 1 - image_result.pred_score) return image_classified if self.task == TaskType.EXPLANATION: @@ -364,21 +303,11 @@ def _visualize_simple(self, image_result: ImageResult) -> np.ndarray: description = image_result.text_descr if image_result.pred_label: - image_classified = add_anomalous_label( - image_result.image, - image_result.pred_score, - ) + image_classified = add_anomalous_label(image_result.image, image_result.pred_score) else: - image_classified = add_normal_label( - image_result.image, - 1 - image_result.pred_score, - ) + image_classified = add_normal_label(image_result.image, 1 - image_result.pred_score) - image_grid.add_image( - image_classified, - title="Explanation of Image", - description=description, - ) + image_grid.add_image(image_classified, title="Explanation of Image", description=description) return image_grid.generate() @@ -413,12 +342,7 @@ def add_image( description (str): Description of the image shown on the plot TaskType.EXPLANATION. color_map (str | None): Name of matplotlib color map used to map scalar data to colours. Defaults to None. """ - image_data = { - "image": image, - "title": title, - "color_map": color_map, - "descr": description, - } + image_data = {"image": image, "title": title, "color_map": color_map, "descr": description} self.images.append(image_data) def generate(self) -> np.ndarray: From bfd936e7fc6abd7776f63ed537674f62f656a5c2 Mon Sep 17 00:00:00 2001 From: Bepitic Date: Thu, 18 Jul 2024 15:46:21 +0200 Subject: [PATCH 05/42] Fix formatting dataset --- src/anomalib/data/base/dataset.py | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/src/anomalib/data/base/dataset.py b/src/anomalib/data/base/dataset.py index 3a80d89f9e..f8ca9441f1 100644 --- a/src/anomalib/data/base/dataset.py +++ b/src/anomalib/data/base/dataset.py @@ -89,11 +89,7 @@ def __len__(self) -> int: """Get length of the dataset.""" return len(self.samples) - def subsample( - self, - indices: Sequence[int], - inplace: bool = False, - ) -> "AnomalibDataset": + def subsample(self, indices: Sequence[int], inplace: bool = False) -> "AnomalibDataset": """Subsamples the dataset at the provided indices. Args: @@ -214,8 +210,5 @@ def __add__(self, other_dataset: "AnomalibDataset") -> "AnomalibDataset": msg = "Cannot concatenate datasets that are not of the same type." raise TypeError(msg) dataset = copy.deepcopy(self) - dataset.samples = pd.concat( - [self.samples, other_dataset.samples], - ignore_index=True, - ) + dataset.samples = pd.concat([self.samples, other_dataset.samples], ignore_index=True) return dataset From f541316c208d79fdd7d7331455e4ead1ff2af640 Mon Sep 17 00:00:00 2001 From: Bepitic Date: Thu, 18 Jul 2024 16:12:28 +0200 Subject: [PATCH 06/42] fix format data/base/depth Signed-off-by: Bepitic --- src/anomalib/data/base/depth.py | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/src/anomalib/data/base/depth.py b/src/anomalib/data/base/depth.py index c824b9bee0..2f635655cc 100644 --- a/src/anomalib/data/base/depth.py +++ b/src/anomalib/data/base/depth.py @@ -46,11 +46,7 @@ def __getitem__(self, index: int) -> dict[str, str | torch.Tensor]: image = to_tensor(Image.open(image_path)) depth_image = to_tensor(read_depth_image(depth_path)) - item = { - "image_path": image_path, - "depth_path": depth_path, - "label": label_index, - } + item = {"image_path": image_path, "depth_path": depth_path, "label": label_index} if self.task in (TaskType.CLASSIFICATION, TaskType.EXPLANATION): item["image"], item["depth_image"] = ( From 4e392a9eeb4890c88af7e683f5b81db78cf15cad Mon Sep 17 00:00:00 2001 From: Bepitic Date: Thu, 18 Jul 2024 16:19:26 +0200 Subject: [PATCH 07/42] Fix formatting openvino_inferencer Signed-off-by: Bepitic --- .../deploy/inferencers/openvino_inferencer.py | 25 ++++--------------- 1 file changed, 5 insertions(+), 20 deletions(-) diff --git a/src/anomalib/deploy/inferencers/openvino_inferencer.py b/src/anomalib/deploy/inferencers/openvino_inferencer.py index b41829465c..03ba8dad1d 100644 --- a/src/anomalib/deploy/inferencers/openvino_inferencer.py +++ b/src/anomalib/deploy/inferencers/openvino_inferencer.py @@ -27,9 +27,7 @@ if TYPE_CHECKING: from openvino import CompiledModel else: - logger.warning( - "OpenVINO is not installed. Please install OpenVINO to use OpenVINOInferencer.", - ) + logger.warning("OpenVINO is not installed. Please install OpenVINO to use OpenVINOInferencer.") class OpenVINOInferencer(Inferencer): @@ -112,10 +110,7 @@ def __init__( self.task = TaskType(task) if task else TaskType(self.metadata["task"]) - def load_model( - self, - path: str | Path | tuple[bytes, bytes], - ) -> tuple[Any, Any, "CompiledModel"]: + def load_model(self, path: str | Path | tuple[bytes, bytes]) -> tuple[Any, Any, "CompiledModel"]: """Load the OpenVINO model. Args: @@ -148,11 +143,7 @@ def load_model( cache_folder.mkdir(exist_ok=True) core.set_property({"CACHE_DIR": cache_folder}) - compile_model = core.compile_model( - model=model, - device_name=self.device, - config=self.config, - ) + compile_model = core.compile_model(model=model, device_name=self.device, config=self.config) input_blob = compile_model.input(0) output_blob = compile_model.output(0) @@ -247,11 +238,7 @@ def forward(self, image: np.ndarray) -> np.ndarray: """ return self.model(image) - def post_process( - self, - predictions: np.ndarray, - metadata: dict | DictConfig | None = None, - ) -> dict[str, Any]: + def post_process(self, predictions: np.ndarray, metadata: dict | DictConfig | None = None) -> dict[str, Any]: """Post process the output predictions. Args: @@ -294,9 +281,7 @@ def post_process( _, pred_score = self._normalize(pred_scores=pred_score, metadata=metadata) elif task in (TaskType.SEGMENTATION, TaskType.DETECTION): if "pixel_threshold" in metadata: - pred_mask = (anomaly_map >= metadata["pixel_threshold"]).astype( - np.uint8, - ) + pred_mask = (anomaly_map >= metadata["pixel_threshold"]).astype(np.uint8) anomaly_map, pred_score = self._normalize( pred_scores=pred_score, From 5fc70ba51d4504da329189a59923a28eea396740 Mon Sep 17 00:00:00 2001 From: Bepitic Date: Thu, 18 Jul 2024 17:54:38 +0200 Subject: [PATCH 08/42] fix formatting Signed-off-by: Bepitic --- src/anomalib/callbacks/metrics.py | 32 +++++------------------ src/anomalib/data/base/dataset.py | 6 +---- src/anomalib/utils/visualization/image.py | 13 ++------- 3 files changed, 9 insertions(+), 42 deletions(-) diff --git a/src/anomalib/callbacks/metrics.py b/src/anomalib/callbacks/metrics.py index e4f8e222c8..2ea538a084 100644 --- a/src/anomalib/callbacks/metrics.py +++ b/src/anomalib/callbacks/metrics.py @@ -88,23 +88,14 @@ def setup( ) if isinstance(pl_module, AnomalyModule): - pl_module.image_metrics = create_metric_collection( - image_metric_names, - "image_", - ) - if hasattr( - pl_module, - "pixel_metrics", - ): # incase metrics are loaded from model checkpoint + pl_module.image_metrics = create_metric_collection(image_metric_names, "image_") + if hasattr(pl_module, "pixel_metrics"): # incase metrics are loaded from model checkpoint new_metrics = create_metric_collection(pixel_metric_names) for name in new_metrics: if name not in pl_module.pixel_metrics: pl_module.pixel_metrics.add_metrics(new_metrics[name]) else: - pl_module.pixel_metrics = create_metric_collection( - pixel_metric_names, - "pixel_", - ) + pl_module.pixel_metrics = create_metric_collection(pixel_metric_names, "pixel_") self._set_threshold(pl_module) def on_validation_epoch_start( @@ -130,11 +121,7 @@ def on_validation_batch_end( if outputs is not None: self._outputs_to_device(outputs) - self._update_metrics( - pl_module.image_metrics, - pl_module.pixel_metrics, - outputs, - ) + self._update_metrics(pl_module.image_metrics, pl_module.pixel_metrics, outputs) def on_validation_epoch_end( self, @@ -169,11 +156,7 @@ def on_test_batch_end( if outputs is not None: self._outputs_to_device(outputs) - self._update_metrics( - pl_module.image_metrics, - pl_module.pixel_metrics, - outputs, - ) + self._update_metrics(pl_module.image_metrics, pl_module.pixel_metrics, outputs) def on_test_epoch_end( self, @@ -198,10 +181,7 @@ def _update_metrics( image_metric.update(output["pred_scores"], output["label"].int()) if "mask" in output and "anomaly_maps" in output: pixel_metric.to(self.device) - pixel_metric.update( - torch.squeeze(output["anomaly_maps"]), - torch.squeeze(output["mask"].int()), - ) + pixel_metric.update(torch.squeeze(output["anomaly_maps"]), torch.squeeze(output["mask"].int())) def _outputs_to_device(self, output: STEP_OUTPUT) -> STEP_OUTPUT | dict[str, Any]: if isinstance(output, dict): diff --git a/src/anomalib/data/base/dataset.py b/src/anomalib/data/base/dataset.py index f8ca9441f1..56851ee8a8 100644 --- a/src/anomalib/data/base/dataset.py +++ b/src/anomalib/data/base/dataset.py @@ -63,11 +63,7 @@ class AnomalibDataset(Dataset, ABC): Defaults to ``None``. """ - def __init__( - self, - task: TaskType | str, - transform: Transform | None = None, - ) -> None: + def __init__(self, task: TaskType | str, transform: Transform | None = None) -> None: super().__init__() self.task = TaskType(task) self.transform = transform diff --git a/src/anomalib/utils/visualization/image.py b/src/anomalib/utils/visualization/image.py index b44fa1876d..164bf9b1f0 100644 --- a/src/anomalib/utils/visualization/image.py +++ b/src/anomalib/utils/visualization/image.py @@ -18,12 +18,7 @@ from anomalib import TaskType from anomalib.data.utils import read_image -from anomalib.utils.post_processing import ( - add_anomalous_label, - add_normal_label, - draw_boxes, - superimpose_anomaly_map, -) +from anomalib.utils.post_processing import add_anomalous_label, add_normal_label, draw_boxes, superimpose_anomaly_map from .base import BaseVisualizer, GeneratorResult, VisualizationStep @@ -103,7 +98,6 @@ def __repr__(self) -> str: repr_str += f", normal_boxes={self.normal_boxes}" if self.normal_boxes is not None else "" repr_str += f", anomalous_boxes={self.anomalous_boxes}" if self.anomalous_boxes is not None else "" repr_str += f", text_descr={self.text_descr}" if self.text_descr is not None else "" - repr_str += ")" return repr_str @@ -237,10 +231,7 @@ def _visualize_full(self, image_result: ImageResult) -> np.ndarray: image_grid.add_image(image=image_result.gt_mask, color_map="gray", title="Ground Truth") image_grid.add_image(image_result.heat_map, "Predicted Heat Map") image_grid.add_image(image=image_result.pred_mask, color_map="gray", title="Predicted Mask") - image_grid.add_image( - image=image_result.segmentations, - title="Segmentation Result", - ) + image_grid.add_image(image=image_result.segmentations, title="Segmentation Result") elif self.task == TaskType.CLASSIFICATION: image_grid.add_image(image_result.image, title="Image") if image_result.heat_map is not None: From 75099af5b1be24392c0c7d010bb0d27b996d0e20 Mon Sep 17 00:00:00 2001 From: Bepitic Date: Fri, 2 Aug 2024 06:59:53 +0200 Subject: [PATCH 09/42] Add Explanation to error-msg. Signed-off-by: bepitic --- src/anomalib/callbacks/metrics.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/anomalib/callbacks/metrics.py b/src/anomalib/callbacks/metrics.py index 2ea538a084..41ee6486ab 100644 --- a/src/anomalib/callbacks/metrics.py +++ b/src/anomalib/callbacks/metrics.py @@ -78,7 +78,7 @@ def setup( elif self.task in (TaskType.CLASSIFICATION, TaskType.EXPLANATION): pixel_metric_names = [] logger.warning( - "Cannot perform pixel-level evaluation when task type is classification. " + "Cannot perform pixel-level evaluation when task type is classification or explanation. " "Ignoring the following pixel-level metrics: %s", self.pixel_metric_names, ) From e5040d32c6ad9d71740a20746d20f912eae3dcad Mon Sep 17 00:00:00 2001 From: Bepitic Date: Sat, 3 Aug 2024 07:32:29 +0200 Subject: [PATCH 10/42] OpenAI - VLM init Signed-off-by: Bepitic --- src/anomalib/models/image/__init__.py | 2 + .../models/image/openai_vlm/__init__.py | 8 + .../image/openai_vlm/lightning_model.py | 263 ++++++++++++++++++ 3 files changed, 273 insertions(+) create mode 100644 src/anomalib/models/image/openai_vlm/__init__.py create mode 100644 src/anomalib/models/image/openai_vlm/lightning_model.py diff --git a/src/anomalib/models/image/__init__.py b/src/anomalib/models/image/__init__.py index f3a5435038..a795a1c8d8 100644 --- a/src/anomalib/models/image/__init__.py +++ b/src/anomalib/models/image/__init__.py @@ -14,6 +14,7 @@ from .fastflow import Fastflow from .fre import Fre from .ganomaly import Ganomaly +from .openai_vlm import OpenaiVlm from .padim import Padim from .patchcore import Patchcore from .reverse_distillation import ReverseDistillation @@ -34,6 +35,7 @@ "Fastflow", "Fre", "Ganomaly", + "OpenaiVlm", "Padim", "Patchcore", "ReverseDistillation", diff --git a/src/anomalib/models/image/openai_vlm/__init__.py b/src/anomalib/models/image/openai_vlm/__init__.py new file mode 100644 index 0000000000..237441b465 --- /dev/null +++ b/src/anomalib/models/image/openai_vlm/__init__.py @@ -0,0 +1,8 @@ +"""Llm model.""" + +# Copyright (C) 2023-2024 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + +from .lightning_model import OpenaiVlm + +__all__ = ["OpenaiVlm"] diff --git a/src/anomalib/models/image/openai_vlm/lightning_model.py b/src/anomalib/models/image/openai_vlm/lightning_model.py new file mode 100644 index 0000000000..484d126447 --- /dev/null +++ b/src/anomalib/models/image/openai_vlm/lightning_model.py @@ -0,0 +1,263 @@ +"""OpenAI Visual Large Model: Zero-/Few-Shot Anomaly Classification. + +Paper (No paper) +""" +# Copyright (C) 2024 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + +import base64 +import logging + +import openai +import Path +import torch +from lightning.pytorch.utilities.types import STEP_OUTPUT +from torch.utils.data import DataLoader + +from anomalib import LearningType +from anomalib.metrics.threshold import ManualThreshold +from anomalib.models.components import AnomalyModule + +logger = logging.getLogger(__name__) + +__all__ = ["OpenaiVlm"] + + +class OpenaiVlm(AnomalyModule): + """OpenaiVlm Lightning model using OpenAI's GPT-4 for image anomaly detection. + + Args: + key (str): API key for OpenAI. + https://platform.openai.com/docs/quickstart/step-2-set-up-your-api-key + k_shot(int): The number of images that will compare to detect if it is an anomaly. + """ + + def __init__( + self, + k_shot: int = 0, + openai_key: None | str = "", + ) -> None: + super().__init__() + + self.k_shot = k_shot + + # OpenAI API Key + if not openai_key: + from anomalib.engine.engine import UnassignedError + + msg = "OpenAI key not found." + raise UnassignedError(msg) + + self.openai_key = openai_key + self.openai = openai.client() + self.openai.api_key = self.openai_key + self.image_threshold = ManualThreshold() + + def _setup(self) -> None: + dataloader = self.trainer.datamodule.train_dataloader() + pre_images = self.collect_reference_images(dataloader) + self.pre_images = pre_images + + def api_call_few_shot(self, key: str, pre_img: str, prompt: str, image: str) -> str: + """Makes an API call to OpenAI's GPT-4 model to detect anomalies in an image. + + Args: + key (str): API key for OpenAI. + pre_img (list): List of paths to images that serve as examples of typical images without anomalies. + prompt (str): The prompt to provide to the GPT-4 model (not used in the current implementation). + image (str): Path to the image that needs to be checked for anomalies. + + Returns: + str: The response from the GPT-4 model indicating whether the image has anomalies or not. + It returns 'NO' if there are no anomalies and 'YES: description' if there are anomalies, + where 'description' provides details of the anomaly and its position. + + Raises: + openai.error.OpenAIError: If there is an error during the API call. + """ + + # Function to encode the image + def encode_image(image_path: str) -> str: + with Path.open(image_path, "rb") as image_file: + return base64.b64encode(image_file.read()).decode("utf-8") + + # Getting the base64 string + base64_image = encode_image(image) + base64_image_pre = [encode_image(img) for img in pre_img] + messages = [ + { + "role": "system", + "content": "You will receive an image that is going to be an example of the typical image without any anomaly, \nand the last image that you need to decide if it has an anomaly or not.\nAnswer with a 'NO' if it does not have any anomalies and 'YES: description' where description is a description of the anomaly provided, position.", + }, + {"role": "user", "content": f"data:image/png;base64,{base64_image_pre[0]}"}, + {"role": "user", "content": f"data:image/png;base64,{base64_image}"}, + ] + + try: + # Make the API call using the openai library + response = self.openai.chat.completions.create(model="gpt-4", messages=messages, max_tokens=300) + return response.choices[-1].message["content"] + except openai.error.OpenAIError as e: + print(f"An error occurred Calling the API of OpenAI: {e}") + raise + + def api_call(self, key: str, prompt: str, image: str) -> str: + """Makes an API call to OpenAI's GPT-4 model to detect anomalies in an image. + + Args: + key (str): API key for OpenAI. + prompt (str): The prompt to provide to the GPT-4 model (not used in the current implementation). + image (str): Path to the image that needs to be checked for anomalies. + + Returns: + str: The response from the GPT-4 model indicating whether the image has anomalies or not. + It returns 'NO' if there are no anomalies and 'YES: description' if there are anomalies, + where 'description' provides details of the anomaly and its position. + + Raises: + openai.error.OpenAIError: If there is an error during the API call. + """ + prompt = """ + Examine the provided image carefully to determine if there is an obvious anomaly present. + Anomalies may include mechanical malfunctions, unexpected objects, safety hazards, structural damages, + or unusual patterns or defects in the objects. + + Instructions: + + 1. Thoroughly inspect the image for any irregularities or deviations from normal operating conditions. + + 2. Clearly state if an obvious anomaly is detected. + - If an anomaly is detected, begin with 'YES,' followed by a detailed description of the anomaly. + - If no anomaly is detected, simply state 'NO' and end the analysis. + + Example Output Structure: + + 'YES: + - Description: Conveyor belt misalignment causing potential blockages. + This may result in production delays and equipment damage. + Immediate realignment and inspection are recommended.' + + 'NO' + + Considerations: + + - Ensure accuracy in identifying anomalies to prevent overlooking critical issues. + - Provide clear and concise descriptions for any detected anomalies. + - Focus on obvious anomalies that could impact final use of the object operation or safety. + """ + + # Function to encode the image + def encode_image(image_path: str) -> str: + with Path.open(image_path, "rb") as image_file: + return base64.b64encode(image_file.read()).decode("utf-8") + + # Getting the base64 string + base64_image = encode_image(image) + + messages = [ + { + "role": "system", + "content": f"{prompt}", + }, + {"role": "user", "content": f"data:image/png;base64,{base64_image}"}, + ] + + try: + # Make the API call using the openai library + response = self.openai.chat.completions.create(model="gpt-4o", messages=messages, max_tokens=300) + return response.choices[-1].message["content"] + except openai.error.OpenAIError as e: + print(f"An error occurred Calling the API of OpenAI: {e}") + raise + + def training_step(self, batch: dict[str, str | torch.Tensor], *args, **kwargs) -> dict[str, str | torch.Tensor]: + """Train Step of LLM.""" + del args, kwargs # These variables are not used. + # no train on llm + return batch + + @staticmethod + def configure_optimizers() -> None: + """WinCLIP doesn't require optimization, therefore returns no optimizers.""" + return + + def validation_step( + self, + batch: dict[str, str | list[str] | torch.Tensor], + *args, + **kwargs, + ) -> STEP_OUTPUT: + """Get batch of anomaly maps from input image batch. + + Args: + batch (dict[str, str | list[str] | torch.Tensor]): Batch containing image filename, image, label and mask + args: Additional arguments. + kwargs: Additional keyword arguments. + + Returns: + dict[str, Any]: str_otput and pred_scores, the output of the Llm and pred_scores 1.0 if is an anomaly image. + """ + del args, kwargs # These variables are not used. + bsize = len(batch["image_path"]) + out_list: list[str] = [] + pred_list: list[float] = [] + for i in range(bsize): + try: + if self.k_shot > 0: + output = str( + self.api_call_few_shot(self.openai_key, self.pre_images, "", batch["image_path"][i]), + ).strip() + else: + output = str(self.api_call(self.openai_key, "", batch["image_path"][i])).strip() + except Exception as e: + print(f"Error:img_path:{batch['image_path']}") + logging.exception( + f"Error calling openAI API for image {batch['image_path'][i]}: {e}", + ) + output = "Error" + + prediction = 0.5 + if output.startswith("N"): + prediction = 0.0 + elif output.startswith("Y"): + prediction = 1.0 + + out_list.append(output) + pred_list.append(prediction) + logging.debug(f"Output: {output}, Prediction: {prediction}") + + batch["str_output"] = out_list + batch["pred_scores"] = torch.tensor(pred_list).to(self.device) + batch["pred_labels"] = torch.tensor(pred_list).to(self.device) + return batch + + @property + def trainer_arguments(self) -> dict[str, int | float]: + """Set model-specific trainer arguments.""" + return {} + + @property + def learning_type(self) -> LearningType: + """The learning type of the model. + + Llm is a zero-/few-shot model, depending on the user configuration. Therefore, the learning type is + set to ``LearningType.FEW_SHOT`` when ``k_shot`` is greater than zero and ``LearningType.ZERO_SHOT`` otherwise. + """ + return LearningType.ZERO_SHOT if self.k_shot == 0 else LearningType.FEW_SHOT + + def collect_reference_images(self, dataloader: DataLoader) -> torch.Tensor: + """Collect reference images for few-shot inference. + + The reference images are collected by iterating the training dataset until the required number of images are + collected. + + Returns: + ref_images (Tensor): A tensor containing the reference images. + """ + ref_images: list[str] = [] + for batch in dataloader: + images = batch["image_path"][: self.k_shot - len(ref_images)] + ref_images.extend(images) + if self.k_shot == len(ref_images): + break + return ref_images From 86ad803e00eb510c0847e7f33e7072ab1c863d6b Mon Sep 17 00:00:00 2001 From: Bepitic Date: Sun, 4 Aug 2024 10:38:52 +0200 Subject: [PATCH 11/42] Add wrapper to run OpenAI Signed-off-by: Bepitic --- src/anomalib/models/__init__.py | 2 + .../image/openai_vlm/lightning_model.py | 106 ++++++++++++++---- 2 files changed, 86 insertions(+), 22 deletions(-) diff --git a/src/anomalib/models/__init__.py b/src/anomalib/models/__init__.py index b4bb36a875..781f158087 100644 --- a/src/anomalib/models/__init__.py +++ b/src/anomalib/models/__init__.py @@ -24,6 +24,7 @@ Fastflow, Fre, Ganomaly, + OpenaiVlm, Padim, Patchcore, ReverseDistillation, @@ -51,6 +52,7 @@ class UnknownModelError(ModuleNotFoundError): "Fastflow", "Fre", "Ganomaly", + "OpenaiVlm", "Padim", "Patchcore", "ReverseDistillation", diff --git a/src/anomalib/models/image/openai_vlm/lightning_model.py b/src/anomalib/models/image/openai_vlm/lightning_model.py index 484d126447..024124467d 100644 --- a/src/anomalib/models/image/openai_vlm/lightning_model.py +++ b/src/anomalib/models/image/openai_vlm/lightning_model.py @@ -7,9 +7,9 @@ import base64 import logging +from pathlib import Path import openai -import Path import torch from lightning.pytorch.utilities.types import STEP_OUTPUT from torch.utils.data import DataLoader @@ -49,7 +49,7 @@ def __init__( raise UnassignedError(msg) self.openai_key = openai_key - self.openai = openai.client() + self.openai = openai.OpenAI(api_key=openai_key) self.openai.api_key = self.openai_key self.image_threshold = ManualThreshold() @@ -58,7 +58,7 @@ def _setup(self) -> None: pre_images = self.collect_reference_images(dataloader) self.pre_images = pre_images - def api_call_few_shot(self, key: str, pre_img: str, prompt: str, image: str) -> str: + def api_call_few_shot(self, pre_img: str, image: str) -> str: """Makes an API call to OpenAI's GPT-4 model to detect anomalies in an image. Args: @@ -78,30 +78,69 @@ def api_call_few_shot(self, key: str, pre_img: str, prompt: str, image: str) -> # Function to encode the image def encode_image(image_path: str) -> str: - with Path.open(image_path, "rb") as image_file: + path = Path(image_path) + with path.open("rb") as image_file: return base64.b64encode(image_file.read()).decode("utf-8") # Getting the base64 string base64_image = encode_image(image) base64_image_pre = [encode_image(img) for img in pre_img] + prompt = """ + You will receive an image that is going to be an example of the typical image without any anomaly, + and the last image that you need to decide if it has an anomaly or not. + Answer with a 'NO' if it does not have any anomalies and 'YES: description' + where description is a description of the anomaly provided, position. + """ messages = [ { "role": "system", - "content": "You will receive an image that is going to be an example of the typical image without any anomaly, \nand the last image that you need to decide if it has an anomaly or not.\nAnswer with a 'NO' if it does not have any anomalies and 'YES: description' where description is a description of the anomaly provided, position.", + "content": prompt, + }, + { + "role": "user", + "content": [ + { + "type": "image_url", + "image_url": {"url": f"data:image/png;base64,{base64_image_pre[0]}"}, + "detail": "high", + }, + ], + }, + { + "role": "user", + "content": [ + { + "type": "image_url", + "image_url": {"url": f"data:image/png;base64,{base64_image}"}, + "detail": "high", + }, + ], }, - {"role": "user", "content": f"data:image/png;base64,{base64_image_pre[0]}"}, - {"role": "user", "content": f"data:image/png;base64,{base64_image}"}, ] try: # Make the API call using the openai library - response = self.openai.chat.completions.create(model="gpt-4", messages=messages, max_tokens=300) - return response.choices[-1].message["content"] - except openai.error.OpenAIError as e: - print(f"An error occurred Calling the API of OpenAI: {e}") + response = self.openai.chat.completions.create( + model="gpt-4o-mini-2024-07-18", + messages=messages, + max_tokens=300, + ) + return response.choices[-1].message.content + except openai.APIConnectionError as e: + print("The server could not be reached") + print(e.__cause__) # an underlying Exception, likely raised within httpx. + raise + except openai.RateLimitError as e: + print("A 429 status code was received; we should back off a bit.") + print(e.__cause__) + raise + except openai.APIStatusError as e: + print("Another non-200-range status code was received") + print(e.status_code) + print(e.response) raise - def api_call(self, key: str, prompt: str, image: str) -> str: + def api_call(self, image: str) -> str: """Makes an API call to OpenAI's GPT-4 model to detect anomalies in an image. Args: @@ -148,7 +187,8 @@ def api_call(self, key: str, prompt: str, image: str) -> str: # Function to encode the image def encode_image(image_path: str) -> str: - with Path.open(image_path, "rb") as image_file: + path = Path(image_path) + with path.open("rb") as image_file: return base64.b64encode(image_file.read()).decode("utf-8") # Getting the base64 string @@ -159,15 +199,37 @@ def encode_image(image_path: str) -> str: "role": "system", "content": f"{prompt}", }, - {"role": "user", "content": f"data:image/png;base64,{base64_image}"}, + { + "role": "user", + "content": [ + { + "type": "image_url", + "image_url": {"url": f"data:image/jpeg;base64,{base64_image}"}, + "detail": "high", + }, + ], + }, ] try: # Make the API call using the openai library - response = self.openai.chat.completions.create(model="gpt-4o", messages=messages, max_tokens=300) - return response.choices[-1].message["content"] - except openai.error.OpenAIError as e: - print(f"An error occurred Calling the API of OpenAI: {e}") + response = self.openai.chat.completions.create( + model="gpt-4o-mini-2024-07-18", + messages=messages, + max_tokens=300, + ) + return response.choices[-1].message.content + except openai.APIConnectionError as e: + print("The server could not be reached") + print(e.__cause__) # an underlying Exception, likely raised within httpx. + raise + except openai.RateLimitError: + print("A 429 status code was received; we should back off a bit.") + raise + except openai.APIStatusError as e: + print("Another non-200-range status code was received") + print(e.status_code) + print(e.response) raise def training_step(self, batch: dict[str, str | torch.Tensor], *args, **kwargs) -> dict[str, str | torch.Tensor]: @@ -205,14 +267,14 @@ def validation_step( try: if self.k_shot > 0: output = str( - self.api_call_few_shot(self.openai_key, self.pre_images, "", batch["image_path"][i]), + self.api_call_few_shot(self.pre_images, batch["image_path"][i]), ).strip() else: - output = str(self.api_call(self.openai_key, "", batch["image_path"][i])).strip() - except Exception as e: + output = str(self.api_call(batch["image_path"][i])).strip() + except Exception: print(f"Error:img_path:{batch['image_path']}") logging.exception( - f"Error calling openAI API for image {batch['image_path'][i]}: {e}", + f"Error calling openAI API for image {batch['image_path'][i]}", ) output = "Error" From 3678f72ac33cf491a177b4f474824234d4a6c143 Mon Sep 17 00:00:00 2001 From: Bepitic Date: Sun, 4 Aug 2024 11:00:05 +0200 Subject: [PATCH 12/42] add in ppyproject openai. Signed-off-by: Bepitic --- pyproject.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/pyproject.toml b/pyproject.toml index 052aae2a3f..da2bac236b 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -50,6 +50,7 @@ core = [ "lightning>=2.2", "torch>=2", "torchmetrics>=1.3.2", + "openai>=1.38.0", # NOTE: open-clip-torch throws the following error on v2.26.1 # torch.onnx.errors.UnsupportedOperatorError: Exporting the operator # 'aten::_native_multi_head_attention' to ONNX opset version 14 is not supported From 7413842eddc158fe33c5ae78e0df6ec16bd90476 Mon Sep 17 00:00:00 2001 From: Bepitic Date: Mon, 12 Aug 2024 11:52:27 +0200 Subject: [PATCH 13/42] Add Test and fix description/title Signed-off-by: Bepitic --- src/anomalib/utils/visualization/image.py | 12 +++------ tests/unit/utils/test_visualizer.py | 33 ++++++++++++++++++++++- 2 files changed, 36 insertions(+), 9 deletions(-) diff --git a/src/anomalib/utils/visualization/image.py b/src/anomalib/utils/visualization/image.py index 164bf9b1f0..1d7e335485 100644 --- a/src/anomalib/utils/visualization/image.py +++ b/src/anomalib/utils/visualization/image.py @@ -247,7 +247,7 @@ def _visualize_full(self, image_result: ImageResult) -> np.ndarray: description = image_result.text_descr image_classified = add_normal_label(image_result.image, 1 - image_result.pred_score) - image_grid.add_image(image_classified, title="Explanation of Image", description=description) + image_grid.add_image(image_classified, title=description) return image_grid.generate() @@ -298,7 +298,7 @@ def _visualize_simple(self, image_result: ImageResult) -> np.ndarray: else: image_classified = add_normal_label(image_result.image, 1 - image_result.pred_score) - image_grid.add_image(image_classified, title="Explanation of Image", description=description) + image_grid.add_image(image_classified, title=description) return image_grid.generate() @@ -323,17 +323,15 @@ def add_image( image: np.ndarray, title: str | None = None, color_map: str | None = None, - description: str | None = None, ) -> None: """Add an image to the grid. Args: image (np.ndarray): Image which should be added to the figure. title (str): Image title shown on the plot. - description (str): Description of the image shown on the plot TaskType.EXPLANATION. color_map (str | None): Name of matplotlib color map used to map scalar data to colours. Defaults to None. """ - image_data = {"image": image, "title": title, "color_map": color_map, "descr": description} + image_data = {"image": image, "title": title, "color_map": color_map} self.images.append(image_data) def generate(self) -> np.ndarray: @@ -358,10 +356,8 @@ def generate(self) -> np.ndarray: axis.axes.yaxis.set_visible(b=False) axis.imshow(image_dict["image"], image_dict["color_map"], vmin=0, vmax=255) if image_dict["title"] is not None: - axis.title.set_text(image_dict["title"]) - if image_dict["descr"] is not None: wrapped_text = textwrap.fill( - image_dict["descr"], + image_dict["title"], width=70 // num_cols, ) # Adjust 'width' based on your subplot size and preference diff --git a/tests/unit/utils/test_visualizer.py b/tests/unit/utils/test_visualizer.py index 19a905e558..0e08829759 100644 --- a/tests/unit/utils/test_visualizer.py +++ b/tests/unit/utils/test_visualizer.py @@ -15,7 +15,7 @@ from anomalib.data import MVTec, PredictDataset from anomalib.engine import Engine from anomalib.models import get_model -from anomalib.utils.visualization.image import _ImageGrid +from anomalib.utils.visualization.image import ImageResult, ImageVisualizer, VisualizationMode, _ImageGrid def test_visualize_fully_defected_masks() -> None: @@ -35,6 +35,37 @@ def test_visualize_fully_defected_masks() -> None: assert np.all(plotted_img[0][..., 0] == 255) +def test_model_visualizer_explanation() -> None: + """Test visualizer image on TaskType.EXPLANATION.""" + anomaly_map = np.zeros((100, 100), dtype=np.float64) + anomaly_map[10:20, 10:20] = 1.0 + gt_mask = np.zeros((100, 100)) + gt_mask[15:25, 15:25] = 1.0 + rng = np.random.default_rng() + image = rng.integers(0, 255, size=(100, 100, 3), dtype=np.uint8) + + image_result = ImageResult( + image=image, + pred_score=0.9, + pred_label="abnormal", + text_descr=( + "Some very long text to see how it is formatted in the image" + " Some very long text to see how it is formatted in the image" + ), + anomaly_map=anomaly_map, + gt_mask=gt_mask, + pred_mask=anomaly_map, + ) + + image_visualizer = ImageVisualizer( + mode=VisualizationMode.FULL, + task=TaskType.EXPLANATION, + ) + result = image_visualizer.visualize_image(image_result) + + assert result.shape == (500, 500, 3) + + class TestVisualizer: """Test visualization callback for test and predict with different task types.""" From dc42cbdd30b755b30f9affe9b0d6e1091edf203f Mon Sep 17 00:00:00 2001 From: Bepitic Date: Tue, 13 Aug 2024 06:14:54 +0200 Subject: [PATCH 14/42] Add Readme and fix bug. Signed-off-by: Bepitic --- docs/source/images/openai_vlm/broken.png | Bin 0 -> 173815 bytes docs/source/images/openai_vlm/good.png | Bin 0 -> 143741 bytes .../image/openai_vlm/lightning_model.py | 12 ++- .../models/image/openai_vlm/readme.md | 85 ++++++++++++++++++ 4 files changed, 93 insertions(+), 4 deletions(-) create mode 100644 docs/source/images/openai_vlm/broken.png create mode 100644 docs/source/images/openai_vlm/good.png create mode 100644 src/anomalib/models/image/openai_vlm/readme.md diff --git a/docs/source/images/openai_vlm/broken.png b/docs/source/images/openai_vlm/broken.png new file mode 100644 index 0000000000000000000000000000000000000000..d120f7d7be50bcb07f73d76cbcf869a73ec584c9 GIT binary patch literal 173815 zcmeFadsvTo_x69aBMPAiQA`LSq(Z5X5uykcMTqQ0D4R+MQ3xSavTGvI#y&|%LM6#A zm5_ar2&w0FefpG{xo7U@`+I)RpU)h}eIGN_r|Wue);iaDo@=$yderZY8n$jI2tp&v zVME3Ug3M>}e~PmF$&mPAd4ixNSPn6_^^kd&tYoLQyK(QBiCa8wk}`I!X`Da?V2#fh7FrpG)>W4lWdl)uVuPk`kMKJR4w+8nrW~% z!J)fW)Wf)$`4^V;G&Ib;bLY;(hpnoT`WhOZNl557U_eUAfm5e!Y*eGiDyrQWzR#lM%CB;cO} z75R$pLu~H7cApVve=O%pwTXX(ySuyH#EF9qtE#FF960dDAAgiKA029Z>eQ*#)dtEb zH)3@aWh1pMJ1Aap)eq8c;H^8-Mzvzv`v<3f>(S#xM1*YW#|ciJ7RPeDewOF{IzP!l zh?-5Uvy9z7Z}X3Wy}k2Xg^0aT?zD9v@U4_efb2)oIzPxX4;Z|CZJSX?W{$A7S2~*VTIr{qg z4zZc8J~Y_HTtx_HVR;l&)1*KCNXySR9WY>kmKI@NT%L{{J6c*=jvF^l+w$d$7Xj@| zT6-zf9fCnEl~Yd7dpzFO)}7BkFnIk87nj5@kLHA*_xLz<>eOc&n|Ic4efyB*_Sm>M z$4Qd}pNPm)(^4HKPW1kGt>x3FPY)kH+_Inch$Lo0IRuk->uj5+Tg4%6d1K@ z)yjU{xP%4y1Ea_9-M6pu>57uo!-HRR91;93@4}hr=-ZMPdz_owQaCX=DRk@Bh2KBF z4i0WHdUQt4u?h9-*I&~x_2Z2jH&~?xzIyW>#V1w&ENRf7!Mb(pX2f|GTwblzvIpDN z&ppL$((Kt?-Me(}epn|eHn#V`fmQeZ7`y7nm;D1*eg9tm_WiqemxFZt`|tk{R$W>A z=|y^sQ{wQT=U?7G=2|N89kDOcck$1KvuD??U(a7U9L(}L{5ChHv$poWfve6RK71`Z zdvW=joaE%>(&qWAzP3$|eevRjy5G4A7Z&85&&ki99FrTTdtt@b`N1yyLHXSgJ^A}a z?TpohJNpOh+P816e(Nw}&p|=cmoELXIK!lVRQj%-zgt-B+_h_qdatP|evR6dn!bd1v3Z&)K6>u3X`Z12s+O8|?i(P-D-&ea18IXb2C^EiQg`ZPVMg zZ&!T%(5P$3kssx6zkVwYTddJp(Kl_ntl;N7-QMf<;aw~Vmo(p_s8ML~yt#9Q0$#($ z#^(1e?b_C_ zA2Gs>9}sc!*|$Ub4)#;-rLNp<{PD=+$K97L3+umR_KFoN#*Yskdhm~^sMs@S!i?OeIy&y( zvZaZI4ZC#a%o$V9PtTQlUesIu+11avp^{QcO3L=2AmMU)x>Bm!cm+Y-kJubzA2;LK z)s0+(Z*Ovrb?es6#Ka_H|A3b2>ULwsJbUrNWzL+p&!1n_+pL@Jt0kDNTv-`vvf}iD z{0}c*o+i$4SjSD6FrZ(*jS-RAud6=oN}4`>`sb2-@4_qV+O}=md330}AYO7E@r*b0 z3am>r2bBDrIX@FGES+a&cKLcho5hP4FL-+K_4DW2>7OEP4n{;oyvzv8fAlD1$BxhJ z(81rg$O;xV#Tj8+0s;ayZFUCyUwnv{1zP@O>h|$RoSmefUmjn+Y$k;3ydigN+qR8p%vmQ`8E5?d`|ol>U{RBH#=}O9 z3N@Jbh+IoFx#(S8wRNkCpxB^+=gU1a$45K7C@46&f2cE6x zrHZK})MX!@?Af!&^TkcI2@@s=m))MsHHdLY@INw3&{J1#V=%YkQ+iJl^nyQL5`Xga z4Gn)EI@F+VU!Fq7XZ!Z-?VU$I$;;z#g@uGH|N0>>GBT2=_ojULNp1g#QAf)@f4-HL z)=J;ideNd!*EY4}y3d|AZSl|VOE^pM@$s3NnSOqLXU`h(pBFD0pZuJ+EMJTx*IG^{ zY<=Y-^y$+lX41K5Z{9QvCiJ~6F5VRsG}Xn$rT3np0j*!WeS0kT?X;;=iRa^EobrxM zh%wAxnVpeQlHM~(-iPJCpPT#R$B%CQK|6PrXLwhYJxZAKlOXl#Rq3ZsiiKhdN3V*)^#uh5Y1=#Zw2!@d z=gxPoO^V17}&z`!cv9$^&dZe+)_=gyVJ#r#|x4gDJ##NH?OU+ zM=3dE#+`i)1aeo~{_d|xB<}s&N?{i1>iQJDTl)tX4jg#t{Q2cy-aV|@d$VD~ZX~Yw zI`HS`v2EJyUAuNIFL31O(KubDU}=Wu*xYp0@1(8GcYh^DE2n4}d+2Fv%b%Y$e}3TR z&2wkZzL}mbCvYade_!saWo&HBo8{%@jU6+Fm7n0~2yj^SZ+lg-e~N#^Wz7#C@-8?z zIdKeibafBSYF(2yTL;uTfA-ut$MfzD1OnqgE{UdhWmazP*TcJe5_UD&xML$QTyp&Eaj+rp+rq=iPGk8xzy{7T<=_XwiMr+0yN!2g>A}bt?*8@!?$e ziKmAJ4N+N}<*IGj%(e#C3>q=?402A@Z92=Q>JKDYWxKfj6ZJoG3$3t88be1|NcDC91&$- zaPU$>)|&cFeBY1@Idn;jUfd*R==jf`J^TE^LfOc>ckhncX9QF+x6Zq?YDGn9A^5RX z-`T2_v44y`y4=HK`ivQ3IN_Kiy1#Db=PaC@`!H4vX5+@m5DG#=LjjfbbJ{Gpm<4>E zG-=ZK@hw`n7Oy2oa?P8EGsD=BStCa(+qE9B^xc(pN=46}2|}uysj2CjWFg98Qw#q7 zk3)y#Q}iknY9SwoGkC`i_qX@E2Mm=Hu3fw4?Ce}#Ud~FdoiBk%-@bk0=+*N9jS?_M z#^h#%^zGKQ>&=@tXTQB49p1HDH>HLRXV03&sx_&M1pxJ!bXKoNkH)$WA3t93c3yY58zz#oFH=DL*{S`<*|X}x{g}x~o@FoJyqT?> zViee1K6!d?86ib4LdPk|EAQsbhQf^7Atbz*%F0SI*NWxKLkBFolb^3C5XZSgadB~! zRU@RUC|IlJWM#QMyV}57pT zg@wJn{k**MYPQ5YYNhVoyRZ8Gd3C(Wz z>B>rrS2#W)fjc^n1N8XJ0#XznD=W^ZpFNIxNtUv0~sQI;;%xr6GTk-un;PBlC)Kl)JqqDo;;!cqo8X5-k zpBQ;pRqp9ClW>%K|9*?}oCYrJ=smsHMd&PB_I2Ll)2nBb!hm842?^_Zu#Oz%u}4O( zp5MQJ|GU}QoY6OL-hjg%KYDZ}C58VK;d;~GhVpQ}v$=77X58|qtT?rEr&?f9)22<2 zjgOWcH)>Slj55j%Y89t=*Q`Dn#&V9p`(3*BLEE-vJ$Z7=Z4!xm|A1vI8A0iL)sK=G z#|tflg&JD|14mg}%H*t5YB^}opnd!I6C#Y4yt!w&y;JgNX<;2s5lyklj)c#iJNMq~ z1Xgsfky{7%-^A1^U6V-8pKC}Jz*JUN7Fir&bufr)W( z%>}Q@kEx*H4G|ukg}}f-uqlV-HMixqP2O2IIa@0$tHzBROHlQzBM}i-a&spHX&V|E zTCZEben9{JFJHd&7qQm-{7WY8udFNjXos~{sIW4Pd{Mt}FnEn6~f?dd~kY#?Z)Ht?O&dynAbyc-x15z)c= zT59S9AiK$O_nIwp1qtRHYZ*zR0191;)wP={t@?Z-bb9uTxxLqL&71Pv$;*~5y>t6^ z-F=nZ$Y<{!#_?l?DF%D@@7u>IH{b&M`1ttyHzeIyck%xOi4hgmb@b@b6((Xb^p=$- zZEFdzyfq^ZLZaHn!Qm0X?7@>KbLY%aN-9|0(AFq$qF8B5A3uC=uG5P5ph@7{6H@v` z&$1ql=cl{4C^)`*_pV-}*75={g}ntEWSUlg%Q$}gc+$`J3$l-nJ`)%B_|&xewJ#N} z6j*e;p`fSCAEtsB%@Zg@x2M@UICQmaX09^y;5Kbb>s~dqjhdR;rAwEBw9lP8x4Nsb z@sq5qUWSGfevu;r91kUNNJwjq)I#sy>b{>sXm|3I@L8>G9ioGaJ^h@IjNEhg%!2&Q zo0VV9pbTyu;1{72r0p46KW9gmvERSE-@9#_OrCN(W4nV{W`=~lv|G2Hdp>>qc;dmV zle%-}&Fc=SYOUIrRL|wNe$UN^3fiJ+dO9}tikoqV4pVcY#)aQZODpuebmT~<-+r4$ zT@#@*$j~AB{JVVP{yFrd2j@WA)La zGr?RD7MsG`fR)+7S2OYOu>C~tw1nyQOWoad#d_*yc6J|a?de$&7MTIZ zjvW(8t#%@5XbK%EsU#!+%uBr@Ylrrl=BJxZKq&25o2?vsOuqE4s3>mbw@>6WvT$HK zlkXKDi<);D=`;B>e@Z1r$m8$Y4p=(r+@fpOuh%>8Tyyj5F3F~VfV@~2rO4}BG)sz$ z&$y%qfB*g+@EyEsmuYonS-3P(I5;>EJwAQ<^zzPrC4n&AUeVX(A;iiCF``K>xq<*c zT3kF~?ASF$Mt{pvebklpt=0@bmh;ItLvQ5p;lrJs3#o)y&g5nmHrke-jGIL5*sLD${D@NQ#AJm%hDhV@=BJ-lfay`_U7D0)qdhP4FCV-o6zP zSf1q7mzF#=nR8!P(A#^PqBuQ0eJ?+T;3X!DprB?Inw~3GfCcBgxVclveDcJ2?gKqP zXOGbJlMSFHf`fxWuCL3N2fMh~*W0P3$dUGs5X@kLsQ^B~6w8Rb<|Ic)36e5dSYT#n z_W=4q{P_YjOM}LZ4aB7#Y)CHW**!fy7Z=}A@F9_^$S23X3+g!HPX{TZy=BmmS%F1@ zS&+7`*5;wVSq6o}F8t#<+lHTb{+p+Jtu$p z{8_hWPl$+Oneg-HALZql3>dK2#r|Y1`2b#*>@oaLfe|P2An!3QwInpfmf< zzJ74F6q(ckM6|){8v~*hg}IO7)28TY^jjqFMOvV4q^!I9@S$gQ)hZj+?7MfLJbA*c znLTr6ePIC`PW>7e8%v;S-MV$4M!#o8Ma^5cz8U+DAWo(2Vz3t~&Jl8)_?(~Q?fv;x z7H|~gyKLb?qgCJCr%Wjz8@8(9mS4dN9g`K5Q>a0D_wMbq{Pp3UNtM03caM&ZUBqdH z@_^MHZE3mD-~Uba(JgD%$kmcty6Il!ITONGec5yD*juXgukRl(qXdQR5OLxDhjZ`G zP7uiXJScV3LXDVX$5y=9IbrFCC#}@g6-|Gy+ulqCDFq%G@6bJ?OgZIVZtiyNR;sG; za9fnTpglf=12xg!o)RHQJEJT-Dki40Wp5oFS4d`#R8CF~#SPH+Ol++0{ASIXv54El z!b)DfIt$DOn22?Sn7o!i=D-FhD7Bb$c42z}Ww&l~l6@5fpQ5u5=YsPN%=%thnDX)C zM+*y!m`mTIB6LVID=F}J!QTT~kDEMsvaPLZyLKN+N=(63At51_}wi+6t9+SJKqhuv_?V2!Z)Sb(#uo2X4A`SuHs;M2$as@&* z)*N_oR(7Y8`v3e~nO1Y=%z^6O+^UbF?^$j%#D)nq2Wa3wvYp3=bHyA8G6*l&ta)=H zMs{|#eein;8*{~NC785{=D(`E#=@@xAqq-_WKUQIe?oa*3J*6sn%%%xh@v`zQ84Dv7T?(~mab~Q zxE6^bV0JC`c-nN-BLQsQ4uU4FbJ&9i4=z?${eaDJN?g8VtMpr2jT@Ik z*hVFjPiihoE29gfm04GDyV~0Ir#j&4p}BtEHq0ldy+A>OVBN!CM2$Pfrps_f5}kTl zHmhu*k$U*Z5m_J9lQnBncK4cgWOP`&Hf>=l!DoCsy2MlUhjRK2A#S08Q+(z|pJd1KYIjih&6hh;SKFV?e!5Wy?m3Nyn z2VQnB=b!7+OBsem+cLEHKsra98W@6{5|7~5X>{mCub<16Q^NOhr-lp}La02nApa8a z8I%MdggPdALvE3Tt1D7XdHt!=rV%;y_-Puczjf%)!^vvu+}E{UfQxpvw$m3ZNCJL9 zrL2C#%XR6}1p%c|qeg4$H3~6udj?w#TJ2#uX2_7MoN+`Uo(N>xO#+ztPrr*4NOk*O62a_ zfh&$?uPVE3h(>W?>3hV&$EW9&ef%hs12uxwHfn!=a2T@E%#2Vf8|7eaOaBcUh~n{^ zHjN-jOqje%5)U)2R;>8JgOU!nPnQ1>h*u}bmuS&aiCv+ML z>H*i$QUEc83<}RxX+a&SMF46VYHCX;KB=X7l^(jf?+7|X!LD}8D=R+UJv?IB`$y%a zg@e7lt0{MUd;~#7eEvPRXCS@)m9UXWufA_!x`|L=fY+Q=Y10mBDQ3D5hY7LJ zQ-Ie0a;)P;oX|AK1Ci!X2QT?REmHGB8&7%?eJ9!SY+Fq;$-k4ylcc3>zx{qC zETvn_MU;#L=ahOC)eGT1p5Zk|ys$Hr*EpZb zz5EPBOlS{2t)jvMUIn49qB%eIbsC(eTkbJSnSTtn~Rn% z^)r>x5G6~%CM1Y#QXX3+lIv{@=YM{iTe7aDQ-SAG3Yg_B2ytdA^5%d0m#U5uRO+%k zG1SH0KDaPrZLMstCItx9#f8*$mxJoaq{1!hL?1)gW$9`J*FLC;bxl?;9dK^tx85mw zowlbTCQa|1oHYCwND!Cuay5upqHk9&<*K$0IKp)*P5->yBt14(H^uvx{!>d_T`q~L z^#)Ye*Hez0mfE{^(KbDm%$5HBe5G#H%SAYtqH~d^ssH z43?tH-P-g>JD*e6zvtW$o%~QxJNM2L+=@UUwSr|WlJXL9`+rDwhVfDo0=_M=0 zQg#v2llIljM%6ONIAcx6z#@5by*(pK+kE@+1AhF-kt0`P?q_AKcD5TbWUZ*b{psOL zd(K+00DHwc(^g`Ni?OiTf#ioz1agIkAhc3rwQ1S%41o!yZ2pt8ZZ~&y5i+x~nl^8~ zm?H}(oDAN9cM90Dr9PbZn6YCIjF>g6i-ipo$@1!-Uz@b;FV=$%ns<8s{CNS0K-^jl z6_t~qYFO~xd-p_MK$wCGM8!ary>QVY3IQa&XhNqTUB!AMBw5GKj*NS~&&)e#FI@2c z{`x4cgZkrOt5CK1hv*GcNKqV}taM;CHhtnL<=r{8{C6QOhRQ107&&*HYP zUan~}u)rwrR{{Qi!4)8$!uCCSd??ytddahF#>|5txdgFf;dS#g}KSn%jyUd zx^d$lCr(toIToYQwk@l~PRj{(E*Jg1x82;_);DfDd;a`(26OF@5zz_cg8L5;mBH$& zuStO3IifwGh3+s2RUc%Bii(P{M@N-YIG__@EPy1F`wx;rQvM2Om%ewHKK(g1AOyW_ z+qd_bbyr(r7^*$!GXJ;{!r6cJXGBre0u*DCs?L*(M+EDNRi1<#IiK~myyRk8WB0W5 z^l9ox5Rn#m|9H%rE-!!67s)%IjbURABNbg|%qasa3gock{6n#m`?g#+o#eInVXO=1 zPE7I3-aU}{KM?%|?ha}L=c~EAGf91UV!Nv8A`O$&!omiphaC<8=ubF?+ip*AuyD}3 z_}{#9r-zPCWOOuDQwahKf)%s{$Wzp*$^F=m5aw}E{Y4{g?&l2A$RV0(&zb4pz59EZ zN!UlCmU4<}ixz(C*LUvNQO0N2u9gz^(j)Y1d3i_0XA~l$RE?5*(IvfwkSV_V%~%nv z;6X}B`K?c%Y^v>!9bd2>6hQ>M+?dIHtJR1RN{t%Lb9LRYX;WEw`E4XlAK)IDXbU6} z`T#YuL-c7;qXh107VA_Q^pcXCi?Ey4aQdZXO(&gi)Pq7IJOBOAf`fnO6-vMri z({S|+q_Jsm7`g{s2={0%m@Pe zGFAO$QBn4jCl_bu;Cma{X)NM>!Gzj0%gyzsfW^b74~s~lg(=H++&COk4s}_Fn+qHB zLi`Tw+qax;!U98;Ot~S{ z<{DfH(c=;PWza0g=RAD)`t92R3kxoT%dcOja0?iEP(qdJO3QgcrEObBJW&XB)O+g6 zel>oc^A|4U=HyUob~7@1@bu{=6egMg=Zb zx^KZXO*D+G$BdB`*atwS7sL;aCy!8XV$F(@#F@lR{|1oXd47h;X zpw@NxXJWm4`6}=$UJ@#I?h$neK``&$y&b!D)fZqOK(g}Y9uno3$HpGGZ@{t>&`iW$ zY8$Q<(G{~EsD-uWKS^mdq=OS2tyQ+5hniZk9pCWkY6n$|CGPI%%d!Fl1)A9rtG%Ze z7mpIKFKE_l(rzWdmSng3FcF_L>zom4f`d-tpz(P_pdU73#1HhVUdnPlU%o7j9^Xyz z3UL8D4$R!VdC-~NBPHNx7T<^^>Eg1Ic7M&Lrzi(++!!WAMnyrUidq<=E444%cY1za zL(!ZR9v)5v#s6VuC>l&;WS|4$(VxV6pnOF!KtdGCseur|8&teYc}>iZF%13f9KOBug=d ztLSSG}ryd9KL$WZ(kL&8|f97zC^+irx#=r~iukY^OtsYo}g!uN&o9|rL>b-wa z>ruvtr@}Z?Ae=Fc+ZiiHQMK@5l^mvnLj!#0i;`uMcQu&{)#geJVpa{~Utl!Q`O4Z1 z(`pSYU!sR*_Ut!^_8n_InBN}Fi8*)nECS_~o*osY&SY!o164IOg}k}{%H0l=; z+!E8LYYW65F2E{KAe=ejgLp`&Q~BFPch_{5`OX0rp52PNujLavjX4;o?d%a`OAGS=xcXSQp5etBn)FQ`4t1>O+-}9yIyV%5#7G@tVS)C^sKR#N#tD(lYua zZWMDBU~eNuML~#r`0n|0cXT68Og(vdbaGII&v2U^=&q2wo|p|xy+e!6k{|EPH9)%@ zxcu`gDrr$C5bug;A7M*No7dqec@~T)L1YW}-?Am<_;F(lc4*VE34L2Pa-TJ44m$rM zPGVu_)@|CP!T|!Ai4L`DAu;&ghNizQTD;gi0Z@R*X6#k@02@T=#|;}cj5{`db=S_F z*B5_-*<%HII>f))Gc$B`55fW{DDB3L0wYNxhm5G)_pdT9ex$%SPx$O00t!mAkXpWP}ON(<`)P~9boU!A5-?GU+g)hg(^ zOOo^@wQYZZx+YL_?LzctHM7d@d9hU1u0LhhWL$t0sVed^c{oa-GAQt^`x+R`PIxpe zHPC9G(YC*_e4_X6c-P;T6kTsr^K}k?xh|yLBct|5Wx0lrm^krq{H$!m5;)6kp`lJ3 z#R(H~vHxOIXxEPaETx>;rcHffg{)`|+{D@IOCf&y3o&ZM#1xNY;BiY(VMcO|@$v;xt?7ikFp@QIqT^ zisM$s8;T`&3Hna2JtOPVM^^)bF9fd1Uf(*pXQLeulBEjld9fHnA1N)}5D>5*kLLF6 zW4W!WL~>-XMSe5xmeBr zrmuf*u7T!&rN>b&YFG3BgFi%sdWQ2=Et;OsnwtD(qzWDy1KHk<;zVZ;`*W*ks9i4{IR|gl@onR ztaiLGiIly(O>V??spftvF0KtmW>7Le(=+tzmoN8S^>x$HI+c9?|DAmwu^?AaF!3n8 z3`HQ?zeNkMsKTC=#?@C>{)0ggw9;b_9-Jm24Y151^KEL;-FH4pBjLsk{^nO|kT71> zBH?7Vt|lvgr)--DEzL6M-TU{+wVrLz^2~8C!HZws z@~o_I1E>gE5Y;H7lKu<)vJx3o!a7L0JLCoXU|1YtUl;!noCx@Iur|vEQ#h2AluQQP ztgKilR6N_%^Xc-p-T!{ZH~yoLT`OyRgoVZ*G!V1F+6K)Fym2l?P{)x6sgVY^lwQsM zL$&#tRJAbetgAcsvX2Z(UMsAXhcI*^wd`v*4z_dWizf z%@Cc$dd{-Kj-5MEtCA)BW|FM5GpQz-s#yl16=aZzh{)QC-F!!KNKMGzlhl%?c?p5-Nbpshe9ZMwrAsD_lk-pu zfJ#UK3S&q9K=gQ_4*iL8`}1k%PX73qs)LUEL=Wr47@?DLgY;iiP*7Xh_`BF|Pt*4AAY6p1 z;Z1JcyeXCtuC7Llo^RN)WwfiSj{A0)iMDO$>8azeGjlom%Rm;1zY$@&r`^c{(py$m z7O9J*D^NPzp0RlN@P<~|#M{6vTY7fwx*Szo&0-H4kk}fAuVD7QNNy<)gfYn5+q;%V zUHo5U=Kn5Ir|OCK4NIfgr80ZYoL$`~qKfyEz!E{!4RBacC6+2lIsL&cC32JWgw(*G*R9m(B2INJX{US2^Mkfv& zXisMYWCV1QKv5U6bt`CxBJ@T%?Ellm0ob0Tmn@2V^7yfcQn|cyX3uuG=<)GeS#cv# z)2rpk>-*s5FMFQ0optr{@*;zw`JkdVXw=AR*suq2Ge>)QT{?KMh*B88CWM)mqM*{I z%>_hElBA4WJva#sljZuodm~(&{EUV8w@#go96!!2bcX+pOGsFSB+YlHmQ`{@M1unr zjE!nx=h|!Mf${}m2_F8+#hIMAT=eB)+@^p*nUunl10%T1*kqudpQB(E6oBu3mpaU= zG*^_$j7iuR3%3JN#I& z91(TsK^krJt-QbHEyKmRk7C%v<1A$fc3-&l(;1>OI6XbLI2AVx#%NLpo|$z9cENdgDdV?o-FmsqSo$J@zEzV}y$>Be>;k5t1f;6$ zzrS&c9;-R^{&9Ou*?@K0ckCekaR!>vSJbj)%Ux*K7!NNjD}m9#s}2{vtJqT{(VAE8 zBP84j>H8KD9HhL7m`22pj^3%=KyVE?qBC4Y-gO+LV4F5`^wcTE;2;JM9*je5pNmEY>|^5zS>THB~z(^JkUQ*0lk z9WeAa3!ZyE@1S^qv;!4Ld+9dq2Ja!=5M}36bD36E96WYx4s5vS6e|D(BjpYxOA_om zjoiI8BxLr21x*B!EPwu#0xTflHXbVy)p~J9>kHyh5+)^it->V($=F%3!*9O<~|w{FK^G@#YL zV2*KuK}^v@t$Kq2nk|G}!gc`cqY4~jVWD8I!c{IZvakss2Qxvnb|=(i;^fH-^wbr7 zwJh(t>W@)XfVFkiZ(S2jMVAj!3A{y%O^1m#1YP@t+3y;KU8?m0s0o7@8tT$Djamp@y@cR5V(yQ20yr1SM9aVa}uT5RuxUJU$eXFsm z9TjCS`e-SRQlK-aB4tX8O$wq5_&|zx%Ue@VnepZPafvTK#baZZzLm`m`ms}|*pC-k zo`Nk0a^Lm~6r1~|1Zj7leCc9D#8eU`kI}Qp((^PfkjZI`J^C8bgY(9P7&LL>)FD?VhDkdE$!)C z^Aj?kBFK{$I;StfvdCxCxmi$b>|J&7$dT(*>k>vfdi)%Ny>1%oO|$;|#iY%NQT|Rc0n46 z@anJn_UVPl4~UmUFvG=42B2qC)q-?ypX6m?l^v@~_3pY;49+Y6>FPN$EG<1@BMTL1p+;li1zmXbg$r>=`OyL`{`eLS5<|!VmI$|2_@~dGhbVqD?rC`! znwoGp&0sIEKaQG`*e6FvSvqiqGveUr2%=3y+JGV)v_jvCth0t5IlJH&83TXlnwb2= zTDWxSQk9`1X5yj4E>}a&+cI&n&Fc8k?5FiH(igkcHDC2YFH4VB; zUf&g2e2ya$r*VcH3Gy#%8$|cD4;saBhXfiV>1MT2-5DHgKmxL^z1{WFV`-5Sb{;+2 zdC)5mVE_Fmjvv2;e5s|SWnz*@%oluAI@F|wj&;|djExgNd}sI|MHxYa5EVau%$zX; z9DXh$;u+XP97sTM6n*?S6B}?pHt_XnNuLr`#IE3AbQ#<^gO6rEeDL6;?gd;W)=<42 z)`st_IVl~rwM&ghtB@P7iiz$0kzBBMK)%8Q=-}r}XG$-4;q0M-p!*SX*ypTfl1&!)h&C zVgesQ;lG3IJ6>(}StJ`wG4yvg_^igsq2dn|_!7oEX6{xx?q zi0k4Mvt`4E(yw1BMc2R+a`TFB?>#EA3BpO9ne2maCoem@jDF8=Fe8+V^yun{yVF); z9S|cm0~t`SX%;u60IPu^efstL#%)0}K$ZDSq~EZCM{O*i^GuA%U952we7YgR2t~wP z1w*LVNCM|i!km@h0LOVNFYhNm@gom*)@>Sh&c)?0lwmyHlCy9sqfLLt6AkFxrZB#U zJ>=R{bHzp|ET*Q_V&jp!J6(3`#>4J%OKFy-xJfvDda0XRq31vxAedgjr^F8`k+>PR zzo(j3$q1qw5h`B6oG#}6ZqJ4Q+SnSl>p%eL@`T+fL^aW6#|?mNCmWG0iL;fjkA^`V z`WICIKm?f7=<(Rw3$UxgwbS(-#di^2_V-`Hg~ee9Mxp~8gUlQBevJL1WvzjL2l5O( zp~1mluD4kr_AC7;Nn$v_`Y#mDy~LJryH%@JVUQhkV|s52H}Q^ZNE*Onu^bcDNkXiQ z^R#KyXn}$VeXK{Nm!kGiMCb zW4XPRP$CS)=;K|rGPD>9i8xtQR8%H*-uj?7GgjctnPnax;-mz|K{UhuN`H~9tvryv zO~7@6JT}O3Ae?Txm=zGnPoT|^#mMrmu93h3261GR1!?aY*-6mp+V#6w0KzA4y2b(i z1kKDm36zkwbX$qlle+6c6o0ytNEqmSCnZ~$mXSeKPPIvHCIBk7-<~$z#bw?9K5!rc zz$tNNgaX3++qZ30R4%*i6Cub^iNzWsW#Yt%u0d)( z1v?Lp!Ar{c7OLa@B=2~H)gRB(np@MJAWp2I&yrOTQJHuZ($a9ecG1y!g)~am$YYh^ ztv8D=oR{aQvX&7s9sBlO0u_J(goXBxU|!Dp_3NS4e`0{-h4Ho`QVC|+V%usPHMPD} zAcDHlLMCQDsoNy3 zsu+mJ2OUBvPtIURH*VfMNgVtmf_<~YQh+SbFVPozoIw9WttG%+zzTmo)`+-3Miy5@-ffxKZC|A;JCiE;4HkZ!?)lLzRL#f5t2X=7ZVd_g?OQdaeBHy8@bB-#)~i~i)fGWf z3~kmiQe}{EIrbgoKW7QUqKp>;*_9An2*vkGLn{;cco8% zE3bjqXX3;;E-vDSl*-Z^;kGYAC(~bR!{y7Dfo#fxZi^Az3#JZGHsfEX2^v%>+ASz^ z3XOVL-Ua3q7Hb$SoB|nxmVk&UTT^sTQE$B8j@eWe{YrjnU(F~bWzc}2ZiP35eFr$Na#a^c8Mlg zzrK>MNao>(fh2Qf;Fb{r0_%x*Ayy4C4*G!)f z^#_rRSp`YORa0zFkTfUlwb*^=i?rhTwBOQ z!YlXpS51FWdL(4jGRnY?7qASA0~u&6_aLI*`<%~EEOH8p7afB5X%5-JQf}b<&E~5^>+Qca2$4I;2 zak!KZQP(9gIEpvuVA;&e9v1^+Ml3DUz%+ay!3d$^DfFb67~xjFe*IcsGzrj3GHH^A zswzz`ExGubjQAm$uU#u&n?zCk=+Y89-BR3)5soq3<6G+2uU|NQ5|a5%cT-Z<9GT@G zA#X0^;OD`gLd&#LG(Qq*L4U?A^^ha$m0Jbv+0!73pvQN*%$zC5=pwP5L#}IRaYxJE zD7_0gxt!MY*vjnDrc{(-?7>iga@7u_grp?T3|NN`@i2dIA*~1nwz<~%iyUw0?_uDs2F^)dOWTS8i_ai z`}?-U0f6g=n>Y}Q^URkqmaB9`d3(vK66QyI-Rk4Eh9;S-=K zmFnUtkw{TCJvQ@t%gHNyVNb$gL6Bc_Gb5v?t}aT9lZ|S?&}n+=t|5Lc|4znqHD9OF zwM&;)^x5d9&!0a(Gm5l@zP+wCMah{B9=zu0(PAvV^k=+&_H4|!apiXglrZDZKVrK0 z7SwUz^l+f&H1$sH+tbb_!RPVPw2dgC58eWLfK-#_BHyF%BF@s0#wN4dO+~0yM@`YX zXK^q~UF^vCSy_n&O4pMAW;rZOAhFBfO_|L$GtIIT+NcZu84y}LpVObvBhQ!#7R z@Zc2BZy3lySCFp(y?BuP;Q`#$0Y*mHPJN>O6!h6E-K}K&XUkI23tTH=q2*%C$GoT>?#QmI{)o=d# zH%uy%u%Hg7bdQPEA~A=mh){-0T)~H#0zumS0w?0ls*600qbQJQi}qxOnMgmEeE4uD z_BiSiXxs#%lVr4dcx`F8xpm*!H@3Ft%qirMs5DKzDya^{a8VN@HBuGKr`Wf6#JCBp z511Q2i<4*sCMJm(1_a-E)IMfcN)?9B)njuZ=0u()7b620G4|KAnktDLp9( zS2KkYVhN5yrT~lB>eZ{ocUe|IA-ge37fo%9HDBY7AUyCslTyvkQ#o5`Z7) zpyLomH&Ds`4HhL#z1Gme2J_HR%-MK(;Wd1_N}ym8d<*R6ql2?TM6%xuF+)_`+6n)# zK0c6RGhsEL-~@W5<~3=uB|cuCZtuU~Jb_luf_Lv$0+*S3AQ&xqV>@LE+L>~Sh+%)N zn1uMo3;EKMfm@9J6n0~c!?gFOYcv~{k77mf07&X`Pnf~KV7;hSNx4^z*vF~Yq9RhB)#MF$pI9iqVSxM&^Nv|=WyGAbKwmY6-&#?Xu=!>e#XiA z9oMPgI)DC$+?ae{1toFZ_JR=S;hQEQ#`%{zdhg1w7F+6L#+caO-fnu`Z+*E8jk4))>EDs zHzPnd9fCvDh&T&*V0%slw}XG)N)aYQo9Iv47aH2GS+h^rlEAb0)bHvystc+MHCoEA zcCmNe;=Ef*y|DPq9~9eopq^-z#R^t;(-KAfDKu51elwrX zvnaq2DV+K&4~R^>ssny9D5KYLEJE!#7G4IfaHkg~B3>Fo(s-Y5tr! zK;plIBVj9SQfO!o#Vbq$!_h&LmIcylktHY_O*8uSnLE;~T)7Ruu z>dx5++o0Y7oGJ`gx-IbRWwsNs6*%5pg<_n^3#VBWhSzp%8svGGa@N_b-*5Nom$d}JTE!Yfw>F{E&Qjbbjn!ibe)RcY7z0_ntf zQgQMSOhu<0X*QaklVdTLLV|-|Vq3zygIFVK{YKz#Zgu}2D& z2vW(INUjPVC07=NMs3ksR(HF_DQoag9oE7XsSNr{4L{|S9b+jV!&WlZP9qf}2A6OY zDBg98G_6Jg`{VdC2ozipD>3SoBvoG$y$Zv{0QQ6EBhsuFFYb$oB#<+ySy`ZAG}X;N z!mL}cOO5OV<$#n8S$bORp3ceX+q*Z~%g#(EM!;YeV5D(hQXZocLXKF7GUGqo>RG}K z=HCq)Mou;#Hf-3!g{3gnY8I=%h*AsH@kDWWoBou`KG-Xuqpe}v|5Hm4E@Qu8-Va^$ z-$5u`eP1m|C#0xG^#)_#WUvv=PNw?$IZGwyNOeE>F04A2cTM&>$H0uWTlem5GiXEY zRi-?`jYY=>+bNEFp*}9Q6~}Oi+0<->Sg=Kb@Mwdlco5t3aKP$YZTjaM+*lyceq-VZ z3vEP6A$EQ;@lI0niR@Fe_$VeQ1O$ka!yuye?tMIQLE_GR`<@*9y@{(BS(!H*AAgVe zdekfUd_fI@n0dWMk@a{$(mw4|cse8{j;cj3UvYMk60n-+2SrZH6T?pv(^i6>Quco%o5LH z@R7bgTq0bNG-TFfXA13jF{{tgZ{5Y;w{dmnS`kVTweX9TEs*xK5isdIyr-c12si&lcc>#KXzI1X?Yl;$gl^=WT064g9U zzMK@u_LLFPOXUgC!BCnm^{Q0t6b~Y4ovv1sx)MaA%5a+0HqcReC@v>4@{QV+gpWf* zM^U!2S|Zqr?gW7raeA#gZJ$Mv(`ox_m~46lS<}|~Xb8z+OmdO1b=C7E!g2Gux2-T? z7w71Q5KB@t{aozDj%rz?T8Y)fYt%1AeVIgKpZtZU6Ig%v=eAxQ>psPGbR8yH@7+X7 z`FrePkSJjZJ48oL9WB1ZFy-noh@i}BJ%?rXL)VJ2f8l+r1biUp=nQ2r4}>n$ap6|! zIAE;wyafwNm=&AE&`wEFQ1>s@VRhIuIcBwJ{@~@pTpV`vcQvo{r9Yb$NcIkgfddA>wR2>v=8z0S3k^`vq!h9I5>OD}9=;q0V?HfzSFaAKu#$=%6+3JH#R_8&@JhZ~rfyv;`ik3? z)W9km5(G`_>8WY!X$Tp0bT3~BW@R>7KF|orAK0o-J#oM#pa2gh9bau2;OF2F5*OD; zKw!}B+*us-jo?W>2pO_5c(Nm19 z^@eU~0U8-cE2L36AA`{wYKIYZYBl>&MzAMUAYIewOzRIU$%#qlnu&w-kl_h|_O`a@ zlzaB?e@}-{yLQ-36#xU!w#QL|OM6NSOL}u3oRV`GXKPCz$vp9F!0Cd_>2xF)GeoS@ zsD1dhWZvhI<8boAjN&v^XTS_X4a%ZfIqcc(P?HNMPo9L^>A#;sC~z!0Sq^K(W+{jR z;qYj&mxx-kYTRPN4M^G%BQC7^aeB>~!SuKB(lQ1AE?F;PtBJ;>PYt~(W{_tK7wR#V zrq=KyEaaR3mA&v0(_aAX0sTqcu*Lx1l7irXIP@|-mTD77Mi0>0ojYj@ctx`=<{AZw zqJN9t_?tH&dT6FoN{>aEX3`Vm>#)o*^$ioU+`p;KG6lRS!Xu}Wau=e9FP?bOqnDH> z)fU2MJxWc*df3U(a2cTsO5u^~tXWyF-9dlRfBeykrdj5jVA>VLTlBXF$*kw+OesaS z$NKI;!)-2dy@Ua>@?)2DCeM8gvX|IJ6jzJdv@%^r$~#lO!XR@y%L8>(XAzz=ag@ zD9kAAZ3o4O*w|*a&|!-01tX8rDb$#p3`)R06eZ+cJQ)J4Mi|01@5XrhU7?|LqPf;c zD-02f$bL;%Bl@G9tSq*1$wXH%1L4F0JJ1J=z4%J(J8mT9r^MG`hrto0*$la)oBuQ9 zfJ_oB9zW)KGI^!JqZD3;md^CpCwK4i>3EDC#*Xa+I>PFknQ84IBRa?onYRVW1@A{d zeuyV3qm0U}v69lkSz`M+ZuS_o!u!#CBXm$tu|=a1c;j%Oa7K8sv1uw?y?z}}B>eRI z0K=zexq6ID)oj-;5CUWoISNk-%NgQ3Ti{2vVePRSQUhkda3? zDc7!Er4{&ANMEJYkLaE$Nmpw~JzC!hpiBZPhWV2fZ~{@3xvs(OkwA0;oEP)!5iqf$ z7{@fMl(%X>H0y0A$aMcZ`3Ms@P-gR4+YbD^UU!XW| zmu7Da4NN&|B8X$TK$9hOuO_ZoR+DrK_b#{uz586Wgd=8}V$|hJFj~s`R93E3CIYt^ zkDF6dbBhYH0V)Hviysl*^HAtnhnvg0-FRx5`!@L zr6Q{hVCZ78K;a#L2axq4{t;5EndkrD@na=lapoZA0EyOlK;kKoH|LmCeEWt$h$+W9 z{rfKmvcbL&J?O@=u-XjyH4|&F4<9JUnZOei5^|nM3}QxemXt+bbCara($ZcN3JFv- zbXq;37V$HQmkDUpUo+_B6ksRU8XzKhgo?j`0freao?9=@u6*%A1ad)I8*11Tcx&k5 zL2cCia3r8#cA+)>`t>7B%cBXDXbk~}dt~#54O8q5+P9afW#h$E%Va6M*Izz;!r6CW zVc``rB6Ww#Ab$9*j0|sPs6n6Nv(cY=RWY;}GxZ|WT?{v*+f%wqg1k9-k{Lm$l;I5O z!VXQjMvgs!*&umJ1v9~3Qhtiod8AGic~lHi>kw1~eDy{~>W^qVJ`fYL080|bT?m&* z5(61(W@O|6^k;{mm-2aaPPc*p?TmQyG=3Jty~46w_c5@NTt;6|c;Y`F53&ILSv2EN zU@$2rCMJey2smUMVQUi;SFzi8O$aWG*a2X_cIQ^TUzWdW=A1cnse{oXBHUW9vyv1G}o@Z;Cxb~$AO}r@6xsFKfkNM7`jBdO(24) ztnRXGcyd}Z_2j+SxJbZ2NkT+F#pDTzx>@8|1uQ6s+M^OA(Xaf5k)~z*dcb0Zm20i| zElHhddysPZ=N5Ms%Ny)nSSXjWrTj7$UK1CRLXH?x@i7XN(!stX8Suo}XX& zZIQEcd*<7aYyo#p@F@aA3wmg26@3)ZT!Oaci16uR4Z}$x(#o1GUfjnr2yC-?<3@f@lGG;4 z;3$x*DZgvMnxKf!@+@Z(|3fBDNr^+q8m(h4O<&krSVRRMTBnp-^?uG;VWP^cC(>5t zDh%RKj-oB)xZ{N{A|~BA>gWI}Fs7FO%LAI1)_mmqa@^FpuLNym#GO}zrC zh4~Q^q8${X7_U}iHtYcMQI&Uwlq_AWr(9&jc%DYK+@b}E<>C-n^PN=k&6}6OD2cy< zrk2-Vgy>DNP_OpMF=7x|=%SM9V=|)afap8f`)A)sFfD>KaZH)`K|I|Up%}#+fbrwT zu{sSOxz3%-U=-v)Wt!Q?VZq{15*Ql27lk3wCPRO)CyWh9RSv7ieTInGIyw?B>nYn2 zBI;|d6uRQ}0N~-vx!jX}o?lxfj$0I`$kylgeAUdch1cVJ*BD1G^9lib(VOALqvI!gdYZG*X!u#J_mKo)*c z5y?9(HMPE2b!jQm{!lLmgXH}ajz37%KEsb@i@&vl!V= z5Q^f&_#ArZD}VlEbkPA5(Ppt=Q1<7o?FXaLnZLjXN#O!bD4ev@C2)dGS7ILSY!$+9 zmokUwbIr-jTu9p;sYo0c4z;9hIjD`8K{F&>p-qGtapDkJiDLN*L`E9_SRCfBHv(##T8Kj70$RVALPcrkSWHZ@Cv!Oq zxRF?a2nhB7!p>nU7h$|ce!^brU~j*A_`xgy>_UzDf@qT(@D}&t@z=`OzrX_G2!|4*Qlw#8@?mj1^S-8bOe&z}#f3!Q>5*tIndAShF`(KYE<;TL6;VrN+A{dF!%)i-DrzM%IE?JVu^bI-HD=JT>LxV7Qe6m& zBMil&;98Fvl&#Q$p-M&Pwid?=4N-Iml$^f5M>U7%T6uH(!asi-X)7Cqe?b|mtfp4; z`ZaOJQ9L~bj3H=NOnD-d1HnO~{wKlxPa((OcOB;%urUo2MEr+QV7-TO=l|iBkBl!- z50AC(!zV-8Xyn?w!ou|MVVy83LL2-KRS;%~SE0iMqjxNjK)53cPK-#9oicw<8vdI0 zszr5(lYxzfSju+@E~@AQf)M$exkXkVQ5xtcSE6{nCHj>tCPmZ-LA7 zzb7ndn6*RM3N6}NM?_kPg|!d|3v>2P=5rl_=5IpB9zLO95uM-w4?n zy1G}^jC8SocRMg@eiczH@WoL)2FS?al#>M|+nd+;bvT^1{~}u0W3{PG2*JR%4 zwczS81A=Hd<}i$w^bHKUa3pWs&`K=TaQ&m1f&X*Vg$vLfI$Oj;QUKoyj5%aGHqE$! z2JI2inIk&vfBP%{;wAsjmqt7QM~@y2`6Y2!gpdsVHPmK*gmk~2rgLXQC{*^cc{rJu zcc&cGhNuX1!CzQ>WPEe$pxV#c(aN0VwzQt%M~8POob;VBO8(te`YP!eLXo!`#;Ruu zzj3^~b(A-K@(l+K=1x6+?o00p&u)0#3RvakC2@w$);coEcddX_#MZ0xw};83sn)ct z@w2ae*~07X94s`b?j1B-8nJ7fvae842S&|NK>!yc;E8BHb)4$YL=PF%gt|JP;RYf8 zw92^x{QBWzytYbzc2GtFTq9NleaJ_YIw7ik0uaN4s{51wEEF2;6o=YF zJh9JD4H7maTs)l7Uf`$zTSCYOM>@)=B50UMpW*cc`bqbKoH4vsP!j`9KHdMO&JNA$ z0nETc@#i(%01}9pJHRe~Lb`4Cpc5KeNEm1dQCr~#iVuil`{R+^xps5ag+AIGlMsU5 z#{pRY822K+*hek$qz19mKqqqf7|c3b)?^LBdIOtNeqc@oSPwnuX%2wD507^pa&b|j zpiHNWOn}Ig^2)6@HYnqDJT1VE!pAUk2Sq_uT}lVPghq^0#^@6WAa?Qsk}*82wc3mO ziSa-W$#t8b@Bj>nEYY!Y*NgAa(F z@e&*+s`luk$I5S@C{DrJIY1J-OBlC>ycFv@Q3#c^iNn;n7t5Jk;cubN>+a9oXDcl- zYA+NM9v-S(8ifukSm9NWGW2w#QvTJ>u1YpiBa_^^h*!=rJovL>Vofm#0LDQ!@2Dtr zDf|>b1o5<%5LkI}lFetQ3_{r2R;xV3GGEY26+o_Q%TdDOJdhJ?b06>$Wh$tG)I+5c zD6+3CA|kg#CHIKkB{(bqXFyg-mR3?A=t}VSlP86JUd>M9M)6?*Y(!`%ahJgT&k06r z3i~zQf)Dgb0xpI3q~J*nyLgm?c>36$*9K%fZZF2w$cjo6uHc)hn|o3Yj{hiN98@># z|NB*)DExBN#qshw%<&Z+A>%Ik;bct~P8$d=-Al@;q`SFz=NTzt;Fbx$L7aB5vKV?I zsSZ(Z3^|}D)_R#5Py&Cyr_ET?fe&PuW^<|J8yN%#w2!%XaSt&g6btb)HHa-5r+m6z zbh2Mf>o_p%BsMJBeg6h#us~Dst3QTGCsa+Uo8oKyE6 zc63-~bq^8%bf+H{qiWH(vXw-LAead}emsC;0Gz(Ijt+zcN%iEQWY;8f8uuQn!lDS2 zqp2XG$he7BnP5`Kdy^1Ql<<|9AW0mK5h?)Ed)-vYSVt`iaO{U(uXnDz3H{wS*j-oG zbzB{Lf@EWOq#)S6`#6G!cVT_|9oeRi-YgVrDDv^pioQA6puqsDnizqjD~?_PR2_<_ zEl~yl{LWRh^ZM($1L`3>0Is2KZpR?i{;n>ffg-4Wbp4F!1Y9 zTeeJB1d_*>K{~^x;7^b`0Z?Nmm5j>8tm(%uJeE-v>(OU<eWW4JJ$fE(a{{9$sX1@b? zIuR+LH-?c?G~?i|iaU=>{<|4Nj>`W-oPZS}oYz|6S+X$3`4gl&qR=`bNWyNBk6Id$ zmpHl#Ul7eA@DpoLSe`Nlvh|xZ2Ot_J;TBmthVgUM+O~?KL!fD_S5{(9XyU5lZBNJP zEGWTmf*t{Fzna$W zK*xcI40v@jF_GBVfg<|1*m74t$h0CTCkLJ|!9jr+RRq%PhQ^nVUATwxve3eaiuNxjrZ(Gh3gYdlwkkFl=s4oMO zeklBmmNPspBo}L;ig=?hk?g$IPw0~ioDe7&d&FQ{FLH%+0IX8c%-VC`LRdqqJN5}ODDV*YB5p;rltx=zH#}5pK3t6 zf<$)&lfxL}-|Klv|2VaT^?swO#rc+ALEAem+ZeL;-{%hrc5aP*b{ z2?{M|CVcXq1dl+Uk<9YY41XV5DcH<>Utbm@qWh9psi_$epppqw?ARid!D!g$0%yQr zbd;BL0KiPWizq9_LnK6&nZ!RzK?e$6h}F;y82cM`Vo&z}ajX`KOi;R1h}rOv z+|lU}Hlb!k12yeXX(QxdZfGN|<&lK+@GD3jOa^grMX}!osR?;k*)Qh=16}of53CKK z4#}x&z(gMYMoN=$%`35iy12!f>>SR_D8bRy?-z^&s z$}GA3Vr=Y`RU|hcIH4^M8e*HF;rDjue+fV7I7dW(0)&Nn8~_m^aTvo6Cif~RSnjCm zKXyI>=?1J~A6K%Y(tKs3e*(TT+(=7qYzrpE!6 zmqrk;X>eX7^VO~=11ngujo*oDg$B_YG3ZZ3me6bJZ5Z3Yem z;}s`8dA33Wp3c%mizb}ZXj=>|?FF2)U+rErn-eTQK+O(oi6201xC?~n#Pm|zVgVCD zZSAxPf8&d=u%VgjXeL@4(^-E5*E8ojvuV$0>$bhUt?^eiaq{Zb;TJ+&8s==n!fcj| z{3d{nv>CpPQ{XkOUfnZs1^mDE*p?N(|m7_2hc2$HtOQ=%kT=0)<9V5qT>h?8R0OJegcE z*ZkJ*R^V1pk3`4-a|ks2pxan7BM)a9rUSj`qC6#Y<)X_EYN0JdVPPzBfI+lc8es*w zEHb(ZHS#)$92H>#z#a(Ik!(_E1-2iFKZXyXcv1odVRs3@7@*7rRYtMJee{sX;xJI* zYmXr#kSSsWNR$sGKq}cM>>5V_l!NRdLIgxr5UN$E2haQk%1*3(QfK$D%I4u$tZwY; zAN+%2si*tfuqPTR89UZ60=Ep4$!G*oNEFHCWD{^sQx`()PkdgaG(ex*zk;J#z5xHI z6xn;S89-G)XeTEBdQ*1s77EH3R>YXZ>qDtom?;NJI6$f@KJtY7aK6#HFpv#b8~mn= z7>qN0rnebGSGeBYAMJ}E(;-uF$SYu?0RWugn1Q(}3Qyr8eh9*!Gg2-^ zYr2VvI3hGv1wteiyW!9>1&eM1@C7*Y3)n+)>kL6v_VAEv;ENx){NUXc(Wwa=>X!^+ zNL9U65i3IEB4ZKwe>|1ekF^rA^iT`k%<^P$<TJvr!eNP$&>UB;gw{UdB_@^OQ$-a1$Esbfqe=(Pq}txBn?l4eNUGN@ zkK>q~SX+w{y6t#oR05f}M-D|rCFqxfoFgRgR|Z6CIB0GTX3QAlG++r${HQYRw{K4S*ap8CbR8{58`2Q+p4Z znbS2Z5T~UEyZ?$0h_^7L6@*F_IieEI6L=ETL&GFUgg~pof@5viXVOVaC(H-9klDc_ z!xtDySdNmMBIdf;OPG0IRJQYI{pf8 zt5B@w0s_Jx%nq~JP%(V3$<78QrR?z5@#}G@-#2xUSrG7mC{`>Xd8W`WS_Q)7GXa`^ z<%b8bR>uY%nxL}i;wHdN=$W8H z`c)LdYUT)n;OHl4bYVP-48Gu5jede}iz1QG(m_!Jurlg|HS^OwQLd~f59pQT!id_AD9|x zcOHPqoe<-z@U$Vl))RqYAgBkZHcpo}x$nZZ)6wa6ir?)N|1@(-o))DeRG{FLu_F4!V5F&(l>^pX2PCn%B+sYk4~Kw=~S&LAe3ph<$h z0zObClnKX=D^oE2Ar6(r79tKPjEGwmlAs{TROng|VhcxPg-+o5cv4q2T=83g{wv@$ zF#d@as48)r1WBPY8Ad0NGYRHASy61^fE$Ao?R$0jC_yV}3L&{A2#%0Zc-!C)p$62E znkuE8Zn!jgvIBmTd+mvF(1Hq-TS8=(BZo6?g}FWywe{`J0CCFFZQH^ijbV)SLJa$1j@@0l!IxOAtVVHK_GNcnAhOBh*Z;1>_f1| zzr8_>$XKt;?kd}3cL}?}A*a#mTjnRnJ>#&c!&&7Q8%JwEb(@7=8#K0*9l>%9*p=*o z;tetLNdYP&*b6Qe3ju*cNWK5X`TlS29dJ7qH3r&U4eypESgQnC*~tAz^Ly2^ZJ481exd#o%)Ac2J-(s zl%mzX9G51$rnT$%x+_8rX!j5kA1<{&bvFuzK7hf|PXI7cqybVLNG_lFyA=0n0#}a} zlSv49h**@6;8+;Lftsep77^XX>XwJ`Nl6HG(8Vo?39Li7Ko>EYD^zl5K_!0YLuu!rly z=$Y-~_EZ13tijljjV@am;u)El0&50TH5P-!5M+`u@<$d z3$p?vOzuek<)57uJ}>Y}#3LD=Pe?G30eUxK`viDp^eMoL5jj7&nf<@Y4|KG^)PeSg zGCmL`1l0ePiKG9mp#Ph`p~!MvT+!nQMOX~QZS8jb-MgdseV#__J8p^i327~43uGMz zBq`Jr{F%(^t|lV3}R5g{@^ZlVr{9JSynrD4x}6bsM>zfZ9a2=SA)gXhA;w> zvimj`IR8LhXF%F)R2yoAf(wj#0EBN~P=H{?T|S4BQ)&H=nwhHo>$qWx86`YvZIPsm zmxk53fK}p`?4hn?%*JD}$wVS&B%PD{_jicAK#a$T z73gjONr;g?clVD`_qsZ~K_tABUFB2 zHkSWJPhbw=?d>u6MMzHAqVA2v(%Ekj<%H3Z#L@sEZ}1qyF0^{|)Np#I@$+e~@)`Lf zL@bH8iFY(KjLjt0xLp$8%m}^U5j%pmevaS1-FmE6Ux>$hmqYcu4Pymc%2uUiDxEwr ztWB#=U@LZ?FR*T1*z}f3?7&F($I z#l|NDIQM7L`PE^D5p+aR6th$3O(Wx^y(R8o&7iiQ5JuJ|1h7#`V#Nwp*wwAlaQT2& zca9v*Sa+ZJ=;76pu@(dJ#d={(p- zWiOE1Z&y}(B`x*kou|VE7dB*1<;=qhj!Uw60daWWc(yE-u!d6xhBsd9mt)82LksWE zl;bMsm;_ynib8Xi9*UK+(74PdUi&w%TsdJ31D^4hh=vv3cwtiU#TL>cSVw2Qa-J`~ zr)-{xCMx7GsX31P>TeX9?G&}bf^zGLR%8Uj!cp7!g1#&acyvmjQr<5o#4jB9;-JA; zxCd<}Ry%j~^Q~7-<3Aw;(Ewg?+zlpOQaemK0Kx{}r3v!0g9UTmDBR{8lARH6`N2YA zD*16dwE{Ct3DQh-N)8&FULQ|0xma*YXp|R|enlEomxO@t8zgKsbU(m?3-j}NMr%o- z5Xq^#Q()%ve>{7;O%uy<3n!>wth!KKs9qv9U`8`xT#@xSY+kWy;q`&$r>pz!-&?I? zcWF~L^JnXf#zS*%IhiD9EYIk)P%oC!5J>V_AsYBJWx-d||BME?8E z3|O;i1l%gyv3HF}XM~n?@on>_)%}mC+K-X77fZ7A4mv)`+52drL6l^j+9K!9#19-O z;uLf+2}8jg7H3FG+gkz~3QE37X)nLAPCzqWPp3pWV4KMNP%VH43xz`<5@0UvEnyKg znY3!pN@?FJQJ7>Rh+D>v!`3D=jBqN|h1#7T-@N(CLIL)1zGtKZ$YLgSy>qbTl*VpX zof4#^Gg>Iqu){J`N@hl2vBKfykwO~$>ij8TC5bCK-Wx|r629l$3&ylCDF&BceSc7W`$KYW z;7k*SJtZl!^Kei1(-IJWLGKm4dccb=>S}}tJ_)ANr)=8cn9MO zNOovQPnvq^Vy`BhlgF}4rL#5DyBOh_O;5xl?{ew+&5IY zeSv(}kB{SAtE$4Kiq$MseOq$d=agx-T&fyO+XFSPv09tgbefPbtJ=L$Eowns&En%8o>kx0-@;-x z5lv0HFd6hal!}!s@x{(V11{=9LK^Gig{d=$^4eh|R}IcQa5bcvkbnw9AH>v9tus>o zLeFUPd_^?x>dU6cE}S~vTLSfhrk>tjRQ@nKf#^&&k7k0FvCcg0ZDCRy{e;3yXPM;7 zp=HIdzE$Mp$o~}eXF{kkU6XGl>|Q7^Lk?1opKNkV8tn|~GKZ63$>GqE=+=>_2<@Yu z2%pzGJ_L+kfqUegSw?X zVPBz9bBDOJ9gj zq%Of&Dn8M$=S|v%lD4?>>o%L^M1AS^eD4^=IFr`(TIf*YMU4ZBqEo)Bm8S;}R?KYa z&AYL>cKx{SnBKm?c=IjgMXs%(K~7tGx~rod^lwaF9N>+>Hi3#OmL{iO!M6IN^-3cY zUFcuKlj#zgmpfQvE^#;*u_*YuUk-kzR>TKvEan!#ELx;hn%uqc>oIGF9h9AcoaE0O zWwM#vj;qp(#6mXELy>{>MBva&0v$1erkVJjiIc|4YI2*%KWr7b##wYNhqjpbT+&0q zER&Z@ttEJZc8W1Om^fiSZ@^16t-uDcs0COeAsqm!Do3u^0(SeSjLFP-Kpb&{lNJk^ z=evV-%|Spi=&qEuU=Eg!BBAD`fHa5a1oh;bSa@LNA1#0bEc?t%P2suUQ$G@0#U}e5 zUO7jqN)QdIx2*sy-<@1F*BJ+tQsox2la!D9Gr|s6UVp1F9tgc>I`F&2BGn_E5uGz0 zm=!GH_or|G%J&D=DRTmJcN(TB1r_Yp7aR*6aS+4sdflPTGp5J;Z@D{1CV--Xj%;UI z2eB1&^lyzl8@XQKY48r#rsr4t7T--+FKlAHTz>L(#tXB9f+B|Z&L``4)D1_QRl;GheN5AY}E$$eEcxZ_6gS7ecgcMw9X2)8 zS`kfya0d6TKGupSmTuJBp&~X8J^<6_YKNuBUcY`lk+X=biyDb7_bOxq;^L%<7Mi@m zcNPk-Q#Ow%sF5mt88+6|o3*vo1^CeNZg(~;Q6O-2Ct@}U_}&sinD)Y=O6@S9f~Wh} z3f$yyEO#r4KG4T6-5)gK`(Y9!gqg8W1QvW6?Xai>NnhG2NdkDI5tEs7{pmSF0CTEexOY4;-3UdQrz>b5(3O7AvtQB^@!W!whwKOpT zAnLz{d$BbRL(eMgjt7eD%6-=r8*aP!=G9qYt|`1hpL@&qZV6aWx9bz*Q9|SE#wi}k zchZ(-o-}>;JS(lHq^u%8NXXkNF4%vW>iGMG_cN3gGTiRAmvnbuQmU$Le1GeSt8MxB z@EM8fC3ZI?v)aY|B+MVwF+)W-Tj-Qr~l@K^r8vms>*Vffqabmgkm&Ijn57l^u`JvPL zt|siMO;bA38Rz+`dY)SBup3W5@VvUfiKXv^DhHcy&bK``BiSR)WT&#`Sp=`Z@uu94 zIdM9l^3ys#+_#^~e}b{)`T3l2MOiA1n{=K|nbh3=a@v{<-u?9gjmuW8ambyzE7xq| zu1N*fJSnYF9-85$d-rU)wWzw1`^AkHf2FN8SUlz1yY}N`s1?~(MALUGWJ$R0rb=QV zc`2eHxhr%qOFVzRW{HBYkWLBa0#mHzXmZ^3@z_0V5I*aaI?9^OjZD4gv^j!f?^TEf zuNT&U_9(#;3qBL?&;!2DW9eSmV8c`%`2$g)vJMsQp1Q0T_=>ku?dL z=FguaC!#6ot3dw38G%?95OhRgHj8!Mm=+L+y$0H0_jli>)`m$@FO^C9A<<7ZZ)7Gd zObVPHDe-1WN(CGk$yKEI0?w2UfEDLy0w~E(k^slVP|B>}_03NG=yyOtN;cIT87YsZ z_~k%{8D=w<)WqGW5uGwJ{}{bta!jD+e9hvem!_zx{`i>~5tngnN19E2ZOr#x z-aw0j&NIit@lWw&t@}P%s3fS!w-i>@>@43|UgNZZn-fywRPJsQCWYRy#=)7&HJL;N78Eges}BgaL%y_*?R{IUOLU) zCKKRmC8g)$n7`|3Uh$(%VucRZ!=(5qQnrW=+})!6vSsPFf;|S7QMXh*de0Xdy%p?g zSr}q|-*KzL_*Fg(RhRE?6N*B_2Go1{&2ME+`8* z9KjqReo4S&_>P1fq=y1n{c_C|kkr(}(sYFa3k42mqn=0ue1d3!anLvGl#t63$60hU zUV0;GGLSRHM{)H^-zxg|%`}|1;B!~v zXjiA02fHUtQF+_-pt90XMZ9{?&JGg;oucZ)Vsi@9l@m_1e0tP&HPk3Nd1C4jCD*F+ z6+GR!=?=D*a%a}duM2C4-JzM7cr&)AQ_Z`pJ?7X07n`HmWs#?+ZCGYgv%|pg`_bWX z${xMi`(HmES5bYKUiZAPU}093!+?Ki+LSp*R=+*5rQ{ChhW|sl_M!XQLHyG)9>ly) z%P2c|z$|Oc9e19>|8daXh-kZI#~(Ls$9UTJ6`hfl!WwoucT{)w>68w9t5ofGa>$sB z>HlXd!frfPIqsfwKEcJ)^ZxDCSQG`u#Y9hg``zNrCX>W_)O&hb`d^I8z!5Dd^wzv0Eak(*$x(Kh0es2sDmWu zQqszSFYxX)^*CUQe4a`mtg+*ygYI%TG?RchrXD{^CE}%|QHmf#ie>06^hA7xa^(2c zQ4DKIVK`7ltQ-Z=NX9F{q_u($@I5J4QRF6Ak|~~bByf_Gs~yJSVC$)N7%7m+tf7KV z?t!~nQW|<9IwgWRIIRxQ{JVa;77@K=p@zVJEoL8nZ?39bwR3jxyLjE7ZYi~eB8f=z zyG&x;9WKWWXyh*aX0ot*)7@DVW#V>gAVN31dE&VGoS4kPtZ~ZA$4;OM-zmr%b-F9k zTKlh0?)5aCv|u*1G-hIU8#uSpUHxkBEju^4r*~QFgz+10U@6qSE4{m}eBkKPfwXM3 zK>~za+FCi{7nZ?zg7&UDCQkbb{gfuRf zD9HK;*rnIKYtNgxjEPisNolWVLc-HS@`aviHKq8J|0{{EvJhODRq1i`WUHS!x8{;s zw5Gt*6;J!#C*5Y*7JbNa>c8RCd=UjqxmMhd#tU7$mTll=cH33{EYJ$`n)50wJ+1TI z*RJW;bq#y-8miaDew*+A`h1{{l%{?&7f;ILON4#h-ix|!kH25f_WT)fdhc7|6SZa& z#0-p3i{S0evUI7#+`g-Hkm#F4vU3@>GDlJ>5$*&y)rzm|0~r#HV( zy~f!TG9x+P{jz=947-A&{>H4`dx!FR+deCePQQm-9$vaayrm{HGaVVQ{`yCA`wO*E zVMUW|Yqnb6eRGy4Xi-|mNAXV9KFoHTad@iVnv%pPl@Vsr4@2W_q_TExQ2F66o7j{+ zr;-zVDNb9ncv0Rm5uLui&v)}Qv($Y~Rhum@q3l{V+f|-=jlaj!wrkp6TPtmd3-<@j z$?<=kll^_k?KN%<)+&p(i%4p3lsczn6`JBub$0UgS=56c)2&oL#@d^IeL3EJTgj5P zISMNRGSYT=K5XdEp7Bx1nz_tZ$Z*=Nkn_nx=2l4)bb~4%j_ZQn4bhJNEXZq26K}lLg&5w20vy$3DLq!@Qi7mij%kdbgOu%7s$5~$HI4tF^)w>~NXhzb<}7&1kYUvEN!@CKX20Ugcm>Mtde925GW;}@e8!051wG@EkP)p?INafv>mMA-1^CW>&U+qMqD%=DF;Bh zqE`wuC;nnIpwe`B&?67o`9sz^+wt$J&}`dh_e&c#7GLzX9v@L zNxciyDCApVO$-k(SZS4pWbxm#XPTMKaBpt9>Z4|(OWj^i*XFFy5pGW`J@NK13sqEe z@)+nq#Lm{lq&C04mf$g3d9uqQzc_6qmc>(sQ#>4dU)a~(J==fx*aJSVlHBCYvwKe_ zZohY>s58Cw#FnqH7>1KGBi|icKx(T>GtN{;>)T)%nipmSSM6!Bj&Tm ze|cUUcyFPNXy4}K>=~U27E?_`4~I<_SLqJ5)xD!yUDlkRH7|aTQ(}ktI<@dp{$%b9 z&*k}b3ZtLw%sNou*KgmFFRFA!_fYy64kZ z*4>^}Gtk^B>S{iRyB3+)PD;cR$jr&_+n4ed+eqUL0w*R9PkdMUuE^PAoyvkWeGxH5 zS$0#nZ|qj|^)24hc&KsOk=~Y}W^wlv^PM5#_%h`;Z)f!toO-?2C{}vkATv*Jj)s7Z zne47@$I^vC0|kIyAQ^Dv+~mkPWmJ80pkq8^s~imjgJDu(QkGGtbL)e!LhR|GRQM*3 z)Q=jZ^?+y|CPmc6aOp#x9eLm`4ebj+@u&no6tQU1P$sv&jWEn&A$xA`d=o0=Pkx$Y zUvdo3Na3bxhk@~eT!+Is6m<$A?)P~l;EdQKY`cy_EX03BI)H#fy>l-PfKs074=g8y z#z>gds}$?I`qBaTxp32~m?SMT4$>xF1Jdw{{^9iR9Crv zu2uS3xDrunLy3rC3GKA!&*Gt>1^~S>hH^KV}TwTo>W+Mmz4u z&+pCCPZ+g)Z#v$a%6B=#dFjB9hGnartcDt!$XsGKRv4N)x7NQAMTY#Yx)ST zpY0H_Y^BZaV+TvaGL6m!AFh7A5oti`)6o}2Gxv!NetEd7WzJ9QWdRGOjd#g0_bd0D z{nBAIPgc}gVY`CPs3$R(uCH|W==`xPI7|1GQncCsfyV4Rc^$3U_xj)VzP!F?J*_}c zL%<;l^ytdq0wWXq3p0BC5)vZSX9jNUcPif^nq|}5XMVH=J7X+yW%wjSgVr1^T5is9 z88|oO(p$yg1`FSn7@ijYO3}2MTDvvnr`?My9q|jQJD$v|A}kF>t8dL-)1}uwW$e7v zgUv=3QA~lS1wpRX@muGvS57QFBuB&h(GDwyC?&CUcHoOGv8r@%`3HHiAO^ic4N1JIR+N#Vy%8IvZ%c*(1rMcfO-GGhk|8YGaYl9=u% z=b{0{;~%Xn+fbUD;-KIyQ^G_Tx#wOM(`r@ zZ#HuDJwMzq$De|^-R{KgqzY6c%s55g@i&Q*9qjM>|lL~mgfrQ zT;^OX;L=7@MV><)M3vm^G_ia~P50qSr@erc(T}F?U@6)=_GQ^t{`^_LXSg)mt$bXy zefjq6+Pa$F!J-FcPkfxJI&FtaT|HXURDVp_ceEsMU!Q{h$@zoNbhG=Lvj^+uh*x`* zs|}@WSkv3vTc)-fd*w}G6Gb3%_$2gCc>(yP0hwD}^t-fQrfVyzq zxxZhvYfa71gk2u3_l!E<7RiUJ{S4h?>ydL<+_`mc(cr0to`b7Yr|+y+9r(~xGyK&k zYm(4Vno<8(pPUKQP*rlxP~UKuu1%kJk#mJ-x8{bKhk80y>}p!NJ(}hvKk7O>+@I}P zVXoRvmw&pEwLPq|#bAU0&=^>aycM%vJgoyg-Q|IKD2h{rQA<6rft#HZAy14%*~t%bxIV9?Da(07D1072Q&x= z#cQ%-g)cI`;_0&8!v2f^0b#ziHQn&gWgfhJiRY4CvziygK%s;mU&+03X!p%SsA`4u znCu&}o9LswU{zY9#LGNZ$gnSm1K_;4)EW2%%xxRpYiw7-Uk(NfV=3vp<@iQ5ojNt0 zZzHnqTh4x%Kn~)Art}2M+WhmEInN>!OS;`FAEb%b^qq=zFN&>kDmoi;JZIBzrTK2F zTJ;>8-qiBpZ{hWH?%%V z98O90c-FCR;B%2H*Ia1YEwP8kx^rr}zUHd7f7<0)W$sz1v+7yRnR_4IdEXLkd(&dO zl*$L=cMZGqCf!=9cE_{nqFQI)@E2W=p9M8Xhn}6fK<$sL_fvCjy`6kKFU_NSrhCD} zSZl#+7izj&bRYKyi@ObHsI}`PJ9AZXQ|@PXT=ewFH8R|&9nIqgGj=7lK)u9`b8}iY^sANWR-<4&q@9GN?iAFscS97d;Pj%Y~ zHP_)a!=F=)`rj`!^vbRZ$!v5#He|Ytp8lhn7ad`0{1p)snoTjqHEVQa4yRSZ1R$yD zXkm5#xoudeY(>|2?h>PUHOZ=V5Cd$1aT0W%$&GmB^Drh|?sGE>!(;s>#-x z6YMi?QbzBt;jaEZQQKa3S7r8-(;wm9H7%y|T$8^RD_7EOVA;~amOZMS;x$7I;R=Np zk0y4Rh!AG#uL! z0+rUpW!6&`)4j*tY#i)v85(%tTHU)^eDL|)+-CLm&Sl3xm&A6x%vEXezU#}T@J?#( z^$(`G-&eboHIVJ`Y@WFN=}AvF?uuv;_vqIVcWb&hY{(q0-lfu#m_2k)eCXvm+@@`> zvww87y7Ts^9j^*5m@?F3|N8CInwD|dU6;iB+r|seGTAYm(hy*={IvumuU+M2RBd5$ zN)>dd+RR<0M?@NfsOtFo%*(bk)up|!nWxglZC1AweCoO2np?TirSS8I zr{u-mZ(DWakU(#Yu9NBEWrk_Y@v8eVr_C|YdC^NjeBfk;s@0_`{Zor!SKjhb&m4)aNUnb zQY!k2oI54y&y22fjt!Q+avg4%#_Z`S%4%tkbq{6Ns<$4`&8_aSZ=GIzF}wMjQO~sy zb!JbcdwIcdi;1}MO0FXBXkmv+Vqdcib|-mnW-V2_g2X~ zNS(>LHXXkf2Pf#rK9|kYCoKVi8+d49-hh6iQq`AF{ zaMLyjx6|pu8$Vp`s8jMJak*#)RO3{VYnLJVXDLG#3vfZs~=n3Z#&s~`+N=kRjW@xH2 zC4F6D{BKy!wra-eM2zY^?$*?kyO(4!hRTss(3xfuogl;2zlGcAdGzSE@>KSljm!f< z?1t!z3FE0~dp0CCDn-;*)_KM$_E(pE;V*VKWv=3)Gh@GiZZ;!y(8H)a6>s8psuJ(c zD2gYFWRxOH|CG7mIdThJRC~uPb5`G5&K4-&@~D+NUisCw@2kgo1q6q z!^ttjS2w8iu?6Z{!-kA%r&RweE*}bMb>`j^@A9^FYpjoTm^)D8@}hi@o2%;fEFXfo zhV;o4P!=z9W+=@BQK++FgW7E2{;Zm2Cq$8S4JK;^S597)9f>aJtyJpFwyB{hvfDTI z4^}6$rLWzuY-Zy*Av`R@w{t3#j7!~#N0DzGBph00gZ;KrbOty2UTPU_9=+^?F%8~E zh-EDLYlM@A=*0mCL^l8-y`^ChtDKS*{b~Cp7WQdn;&f=_=RjNPhrkO2>i$-?k z>?XtwaORHE^d#}F8ygI)$be*(&2wrL zE={=ZJlj{OG2QH|G3`K5*=`({rFk06{97Eh077$qUW!mCW5G2hGhdc2b1hnajR3V{ z1y4n1yFqy2qjPUnikLgfSJ02Q#twB}&u(NTk5pU_o&FVsrXQZ*eB;I_uV=$GSEX7# zc)6LYV%rfKmGIkytiIn0~JNw=goC6Uk031BlnXBH{>39Y=SQ>b+9Af}gHVuBfr_4h`3;eY_& zmy~Q5#vX)7lc2nmbEeu%03vdJ>}^OeoTIUoML%H1s%mz^+E`K~2usExezB#w0u<8V z4i?~2dXnZrgBdJSGw5Kho_pL)$rX`5#+LY`QlzQp+`3NS&bHF%du)j~TuzEqp&cr& zt$^*2Su$pua5$s97OwfGt=73t&7sP%oFQ+x+PwyAJRJ9yDA;}7xRq6xU;3>->u_aB zNghJox-WxiRX;zJXZ^&Si$VApDmqo`-1g;VT)1Kg`wLLuhl-0sKSygGEu?$1aj=`V z=&q_<0$*D;!ZYhUa`Q2FqrrualQ{jxa`|ns5?{|zYj^N0U(*X8k%Cyse5)ziC~V0) zjKbY!g>)rzoHyY}-YgOD&t;#_{p@$w6JcKEFcp?<(w{L#Kl}yFB-md@yHM*h?pIus zvelAle3v;$?m;XTMgS5lo!n!O&Jf16wocpAIslhY1+I|Dlhs(4d;GPNQry_%m zzY0A=|4%*+sYLTR$v+7Bn$HW&?CtD84jnCo6+1@Aj0B8h%qcnU=jhCCnfWF`-Ky94 zsp@`OJTA*AV>uK}LBhfp(H#7Q$HPF<3u17Ti|h@;na}gtih?;QvYL9Iqx~(&FImhA zX4tHpW9ZU)$zF+fM3nDxtE<__RpQdNZ-gNlgDd3CI2CF9BHz>iw`)3;aGtaLUiUs0 zAPL=UXKA!NolDD0aUfNnTt|wmP6^`uMj6StZZS%%<3jG^uPc%t!9yl;*1rUcU)gJ& z2CL>rc-mtq(6gJ8GBgD8zauh7qjZ#+j}kD5fs%0&R#Jv-J7Cu89;Anp^T8&KElpSA z33+!{;~?)XKW}P)OLw~d1_w}W48`10N{eT#XFl#`aE)n43k#L#0Sx+qz2(U6S~9at z9(OYlNsktKoVQn1QfjZ>#hOoNikNJcVb~YCL@oG*_FZCFsg_Yf-kjGHsBIf1`Ave@ z01Kz*(Px{0)rQ%dL3sb52kq3kFpe@0-ZLTWz2zr`*e`cm0T1A2L_=8~n)-k+Ko^vF z-=jx+rO2+jsG}$1UQ+}ADjZLl`Fn%wAu_#{3Jzvp_(?Xzlxi8lbH{3m%i0?%OBNghnu2TuUT^mAMvccSgsxu zEJ}*UsfH^7UdPvX|{4N~91VX(qcF_It|?_#PSp$UgG& zb4<2v>`<9w5^c{sXFrx|&9pxq*`Kv6U=+OH{ZV^8&F5agXA%zWj$s1_(oCe{ETf`9 zPhqsv3Aj9f%{{VN=H?<{m)5|z_pRMB*Zh({JkXKBWs?nLUp=QGfWP>q(jHtMrY~Dl zPvX!5DA;1V#Ma8wGjHB?Y@(o!mgouO(hr9dN zkUaOCrs<164`9Gqgll9bmWxUAuha1z5-gVkgN_0d!Nk8RR5B67yI_((42@d6{ba&y z9W9iZFWg=&ZyyxOz7V;S5;EbZ5Q7npgc&10TY0{C_vS&GSK@8Z(%4i9BiJzG&q zNUXi(D|AMiC-JkU7aINz$eguqG_J00KaDJzy0`pGG^$9Gpt27~MEzg7+Tzegcc>Iq zyP9p0(JAp|AFiCLSA%2%Od#}3PLQy1=j^MSoeCd;QIp_(bgaUXG^OU;XjmlS`Gm|Esq zl#h&uSh(&vt_cECaJ?22*n;@tR=0Nd6NZl_FSt%X62BAj@FzBDn`El&awfq62_*fs z`?ro3rg*aoD`@gX_w2W@5U3Q30D`y|5-gcgT#KFkgIP&Uanjr)`FLWtQguqM!qqR5 z4;F#AQu973o<>?jCWY7=H5@_;PGo)%o7%rCNACXNi`!l+bsVCNrH=p>$_w}j%usGV zV?AC5sUKzL<4xo(LKM#}{1+3b9`qel-QXoj&h1jwVXLPR(vg!*7JVKE3= zrQR$;>N+`+uVv<=6q_ncKDRJ+fe^vW&v-MY27ot<%y0xs6hMiQnyg-N`MuPgEc-&n zdO&oLTZtnn=IY33{aozosHbUA2#(t}Dw#8_qY|3ZQO6L->5V81Xsw;-OGNTqE-$4Tpssmx(FPo|-V4P7!Je6=! z?v_EyBBEK-tz>Spd85q88F6XNJ%ad;K#G@IuSmGPyp1eS-#bc`%x_PU6biL3#IaN2 zkx!SGa`l{0@$QS;!pH^1$!JO+>m@V_|GfViCoe@r^9ugEHXxD!BB5uBr*T5=zeb$M zZcNN-4Bum;L?XezVfm4}IAuI*uw8t(eTqk$Pi)Wgh1)g~5S)8NDvl&?r$QI7j?DYA zoAg8^`FS5zij;UHWO8X5H=1TsUtMqs7+mNti ze)S6SB?Ljx9l&%@K170Iv&L18i4-nIC5nMVmMQrE$VlN(QjG4uU7&PqZyJF`_#3C9 zhh-2Bfr&ow(c^9aI9hIdTiaHaCO>Kk1e$u4BAIId5K_F&Xl&u2foR}G1A;H&8P>of zI>?`~G;bzKY)BTPz0 zl2z2$Lc{T#MbVFx|Efva&TK7>9e5S%*0iT)HVP!eC3$o@?wa%jl$$uM>dXtXD7Hlm zFZv#`)6f1)&OU4p5cV^sd&g-TXSsL#niZll{L0$+?eyvv zHcGKusVJ@k7%knd)I+?*V1~>!my_%e*N^qvHllMF#luU_oFXYfmyeB!AxRiD1&$Z_ zA{addg+{&tk{sU?Qo$p}+&F|l?Zb9?f&LKtrIH`}{x%lA1wo;pBu04w+Oo(!#H+Ku zJ%(cK4S#`~id@OQV85P;4+e)fBMOGCp;rBy|woJ1iS#7JL`Qb-u{ zi*eGAyLCPLO0owlvonE4{(s+LT4wX%WY;Q`hr0HK1YyYm*^}r&U@;7ZehA;^aYkk=59xn^qc8YNL(Blf&x zRB<>USb$p%MP6X~6GlIo-9SE|fiCbOfiGhcEJZi4mh7tHNC%|I7Wm-9_}`GtL!(0- z#Tk0Blovr-fVyQLaHGC9G_VoqaHj8;(GRd#j(cY=9?9aw@CM{@)O7j8LqSKP7O>pk z=ZKlzp1X_bfQ=A0Hmu>a_5(0Y%0bn#x12C+2T<@srb=Lq60g~*DSBR9Qd5HEfv@RF zw^Q3L)8dipw{2uXBacK+J-J2jc{HFOV8hN*Xn#PyjPl}qT6Ft$NrI~Deg&ZvpA^(-d)LIm@sG9|@a2A;aAt7zqvIR@Q5nMF{?oW`U))qcOpZTNW zY5KPCYkR94N_5gb9);~QAN^VCNUQGOQBKi7e$hZ<@=zlpsX0IjX%TT2;T0Nw0S8}g zlP1Z}Do~nt0BuM`o$b&_E;1`S4_f{f2ZY*fw6%c%uOfKfPbn*Nyv=d1;YItuq^)DJ z-**o>Wdt*hxB6=_g^F+ge~g`bSk&d(@5i)Yl_{f@SSm8E4y36xW`YVH#&Thrl4zo6 zYGO*`2@&OJX)<}tweT6=77w5r)J5+|zEY_mBN9 z_jSEjyWLWl`8~hqe(w8wdIB1L<>JC$djsHtf~>I1_tohlH&U;T_kTZv24ib-uu$y` z*E;C|eljtjvS_~#80$ATye}y7dqL9tyDIX<%a>;s`!Qq9nIZxCq^XaZAd$vijlU%o zEgm4h<%h>se*N{=$^XhVR(13MeB&1S zq5l5t&i3BtLO>rvvNIz>_-`9rje2p;js>|l-4ZUjvEu(LYWVNwC-KV530DjYFZsrf%XEDw)UT#oadeR>txtXu+cM(z2HwwsfU}fp>YWImY2c zgE`y%7_G#M%BPPjdei6e`LGm>{THNh-6>iFx#7x1Sr04jIyoa(FqYGY6e}b9f~feu zMOnMOEN^kQ!xruI4Oc&6qJKXf(0a}kIZK{VLIfPjto9fYG;hjQz?T?%N!sAUf~kVq z7$y~Mr~M&#M;b(0W&M6mO^=_J z^I!fGtTkk3Jjs})5Qa(jetEt8AtT_n^wN&j_6)1#8xNAMW#6N0;F}%l)hB zT%y9RrRx1`>-Y0^g+?eRXx7a1*eo@{w`guao!;t*w*p-0bcsh|x zh1`27q60pvoQDit&#L>K?lhu*QSzK$O{D{T)tn1Lq{PrxeHgA7?envzGy*Q>g!dk} z3q$*u5Y#ABwyxOO=4j{(vwtwJ)wy1j3X(Cvj=s%+-6{4HkxO@u<+MmvUd|=eg2Pio zy04j;vM0HdVvvnjc7%Jpb)7DZev(i5512p3g`(}uvJo}?+lvY&>-@*Ja^E^J)02dg z1*+%Q3}+d2KgtfI$}d6$@lA%MW-ABvbKv;WWeFPlw0dtcwO+5E#C~JkCk3-;Q2UWm zpMaakm0rs~Oo0~++tti$oAbTd-v*||j_1!yQxro93JG}{NI~(Xtd$_Cp_3HjpLzU1 z)rx^I2+X3+g23q7Zv0Oiu-ydQ%Hri-%{At-z}=(4fL}H> z{h~cw@e-i-ik&0fD`P3;k13R&g@lz0)37Wr%~6o?Dz`bdp_ln#t#8Jw>b5H*7wnun zdwu4WCl!Fk?;i*bVt^2&rV4%(!iLjFiP2Az4HP}olOy+(317tCd#7|Mp>o_up~0od zEbc;>!R=$FJf~S&yx}SjYsyv_q$4OxCOpHMWaPq(==3&_F=>ye?!a8$s|EbymuM}I zF-o5HTX@(a?tY!`+R@;Mlz$q~_n?i!apS*|8p(Rb2A0&t@82`8YDKZ%3$q~wpRf-- zcp&@gpp5wzqvj9CPzAS%c=Gvoia1KsZY8WBaN$PX2X9DsJ7)^z*J_U}mLFAOsvFV^ z07p6M@2f8XY0jB4!d<2TI#>4Pjr@0gWHi@p@2Ye-9kJReMSRuvin<~1mL><^t5j!kMpvzPX*Wpy?E964_qH5tI>rBGWL!$QC5X8T z$5BuIG~>y+ng1cShWveEeNy7XBx`eRG)F;IDrnf6nRhC=&_SlOcOVKTZcPVBvaRSV zMJ~1O?%l=3IV|n46Rsh@&6j;n7uZ7>uOOY62%eKmo(GKGab^!Hogn#6!zK&mIct4a z>D2E~zIYTI92|rV#`2(jsMN7Tha(O=hVfP;CF8)P82Uy{7zC0St(>r$TIO-a4T}RONj&$c**7d#}P_r>keTu&0xd^RjM!uaN zR_@(SGk|*Y56$AwbbLaph4}&=3t!di2md@{pBeE%6;*(mL8JEkY~3riZj5mLvQD4> z!jqZ6y$ke1^o4#l&)E~6QIUrRs|9xEr$i3*x_U6Y?{?c1YR?Zmvn`wunYVIfYk*_8 z_)N`*>yMSW*d*%r*wVO@(Qzjuch;r;e=Kj=!G!w3)&@>1nB?#Jj0r1WJcpL?R7Pe5 zXDCeIB>wADik{#hER+oBUuHnKs*zn}@Q13UYgzW0C>>0G#~G$KGZ4#FuuPqq;L0Bw ze%`{--=?SSNS`sK1HPk$Q>fbtZpJ7BX9kj z-??$aoxVYWAM+jT?Ua`o>_NKax2o>xcQxoigy^1}%>gvmfG=N#1pQ5+`-PY2c>miD zr^in`l|Ke-a3lcLAj{o3m!sW-lJ@N8)GU~}6DIn|7gcMeUN0%uP)LGB&!I^cwVG)f z9TQFR1O_W}s6yxa*h*KAkypWJ;jVPGgDBSYOrz3(&o=q>QmM-kWpo^JM?vG47AeZ1 zv`AJ*shkd;r=f9ziDnr7htIR4yj42){i%^GKbTu&v3I-h1u1*T6zj9gal{s1Q=Xs= zEC1h^`+pyurGd?*3lr*g$W-OAnJ0Y`H1pX}ms7`Z)PZ0l7#XyYcM7f&5#8tzROWXS z>V-fxTKAcrPh_c7)Y!*{1^rD~oja*)#ZK0*P0u1wNS6$y2)v5&n7L-A&KLglCAd8A z)j<7B-6YQ-eH!R$fU-{cm7r&M5%Tj2-%jzJxiYFe4ERjOR9CBhU2vi4Tzbi?A!I=; zkzF;*29GTrQljcK0#danE6?q%cklW#BAyXcrC~UXTox@VYw_{GIa7-3Qo-C#dL}_# zCC|B;Iu$kz6RxB;6xgXVV>BOz+b$mJQv}q-a=aphE95q2wVG2%ENJb47sZD%Z;Rl> zLpkdhkB*vj+hwiU-^tIaZmj}yeJ_Zaa#9GJdSb|yU^?m7)l=D?yc0``;cVO$i_$av z=E@h-{n9&REKSx(clv`#Axh|jMUXAUU~QTM)fYmihLmOPtUs{r$ThN1k3I^8O$xaG zRXIEufvs~HhDS1NQ87a!^nM4qV-U3A_~LF5YwY<~RF$wviOZLd*2t%?SvIy5Fpi!) zH#05LyPeYKbTGu%y~_QJIxax+Tco{=zsYmXJ76SH0Q~B=&K=~#kWIB>ogfI-f_%(^ z%7?iU0Co%;!e}vM6blhb8~phVaJ7mBhf#4{?B5tdEvONysNaM{(Kd3hBBL7-Il4NfkevK2V!t7?DRvaV?F zo>2-2QyI%J50&v!(e_9Xu2B;_CNTc!bWvd^JtK>w!qjT0FYWgRh(55v109zX z*T?r$(WeL_ro5hd`p|%)Z?;TXVGr!>Km0E(z({uu=k+K6PX+MEjJwayxO-?@{(*+T z^Q$7mEQj`gaP({anfVW~nYD^ny>h=ka-&~Szt{F1IK^GHJozrb{Hz}Vuh9pKo0%+DX1 zHV$rra*%#4zl&1!q<5dw!4Yq$fs117d6{*UtRQWSpUrfe3_7@OAo5d59RnT?WA$o> zY0{IW_aV6zo!qZ}c4x6^M$5fz_S#wjc7vbn4uWDjQ0?#6b9ZF1$zwtX3Tj|u&hU_YhqGXvJGDuDuzG&D>ErP1N$R@FH^;sgF(=$M&40kytNELJ z7g*lXq(7sYZ+WgmVcp=uIt#E;y!H6r`8(nBaD1$3Gri&OABEpJwT_NchT%0cS8n^s z^dP>qkt-7Itt}9kg0ZL$Wk$GvWxmC?*>V0*pY-I?o2zwxw$R>a0M{?J3`7mIQRnf! zIVBiPuEreoTKW%eoVjgRItt9EOyQFvnE3FGSzJ+!kk2S(2C^7Eemc~LdwSZUkm0EM(VnL}cg(NLh#SrT z_7dNIb`|qO!16m^YNsNd@xD@EFR!k53w(G?9&-R<#d%?qZ5O$)4uWpJLHF>|u~jo# z>u0o*qy6Xd@uGq2D->Ewt+TI-B{V#%*q&ofi43nYYDc<q&Tb`OnpMgdqJ)S z|Bukf;*1LeHt53+mO}$Si;T;=otkbpco2QaAE9G>!ne{7UOjp5@=|}!QUyhqllqI%0ucl*OanPRa zy^lU>{kG0oQEfO3a_?oTTdy0-DYbRZVv4`JH>c;e(=XaC4tUzd;pu*wX&K1V-72&y z#ilOD9FsqN)Hi+}6MRO6l%>JgWYR@W1OI*OVV7T^0{%Jk9k4~;a z;)0^+=;-h&<`S(X7sTH4YJolD`4JykjLEw*=zlLdDonH1WB)wLo#BW2#9Na*bfZHY z@tdfxtS_5u)_U5=b67l7j^vksi*$uKo1AccazVox(rPYxDC07! zR=}?UFnV6v^6sbMPaHf#W8gZ2JfB$ZV}g02^WD#_r?vGl=qG|r{fwIl}* z-QE?V%qumrZio%#4OtR!m}7iuoD0Hv0aS;cM9a)%BqfAt4l(fkhv&b>oJe*fX!#7D@U26c|T>IO87v7Ta2ifQ)3f z$z_?3YVX5)UNa0=*D0z>ayxwVeXVj7jhR^9YD5UDK5aVN1f{X}_9=#EmHHg>e69xh*)!h(4qoYux8^$-tKx=f zcu1dl1o^0TCx!0UXKN#P*MNTi2yOTxlJVU`N$CgK4};a`FCc;_#__eM$GppE3U9akKT>oh>U{QA$##~ZJb&eZ?tn3>_SYLg4@ zZJ}FONM)4wu+!{|#tphFZIpGNbYydPQaj=ohO0jHdao?CE;sXF{)3c^s-d-L?;nZOXnaK2*7SML^OfKz5?@Il68qqQb}D`XxQOjjidXQ-z*gp4wsv$l&=rLC zR{rdHa`D8nc`5S^yb5%Zg0lT#)be1R1zsn8SCeFX!MMS9XNj%AKI&R+Z7q@d+xPrx zI^vK`W;BS@&0>632@X5RCW|s)?5aOS<|;~Y__F9|HwBf!yPZq>WR98x6be>>~_1?kmbWPd~1ZtVdd$`d`!NN>--Euyt=Tdh?b5onur;( zwzOzdA85waU<0~yQDJb*LcrqtPKvii7~+BXA`BdHC{52h^35>;yV?+SaQgbJ@D_!l zI@d*8<7)BIPcgiKenm0N4N%nSMB*%6aa34HeOv$~$z9>$3-gCNq?77(wc^Gn9emRH zQ{17c7+;ne>GLy(#JrTMnEc122LRT{cVtgel6N(>^pDWJ^HjU{%!4rHNTo8BJL1cu zD9x(Z+aJHV^j>9oDBb8up@L(6!qY@AMDD zPaoo1M&1rS#>I+?751c=!@ztzzGrQwl|PGoY4sPukF5kziA+z{T0kV2z0Vn6Q(LXp z=&-#2CgBj}wKM`AXL&n{bAnG5*ll$pRN{Z)52rs9Ug;RhyvEwnxNxLA{C>|o*Cnu5 z2c=B$NjGO?_}RD*%==1iCN-9)p2in$Gb|*+U_!^yzkT7ub%hVP8Zjy?Nq1*o%D;P; z$pL>$>3ZbetpAkP^!{19ns3i7bi@`q&c5x1vU0Ttr+0Z&NLkfN9WQ?M&83}`^eW68 zvG#2UcxHNTUtx7bg^juv7qFwNVw#-moDd&`I}1ejEnivljet^`cFHk6@JIvIsz$EL z;(UYR^?6(&3fW~l=kkK?=*sEMfAKgQyDJ!H;+;x$9i(_(W?RLOqv*z52VP<3essE; z4{1(PVL6sZMs}uLXjArxl$;}sS{qhgADQ4!XgO|t zr+onh%DDk&4)u}h1H=6mKWl5S$dF`H#xv2LIWyK`T>fn~mm&;UeW$Vd;Qm|Co6iHd zb)FEk&wML?a){!NoBFgLXa3gUiP_b;q16M%hLs=tL`PZr-Kh2X*#ywYIoReXY6w<% zQV13%qxQ`0mX-qTRCQ;iI+7z0S*5f&6GCWNxO-!%f7Wi+`bJgF?BPITAF1?gyw+NyrP%(Wg|G1-TsRkqy^+TJQ>L6Qf+ zaFJYO$7~bQZ`m4xf(e{r|n2b*%=Ve1Gq9=zD0pu1}#Gw&$<3LY1m)^`lfSi(r^Hqfbs;!b3I2| z8OKdv6EE(rYZy{eN7vU7 z$I1R-6*}J-`|S1H@*D#7tL}WZqM|#j8Xp6J`F-w~Il0M;GSCkpgx0baK89E2G3o)) z?Y|kd#Ve*f2T5JVB`_$H^?PnUc<>y3c@{liY9yuj`&E&BnQicACXd_up8N0)em1RT z333vyB6ZCZet5EIr2Czg+c$!Ppybo&!%li~WUbV33Wu8qY+&{JZX3fvaa2?Z%s|88 z|3va0&X`?yeTgrrvP`a

=5f)cdomQuXI!XLQh7RI~iIb7sGt%u+31$@t`3 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%0Dc1XWu4ez#Hdo6=hEO&;n^VDg&n{}rKuhM> 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 u&F7ldKEb-Y-by;3BKKnmWD=h~A literal 0 HcmV?d00001 diff --git a/docs/source/images/openai_vlm/good.png b/docs/source/images/openai_vlm/good.png new file mode 100644 index 0000000000000000000000000000000000000000..16d392d96bfb1fc14b9d74124c6ceb6298e69b6c GIT binary patch literal 143741 zcmeFZdpOi>+cx}@y3z{M%2XuN%9NB+AyG^VQ>bYnW0gcP*W{99Ik-wpWl@avsxTym zqES|(B^8;3Q6{Fc7!1aGFc#nO>%O1wdEf25@8|yh{Qh{i?Yi&nx|kU==Xsp_vG4n_ zpL6?!*^wm+S1&{mWQoa90trE6M$rGs&4Hf~o*ivLkadU&;oxa6nci3PpV>IZ>r4r~ z1vcjV=k1#^WN!zZh(i8WWGXouWh}sbM{X|ZT}lY84XshHQNNIQ@ZiA{>+T1gCnPA| zc(_ol_<+&E?&+99bG~my$ArjoE9DhVU0`U(adqPjOVuzk4xvwZHwbe>wJOPrmST2P zVkz5>5?*2*a@p(t?=S!FBK+S<`2Y2B*v2X?mDcVPPjP3bxT3sL`Gn5e-{&n_nQK$JCzUJf zpn4pD=G-w+fB#x6_C;?&wI*l$*NUxYL$O*H`o9;~XPT~0E94sZek*XSj@=&e-16Dw zx`ymi!kTz^1486~e}3FP&wd8}l)TQ5K)!1Q?Z2Ks*j5#>X73gF&w)MD)6*&{DuUS= zNq+el`F!uq1-Ip}6z7(f7Fk(YcVR7UvOCLM=VuV}SgfWU$FKRBGeO&bYJ7T(FMc&& zHRyS_SS;@98lRC=1oW|+=KLRjUlU1kt6Y^Qy6)*|p13EBUTYxj-P`Kb_Gzym=s&)B zO+>?{!UcS_v^#Dha^=U-r&Og8IP@DV22A)&oy9fT`YWvaiq0<4B z>B-UcheMH~txzJ@&5NzCP$<4vK7|^6m_Md4-Elj5xZm#Tm-zX|_xlU1U)@w#hbxG& zB|q!8Fr29tUQ(7k9K3lmX_5Gih2iLUCHpCRC8AvQK{!kzG8t_;UkL=0$Z<{toxpI6 zXP+f@OF2UCXyQ8w%^{RW#vdZsW1TEB8F$i-${jQ%i?mJO>=@C{CuPg2Db``r88{q; z#fYRoaZI-lYk>2^owp(02lo#XZXo*G@w_ndOo`Xk}WSS&qF?rR>jT>gGH>h~6&TNqeA zAJ_aW&+pSliJ6{DgRYV}HsHN2Y2kRqnVbxwRa5lDjrp_3t<3`84=1m?W^X}1N~wS3 zLio6XhM(6&DA?E%Jq7q>u_2#_84>N zKMUlSPI%g*ELW$e%MTnAiCOt}^>%k|{7mOtTfCMYCOD@BjOUx{k7n)7FCS#QiCC+` z4jC{Lot2aqc@^H%86DTU6{%2aMBsfXX{2#Ay>bGMP`loD4dBy5BCbS{UY07}uNw+?1INt;0m;(BEgkVKK%#Wpj|u(EIh$U$MSKF65m^m*Z7rQ@m z_(g=jy4}D}+Obp9m64z9x>G!QbmyB@bauV+UGXz{4@))9uv9p4%QftKX znYfM{(vP6`jF#|L14_sslx?^_4*u|Nefjc$W~?zmEr>yqQ)A{fx}e8dRFWdp4R>Hs zwO2zgA)L-Wox!ljE>!!X{Ry_LK*Qa}Lhd1ZPv!EvhmfO@Z?SDsj;I7mpT%o!y}~lB zKfM=oUsPg5hac3{*|Rp{;N^Fk)&pRaDw0&@M55Nv&A$w_gL`at-9fX$@E7gv(B08gVUaz?-l9(zgD$zW?D|&VIr;Xu%)zP z9aeU6&##QWWH?AxY3o$j_q~j)xT4H+WW1@+t~Yc`+Ym9Bnn;(BeTx=5p%oiWFM95YHc?&723Aedth{41Sfu@o{PeK zg>CYyNsky&)~|fWKAg$hYQ9hMz};|n_Yadd_E{DwR=!f!-Jy3sqAW}e+MoO!Q25m4 z@6=I1CA61lB5&P#cNga+W;(|>hPS~w<2%At_NA#uk`gxkUd&Uh-N;J-kd12ux;%#~XzPey$#=puFVhz=`Rrh<3I!wdxg8`hFmSS z-Vz==A2PaAQ-4j!_Ywfxj3wnh^-Cg5buJJ#njPumYqeFLB2v}LmSGwne{=Pp znG%crCnm+T5qh?-Qu+f=UuxZ{oPf#lEHizF+3l@=m5GRixd_Es)H$A*>bt|V0XCi^ z_P6=+Y6)dhb@t7Wum9jw=o<6=6S;#%KLoj!jncPMju8gqm4{}pzOAY?^y0_#R0K>b zSf&B2a+Pj=TJuL_aO=R?*~cAx!@X@^cX189M&iu8617hnR!nrKSnM%{)^@4Fe=+X0 zZ(`kaO=7-l9r+mkwt97e{hMH>bB~T$jAJEMAlc8A4W#mmRxG@=PA->i8G~mc2T%lU zw$>Etgv06mr6d351SNUHZN?YZFJy^CQku6W_@N@sBvPX~O?^mT0n?^q7WvjqxyggY zc21CAt^MAk1y15+?I1;tSoQ#${HY-KoW>sq1L;O`=wtZLT>(SM6kGuhmnN2?Kb*g0 z^+=ejpTpGnAV>UW?Mif$JFXU=-XgFv zZ$GThvZGx)VzIV0b*6Q4SAgwAzForX-T9ijaGbtiol#YkYPQI00WVp-c zc!-FI+alS!(%|XPB)4Xwv8;bV)DfM$pv)x{sq4h^&A`a6)V?-9qViDDh%)?Z7iC7u zkBDu4y@nGo`Q_c3E7DiHRQF3?7H-$O)^5<}oR%_Ke~0V;>$%~Jwy8F=mVDX?`Bul7 z-js>L*rj!*&uL}Yc>}FZ*9;4%*q?ahDz{KAI`+_g#!^hw256X=TZ+VN7j|=9-Tms0 zTz2Co?r?K+bL56PveLqNRc-|u#&00$~;x8K|;7iC49WyqW z>gviZI1X$vPei6L8E=A@Bx*TSetqhoQuX(K4YVRYc3jOqJ?EcvR=Mir^3jn`){{+P ziM-g-;N@d$`GZn{hX2KWQQl^5ao6W%-0uPHt$pEJf7-0}VEasrmCi~gl$2Pa)sYob zi%uyd?tEOnD}?^!6f3f(L=tq%M0r@n+#sg_xAx~z`L z(!#tY<$8Xn`CYVq71Qs$DHak_{j2R0^$Pp?8PoKm_+jQTv0c$Mil#W_>X=Mw`53mz z<45wx=`i@C<-?n~dDcZ?NYKk^g=SIBBKe8&&6{7EDR8@sg+)r6%+~5o_oVMD85)?; zuqx?jGPHcw-Vr7-bUVZ8Qp5EU0_GpK>ZZdc)~1#}E6myPPeiH@W=~6|dzcmaPkUnB z4I6nW%jP`%aJkgMs>5BWWnafvTHg4t5dJ>*%CAj!E!X&;xN;U#KP-d`{tl2ebxu3G zjX&1WT`~KeU6ta;8@GP79tWtEIWFMn1$5i()k_%`KTp~1HuT=FE}}YYv#S4abHK!O zgm~tyR+gW7O)*_gTyWh(K=UjcnR@*k3csgaLA*rVcT8#j(-~F)H2stLO_-;Jh4t9= zK}RDq>Mkpu#0I0i79sBr<+W%0@+pI`j382J+t3ODI%q@Igg6H3n(a$3_kl{7@_%^=ZMj>4YoJK_;bA zngDPI)XM2{+gQ>TCe-nR+X)~aK3~>OQ!n{-XKVPr{ud98Ltg)T0Gb(7+OFyCY+N4W zOnrVu!*0j)6BR3pxgqDmS9+1Vrrt<{^Zb&$py%J7WX^H}tj9j*GQ&zZBfFwf{r`Mt zwbe&K*KgcXN%?BKmh>q8fipjIJh7=}SYM3^TzB2#7W1iU%*~MHRVq3eUsvjc@2I?T zu0G(+?qTA|CqD1O>$$preSK84H|9@&hwhkq?!NJwVR_DElqC3}@0V3lSF)XLiI+pw zgQ@4Uq7kFzulX0_`}ww3#eYi2sArG?ec`vw7A(7ZL;IokITdcXB0Xf_|LlRr36GRg z{6$5o2JYhxbxqa*b8yfsKN?H6#~b=OU$U^T49j9P8+m1U<)oVW;MF>_4VB{l0hOjWS`AR5w2J`kC1yd2W_Fl6Mm5!_FeB)k0ws|t%V0TYp+Jm zhj#b&UQ@2p#xqxk1#A6*5Sd?YZ%*;*FBY!7_W9udKt4Ucmt208?iwRqvtDu~b?n3K z5Y_!#vPBjtc9O2Ly?-cdOPRiH95Fu7`s7r?BY|N0<1X{uEi0#^4EN03dvo~DZ|7`B z8hS3Jl4)I-^#(H^7WhV}%r&*z!>G`w@hUxJ*NGCk+%@N}x76v>2yvQ$LTCJsZjdtWy_l>nbEfo87G>cPq{-k5vbiFUk z6jZJCX?xurk}RNM_Z*C3Uwme=TCe&zE1`1wL#nFn*!OzZTMs3l63zIY6$k%ivF$cn zX~6jvZk1YoellZNbN^z@&;9z>W+MUDuK#!ABtI{a)TSCd@5*kJ?00i~xLoe<&lkh` z#4Nk(oyj5QDzs0dRi4*7!k!+RDf!708?5RqPn{WC1_H=2-nO(r{AHK_C^LR@l6R}x zM4EyrAtRdA6fHC{{EL_09nk)&X{ABY(EEs9_n#dh3agWj5WEz~iJLpOr%FrTfnb^$ zjoI~d!S#-hg=;k=kzy%Xq){EDc=L}Xk56x@jMFw{GTvP{DOYz{drR~kq4zDLS8mEI zkMz2Gq|RY)3RSr(Pvn!5#efHsKB^f9YXjn>2&0J`9ghE#8O=Emxxq5#mOb{+N!D2) zymB{oEC$A04?VKF!%uMJt+pwPogxH2q)|ONIf;_;rT0l&s&|4L@cy5k0E_XlKtpbh z8o?mdu;)=a7(&6BSP3cm zQ$1kjm#;wgX#0>F(=yfPksTu zzvZk=>0{5n9?k{)c*E{g3H;_oYiYx=&!;-R zaM$kci(00LX?^p5f*Cu!hlA$D)6N+2-hYc<%On!%YB{Q}Ig5B=yMw%{9C+ZfeVL^VUQVh&Dsr>p?RZ ze6~{Ua((6zbnC(opQWuP6sa&I*6=UMR;D_9f~1?KPqte4_rCJ^Hb}FhBxmB0<#*pf z32eAc`Y4$$D%yiw)?N*k>bnb1PpBWovw6U)u*(i%5FlFDIR;Se8AeCF7VX_oA zL^F)7cCPc?VByiH_W0Qh$062Fk~@e#c^)rj0n}a>NUsPGpkQ zmjm-U4=zcKhYg+y7TyA+GESp9R15T+Thflj3VK}+hHLk^e#tN~lKUF<+c&b-j3sV7 zUkanHKP4am4xKa?)TsIi2MuT4CSKeO_UjXvwTc7Pp43-!S-wB|-zDyisTk^ul26*P z9AWH4S#^Cx9@g{6J+7_qap1_woiqK7M^ydxr+T7~3l4XY4Gg198V=tUG(PU0h&3x2 zI(Ev2`?u$p<}$Y55!fBl$0`3;XN->!!nd-E^0&8+ByXSn`KhUhCXCrtt0TU*LpbLp zaH0tP@yY$q%Lm#@w=09&XC#NLOC#!fPd9$Lo8l*GtjKe1V6@RS>IV<(ynOWMC5deV zFGV&mL^$%@oxf<==7=Q!(K;0yZ!guy(IeeQEWVH3yrpEPJ2BO70+i?HLuqWy|4zfe z4Xc=#a7PP@`=;fV`f^}ltN8+}iVMxIn@m@YPOPf(xZc6uvp@gO$#0UC;}50jrJ4uk z5`r?(?l@|r+qXA0(XBWBcXu2xE9X;u^BL(nrdfQkry)DM?PbdHf2aEVXA>hhQ@thW5dw)wu>YIH=4{Y+L4NJn=Z+@8aur z4DzHWtj{jRfFf4#Nb&5>a4?%uEW1l`>R7{{acpjBlV3YjFR)o2q^V6k#}5#4Qxe^| zzbwsdcVA7tUWGyKZSwi{Wt(8~b=k0H^0mQekY*dw$h&<igIy4yc%~v&; z3cML|#oBP7_f(G5vmwB%X@c6Pi+FjNaiI)%0E6zfP;IG;4v{>xtxlo2jH(#gUIP;6 z8Q{MVbtnD>;rg`Zqr&&XadUTDsX)4Y^-ldr(t)V6PW2^!Q#6ak40rkQ_A^oZW_Q9! zr^re?UYDlAcQKs&G;iWY2>o-zqf1a~B{S~s6_d$P5&K7t?Q3r))74E!RGqd>zf(xn z9qpCPq+Na8rIidapsc8`gj?&T+&yo|0qE+a_k7RA9~Y>d&(dg&nEn|S(r;BFiK`XO z44?LLtv3%ie?DXsNLBr1ZR@7KuC5bArgH+i<@VSuOk`bnTX?uUA!8GGfGZcy`|T{< zScker>1_EM>rkKWN+`zYC|>3z{G^E2c~uwh$Xl+BxqrEUm+9PmSsQJ04vWE`5_zZa z66g#Pl}ar!0gM{c=X%&ssG70$YMTDq^gxzhgF^4{vAM+oLI#ifa;xh0#jWGv_4DRvvuD8gKn~u*{ai4LF zQnuK1+h@Qte`aQHe(3kCY5pwD>7F}y9xs9L`E|`O`Fkv`6pN;c#+3h6>nj}T2%8E>_q z^Lt0H>ud6tFdnU+zmM9oT;N-E%zV206D7~EKd4?30^~k|E8yUxNiM8HjVKb>287%u z5%Oa%w72{w78_VOO31D)1Alp4(4$6|cNgj;H0J3T$2<`c5B5TgZj!pILemlH<-{ORV(}IaYVaj-0f&Kb43de1#RkbJg z%$IMT<@#dI#wf!ANtOYvVW5us`56FNjz!H{-kxMQmT>yzHO+A&WRDn zc?xn+;{4l!c(?39w(TeA9)o4RcJqSl^#3xk@|8!{rqsK0soRey>0g~}JmPt+$Tvb zA3_`DVVmg=Zcbj(^(F;>+RW`sy>@rz;J!Zd|M9%SZ!p`CGZ7`Q)pj{9jf~w>JKeXH zwy#IYM%TM%f%LVRxk1^V{bF0z*)NF!gM;A*=XtrN?vwnyx_yBf%8(j{%Zwf(NZ8?< zbbYS7&2v)rWtM2v=jpk*Nc~&{oXdqbUb-du8Egj&gMg1lS-PwCYPx#R0RrueOt z{1GTc(ns_$NFb59bgm4>k^;tLn3g^EY|a^Yg>{RK2{57DQAs#C7re1UazCY-0UVH#3|bdFoJw!}Xf{yP;AiYP(G4Br3%17%AYYbd<>V zp3cco_&)p*MmPSw%R*ATTVH)95UlpTGoNys$h9kP;9FHZkv_>%wR-Ap>^J4yW^nzd zT2#0)J|i%*&uYtF>s_wB6#{aKk2c6ud@%->}JMpr-%=n5|8zy z54XM$2H3rDXwCY=V@1$%Xp%0_BzIK|eD1K*p9~$AcT;{C?LATK0Tbqu@nVnEsge68 zX|F%iKzs>&+(UTRr__vRrQyRwstlq(`aTi0ux@UauNeQhzFE(GU`D&Ahy5;*=3*0&IK@i5?|QXNcrYju_xeF`c@#BW$u6Zi!!|$ zhg435w+IvWrjqYm1y#6;x;KAK+(bu+tzAJ!T$Eu3+p;k2IoZVAQ1SqXXsA$^E@vuB z8@;5I%lX;kJ$qebSru^2TCv1v9md&lZ*E`3jJrbT!d9rcS@7xS{Cp7+o_PI3kag|N zP0SIM=bAo)@oX5Njpqn-P4t$w^3Pl{Y$!crg0I(x5!Zwtr?7CBNhC_e(79JSfIo{3 zGjGO*+dRG4>IsfrP9ro(eJ;$-kF(CM#}PK56D^Y5-*jHHwkf7gGQCa?#3p;sVq*%6 z^q9<=j!QCg+whCV0$KGRw)bQzsl4 z8d|SaZm3plcFqc0wd;?uC;tw{+`FsS>~&RFP+6TG63KF4PwT&Tnu1@lj@bYYf%Zy;b&3*{W%V&HrhdE>-%%U#LpwJQ3~Uq53o zWp~-ypDhBqW;VV#!d8*gO)DQUI>k!R6n`rj7>u^?cXQDcKRkeZZvM07ocE6ui*Q5g zcbSm>jc68No7Hq@c$KP88&G0P$|B~2!mSlBUB1J7xhM%{URrY2$T={++!vjVz_wg( z(2~y8RcKYEI9FGWO9g%xALRR2Ckqet>8i~wt4_?P_F0zU^!I`!ar=TfB@kjusLa%s^9DGwoL&S#bdQ) z&^Uqk&rD^`b9SjM_Ijzhh_Y)W-l$!eqBHGST`p_91JQvJ! z=L9lkKX)rS%!9H5`;05x&)rp-;k+f0L2^#Or3s)U73aVt0359p;Vt{i3At>7wntBc zIj!eZh^oI1?)AT??M~TO8qO$|B-?lsf|7qbgDxAX;+ojzIbLfhc+-*0QQ5n8)`njB zzYZ=7Ucoo2!VK&oCoZA<@j7V@JLF&&Ozcj^#D5Z1+qd?uCV_x5p;+CH0$7svH*MSq zQ@nf34JX&|m6bL6?gsZgvYWKC0z)`6N7u<$9!V z^j%`x)pUmw{uQzz*A{<#llNKhs_4_;m)O0ls3GB@m7$_7%V}O~qT@L#Y;;dmc5J9A z1x-jGfbrlis{Ht#wy&~Zu-hvi*UQ+{vw3!~L3C`7s{csWaH+x??H9=GXC+O)KU;ca znmqP%*W(0|+eg92T!16uL1h)}SPXKBi2Fibe*xy^Z^^7pK_`eZf$X#RTl7jSDzuRE zta*r95Surwk7p{Toz0O66qT^aOAza(C2yWsYswzr;7uZZ%2T+)dhI39xWJu)zz7it zwM-!6%dkF+4O;)V)hVH&Bbie~XO>D;ypG!iPfrO%l!6qWZ2q4n<+B#_M<=V5ElN@d zgz;I~-Ptv(sqabmhBMaxnBB-DZ8YNy#_NKB-8IwJFc`9UiLugkV@T1M5U=f@KNFwv z5P9hq)J7Z+pwl5Vd+(l+-10g0S%=K?CR_K;T>G5yQ)sPkKNKPf4(M#IUYTdp7(ow* zGG;P(&4<$;GK>iLjW{RE7_RX4Q5Z!(<>`e-Rd+lCdqfsf2#zii$c}+n5qKEG`V?x6 zBcWYtfLrb0CukyPId6dhc7EOE7pSmk(}5`iJq~T==ICJJ+O=yNOmNJ(NK3oapLNzf zfi8zZGc{Y_WKotN=*dC}sgvc(xvwDLrCC1m1%E2@DBk{GtB!vTt-ty{iCJ0kWQJl< zGxK)EktCQ4rH^$h&iQ%sHa#+!1Nv-l-kKLfcTYv=b{NAMFdPo6o-MfE7zk-AR9fSR z^~+&~4P!afc`k%#gcAIFc-!2A=UL!U8_A(rtUS>|(BaMrhflVHU@EcAx1!vAhl3fv zGMW{t#8$bX&)etGh0>=uEC3hX%VyY^76DzJ)*S!z<{M~XJ@B4H${lSAUfg3 z1m|TK6TD5+3Zrurn9eZ37g(}pPjBQg&3HYJ$B?D?A1kC+wWN)A2tp{0^I}c)`x~Zj zB+XYn(13E4d}&P*i~(M^NA$Mv?%$OB{Kp=HHd!BQ$+6+i!ITiS{+w) zQ@QhDnEd#|aM|JX`&?nv25`(EAF>JOaNHnO$>^e~5#7%qpRE~N4JJg2&;)opG5gic z`7k0vEqgKrIY0m{DzBoaZCby<f^<4HkkB``aC=_ z0HgMLZ51pQQep^9Q6n=>sDqf276Ss)Ng{jtFSB#@keS%-&mm1J6@`Wdeh zOHkIk_K00ncUjrH{l1c|*Ut=-C`HV_kvrNuK3i>xK5tHb?mvBF-l7?u*$CMV8Orel zkYdmjiTF01m2~8U#>!~Oy*0UIv|(8%<<<>BL~bYZ87WWLNZCzbgtr}ycZxsz_=Lus z12LH~M;EFwW#!QRBrBL7s8RjeT3#lUjYi+iPoVELAwjB#{R zR_N)~fVxr7n2Y?4o%^>~syV`)xGFD?QzfcvfVq;@- z5WAX18TCon(5Ir3*Op=Fq`eXF=9-NKrO(?I4M{m1k8vd8aW^tu*a>K7j)Fe_v12FB zCuK7e>iFFSEx9>xf*VDnq-?+_h^7@BC&r_XyqgHaP3xvZ1eOPzylweH07Ha9n(#A_ zyP<6wO+xN*g_x5Rn}6zOUb72(A!3ikU5IgXPM8x&dVEe}5>0XfO4L7Nv9_5+u9K_P zX$!44+ehvF`V<0|By`#i!iSVS_fHFmsP?7&H**}zfZVeoUwq~MJx^Ye_nunCos@xRo$b8gw8r3(aP+2RC0LsxM0%}`kFear614G4{>gd<*`26(E^ef~q|DKO>wPCs*9_uMBf!=jQO0&$BZu&BHAmk4$4*EDEZ|+zP`~wwIKAZuv%OF zPMWr|2W&?U{FnM}zG1{f?Zh~o!y6Gvrg{63s)G+t=(dk^I10Q75{EUj`|c4T}~2?!gcsBjN>;o9jNC8p)wKrel!=x%-asj4!`k z#5n+Ma43oKnb~bRMs#h{s10BOfjoj39T21mKYuvB_E@7RG&p#*xEC@g(C&l&N(4VU zZi7j&wfv0-=QQ-f9YXJuCSj@X!5aOJELT(nd`j4zC;FI7e-EGTeaBT8{nFDe5Bzw= zBz*vq(bxGYaWAzw2x!V>7Gw@OuA*^-li8=onko4j)sYaZ38m}p+eZ@!N<4Dddr-ya z%3?K%!rPv~Z2<)H+dNfFJE5-5g#0Pm(jce#C{z6oqe< zDDzDwa}ei*)o_AIM8auPlv3qFFl-AmNb$E>=Tol9+<)FMs3Z6Q|>%8xNT7en1@omn!0@u!GNN=i(Iqh*qNWgO#6fd+19e9!^c zEZJX4r)SlFz`m)e*WPXF5NhAa_`(sxgXxgH!TE@j-D}Fk`!LYN8p-jxOag%>SpSP7 z))f{}G56zdKjJ-R{}HHo12Fb#E&P3FKF@cSBPkcxr_PLUr@wQZSw9aY2)&i7oD+iW z17lm|@5q&n)Ity@ybZk=@bWI225fVk>2&3cFt?l5Gu$`fJPr_$qw`rF{32p@l6&Y$ zyobB{Da!s-ZcXTXCPQK%%w^Z=u5nPjPj_Lp`Z7<4Vlc_>JhGF&m)B+fSxR|c4wR$f zQ!0OW;=6Vj&&P75)1DBl1HNN&QcsvfG9n0*v@&_C9ggEyIS_*Aah5P&&}5FlFqWDC zqKooLciDXjhgU+iLdy$uMN%O|lFt!Q|M)^E5C|AnFbHpb1ri#*W1nEc3?Am|?ftEY zS_@#7#h^c;S~-O3txMxILz=v{xQLqUPDh_EbD&-u`Rt*Bp-K6I8Mp{zM_d(r5d566 zzYJ2PoFi}ZL~GZsO>%FQ!e3m8k<*h#8AlU9eIO6S zz7BAC;ArUJ(9lkypFwJ3<^r__a;&3FpqujT%lsm2x|Wmj5hqP%uXL@^XY$>nwch+9 zdu*r{ej{AgSdD?l?76*oeX?+8X@QB%Pgl@%$K~6!P zxz^BsDjO_;SpV+W=Av6l&M87SPOuyb{@M`AV`#jY;wFM!AMT)uuvJtBOiJT*J)Vn+F?I$Zxe#3 zWKN(Vx(X(+!Enz+9mixO71FQSY{uC%?KXW=L%0}f?}WRf1x@J>1j52e?);)?5{SKW zv9zP3qlgL@oSLC;czM0o^%Wb-31-Hg%N(H4^pcI_2-gf!-D`A zt$OOb8k5bAAwA>i3TcAdkEnc+h$6JEotT+fiz%1z$iRtuW@ct4Cli40xeFv}K}qgJ z6TBlUOsij-Li$2hc%$e5b4d!ns1l30tpynrz2sarypbe&13BJX;EBB8a3C&FV@;VC z$Pu%7QjRdmSgz(c0jwdHgu{eqJmj8xxYpA9TAf2fBvpfn59XY~$~9ttN$Gz&yS?8E zw+BpA2Ta5Um=N$xKA%sz!{)&@)#?gbTlIv&_B$%ulbSpnJ9Bcj;u13P!tapzE277d z?r5!sE3&vbA>R#Is7xSf;jX=~TSUCm9|-LL!3jP@ ztFKeI7Vd)FLn@!V6$ho@X%j++%MDBhl^?3rDut^!p!DD%7CR>-?ZPyY!RtCisEkW; zhdT(%9S8(i+G0^j(lFd>t8zPz-@ku^7U1ifNSYIvCrZea33Rlich#jI5qooe*Y5Xe zK!I5W`B5sE?tk;f7>+^r1IA;vLBLEI0~hl9T&NoQA1Bm=(qRp+@Ok7MhF&UHZ7z6k zdBp5Y=Q!9$f90woYCK>)%R?YxGGLeA>o$3)?2xelK3UfNGUf+u=^cSH7QNQ4`mzD zp2RO=%AyxNLfhipD~~sk#XN5n0u7r0nRhenguNnhF{C!as=l zJGM36JEh7kDbpGIhu8fJp?0&AO#xzwziY}R3~(yO1^JpJ_Y`5V^J)r9E0eL*LAx?Y zF_+EeQTfe9eNtOO5!I@xk-TU=T)qJDhAv3q)lfs6$@_EY0dHx=U;{pkOqrqiXxrCVQVG~W#y~JFOyCa9oWR&FP zur;gUjn!$J*1{S5jZ!Gs0^w!=za-)*+c3B30BL)Hcb+7KYT+W?&G5QH#iyc@;R$P^ zR;8Di!ctIBph1aO)krzJ3f<)~rFo}_T5x-ld78oo1Z9wFb#asJn++$PM$md^rz>XX zZ~vmtg_M51_F~zxk?SW2KbW3Q|BcZZQmHiGuVZV#R8_zf+-7 z(vpU|uU&A$SjIRCB$>{r#4-p{4AlZ`Y=i5ejg8R&MH1SjPPFq7vjHaV-d%*TcY^Yu zz~WT`<0s-|5h|;f?>w0`%nM8~BcC zRCXn;Ps66ut?ld#eaCXCR>JQ^RAM$qjJZ!I5!pQS-LiQM&`j7r;H~myF)YzSgeIV{ z+-uoqS!~H#1lZR&f{e?;s_lYgd$9czUS|>zBedZw5bLH#aq04ZPJ| vFOHK}<^jy(uhq-`CL_7-l0!hU* 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 str: "content": [ { "type": "image_url", - "image_url": {"url": f"data:image/png;base64,{base64_image_pre[0]}"}, - "detail": "high", + "image_url": { + "url": f"data:image/png;base64,{base64_image_pre[0]}", + "detail": "high", + }, }, ], }, @@ -204,8 +206,10 @@ def encode_image(image_path: str) -> str: "content": [ { "type": "image_url", - "image_url": {"url": f"data:image/jpeg;base64,{base64_image}"}, - "detail": "high", + "image_url": { + "url": f"data:image/jpeg;base64,{base64_image}", + "detail": "high", + }, }, ], }, diff --git a/src/anomalib/models/image/openai_vlm/readme.md b/src/anomalib/models/image/openai_vlm/readme.md new file mode 100644 index 0000000000..f1255ee1c9 --- /dev/null +++ b/src/anomalib/models/image/openai_vlm/readme.md @@ -0,0 +1,85 @@ +# OpenAI VLM: Zero-/Few-Shot Anomaly Classification + +This repository contains the implementation of the `OpenAI VLM`, a model designed for zero-shot and few-shot anomaly detection using OpenAI's GPT-4 for image analysis. + +## Description + +The `OpenAI VLM` is an anomaly detection model that leverages OpenAI's GPT-4 to identify anomalies in images. It supports both zero-shot and few-shot modes: + +- **Zero-Shot Mode**: Direct anomaly detection without any prior examples of normal images. +- **Few-Shot Mode**: Anomaly detection using a small set of normal reference images to improve accuracy. + +The model operates by encoding images into base64 format and passing them to the GPT-4 API. In zero-shot mode, the model analyzes the image directly. In few-shot mode, the model compares the target image with a set of reference images to detect anomalies. + +## Features + +- **Zero-/Few-Shot Learning**: Capable of performing anomaly detection without training (zero-shot) or with a few normal examples (few-shot). +- **OpenAI GPT-4 Integration**: Utilizes the latest advancements in natural language processing and image understanding for anomaly detection. + +## Usage + +### Zero-Shot Anomaly Detection + +In zero-shot mode, the model does not require any reference images: + +```python +from openai_vlm import OpenaiVlm + +model = OpenaiVlm(openai_key="your-openai-api-key") +result = model.api_call(image="path/to/image.jpg") +print(result) +``` + +### Few-Shot Anomaly Detection + +In few-shot mode, the model uses a small set of normal reference images: + +```python +from anomalib.data import MVTec +from anomalib.engine import Engine +from anomalib.models import OpenaiVlm +from dotenv import load_dotenv + +# Load the environment variables from the .env file +# load_dotenv(dotenv_path=env_path) +load_dotenv() + + # Access the secret key +secret_key = os.getenv("OPEN_AI_KEY") +model = OpenaiVlm(k_shot=0, openai_key=secret_key) +engine = Engine(task=TaskType.EXPLANATION) +datamodule = MVTec( + category=bottle, + train_batch_size=1, + eval_batch_size=1, + num_workers=0, + ) +engine.test(model=model, datamodule=datamodule) +``` + +## Parameters + +| Parameter | Type | Description | Default | +| ------------ | ---- | --------------------------------------------------------- | ------- | +| `k_shot` | int | Number of normal reference images used in few-shot mode. | `0` | +| `openai_key` | str | API key for OpenAI. Required for accessing the GPT-4 API. | `None` | + +## Example Outputs + +The model returns a response indicating whether an anomaly is detected: + +- **Zero-Shot Example**: + + ```plaintext + "NO" + ``` + + ![Openai result no anomaly](/docs/source/images/openai_vlm/good.png "Openai without anomaly result") + +- **Few-Shot Example**: + + ```plaintext + "YES: Description of the detected anomaly." + ``` + + ![Openai result with anomaly](/docs/source/images/winclip/architecture.png "Openai with Anomaly result") From 5788d226ea3cfa77bde992bc5f0492d4c6fd84c5 Mon Sep 17 00:00:00 2001 From: Paco Date: Tue, 13 Aug 2024 06:23:05 +0200 Subject: [PATCH 15/42] Update src/anomalib/models/image/openai_vlm/lightning_model.py Co-authored-by: Dick Ameln --- src/anomalib/models/image/openai_vlm/lightning_model.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/anomalib/models/image/openai_vlm/lightning_model.py b/src/anomalib/models/image/openai_vlm/lightning_model.py index 024124467d..330191c5f1 100644 --- a/src/anomalib/models/image/openai_vlm/lightning_model.py +++ b/src/anomalib/models/image/openai_vlm/lightning_model.py @@ -240,7 +240,7 @@ def training_step(self, batch: dict[str, str | torch.Tensor], *args, **kwargs) - @staticmethod def configure_optimizers() -> None: - """WinCLIP doesn't require optimization, therefore returns no optimizers.""" + """OpenaiVlm doesn't require optimization, therefore returns no optimizers.""" return def validation_step( From e4f6becc25ddfafaf102397a899bc351758c689c Mon Sep 17 00:00:00 2001 From: Paco Date: Tue, 13 Aug 2024 06:25:41 +0200 Subject: [PATCH 16/42] Update src/anomalib/models/image/openai_vlm/__init__.py Co-authored-by: Ashwin Vaidya --- src/anomalib/models/image/openai_vlm/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/anomalib/models/image/openai_vlm/__init__.py b/src/anomalib/models/image/openai_vlm/__init__.py index 237441b465..6ad345e46e 100644 --- a/src/anomalib/models/image/openai_vlm/__init__.py +++ b/src/anomalib/models/image/openai_vlm/__init__.py @@ -1,6 +1,6 @@ """Llm model.""" -# Copyright (C) 2023-2024 Intel Corporation +# Copyright (C) 2024 Intel Corporation # SPDX-License-Identifier: Apache-2.0 from .lightning_model import OpenaiVlm From 5437467fdfac164a4b47af2af888a556566db9c1 Mon Sep 17 00:00:00 2001 From: Bepitic Date: Tue, 13 Aug 2024 06:44:16 +0200 Subject: [PATCH 17/42] Add fix pipeline bug. Signed-off-by: Bepitic --- src/anomalib/utils/visualization/image.py | 1 + 1 file changed, 1 insertion(+) diff --git a/src/anomalib/utils/visualization/image.py b/src/anomalib/utils/visualization/image.py index 1d7e335485..649dd5032f 100644 --- a/src/anomalib/utils/visualization/image.py +++ b/src/anomalib/utils/visualization/image.py @@ -165,6 +165,7 @@ def _visualize_batch(self, batch: dict) -> Iterator[GeneratorResult]: image_result = ImageResult( image=image, + text_descr=batch["str_output"][i] if "str_output" in batch else None, pred_score=batch["pred_scores"][i].cpu().numpy().item() if "pred_scores" in batch else None, pred_label=batch["pred_labels"][i].cpu().numpy().item() if "pred_labels" in batch else None, anomaly_map=batch["anomaly_maps"][i].cpu().numpy() if "anomaly_maps" in batch else None, From 982c9caaf8b4addfe1def23afa3e5a4bca3f0d9a Mon Sep 17 00:00:00 2001 From: Bepitic Date: Tue, 13 Aug 2024 13:33:52 +0200 Subject: [PATCH 18/42] Add test. Signed-off-by: Bepitic --- .../image/openai_vlm/lightning_model.py | 33 ++-- .../unit/models/image/openai_vlm/__init__.py | 4 + .../unit/models/image/openai_vlm/test_api.py | 149 ++++++++++++++++++ 3 files changed, 167 insertions(+), 19 deletions(-) create mode 100644 tests/unit/models/image/openai_vlm/__init__.py create mode 100644 tests/unit/models/image/openai_vlm/test_api.py diff --git a/src/anomalib/models/image/openai_vlm/lightning_model.py b/src/anomalib/models/image/openai_vlm/lightning_model.py index 190673f0d4..619f3f7913 100644 --- a/src/anomalib/models/image/openai_vlm/lightning_model.py +++ b/src/anomalib/models/image/openai_vlm/lightning_model.py @@ -58,7 +58,13 @@ def _setup(self) -> None: pre_images = self.collect_reference_images(dataloader) self.pre_images = pre_images - def api_call_few_shot(self, pre_img: str, image: str) -> str: + # Function to encode the image + def _encode_image(self, image_path: str) -> str: + path = Path(image_path) + with path.open("rb") as image_file: + return base64.b64encode(image_file.read()).decode("utf-8") + + def api_call_few_shot(self, pre_img: list[str], image: str) -> str: """Makes an API call to OpenAI's GPT-4 model to detect anomalies in an image. Args: @@ -75,16 +81,9 @@ def api_call_few_shot(self, pre_img: str, image: str) -> str: Raises: openai.error.OpenAIError: If there is an error during the API call. """ - - # Function to encode the image - def encode_image(image_path: str) -> str: - path = Path(image_path) - with path.open("rb") as image_file: - return base64.b64encode(image_file.read()).decode("utf-8") - # Getting the base64 string - base64_image = encode_image(image) - base64_image_pre = [encode_image(img) for img in pre_img] + base64_image = self._encode_image(image) + base64_image_pre = [self._encode_image(img) for img in pre_img] prompt = """ You will receive an image that is going to be an example of the typical image without any anomaly, and the last image that you need to decide if it has an anomaly or not. @@ -113,8 +112,10 @@ def encode_image(image_path: str) -> str: "content": [ { "type": "image_url", - "image_url": {"url": f"data:image/png;base64,{base64_image}"}, - "detail": "high", + "image_url": { + "url": f"data:image/png;base64,{base64_image}", + "detail": "high", + }, }, ], }, @@ -187,14 +188,8 @@ def api_call(self, image: str) -> str: - Focus on obvious anomalies that could impact final use of the object operation or safety. """ - # Function to encode the image - def encode_image(image_path: str) -> str: - path = Path(image_path) - with path.open("rb") as image_file: - return base64.b64encode(image_file.read()).decode("utf-8") - # Getting the base64 string - base64_image = encode_image(image) + base64_image = self._encode_image(image) messages = [ { diff --git a/tests/unit/models/image/openai_vlm/__init__.py b/tests/unit/models/image/openai_vlm/__init__.py new file mode 100644 index 0000000000..14bf1a05ac --- /dev/null +++ b/tests/unit/models/image/openai_vlm/__init__.py @@ -0,0 +1,4 @@ +"""Unit tests for OpenAI-VLM zero-/few-shot anomaly detection model.""" + +# Copyright (C) 2024 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 diff --git a/tests/unit/models/image/openai_vlm/test_api.py b/tests/unit/models/image/openai_vlm/test_api.py new file mode 100644 index 0000000000..5c9d999963 --- /dev/null +++ b/tests/unit/models/image/openai_vlm/test_api.py @@ -0,0 +1,149 @@ +"""Unit tests for OpenAI Api funtions.""" + +from unittest.mock import MagicMock, Mock, patch + +from anomalib.models.image.openai_vlm.lightning_model import OpenaiVlm + + +@patch("openai.OpenAI") # Mock the OpenAI class instantiation +def test_api_call_few_shot(mock_openai: Mock) -> None: + """Test few shot wrapper.""" + # Mock the return value for chat.completions.create().choices[-1].message.content + mock_content = MagicMock(name="message.content", return_value="YES: anomaly detected") + + # Set up the mock chain + mock_openai_instance = mock_openai.return_value + mock_openai_instance.chat.completions.create.return_value.choices = [MagicMock(message=MagicMock(content=""))] + mock_openai_instance.chat.completions.create.return_value.choices[-1].message.content = mock_content.return_value + + # Initialize the OpenaiVlm object + openai_key = "fake-key" # This won't be used since we're mocking + vlm_model = OpenaiVlm(k_shot=1, openai_key=openai_key) + + # Create some dummy image paths + pre_img = ["path/to/pre_image_1.png"] + image = "path/to/test_image.png" + + # Mock the encode_image function to avoid actual file I/O + with patch.object(vlm_model, "_encode_image", return_value="dummy_base64_string"): + response = vlm_model.api_call_few_shot(pre_img=pre_img, image=image) + + # Check that the API was called correctly and the mock returned the expected result + assert response == "YES: anomaly detected" + mock_openai_instance.chat.completions.create.assert_called_once_with( + model="gpt-4o-mini-2024-07-18", + messages=[ + { + "role": "system", + "content": """ + You will receive an image that is going to be an example of the typical image without any anomaly, + and the last image that you need to decide if it has an anomaly or not. + Answer with a 'NO' if it does not have any anomalies and 'YES: description' + where description is a description of the anomaly provided, position. + """, + }, + { + "role": "user", + "content": [ + { + "type": "image_url", + "image_url": { + "url": "data:image/png;base64,dummy_base64_string", + "detail": "high", + }, + }, + ], + }, + { + "role": "user", + "content": [ + { + "type": "image_url", + "image_url": { + "url": "data:image/png;base64,dummy_base64_string", + "detail": "high", + }, + }, + ], + }, + ], + max_tokens=300, + ) + mock_openai.assert_called_once_with(api_key=openai_key) + + +# Example test for the api_call_few_shot function +@patch("openai.OpenAI") # Mock the OpenAI class instantiation +def test_api_call_zero_shot(mock_openai: Mock) -> None: + """Test zero shot wrapper.""" + # Mock the return value for chat.completions.create().choices[-1].message.content + mock_content = MagicMock(name="message.content", return_value="YES: anomaly detected") + + # Set up the mock chain + mock_openai_instance = mock_openai.return_value + mock_openai_instance.chat.completions.create.return_value.choices = [MagicMock(message=MagicMock(content=""))] + mock_openai_instance.chat.completions.create.return_value.choices[-1].message.content = mock_content.return_value + + # Initialize the OpenaiVlm object + openai_key = "fake-key" # This won't be used since we're mocking + vlm_model = OpenaiVlm(k_shot=0, openai_key=openai_key) + + # Create some dummy image paths + image = "path/to/test_image.png" + + # Mock the encode_image function to avoid actual file I/O + with patch.object(vlm_model, "_encode_image", return_value="dummy_base64_string"): + response = vlm_model.api_call(image=image) + + # Check that the API was called correctly and the mock returned the expected result + assert response == "YES: anomaly detected" + mock_openai_instance.chat.completions.create.assert_called_once_with( + model="gpt-4o-mini-2024-07-18", + messages=[ + { + "role": "system", + "content": """ + Examine the provided image carefully to determine if there is an obvious anomaly present. + Anomalies may include mechanical malfunctions, unexpected objects, safety hazards, structural damages, + or unusual patterns or defects in the objects. + + Instructions: + + 1. Thoroughly inspect the image for any irregularities or deviations from normal operating conditions. + + 2. Clearly state if an obvious anomaly is detected. + - If an anomaly is detected, begin with 'YES,' followed by a detailed description of the anomaly. + - If no anomaly is detected, simply state 'NO' and end the analysis. + + Example Output Structure: + + 'YES: + - Description: Conveyor belt misalignment causing potential blockages. + This may result in production delays and equipment damage. + Immediate realignment and inspection are recommended.' + + 'NO' + + Considerations: + + - Ensure accuracy in identifying anomalies to prevent overlooking critical issues. + - Provide clear and concise descriptions for any detected anomalies. + - Focus on obvious anomalies that could impact final use of the object operation or safety. + """, + }, + { + "role": "user", + "content": [ + { + "type": "image_url", + "image_url": { + "url": "data:image/jpeg;base64,dummy_base64_string", + "detail": "high", + }, + }, + ], + }, + ], + max_tokens=300, + ) + mock_openai.assert_called_once_with(api_key=openai_key) From b8cacf003aef5d508419610989731b0b18a369cd Mon Sep 17 00:00:00 2001 From: Bepitic Date: Fri, 16 Aug 2024 13:01:26 +0200 Subject: [PATCH 19/42] add changes Signed-off-by: Bepitic --- .../{openai_vlm => chatgpt_vision}/broken.png | Bin .../{openai_vlm => chatgpt_vision}/good.png | Bin src/anomalib/models/__init__.py | 4 +- src/anomalib/models/image/__init__.py | 4 +- .../__init__.py | 4 +- .../models/image/chatgpt_vision/chatgpt.py | 124 +++++++ .../image/chatgpt_vision/lightning_model.py | 155 +++++++++ .../{openai_vlm => chatgpt_vision}/readme.md | 42 ++- .../image/openai_vlm/lightning_model.py | 324 ------------------ 9 files changed, 311 insertions(+), 346 deletions(-) rename docs/source/images/{openai_vlm => chatgpt_vision}/broken.png (100%) rename docs/source/images/{openai_vlm => chatgpt_vision}/good.png (100%) rename src/anomalib/models/image/{openai_vlm => chatgpt_vision}/__init__.py (57%) create mode 100644 src/anomalib/models/image/chatgpt_vision/chatgpt.py create mode 100644 src/anomalib/models/image/chatgpt_vision/lightning_model.py rename src/anomalib/models/image/{openai_vlm => chatgpt_vision}/readme.md (62%) delete mode 100644 src/anomalib/models/image/openai_vlm/lightning_model.py diff --git a/docs/source/images/openai_vlm/broken.png b/docs/source/images/chatgpt_vision/broken.png similarity index 100% rename from docs/source/images/openai_vlm/broken.png rename to docs/source/images/chatgpt_vision/broken.png diff --git a/docs/source/images/openai_vlm/good.png b/docs/source/images/chatgpt_vision/good.png similarity index 100% rename from docs/source/images/openai_vlm/good.png rename to docs/source/images/chatgpt_vision/good.png diff --git a/src/anomalib/models/__init__.py b/src/anomalib/models/__init__.py index 781f158087..de7744026f 100644 --- a/src/anomalib/models/__init__.py +++ b/src/anomalib/models/__init__.py @@ -15,6 +15,7 @@ from .image import ( Cfa, Cflow, + ChatGPTVision, Csflow, Dfkde, Dfm, @@ -24,7 +25,6 @@ Fastflow, Fre, Ganomaly, - OpenaiVlm, Padim, Patchcore, ReverseDistillation, @@ -43,6 +43,7 @@ class UnknownModelError(ModuleNotFoundError): __all__ = [ "Cfa", "Cflow", + "ChatGPTVision", "Csflow", "Dfkde", "Dfm", @@ -52,7 +53,6 @@ class UnknownModelError(ModuleNotFoundError): "Fastflow", "Fre", "Ganomaly", - "OpenaiVlm", "Padim", "Patchcore", "ReverseDistillation", diff --git a/src/anomalib/models/image/__init__.py b/src/anomalib/models/image/__init__.py index a795a1c8d8..740538a820 100644 --- a/src/anomalib/models/image/__init__.py +++ b/src/anomalib/models/image/__init__.py @@ -5,6 +5,7 @@ from .cfa import Cfa from .cflow import Cflow +from .chatgpt_vision import ChatGPTVision from .csflow import Csflow from .dfkde import Dfkde from .dfm import Dfm @@ -14,7 +15,6 @@ from .fastflow import Fastflow from .fre import Fre from .ganomaly import Ganomaly -from .openai_vlm import OpenaiVlm from .padim import Padim from .patchcore import Patchcore from .reverse_distillation import ReverseDistillation @@ -26,6 +26,7 @@ __all__ = [ "Cfa", "Cflow", + "ChatGPTVision", "Csflow", "Dfkde", "Dfm", @@ -35,7 +36,6 @@ "Fastflow", "Fre", "Ganomaly", - "OpenaiVlm", "Padim", "Patchcore", "ReverseDistillation", diff --git a/src/anomalib/models/image/openai_vlm/__init__.py b/src/anomalib/models/image/chatgpt_vision/__init__.py similarity index 57% rename from src/anomalib/models/image/openai_vlm/__init__.py rename to src/anomalib/models/image/chatgpt_vision/__init__.py index 6ad345e46e..5aec434360 100644 --- a/src/anomalib/models/image/openai_vlm/__init__.py +++ b/src/anomalib/models/image/chatgpt_vision/__init__.py @@ -3,6 +3,6 @@ # Copyright (C) 2024 Intel Corporation # SPDX-License-Identifier: Apache-2.0 -from .lightning_model import OpenaiVlm +from .lightning_model import ChatGPTVision -__all__ = ["OpenaiVlm"] +__all__ = ["ChatGPTVision"] diff --git a/src/anomalib/models/image/chatgpt_vision/chatgpt.py b/src/anomalib/models/image/chatgpt_vision/chatgpt.py new file mode 100644 index 0000000000..c30c0b99e6 --- /dev/null +++ b/src/anomalib/models/image/chatgpt_vision/chatgpt.py @@ -0,0 +1,124 @@ +"""Wrapper for the OpenAI calls to the VLM model.""" + +import logging +import os +from typing import Any + +import openai + + +class ChatGPTWrapper: + """A wrapper class for making API calls to OpenAI's GPT-4 model to detect anomalies in images. + + Environment variable OPENAI_API_KEY (str): API key for OpenAI. + https://platform.openai.com/docs/quickstart/step-2-set-up-your-api-key + + Args: + model_name (str): Model name for OpenAI API VLM. Default "gpt-4o" + detail (bool): If the images will be sended with high detail or low detail. + + """ + + def __init__(self, model_name: str = "gpt-4o", detail: bool = True) -> None: + openai_key = os.getenv("OPENAI_API_KEY") + self.model_name = model_name + self.detail = detail + if not openai_key: + from anomalib.engine.engine import UnassignedError + + msg = "OpenAI environment key not found.(OPENAI_API_KEY)" + raise UnassignedError(msg) + + def api_call( + self, + images: list[str], + extension: str = "png", + ) -> str: + """Makes an API call to OpenAI's GPT-4 model to detect anomalies in an image. + + Args: + images (list[str]): List of base64 images that serve as examples and last one to check for anomalies. + extension (str): Extension of the group of images that needs to be checked for anomalies. Default = 'png' + + Returns: + str: The response from the GPT-4 model indicating whether the image has anomalies or not. + It returns 'NO' if there are no anomalies and 'YES: description' if there are anomalies, + where 'description' provides details of the anomaly and its position. + + Raises: + openai.error.OpenAIError: If there is an error during the API call. + """ + prompt: str = "" + if len(images) > 0: + prompt = """ + You will receive an image that is going to be an example of the typical image without any anomaly, + and the last image that you need to decide if it has an anomaly or not. + Answer with a 'NO' if it does not have any anomalies and 'YES: description' + where description is a description of the anomaly provided, position. + """ + else: + prompt = """ + Examine the provided image carefully to determine if there is an obvious anomaly present. + Anomalies may include mechanical malfunctions, unexpected objects, safety hazards, structural damages, + or unusual patterns or defects in the objects. + + Instructions: + + 1. Thoroughly inspect the image for any irregularities or deviations from normal operating conditions. + + 2. Clearly state if an obvious anomaly is detected. + - If an anomaly is detected, begin with 'YES,' followed by a detailed description of the anomaly. + - If no anomaly is detected, simply state 'NO' and end the analysis. + + Example Output Structure: + + 'YES: + - Description: Conveyor belt misalignment causing potential blockages. + This may result in production delays and equipment damage. + Immediate realignment and inspection are recommended.' + + 'NO' + + Considerations: + + - Ensure accuracy in identifying anomalies to prevent overlooking critical issues. + - Provide clear and concise descriptions for any detected anomalies. + - Focus on obvious anomalies that could impact final use of the object operation or safety. + """ + + detail_img = "high" if self.detail else "low" + messages: list[dict[str, Any]] = [ + { + "role": "system", + "content": prompt, + }, + ] + for image in images: + image_message = [ + { + "role": "user", + "content": [ + { + "type": "image_url", + "image_url": { + "url": f"data:image/{extension};base64,{image}", + "detail": detail_img, + }, + }, + ], + }, + ] + messages.extend(image_message) + + try: + # Make the API call using the openai library + response = openai.chat.completions.create( + model=self.model_name, + messages=messages, + max_tokens=300, + ) + return response.choices[-1].message.content or "" + except Exception: + msg = "The openai API trow an exception." + logging.exception(msg) + raise diff --git a/src/anomalib/models/image/chatgpt_vision/lightning_model.py b/src/anomalib/models/image/chatgpt_vision/lightning_model.py new file mode 100644 index 0000000000..1dccc16d94 --- /dev/null +++ b/src/anomalib/models/image/chatgpt_vision/lightning_model.py @@ -0,0 +1,155 @@ +"""OpenAI Visual Large Model: Zero-/Few-Shot Anomaly Classification. + +Paper (No paper) +""" +# Copyright (C) 2024 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + +import base64 +import logging +from pathlib import Path + +import torch +from lightning.pytorch.utilities.types import STEP_OUTPUT +from torch.utils.data import DataLoader + +from anomalib import LearningType +from anomalib.metrics.threshold import ManualThreshold +from anomalib.models.components import AnomalyModule + +from .chatgpt import ChatGPTWrapper + +logger = logging.getLogger(__name__) + +__all__ = ["ChatGPTVision"] + + +class ChatGPTVision(AnomalyModule): + """OpenaiVlm Lightning model using OpenAI's GPT-4 for image anomaly detection. + + Args: + k_shot(int): The number of images that will compare to detect if it is an anomaly. + model_name (str): The openAI vlm for the image detection. + detail (bool): The detail of the input in the vlm for the image detection 'high'(true) 'low'(false). + """ + + def __init__( + self, + k_shot: int = 0, + model_name: str = "gpt-4o-mini-2024-07-18", + detail: bool = True, + ) -> None: + super().__init__() + + self.k_shot = k_shot + + self.model_name = model_name + self.detail = detail + self.image_threshold = ManualThreshold() + self.vlm = ChatGPTWrapper(model_name=self.model_name, detail=self.detail) + + def _setup(self) -> None: + dataloader = self.trainer.datamodule.train_dataloader() + pre_images = self.collect_reference_images(dataloader) + self.pre_images = pre_images + + # Function to encode the image + def _encode_image(self, image_path: str) -> str: + path = Path(image_path) + with path.open("rb") as image_file: + return base64.b64encode(image_file.read()).decode("utf-8") + + def training_step(self, batch: dict[str, str | torch.Tensor], *args, **kwargs) -> dict[str, str | torch.Tensor]: + """Train Step of LLM.""" + del args, kwargs # These variables are not used. + # no train on llm + return batch + + @staticmethod + def configure_optimizers() -> None: + """OpenaiVlm doesn't require optimization, therefore returns no optimizers.""" + return + + def validation_step( + self, + batch: dict[str, str | list[str] | torch.Tensor], + *args, + **kwargs, + ) -> STEP_OUTPUT: + """Get batch of anomaly maps from input image batch. + + Args: + batch (dict[str, str | list[str] | torch.Tensor]): Batch containing image filename, image, label and mask + args: Additional arguments. + kwargs: Additional keyword arguments. + + Returns: + dict[str, Any]: str_otput and pred_scores, the output of the Llm and pred_scores 1.0 if is an anomaly image. + """ + del args, kwargs # These variables are not used. + batch_size = len(batch["image_path"]) + out_list: list[str] = [] + pred_list: list[float] = [] + for i in range(batch_size): + # Getting the base64 string + base64_images = [self._encode_image(img) for img in self.pre_images] + base64_images.append(self._encode_image(batch["image_path"][i])) + + try: + output = self.vlm.api_call(base64_images) + except Exception: + logging.exception( + f"Error calling openAI API for image {batch['image_path'][i]}", + ) + output = "Error" + + # set an error and get to normal if not followed + prediction = 0.0 + if output.startswith("N"): + prediction = 0.0 + elif output.startswith("Y"): + prediction = 1.0 + else: + logging.warning( + f"(Set predition to '0' Normal)Could not identify if there is anomaly by the output:\n{output}", + ) + + out_list.append(output) + pred_list.append(prediction) + logging.debug(f"Output: {output}, Prediction: {prediction}") + + batch["str_output"] = out_list + batch["pred_scores"] = torch.tensor(pred_list).to(self.device) + batch["pred_labels"] = torch.tensor(pred_list).to(self.device) + return batch + + @property + def trainer_arguments(self) -> dict[str, int | float]: + """Set model-specific trainer arguments.""" + return {} + + @property + def learning_type(self) -> LearningType: + """The learning type of the model. + + Llm is a zero-/few-shot model, depending on the user configuration. Therefore, the learning type is + set to ``LearningType.FEW_SHOT`` when ``k_shot`` is greater than zero and ``LearningType.ZERO_SHOT`` otherwise. + """ + return LearningType.ZERO_SHOT if self.k_shot == 0 else LearningType.FEW_SHOT + + def collect_reference_images(self, dataloader: DataLoader) -> list[str]: + """Collect reference images for few-shot inference. + + The reference images are collected by iterating the training dataset until the required number of images are + collected. + + Returns: + ref_images list[str]: A list containing the reference images path. + """ + reference_images_paths: list[str] = [] + for batch in dataloader: + image_paths = batch["image_path"][: self.k_shot - len(reference_images_paths)] + reference_images_paths.extend(image_paths) + if self.k_shot == len(reference_images_paths): + break + return reference_images_paths diff --git a/src/anomalib/models/image/openai_vlm/readme.md b/src/anomalib/models/image/chatgpt_vision/readme.md similarity index 62% rename from src/anomalib/models/image/openai_vlm/readme.md rename to src/anomalib/models/image/chatgpt_vision/readme.md index f1255ee1c9..90a0d5b42c 100644 --- a/src/anomalib/models/image/openai_vlm/readme.md +++ b/src/anomalib/models/image/chatgpt_vision/readme.md @@ -23,11 +23,24 @@ The model operates by encoding images into base64 format and passing them to the In zero-shot mode, the model does not require any reference images: ```python -from openai_vlm import OpenaiVlm +from anomalib.data import MVTec +from anomalib.engine import Engine +from anomalib.models import ChatGPTVision +from dotenv import load_dotenv + +# Load the environment variables from the .env file +# load_dotenv(dotenv_path=env_path) +load_dotenv() -model = OpenaiVlm(openai_key="your-openai-api-key") -result = model.api_call(image="path/to/image.jpg") -print(result) +model = ChatGPTVision(k_shot=0) +engine = Engine(task=TaskType.EXPLANATION) +datamodule = MVTec( + category=bottle, + train_batch_size=1, + eval_batch_size=1, + num_workers=0, + ) +engine.test(model=model, datamodule=datamodule) ``` ### Few-Shot Anomaly Detection @@ -37,16 +50,14 @@ In few-shot mode, the model uses a small set of normal reference images: ```python from anomalib.data import MVTec from anomalib.engine import Engine -from anomalib.models import OpenaiVlm +from anomalib.models import ChatGPTVision from dotenv import load_dotenv # Load the environment variables from the .env file # load_dotenv(dotenv_path=env_path) load_dotenv() - # Access the secret key -secret_key = os.getenv("OPEN_AI_KEY") -model = OpenaiVlm(k_shot=0, openai_key=secret_key) +model = ChatGPTVision(k_shot=2) engine = Engine(task=TaskType.EXPLANATION) datamodule = MVTec( category=bottle, @@ -59,10 +70,11 @@ engine.test(model=model, datamodule=datamodule) ## Parameters -| Parameter | Type | Description | Default | -| ------------ | ---- | --------------------------------------------------------- | ------- | -| `k_shot` | int | Number of normal reference images used in few-shot mode. | `0` | -| `openai_key` | str | API key for OpenAI. Required for accessing the GPT-4 API. | `None` | +| Parameter | Type | Description | Default | +| ------------ | ---- | ----------------------------------------------------------------------------------------------- | -------------------------- | +| `k_shot` | int | Number of normal reference images used in few-shot mode. | `0` | +| `model_name` | str | The OpenAI VLM for the image detection. | `"gpt-4o-mini-2024-07-18"` | +| `detail` | bool | The detail level of the input in the VLM for image detection: 'high' (`true`), 'low' (`false`). | `True` | ## Example Outputs @@ -74,12 +86,10 @@ The model returns a response indicating whether an anomaly is detected: "NO" ``` - ![Openai result no anomaly](/docs/source/images/openai_vlm/good.png "Openai without anomaly result") - -- **Few-Shot Example**: + ![Openai result no anomaly](/docs/source/images/chatgpt_vision/good.png "Openai without anomaly result") ```plaintext "YES: Description of the detected anomaly." ``` - ![Openai result with anomaly](/docs/source/images/winclip/architecture.png "Openai with Anomaly result") + ![Openai result with anomaly](/docs/source/images/chatgpt_vision/broken.png "Openai with Anomaly result") diff --git a/src/anomalib/models/image/openai_vlm/lightning_model.py b/src/anomalib/models/image/openai_vlm/lightning_model.py deleted file mode 100644 index 2b1d112b14..0000000000 --- a/src/anomalib/models/image/openai_vlm/lightning_model.py +++ /dev/null @@ -1,324 +0,0 @@ -"""OpenAI Visual Large Model: Zero-/Few-Shot Anomaly Classification. - -Paper (No paper) -""" -# Copyright (C) 2024 Intel Corporation -# SPDX-License-Identifier: Apache-2.0 - -import base64 -import logging -from pathlib import Path - -import openai -import torch -from lightning.pytorch.utilities.types import STEP_OUTPUT -from torch.utils.data import DataLoader - -from anomalib import LearningType -from anomalib.metrics.threshold import ManualThreshold -from anomalib.models.components import AnomalyModule - -logger = logging.getLogger(__name__) - -__all__ = ["OpenaiVlm"] - - -class OpenaiVlm(AnomalyModule): - """OpenaiVlm Lightning model using OpenAI's GPT-4 for image anomaly detection. - - Args: - key (str): API key for OpenAI. - https://platform.openai.com/docs/quickstart/step-2-set-up-your-api-key - k_shot(int): The number of images that will compare to detect if it is an anomaly. - """ - - def __init__( - self, - k_shot: int = 0, - openai_key: None | str = "", - ) -> None: - super().__init__() - - self.k_shot = k_shot - - # OpenAI API Key - if not openai_key: - from anomalib.engine.engine import UnassignedError - - msg = "OpenAI key not found." - raise UnassignedError(msg) - - self.openai_key = openai_key - self.openai = openai.OpenAI(api_key=openai_key) - self.openai.api_key = self.openai_key - self.image_threshold = ManualThreshold() - - def _setup(self) -> None: - dataloader = self.trainer.datamodule.train_dataloader() - pre_images = self.collect_reference_images(dataloader) - self.pre_images = pre_images - - # Function to encode the image - def _encode_image(self, image_path: str) -> str: - path = Path(image_path) - with path.open("rb") as image_file: - return base64.b64encode(image_file.read()).decode("utf-8") - - def api_call_few_shot(self, pre_img: list[str], image: str) -> str: - """Makes an API call to OpenAI's GPT-4 model to detect anomalies in an image. - - Args: - key (str): API key for OpenAI. - pre_img (list): List of paths to images that serve as examples of typical images without anomalies. - prompt (str): The prompt to provide to the GPT-4 model (not used in the current implementation). - image (str): Path to the image that needs to be checked for anomalies. - - Returns: - str: The response from the GPT-4 model indicating whether the image has anomalies or not. - It returns 'NO' if there are no anomalies and 'YES: description' if there are anomalies, - where 'description' provides details of the anomaly and its position. - - Raises: - openai.error.OpenAIError: If there is an error during the API call. - """ - # Getting the base64 string - base64_image = self._encode_image(image) - base64_image_pre = [self._encode_image(img) for img in pre_img] - prompt = """ - You will receive an image that is going to be an example of the typical image without any anomaly, - and the last image that you need to decide if it has an anomaly or not. - Answer with a 'NO' if it does not have any anomalies and 'YES: description' - where description is a description of the anomaly provided, position. - """ - messages = [ - { - "role": "system", - "content": prompt, - }, - { - "role": "user", - "content": [ - { - "type": "image_url", - "image_url": { - "url": f"data:image/png;base64,{base64_image_pre[0]}", - "detail": "high", - }, - }, - ], - }, - { - "role": "user", - "content": [ - { - "type": "image_url", - "image_url": { - "url": f"data:image/png;base64,{base64_image}", - "detail": "high", - }, - }, - ], - }, - ] - - try: - # Make the API call using the openai library - response = self.openai.chat.completions.create( - model="gpt-4o-mini-2024-07-18", - messages=messages, - max_tokens=300, - ) - return response.choices[-1].message.content - except openai.APIConnectionError as e: - print("The server could not be reached") - print(e.__cause__) # an underlying Exception, likely raised within httpx. - raise - except openai.RateLimitError as e: - print("A 429 status code was received; we should back off a bit.") - print(e.__cause__) - raise - except openai.APIStatusError as e: - print("Another non-200-range status code was received") - print(e.status_code) - print(e.response) - raise - - def api_call(self, image: str) -> str: - """Makes an API call to OpenAI's GPT-4 model to detect anomalies in an image. - - Args: - key (str): API key for OpenAI. - prompt (str): The prompt to provide to the GPT-4 model (not used in the current implementation). - image (str): Path to the image that needs to be checked for anomalies. - - Returns: - str: The response from the GPT-4 model indicating whether the image has anomalies or not. - It returns 'NO' if there are no anomalies and 'YES: description' if there are anomalies, - where 'description' provides details of the anomaly and its position. - - Raises: - openai.error.OpenAIError: If there is an error during the API call. - """ - prompt = """ - Examine the provided image carefully to determine if there is an obvious anomaly present. - Anomalies may include mechanical malfunctions, unexpected objects, safety hazards, structural damages, - or unusual patterns or defects in the objects. - - Instructions: - - 1. Thoroughly inspect the image for any irregularities or deviations from normal operating conditions. - - 2. Clearly state if an obvious anomaly is detected. - - If an anomaly is detected, begin with 'YES,' followed by a detailed description of the anomaly. - - If no anomaly is detected, simply state 'NO' and end the analysis. - - Example Output Structure: - - 'YES: - - Description: Conveyor belt misalignment causing potential blockages. - This may result in production delays and equipment damage. - Immediate realignment and inspection are recommended.' - - 'NO' - - Considerations: - - - Ensure accuracy in identifying anomalies to prevent overlooking critical issues. - - Provide clear and concise descriptions for any detected anomalies. - - Focus on obvious anomalies that could impact final use of the object operation or safety. - """ - - # Getting the base64 string - base64_image = self._encode_image(image) - - messages = [ - { - "role": "system", - "content": f"{prompt}", - }, - { - "role": "user", - "content": [ - { - "type": "image_url", - "image_url": { - "url": f"data:image/jpeg;base64,{base64_image}", - "detail": "high", - }, - }, - ], - }, - ] - - try: - # Make the API call using the openai library - response = self.openai.chat.completions.create( - model="gpt-4o-mini-2024-07-18", - messages=messages, - max_tokens=300, - ) - return response.choices[-1].message.content - except openai.APIConnectionError as e: - print("The server could not be reached") - print(e.__cause__) # an underlying Exception, likely raised within httpx. - raise - except openai.RateLimitError: - print("A 429 status code was received; we should back off a bit.") - raise - except openai.APIStatusError as e: - print("Another non-200-range status code was received") - print(e.status_code) - print(e.response) - raise - - def training_step(self, batch: dict[str, str | torch.Tensor], *args, **kwargs) -> dict[str, str | torch.Tensor]: - """Train Step of LLM.""" - del args, kwargs # These variables are not used. - # no train on llm - return batch - - @staticmethod - def configure_optimizers() -> None: - """OpenaiVlm doesn't require optimization, therefore returns no optimizers.""" - return - - def validation_step( - self, - batch: dict[str, str | list[str] | torch.Tensor], - *args, - **kwargs, - ) -> STEP_OUTPUT: - """Get batch of anomaly maps from input image batch. - - Args: - batch (dict[str, str | list[str] | torch.Tensor]): Batch containing image filename, image, label and mask - args: Additional arguments. - kwargs: Additional keyword arguments. - - Returns: - dict[str, Any]: str_otput and pred_scores, the output of the Llm and pred_scores 1.0 if is an anomaly image. - """ - del args, kwargs # These variables are not used. - bsize = len(batch["image_path"]) - out_list: list[str] = [] - pred_list: list[float] = [] - for i in range(bsize): - try: - if self.k_shot > 0: - output = str( - self.api_call_few_shot(self.pre_images, batch["image_path"][i]), - ).strip() - else: - output = str(self.api_call(batch["image_path"][i])).strip() - except Exception: - print(f"Error:img_path:{batch['image_path']}") - logging.exception( - f"Error calling openAI API for image {batch['image_path'][i]}", - ) - output = "Error" - - prediction = 0.5 - if output.startswith("N"): - prediction = 0.0 - elif output.startswith("Y"): - prediction = 1.0 - - out_list.append(output) - pred_list.append(prediction) - logging.debug(f"Output: {output}, Prediction: {prediction}") - - batch["str_output"] = out_list - batch["pred_scores"] = torch.tensor(pred_list).to(self.device) - batch["pred_labels"] = torch.tensor(pred_list).to(self.device) - return batch - - @property - def trainer_arguments(self) -> dict[str, int | float]: - """Set model-specific trainer arguments.""" - return {} - - @property - def learning_type(self) -> LearningType: - """The learning type of the model. - - Llm is a zero-/few-shot model, depending on the user configuration. Therefore, the learning type is - set to ``LearningType.FEW_SHOT`` when ``k_shot`` is greater than zero and ``LearningType.ZERO_SHOT`` otherwise. - """ - return LearningType.ZERO_SHOT if self.k_shot == 0 else LearningType.FEW_SHOT - - def collect_reference_images(self, dataloader: DataLoader) -> torch.Tensor: - """Collect reference images for few-shot inference. - - The reference images are collected by iterating the training dataset until the required number of images are - collected. - - Returns: - ref_images (Tensor): A tensor containing the reference images. - """ - ref_images: list[str] = [] - for batch in dataloader: - images = batch["image_path"][: self.k_shot - len(ref_images)] - ref_images.extend(images) - if self.k_shot == len(ref_images): - break - return ref_images From 0929dc976ee3d47b6e769f1d2d54977d9ed7d5c5 Mon Sep 17 00:00:00 2001 From: Bepitic Date: Fri, 16 Aug 2024 13:47:13 +0200 Subject: [PATCH 20/42] Add integration test and unit test + skip export. Signed-off-by: Bepitic --- tests/integration/model/test_models.py | 18 +++ .../__init__.py | 2 +- .../models/image/chatgpt_vision/test_api.py | 63 ++++++++ .../unit/models/image/openai_vlm/test_api.py | 149 ------------------ 4 files changed, 82 insertions(+), 150 deletions(-) rename tests/unit/models/image/{openai_vlm => chatgpt_vision}/__init__.py (50%) create mode 100644 tests/unit/models/image/chatgpt_vision/test_api.py delete mode 100644 tests/unit/models/image/openai_vlm/test_api.py diff --git a/tests/integration/model/test_models.py b/tests/integration/model/test_models.py index 09a4749b84..a071ab2709 100644 --- a/tests/integration/model/test_models.py +++ b/tests/integration/model/test_models.py @@ -6,7 +6,9 @@ # Copyright (C) 2023-2024 Intel Corporation # SPDX-License-Identifier: Apache-2.0 +import os from pathlib import Path +from unittest.mock import patch import pytest @@ -35,6 +37,7 @@ def test_fit(self, model_name: str, dataset_path: Path, project_path: Path) -> N """Fit the model and save checkpoint. Args: + mock_chatgptwrapper(Mock): Mock the wrapper of openAI API for chatgpt. model_name (str): Name of the model. dataset_path (Path): Root to dataset from fixture. project_path (Path): Path to temporary project folder from fixture. @@ -143,6 +146,9 @@ def test_export( dataset_path (Path): Root to dataset from fixture. project_path (Path): Path to temporary project folder from fixture. """ + if model_name == "chat_g_p_t_vision": + pytest.skip(f"{model_name} can not be exported") + if model_name == "rkde": # TODO(ashwinvaidya17): Restore this test after fixing the issue # https://github.com/openvinotoolkit/anomalib/issues/1513 @@ -176,11 +182,23 @@ def _get_objects( tuple[AnomalyModule, AnomalibDataModule, Engine]: Returns the created objects for model, dataset, and engine """ + # Mock the ChatGPTWrapper if the model_name is "chat_g_p_t_vision" + if model_name == "chat_g_p_t_vision": + os.environ["OPENAI_API_KEY"] = "fake-api-key" + with ( + patch("anomalib.models.image.chatgpt_vision.chatgpt.ChatGPTWrapper") as mock_chatgptwrapper, + ): + mock_instance = mock_chatgptwrapper.return_value + mock_instance.api_call.return_value = "NO" + self.mock_chatgptwrapper = mock_chatgptwrapper # Store the mock for potential later use + # select task type if model_name in ("rkde", "ai_vad"): task_type = TaskType.DETECTION elif model_name in ("ganomaly", "dfkde"): task_type = TaskType.CLASSIFICATION + elif model_name in ("chat_g_p_t_vision"): + task_type = TaskType.EXPLANATION else: task_type = TaskType.SEGMENTATION diff --git a/tests/unit/models/image/openai_vlm/__init__.py b/tests/unit/models/image/chatgpt_vision/__init__.py similarity index 50% rename from tests/unit/models/image/openai_vlm/__init__.py rename to tests/unit/models/image/chatgpt_vision/__init__.py index 14bf1a05ac..36349489fd 100644 --- a/tests/unit/models/image/openai_vlm/__init__.py +++ b/tests/unit/models/image/chatgpt_vision/__init__.py @@ -1,4 +1,4 @@ -"""Unit tests for OpenAI-VLM zero-/few-shot anomaly detection model.""" +"""Unit tests for ChatGPTVision zero-/few-shot anomaly detection model.""" # Copyright (C) 2024 Intel Corporation # SPDX-License-Identifier: Apache-2.0 diff --git a/tests/unit/models/image/chatgpt_vision/test_api.py b/tests/unit/models/image/chatgpt_vision/test_api.py new file mode 100644 index 0000000000..8548fce280 --- /dev/null +++ b/tests/unit/models/image/chatgpt_vision/test_api.py @@ -0,0 +1,63 @@ +"""Unit tests for OpenAI Api funtions.""" + +import os +import unittest +from unittest.mock import MagicMock, Mock, patch + +from anomalib.models.image.chatgpt_vision.chatgpt import ChatGPTWrapper + + +class TestChatGPTWrapper(unittest.TestCase): + """Unit tests for api_call.""" + + @patch.dict(os.environ, {"OPENAI_API_KEY": "fake-api-key"}) + @patch("anomalib.models.image.chatgpt_vision.chatgpt.openai.chat.completions.create") + def test_api_call(self, mock_openai_create: Mock) -> None: + """Tests for api_call positive response and few shot.""" + # Set up the mock response from OpenAI + mock_response = MagicMock() + mock_response.choices = [MagicMock(message=MagicMock(content="YES: Anomaly detected."))] + mock_openai_create.return_value = mock_response + + # Initialize the ChatGPTWrapper instance + wrapper = ChatGPTWrapper(model_name="gpt-4o-mini-2024-07-18", detail=True) + + # Prepare test images (simulated base64 encoded strings) + test_images = ["base64encodedimage1", "base64encodedimage2"] + + # Call the api_call method + response = wrapper.api_call(images=test_images) + + # Check if the response matches the expected output + assert response, "YES: Anomaly detected." + + # Check if the openai API was called with the expected parameters + mock_openai_create.assert_called_once_with( + model="gpt-4o-mini-2024-07-18", + messages=unittest.mock.ANY, # Ignore specific messages content in this check + max_tokens=300, + ) + + @patch.dict(os.environ, {"OPENAI_API_KEY": "fake-api-key"}) + @patch("anomalib.models.image.chatgpt_vision.chatgpt.openai.chat.completions.create") + def test_api_call_no_anomaly(self, mock_openai_create: Mock) -> None: + """Testsfor api_call negative response and zero shot.""" + # Set up the mock response from OpenAI + mock_response = MagicMock() + mock_response.choices = [MagicMock(message=MagicMock(content="NO"))] + mock_openai_create.return_value = mock_response + + # Initialize the ChatGPTWrapper instance + wrapper = ChatGPTWrapper(model_name="gpt-4o-mini-2024-07-18", detail=False) + + # Prepare test images (simulated base64 encoded strings) + test_images = ["base64encodedimage1"] + + # Call the api_call method + response = wrapper.api_call(images=test_images) + + # Check if the response matches the expected output + assert response, "NO" + + # Check if the openai API was called correctly + mock_openai_create.assert_called_once() diff --git a/tests/unit/models/image/openai_vlm/test_api.py b/tests/unit/models/image/openai_vlm/test_api.py deleted file mode 100644 index 5c9d999963..0000000000 --- a/tests/unit/models/image/openai_vlm/test_api.py +++ /dev/null @@ -1,149 +0,0 @@ -"""Unit tests for OpenAI Api funtions.""" - -from unittest.mock import MagicMock, Mock, patch - -from anomalib.models.image.openai_vlm.lightning_model import OpenaiVlm - - -@patch("openai.OpenAI") # Mock the OpenAI class instantiation -def test_api_call_few_shot(mock_openai: Mock) -> None: - """Test few shot wrapper.""" - # Mock the return value for chat.completions.create().choices[-1].message.content - mock_content = MagicMock(name="message.content", return_value="YES: anomaly detected") - - # Set up the mock chain - mock_openai_instance = mock_openai.return_value - mock_openai_instance.chat.completions.create.return_value.choices = [MagicMock(message=MagicMock(content=""))] - mock_openai_instance.chat.completions.create.return_value.choices[-1].message.content = mock_content.return_value - - # Initialize the OpenaiVlm object - openai_key = "fake-key" # This won't be used since we're mocking - vlm_model = OpenaiVlm(k_shot=1, openai_key=openai_key) - - # Create some dummy image paths - pre_img = ["path/to/pre_image_1.png"] - image = "path/to/test_image.png" - - # Mock the encode_image function to avoid actual file I/O - with patch.object(vlm_model, "_encode_image", return_value="dummy_base64_string"): - response = vlm_model.api_call_few_shot(pre_img=pre_img, image=image) - - # Check that the API was called correctly and the mock returned the expected result - assert response == "YES: anomaly detected" - mock_openai_instance.chat.completions.create.assert_called_once_with( - model="gpt-4o-mini-2024-07-18", - messages=[ - { - "role": "system", - "content": """ - You will receive an image that is going to be an example of the typical image without any anomaly, - and the last image that you need to decide if it has an anomaly or not. - Answer with a 'NO' if it does not have any anomalies and 'YES: description' - where description is a description of the anomaly provided, position. - """, - }, - { - "role": "user", - "content": [ - { - "type": "image_url", - "image_url": { - "url": "data:image/png;base64,dummy_base64_string", - "detail": "high", - }, - }, - ], - }, - { - "role": "user", - "content": [ - { - "type": "image_url", - "image_url": { - "url": "data:image/png;base64,dummy_base64_string", - "detail": "high", - }, - }, - ], - }, - ], - max_tokens=300, - ) - mock_openai.assert_called_once_with(api_key=openai_key) - - -# Example test for the api_call_few_shot function -@patch("openai.OpenAI") # Mock the OpenAI class instantiation -def test_api_call_zero_shot(mock_openai: Mock) -> None: - """Test zero shot wrapper.""" - # Mock the return value for chat.completions.create().choices[-1].message.content - mock_content = MagicMock(name="message.content", return_value="YES: anomaly detected") - - # Set up the mock chain - mock_openai_instance = mock_openai.return_value - mock_openai_instance.chat.completions.create.return_value.choices = [MagicMock(message=MagicMock(content=""))] - mock_openai_instance.chat.completions.create.return_value.choices[-1].message.content = mock_content.return_value - - # Initialize the OpenaiVlm object - openai_key = "fake-key" # This won't be used since we're mocking - vlm_model = OpenaiVlm(k_shot=0, openai_key=openai_key) - - # Create some dummy image paths - image = "path/to/test_image.png" - - # Mock the encode_image function to avoid actual file I/O - with patch.object(vlm_model, "_encode_image", return_value="dummy_base64_string"): - response = vlm_model.api_call(image=image) - - # Check that the API was called correctly and the mock returned the expected result - assert response == "YES: anomaly detected" - mock_openai_instance.chat.completions.create.assert_called_once_with( - model="gpt-4o-mini-2024-07-18", - messages=[ - { - "role": "system", - "content": """ - Examine the provided image carefully to determine if there is an obvious anomaly present. - Anomalies may include mechanical malfunctions, unexpected objects, safety hazards, structural damages, - or unusual patterns or defects in the objects. - - Instructions: - - 1. Thoroughly inspect the image for any irregularities or deviations from normal operating conditions. - - 2. Clearly state if an obvious anomaly is detected. - - If an anomaly is detected, begin with 'YES,' followed by a detailed description of the anomaly. - - If no anomaly is detected, simply state 'NO' and end the analysis. - - Example Output Structure: - - 'YES: - - Description: Conveyor belt misalignment causing potential blockages. - This may result in production delays and equipment damage. - Immediate realignment and inspection are recommended.' - - 'NO' - - Considerations: - - - Ensure accuracy in identifying anomalies to prevent overlooking critical issues. - - Provide clear and concise descriptions for any detected anomalies. - - Focus on obvious anomalies that could impact final use of the object operation or safety. - """, - }, - { - "role": "user", - "content": [ - { - "type": "image_url", - "image_url": { - "url": "data:image/jpeg;base64,dummy_base64_string", - "detail": "high", - }, - }, - ], - }, - ], - max_tokens=300, - ) - mock_openai.assert_called_once_with(api_key=openai_key) From 39cf9963d264eace3ce3ec4115ecb6a7e440619c Mon Sep 17 00:00:00 2001 From: Bepitic Date: Fri, 16 Aug 2024 19:01:42 +0200 Subject: [PATCH 21/42] change to LANGUAGE Signed-off-by: Bepitic --- src/anomalib/__init__.py | 2 +- src/anomalib/callbacks/metrics.py | 4 ++-- src/anomalib/data/base/dataset.py | 6 +++--- src/anomalib/data/base/depth.py | 2 +- src/anomalib/deploy/inferencers/openvino_inferencer.py | 2 +- src/anomalib/utils/visualization/image.py | 4 ++-- tests/unit/utils/test_visualizer.py | 6 +++--- 7 files changed, 13 insertions(+), 13 deletions(-) diff --git a/src/anomalib/__init__.py b/src/anomalib/__init__.py index 614f14dc21..b7e3602239 100644 --- a/src/anomalib/__init__.py +++ b/src/anomalib/__init__.py @@ -22,4 +22,4 @@ class TaskType(str, Enum): CLASSIFICATION = "classification" DETECTION = "detection" SEGMENTATION = "segmentation" - EXPLANATION = "explanation" + LANGUAGE = "language" diff --git a/src/anomalib/callbacks/metrics.py b/src/anomalib/callbacks/metrics.py index 41ee6486ab..b855d7ebb1 100644 --- a/src/anomalib/callbacks/metrics.py +++ b/src/anomalib/callbacks/metrics.py @@ -75,10 +75,10 @@ def setup( pixel_metric_names: list[str] | dict[str, dict[str, Any]] if self.pixel_metric_names is None: pixel_metric_names = [] - elif self.task in (TaskType.CLASSIFICATION, TaskType.EXPLANATION): + elif self.task in (TaskType.CLASSIFICATION, TaskType.LANGUAGE): pixel_metric_names = [] logger.warning( - "Cannot perform pixel-level evaluation when task type is classification or explanation. " + "Cannot perform pixel-level evaluation when task type is classification or language. " "Ignoring the following pixel-level metrics: %s", self.pixel_metric_names, ) diff --git a/src/anomalib/data/base/dataset.py b/src/anomalib/data/base/dataset.py index 56851ee8a8..009508c6de 100644 --- a/src/anomalib/data/base/dataset.py +++ b/src/anomalib/data/base/dataset.py @@ -20,11 +20,11 @@ from anomalib.data.utils import LabelName, masks_to_boxes, read_image, read_mask _EXPECTED_COLUMNS_CLASSIFICATION = ["image_path", "split"] -_EXPECTED_COLUMNS_EXPLANATION = ["image_path", "split"] +_EXPECTED_COLUMNS_LANGUAGE = ["image_path", "split"] _EXPECTED_COLUMNS_SEGMENTATION = [*_EXPECTED_COLUMNS_CLASSIFICATION, "mask_path"] _EXPECTED_COLUMNS_PERTASK = { "classification": _EXPECTED_COLUMNS_CLASSIFICATION, - "explanation": _EXPECTED_COLUMNS_EXPLANATION, + "language": _EXPECTED_COLUMNS_LANGUAGE, "segmentation": _EXPECTED_COLUMNS_SEGMENTATION, "detection": _EXPECTED_COLUMNS_SEGMENTATION, } @@ -171,7 +171,7 @@ def __getitem__(self, index: int) -> dict[str, str | torch.Tensor]: image = read_image(image_path, as_tensor=True) item = {"image_path": image_path, "label": label_index} - if self.task in (TaskType.CLASSIFICATION, TaskType.EXPLANATION): + if self.task in (TaskType.CLASSIFICATION, TaskType.LANGUAGE): item["image"] = self.transform(image) if self.transform else image elif self.task in (TaskType.DETECTION, TaskType.SEGMENTATION): # Only Anomalous (1) images have masks in anomaly datasets diff --git a/src/anomalib/data/base/depth.py b/src/anomalib/data/base/depth.py index 2f635655cc..b4e1e64838 100644 --- a/src/anomalib/data/base/depth.py +++ b/src/anomalib/data/base/depth.py @@ -48,7 +48,7 @@ def __getitem__(self, index: int) -> dict[str, str | torch.Tensor]: depth_image = to_tensor(read_depth_image(depth_path)) item = {"image_path": image_path, "depth_path": depth_path, "label": label_index} - if self.task in (TaskType.CLASSIFICATION, TaskType.EXPLANATION): + if self.task in (TaskType.CLASSIFICATION, TaskType.LANGUAGE): item["image"], item["depth_image"] = ( self.transform(image, depth_image) if self.transform else (image, depth_image) ) diff --git a/src/anomalib/deploy/inferencers/openvino_inferencer.py b/src/anomalib/deploy/inferencers/openvino_inferencer.py index 03ba8dad1d..aed6028433 100644 --- a/src/anomalib/deploy/inferencers/openvino_inferencer.py +++ b/src/anomalib/deploy/inferencers/openvino_inferencer.py @@ -277,7 +277,7 @@ def post_process(self, predictions: np.ndarray, metadata: dict | DictConfig | No pred_idx = pred_score >= metadata["image_threshold"] pred_label = LabelName.ABNORMAL if pred_idx else LabelName.NORMAL - if task in (TaskType.CLASSIFICATION, TaskType.EXPLANATION): + if task in (TaskType.CLASSIFICATION, TaskType.LANGUAGE): _, pred_score = self._normalize(pred_scores=pred_score, metadata=metadata) elif task in (TaskType.SEGMENTATION, TaskType.DETECTION): if "pixel_threshold" in metadata: diff --git a/src/anomalib/utils/visualization/image.py b/src/anomalib/utils/visualization/image.py index 649dd5032f..7d2b151120 100644 --- a/src/anomalib/utils/visualization/image.py +++ b/src/anomalib/utils/visualization/image.py @@ -242,7 +242,7 @@ def _visualize_full(self, image_result: ImageResult) -> np.ndarray: else: image_classified = add_normal_label(image_result.image, 1 - image_result.pred_score) image_grid.add_image(image=image_classified, title="Prediction") - elif self.task == TaskType.EXPLANATION: + elif self.task == TaskType.LANGUAGE: description = "" if image_result.text_descr: description = image_result.text_descr @@ -288,7 +288,7 @@ def _visualize_simple(self, image_result: ImageResult) -> np.ndarray: image_classified = add_normal_label(image_result.image, 1 - image_result.pred_score) return image_classified - if self.task == TaskType.EXPLANATION: + if self.task == TaskType.LANGUAGE: image_grid = _ImageGrid() description = "" if image_result.text_descr: diff --git a/tests/unit/utils/test_visualizer.py b/tests/unit/utils/test_visualizer.py index 0e08829759..b999adcd96 100644 --- a/tests/unit/utils/test_visualizer.py +++ b/tests/unit/utils/test_visualizer.py @@ -35,8 +35,8 @@ def test_visualize_fully_defected_masks() -> None: assert np.all(plotted_img[0][..., 0] == 255) -def test_model_visualizer_explanation() -> None: - """Test visualizer image on TaskType.EXPLANATION.""" +def test_model_visualizer_language() -> None: + """Test visualizer image on TaskType.LANGUAGE.""" anomaly_map = np.zeros((100, 100), dtype=np.float64) anomaly_map[10:20, 10:20] = 1.0 gt_mask = np.zeros((100, 100)) @@ -59,7 +59,7 @@ def test_model_visualizer_explanation() -> None: image_visualizer = ImageVisualizer( mode=VisualizationMode.FULL, - task=TaskType.EXPLANATION, + task=TaskType.LANGUAGE, ) result = image_visualizer.visualize_image(image_result) From 671693de4505d80268ce68e90dcb82f8fc31ab4f Mon Sep 17 00:00:00 2001 From: Bepitic Date: Sat, 17 Aug 2024 09:07:55 +0200 Subject: [PATCH 22/42] Update images in Readme. Signed-off-by: Bepitic --- docs/source/images/chatgpt_vision/broken.png | Bin 173815 -> 151395 bytes docs/source/images/chatgpt_vision/good.png | Bin 143741 -> 141122 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/docs/source/images/chatgpt_vision/broken.png b/docs/source/images/chatgpt_vision/broken.png index d120f7d7be50bcb07f73d76cbcf869a73ec584c9..37748f63be65097da79549d2d33cdc70e6131541 100644 GIT binary patch literal 151395 zcmeFZXH-;aw=KLuL{wBtP!J@Qh^Qzi2!bTB0FjK6lZxalIisYK*r0+)1_8;EC1(%; zkt{i9$)P~fT}9h(_xbMoo^!wdr^o2gHYK(9ex9}Fnscu8>{qhVVkeGKA43r2g!p}o zJc1Cc;r}Hegr8t??++jd10s&O`^b*qXXR15hdO2KOZ$%5)>85hBn*y6xCz}2@pxjQ za$3X#wUGPLZ(8!`m&CCOf}~Nx2?lJ;Swg~D*$J$hn?&Go5=)h*I$0OAPZ1vOZ6kj0 z;%slk2P^US5weSS&esY=Mh3bw#0dpU}W;xG5hkG`z1h+u6*DppHae1e%O zHL6y3!p+K5)YQ~uW&a2ZJG$>4A)VB$Ygs%X8jo6_OKLaB>FGBuXw~=FzhxIiDIyol zwCVZ#Tb2&-wfM%dh@akZ8!!#kQK1k)KB=bb=Jbr1S7?Zkp%zYKoQ7WcNbbpw%Yw)LDMGJIP)L}zoNv%A}f^Zkz>%AXyH?jHP1zdD;W$xVx{Wi^iFK`>D{ za+mCOz-ygzE?mF=fS3*xO{{K>j*X3&-nLy(A1ZS`e(adnDSA3e%B1$0;m~J!s?EAN z)gy>!`%G?+v1vh{K4;ay7;bxRZtjltEQaL8k_gFV7M3qfO+<(Py3D7^$w@CSubLXn zCPCDch};{dqb?Pu1&!IPK4?TaT`{NUr}^#S3^bO+Rz^WVVSjJ8J57ZHE{}XnOZz!g zz7Ol(lORDE-fS~cb+}aXl*wsw@^fAd-@aYHaz(YkR0D2vZgw_+UXYHKmfvzxauZeg zc&W~xCdO`ey&JbU^YZfzIjJ{YF=RvmW6xB)xL6yXAKMg9 zPfw@zCw8IxeV2P`FDn@sJ)Tf~CjY%a3pI;4qde8kDUv_K!@R(Gxt8)Zv(zz9VGlC> zmV-|}r~VaIG3LCHT;a|0HZ=aCo7^3}y(z8w!>$-3qg2uO7ky;H$BrGl$-!~A@^_5w z-}xWHBn3Cge$yno{QT5dsM5wdb!K)+D!Y1 zR{ft}e3u4)`+cR3-1Qc)z!$^<`ircMroKhq4T_GA4h>aOQEABjxwEwz?J#>8F)vhS zer?d5p%Kn)1`F&kmtOGG#?i&aMN?B#N9ST=_UcrN>uhq;@R7eB6ZvGnI%z%E1>b#+ z)Jra2)OoE{?7OCh#z4D_poX&Yv`w+&+VpbOaW=_tt`ohM_(eI<%c_>|H)S89Gu0IK zP*Zbn#GAgZw)UDz_OovhJjn3#LP_R!2z)NHLG?$E*1FWpdgeEFc6LfiO1^%50Ke4| zz2EUr=Ec+H(b~g@4=ZJ;i$8eau(MomX=!f!N~)@=nwqBURA*V0m*6jM zJC)tgt~37eDORr~N;;`sH|K7+PGiV2UrY8+av453MMY+x(dtuz#sz(U?E}If9$fo0 zIW6s(%2|Zy?w97~QdlJSQv$c2kAFFHRq;zUDe`-_kstFmDj{M4=fgrnr*PZ!&TDes z)v>Mm$Z&6-QI2jiuhXWvynI_DTlo$wq4}}TCt6k;L)pB!u=)jkIx2KGpM6P`3b*3b z(9xNgX-}eLRW={3dG+z*$A;IJGGPUonTe5~HpQ%s_qoVo);Q(^;Nnbp=8rkmzRIa6<%OE&|7S4 zChPQTCJAnU?eb-DY3V2d=U={TWgit&WBG+i`V-X(Os|JF;+L5VR)drJFdlozJR%|@ zQc_Z2700KhY-idIBY2ElZnzY!Uie%GBBkaPd4X}yQ+6t$|L2&z)9*!=4ck!ah@-o0 z&T#SKMK-oY!M!m-A&beTFt}i5`5rGXuS5T5i@C1!xgS{<5QqZTiLY<=hzO?m<{`P<=VB~@z*kd zszY{T{-_J0P492beUH5daO8>`usw2$juiP_k^V#2A|%A_JUl#$W!o7K5*$WfT{1K@ z&5UD7G{=Hx~-espdSi9|XMGbsf41BB*<;k55h>tY)Hrc7Op>*6a$-V- zH3W;rR(qeC8Xq_A|J?dCi-MA}C5qp1zBjKuNydBQFC4if6Lns|X>)tAJUS{$Q%h@q zy<4j#T9CdsH6vqh*!@&p0Bvgb9ByHt*nFgFtUmA*EiZ*B6rUld)#m>G{^OL_5h1^q zIz3Qq;5q$hxEJCB1snjNB>)<53-fqPA#cpKx3@p*dl8KuT^gx|Ri)uJ%~fWtt*y<` zYtbyWnFr(~cnm=TTch>-`3htdBz>uVYn)!R^H~HQ@O5NlsX=>U&;_wFKwug!A96&qs-d+dPo7C-dqD69UZgs z-F(eVtrENCT3`H)k}WrL4>bW?n2!)5H7v>@*2M#bg@s{ZVTi1Pg3fP}L4=40v!0bW zz+({+k(rs9%#xJ{y1J8lyW64H)V#3StcQ@_1sJg@E{%y9&Z?(V`}Fv(z5SM%>$aMA z^$o`jW5f<7xgc)TONgl{b{oeNDxyx*PZDemz8C) zv$+h}{UhHb{BNFe>?J$oJ;b@`k56|~I|bG|9vbHT!hdDO>dstdxd7mMNeN$O_jV1r z3@I(IReb<0@(J!8kOZihDr?B-=x9%l9zd$iueBKfxo0=CSi?g@^|F-FXf&_w0%-xG z$A`qkvR|{Q_q<5$$NaemopA#I2G-Nx?}kihmO4OEUcGatxUkS3*6)STFhn4-v|LY5 zE=){HWezCS->)9pcv1XxHT%E&eiPIF&q43reTG`QJXW9jD8<8rC~9hTWd+Difz#IW zfJW^c$0@%>@k@}Ph+d4{RtX_^3_IP^(-Y2RLe2Ah98$C# zHU~0MBA5utgeRWuOkG`F-Cmn{9U58y3A4RWEb|YVi&VfZKy*V{j*N&#$MUCk z8ghlxo~#GXbyK^}4?e1?tE&>!gL-RVV1TbTxtB-?>n*Zb@6m+li1|~m15-PMpqVdT zyrxy=1RHR$tvu%g4j(`3HX7x)ppx~pHrJqCDC_yeSLf{wT0xidy^cUzZRdNfSH{JW z`!X^G%B-;LgtZVXYO1PC;x9K2lt*8lQ8zx5k&l^~GE!1!h@Q-LBp*EVz2FZJ=7d5j zDk{K&0%-4qL`9uMtgWpzimdDxOL27e57V@CcPoY-fhFteoTLe$}%=Z-tZvV`ITJ3q~ZVeD6*qto^fdD^0tG_w> zT{7LKcX&J|rQsq)zC{ZTCCNm`#l^+m^IqXAhaH35PWbQvsQ}cacbJZyot^#g;e+Es zp8oRYzorfz3WPuj}(YQ`|U46PUm9l>lMB&k+N8$Pl-I>t`#r34OcIC^%=9fJF zc=_@rB#i75-#%0qpm_XvRubjB(Nk4bWmdLTH?;}~G%{T24xotCrm5t-fB)WQq5tT7 z7V90uj*qY^^hkzQ`Cy^t6kM|m55i0E)P7VqMuCEgi;MrJC&-7SBsJC$sc^0rPdArF zu3ftp%tRmrMY78CxaITb2m=|(JIO??-C3nL7DBg9Ltxh@y~kE28u54!`1JhwO%^EP zcdVwrE2Jt`mIpAPcL-r2&_1I8T7QOMpY4z{B@Lvrzi4~98n~(d!@h>Rx;28b`r{TIrQAeJUlB_aoNK;c2kl>>)*=-m4Lqg69lORqTJ$kP% z$(R}#0LzW}q|6E#2NdG>Cgwg-u>lqX8VJqu4+{ff63IO?4@7{o<11@0F zn|qXEpvc;BGE8r>CHmC7%5SUS&p1&tF){P}8$*{>jJ}>F*_O_-D-@R?W^6bHbW614D>G0-Bn__>_cm@(+eH&X&q}6Wd>({@H zm`g?rL{4p)^yMo&dgN9$woK(On$*r?w>13j-McSe?t48ELXi-W65o@O@;^vIC@#%k zzPR0C^ne026(mMS;92wz{)&I?Gz5LtE&TemwLw@3oF9ST>v5jGCEfF zBd`_N{qnu_OpWWI4bONT*7QY1iTjT-eu#--;NT#q;A?T+9Px&ddbqa8dTtQD+sDTT zf7f%}Z2021x$ELvEC1*b5oGhWx8M%rrAtQ;vY;pL0Cf3QzFa_LRaAOFBRx!#K0(DU z^rz!N?DqNd=k>X6Jv}}5rz2IKpgx0`8t{)>2i4pVawO)<*RR4DISPUb!@T#+y57}U zwu^(W$S;YCiQS_Cv9VNr3htZcpm}`N z1RK5U&W&pJA(!oR@ZkE=G)sR0Q?$K(es>!e7!WXdTRL6QH;!cfwW4i3&Y8v;hit{*R-3{C|8!TqW8fae~ecl!RA9m?EQHa3|M zo&TRndSEKXZ2rt?VU~&NZ)=N_PZoNTrJS9e{oK;>Kq`mm9N2V-$de}{AjxOv=Eg=x zk>NhGa-gL82ZSHg%hjt_xw$DRfbVMM8;AYvQxg1TFv`LjiwC#Q?5wrRBuR#iu5M9z z5r}x7q=oD71h{Yfx%e2_1MfjZj;J2G?X}APDI7mk&v%6Zb>YtV$c)JvF zEV?>6jA#UMtO*>wnYM)QQU8c`ip!TTuTD0r6bZn7+ILPEL<%(UbvVoPCJzeV0Dh>axxBH4IZ=m}Ri2M33Jlq^ zocJ@(eJrQGt-+E$WK>lX4 z0@(P#byzh^KBuHy0i;GCcDW7OKBOvT+RSz|{C2=u{&GKJ9zzR4$PuiRxq)IFjakWm z%B^$f&Ov2cELlCd^MU-5^bh0wf*}`2kfh)1{x)?E-v#gxm6K})qlsV`_!;~Puo$oa zC+uCo-2fIPEiFy#26AubS9f_vMuzl*2M@%>!??``p_az-AMjN`gl1iie-tCp_|_5g zAM+cOT29Mjfr0{H3#q1i^>uW1S_8cXjoI;04l#%F0WR>FgDfh-cP1XGs~dBLk4WdL z&I5k3LmdXPdSEWan6s!~SGsrap0IFL$Tc;W{q3P@8GJLw?IoG~pPd%uKr@}8ga&}_ zUyX`?6EX+`505>RGO%Yp^^#R?}n%m{?h0sKClDUHIMV(ZBGg z>~k0XO?livnn0|8{&D~_LLho^yy3NJfg?0*{_!-jV1|Oh<+?uG3G5%YgB&oF<5BWw^}expbkI;;Q-J<+u%Sev-Ru3_kmyB3Pw4Y6J78hy%xIgW@aCBE@+Nr zV6Y&CPM*Kb{-6?%RGvM?-FDUwoE}o2|9GR(ARyqbK{D+!-t&S4vE5pk zsC+C7Mej$cW5IywP>H>zs3@M$ccrU!mpa=1D{mJ-$^*Nwo$Z*ZrPO-E1U|TAYUi<+ zbOOy8f6W3Ml)~@K92_~&<(V%S3h?)L2HpL&u@QU%PU>b5+#EM=o}}ZuZ9ZJVa=0-& zf{+3lH2e;0RA3T<8?LUZ`m2efMg6mR>_H-f(qX=EK^r_4d`}FX`V+_m%o_lh-4@fY0yVSP~-!PCMkMTzQSrHV)ZxBBzi-*IQQm{?$2j>Em1A7E_g5vDi zzie>=pk0q9~UwFDu}q4zCKz3{ZD0uA*0u&q|Um3`wogF9P`%j;adK@K(^tFKq znSvz(wsP&D3uyIsA*haAo9#3LlmIEh8+rZu^?=_l!a;dO9ybJEG%H4{{dotPDBhUj1EiPa>NGi!QcsYvBL+);&(|u{5N#RHbb4)a-7ctW;{JT4St8^ z`Ovp-4)e=s#X&3dG$n9X_|0f*LZ zCLt6m?=5O6h*+S^x-C&B3M>w~rlxpLB(!njZ?g_hG;!eKPL7YmTtFc8ty!RHGaye6 zo^uq45cEb>w6p{v7zOvYS}ZIqVt&9A8D*9#%FCaor5z}DbqyE;GW8Gk`VUhH1h9AY zlY%~in6xxwaIHZpE^j%3E~gQ6*?|Q+$_OT3grKVnR4EXI+{QnkCk19KG`0@}?Vohm z{8F^*-WF&KDE1E?_%u$8+G|pXhzARe$bu__2-TdR;VJ>}g^qw|yv6sJyU?Aif|~a~ z=lLA35^7*2Gj1!o224Pf5l4LV@02mPT#`;EUx3jQ@K zBKzb816sC22I|ybfwGCS8m@Su7iFIq7l-EJ;^OBAb05s{6MMLSfBpYy0?s8$mcF$0 zP)tICCs|zg94ae0`4w3eJ1HX*#W90CRbi59cE-bUo4b3!w9=Kc&^K=elM&j!?Vg)& zOYmiFBz7nG>wecAP7u3ax}%oaNw~gWkSN5E^l{qGWd6G;U)j`=^3+=thWaM{ zimBFD&g?K@j7f>!A9|te&n%qoMUN6TK1xip- zPx#a~6G@qUh5CRS)F*a6kd1msgi?oxU$}5V;mR3=;VAJC027GKXEutDnHe0J8FfU zy}zVP<|E?8q9r99<8001rR&KE3koN2t~OiG(-a-e)YWl6ls8e>X#*2}2nwEpVk1dE z9)Yq@P5M~H>PQc=Os-qbHZ$@jmX`Y`X<3(-HJ(1@Bt0~LSU5JNt`7J0t6_M!R905V z=H`NfvoHqp;lW{qDCSJo$Nc=y8P^%nRc%??TJblq(}wzXYfB@0w7gB_xIq^S3q!9L z^pwI*A5$J|IOM6Oi^e|ztN(p?xb-pN`_9h%Xi*W78>HmNJgI4D)*bj^Am^Pd%lPV+ zaI7o_g8>8R@*^KuN5#}U)oYA3W6Na1oYelR>0L8cfXXf~5&}EGNVIU}&*h;D)XY3G zD@}qXTwk>-)r2K)_||2VN4CJ{vj5_$($|u~2G($0&Z_djF4>P&a|5#SE6y4NC&RDt zTzSyU{+$@L8~c61m$KmP+Y{oFPVaQQnV2dfH}AzZ7MSv6YHYX6&I+-7VE&L)`Nv># z`yTqmovkQn9<-=?;Iwk51)^TkSpHZVUd|9l%jGf(eZiIyT) zrcCrJjp9U6vFgC%jM6C?HjaGM{-WuM9Hj18kia)?+yFbqgRG#B_LwJhFFFiwA$ELG z;AXx>QyklJ5=cD3_#rRv4C*N33n8KS)@dtVuO}s%nX2glSS-*=6bc1R-^~x=uc^Ek z|L4dXSWiscIZjztYN0Jx?xG$1dSs}+IV7Z7Df9aNLUDpSG5^z>$s{khuv9{P_G5K^ zRaG?2&6aI#E<-tbL!WPNz91X*4+*iAkgyF2wS5)v?Pu3~UpRM5(ZEp@s)yfE*JiHn zkMctzMl6qdzAyFShN3?vi_1L7wwhk*T%XJE^5S$KX()5{W@bVVMkcCbktvz`KPIk} zxa=;|@mpQ#^cfwk6Jk(|7xxcXphBTYJ#()pyy|nF=}KR#se$(JqJ%W_k}cNmD%raQ zE79c6z>Vn}0=E>J*_SQ|WA`oA4ex1dV=zPr(HTH;pMU@eGtz3i(m`1k3MgLZ&NZ+% zLASWWFi$a6hpKK7SCE^F!N+fWr{PgX0uk9*1%{{h?zw|dz$bUQ;vJ~V(ELbwbOoko z6f`rtAG6!>(ZQ5kM84Lm?xJB*=^M3mz4b3~0mydE`+c z_;UX+LI8h|soE!W6+=iEV=8|CVd)SFf+cZVaz!D8La^pa;qSRZ-%xaRO_EZvU%z$6 z1wq}zk}@LjS@enh<4D!M2ttA|678MAZg$gf4?>3rXD8siRH^^ghm7zTh7_%7V)%7) zXLSTxQL}S7${Sg9{KR$j)u%Xf^Y_;4{8cwvFO?^!(?-4fsQoTgO6o*Rk5`+n<|La`6r{q~8Z2 zH$B_hS|jhYfMR|4jA;i;HhND%p;|$(*7T}8LpqC@F3eHz!154b#=X;oK#CspWL*QB@-Uz!jkyZ z3B|A#HVPm4)UjMBhPmEYMz`L{Nk}P1%&qDgeNNzwn(>St zZli_|+b4sA<9d4|2oBXHBvzR~FulYMb$8=#P@y{v5eAP6_)+hlmob4L5~_jg^G3JK z;Vz&VKRkT)O!yhoA&3-LRS9-w^O-gpy>HK~X4iT@Juwe|%<`zcf2Xb|=N>uvHkH3+ zARX+|rg9+Np|P=8e$39sWOKK4%Za;Zldk?&L_PS)$Q^a1p)*)q|BC#ZxV zaLXPq`KF{O1V0N1bk*x%(YH)bo@ti|RgC6c-}n+VCNB>GgirH3jg2iG-I;VZnWU2( ze|`zNOMB<}?)E9H?{Rd<*OiZKWz$2k)s&|Ms8U-iPCc?KU6qNLrZ~5SSsa{+Vxb^78Oh<1`9YiQn^MM1){@q{9G~OL_DY zs&vKU2(T3d7zzSYQvj9t*(@n3saEJ$0&@Wu87j1N66EK9U!l9^aP+Ck_J9r_^Uorj zr0qOceCRp#CFO%f69^GZ+Uge9+c*8u!Kaft_ww>>x@&#A--mD8PJc4~&hXGU&FjhV z5yIH-GrxYdT-VymPWeiIOy!QPCZGA^dMwEq#_!BnyYX3t&%S~v@|6fBVT=zB z=F)rSHd>mU&41?1)U(2Z%1_p7(;q&v=(BlDuWv`+v0r&?ohL}e<#K>G2GBl zm))7j-2X z2UAkg6B3SZuWtutXb`xO5h7T-gsf$F!cql=Xn`dmSPic~a!hfTu6Jj>r>~>#eRHK|M_e!@%VllykEwvZ$S1$7j2T+gqk?E^ zTf_m6i*BiB_mfUKei>RAFexM)`^SR>VNCf@rhGEKq9O?T<}nPktB(>9Lb(Rag^GIs zNva9*FkX^}&?~jlrE7GTBlsV0H zeSY)iXB59bFD*L6fv?<_ce|#xGcUJe%Sj_HzCJ0j%zCdRC*EGIl+_pVJ~^PRJ;duO03aMzdy`#2Ks25Jif`^@M>1P#%1gvp((j_cU`*#i z^2hr=eiYyjO>`t@W@zE5u(MyCr714!{d;bXo4;(QE64~<$Zoi8YG`OAbkkru*qeYV zn3?r|T-{m`^PfF`MueoWw!PpPBXRW{pg zC+&ywbhO<9=Y6316}a{FLKu?~ z#?+KrSVW>P+`|&ZbWLrKwk7EO!pSUlG{kgP2~M#oWl*RWF>UXfeMqwHm>CvRUvtnq zd-kM^q*Iz$;EUzu@0wDUmM{d0CLwW3CgL3xDi%F% z<-EJ#<5M-)Jw(g@i>{Q;)H1Qmr8D{AxzWxX`P1gadA{$0D{mW1_@;iRq}r%%h(^($MT5WuT?&_WMJ6djn*nF z$xKOc^*))?-bQTw^FCQi!;0D73MIp{$4)z6q$9m9GH2hoQEP1-{YX*M%ybggT}IMR zJ~g)a)%*7fNz(A#fL?SzV(s{t3^Jy?L`cUmLY= zy}z`*7WT*c6kV#RJfqZ$Gs%vN11g%P65{qBB|;saYB!b)o~f-hmTXGB=MB=-i%gaQ zVc;SrY_5!9qcT25^ngF=kW$9^&(ANK{rGfLqd0}6uzc<{O+U~ISnT@9>rjrnja2|1oFFKc?2+~YGKK>Tzq5b2>pP_{r6a;u~86wA|A5>>gyYM5u7W z7i3TUM8{4McSrMBPS1AMeED*C_ty!j`)<)zC5gI@_V$(xe;8%GTXXpQnr!r)S1cyzS!#tltsKQPlk~jhAUUTPOTnxzx(z< zLi-HJ4#F31EmNxwrB~iQNLM_BFg^pn6?!$){$79Tbs$M}fnu56hpaCVpCNS-66qV8l(zj)MmKi)`***8f8CBxZ+4C&I5=vy52r+Xhj5ffg$`^ilE zB=&z4EV?Hri_6IoRnU`8?yP4D8_Z-DTWyV%;!aB37jgrgd+FG5wU>9zjOH5MkEq?T z<!05{NZY zI>QJL@n48IB8>IU)MylR)vRW>Y;S{vNjZ8H9c5Fj#c%zfk^NN8&wCK5=ZF#M&Q5;o zolW=4mm#F44cIG8Y?L1T1nk9P?R377#VgL8^7LqH(>Qa6T>hb$?ZWxY_QR+{v9eE} zJx({yI6(@BsVYwy^^A_`X)(t&JNAnS7pc-r4SnR3PovSC;J8#2 zaGM%mySBc$+j!(eQT=1LJ4YD^P$2_S#`{uj!IYCnx z9)zbGo{@uzBnAS_{VoOuZ+Ii6<6D8Kfjammn?cpPPLP1Hfu-dThE^ z7K-hkax^DQ>rtU2{^dMm#?!YSZMit_XqHNu_rX-0A^9Rx4Z5L%O7)8_F_w{;iZA$t zP0Hy&(i$%J`l@#Xq4Up-1Mi(beQ7NH=kjC89=nPlRu5{AyifP_30~zoDA`Il<1F_k zSch<>i=;_y3UT_U)dy01QWsWt2DISL*tGUmxHYU=16U8aWm%T*){vL)`kR%QZf~3_ zUrTV*(>t1VVnj$~Z<-%hf}2ep%5ua>QZPEHJ$A{@Sag~UbCiixHBf6|MIKH`OD9FU z?9OFIM_;OW*gjJa)8LH~5{u=N@6~J;h}?R&wV-QR-`%BIYCSivr19491b@p;mYK_H z*;G_9XN#cSd>)4!5fX?W3a&hYGa1_37$|0AJ7yOp$Y(yx7I3~NByoRbf-O2w8@bI( zz1uYw7+9)xKe&+P7}_7_xUzGCQuFggA5N6hkbuSXcfA05ncTe}{@jVG)j0EyDTB@c z3#`}6EL);Nje7`(W(sH4G6U)N-47iRaDWl`p)y+3h~Mki4bilGoApOdxh#0Q+TD;k zGfHk`1cRx4dG@1OMSznsH14x=-U>ci?wcW ztdfUnY}^B=VB{;wUa6RA_qNc0 z-iyBNw0R`obT^r@RR6k<@^}XMC4tSn%+meYR2L#;Etw zf_vkywKP>7_HT9fXIoxE(mK{#TqmxEOiLBp?8+3|T*gdiec5}MBw#;|)h-+BHNuVa zAm>w3qFtwBuj=UyJzuWvZfPM$uko#lmF=y|(BHA?{Q0xIY`L!Xw%1@yq3inQm~Av4 zkHtxp=Q%RhnO-9;=gPyr;!m-|+pDmg`$O9GFTa=#ncsVI&FPeP%Ip9fB&i-9y@UH{ z-w<+bDH0?-tkz!Up(BINTN8`@IY$UUi7Ss!>#xz5t*2+QvbjDVDl23`*SIUJ&uG^# z2w03>fT`f>QFKJB=Ms$N?JsYRSz7EYYOP-p#%!`-n6T$r8^fW)S+upKRk%`7$m>M2RFZ!d_jzJ)H|bi;U%YM&Xb_$qdp(KA5N(T|*PPVcB!AWI=gdj%?_zUb2^#-ykH7jEo*!)|GC5 zboq?%518_U*~1YDwo(ezh!b=QSbVZsSNXi9^xV;e;oqbb6h!2V`yJ-!;i%TsD{{zC zGt@TaU$X$A8KpMYedNex3CA_Nf=X@@;h>R!u`xiJZSPD9JDwvf`$7#63 z&<4HW?pie8?poP=pX=n;tH+H*YF?ErXB4|lPi-ue>eQd~Fe7){O_JVS8`>RcSsd8D zK&e&20jGIyxK59F?{Cz+8ggAv&3qr3_kh4nZ?CJa?$m(&l-YoJ^>PuC+AXzi)N zELT^|T2{DeZ_)+_gQUj6$6$>1pTD@3Dd~!!SCs1lw4CDnI%0Dm+|*&KityhBp$46b%2uSA(^zX~ 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

<7}%(v}21@WLPD5e$AF@vZ6%{aP~T8`Z7p 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≪b?f}j)30AgFdGJB9 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

=5f)cdomQuXI!XLQh7RI~iIb7sGt%u+31$@t`3 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%0Dc1XWu4ez#Hdo6=hEO&;n^VDg&n{}rKuhM> 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 u&F7ldKEb-Y-by;3BKKnmWD=h~A diff --git a/docs/source/images/chatgpt_vision/good.png b/docs/source/images/chatgpt_vision/good.png index 16d392d96bfb1fc14b9d74124c6ceb6298e69b6c..20688478d6af6ee2327ef8417188a3d034a85f91 100644 GIT binary patch literal 141122 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�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 vFOHK}<^jy(uhq-`CL_7-l0!hU* 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 Date: Tue, 20 Aug 2024 13:41:18 +0200 Subject: [PATCH 23/42] Update src/anomalib/models/image/chatgpt_vision/__init__.py Co-authored-by: Samet Akcay --- src/anomalib/models/image/chatgpt_vision/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/anomalib/models/image/chatgpt_vision/__init__.py b/src/anomalib/models/image/chatgpt_vision/__init__.py index 5aec434360..34423373f4 100644 --- a/src/anomalib/models/image/chatgpt_vision/__init__.py +++ b/src/anomalib/models/image/chatgpt_vision/__init__.py @@ -1,4 +1,4 @@ -"""Llm model.""" +"""Generative Pre-Trained Transformer (GPT) based Large Language Model (LLM).""" # Copyright (C) 2024 Intel Corporation # SPDX-License-Identifier: Apache-2.0 From b703a41d0626753ec47a9d2f0ca6ec847fac04bc Mon Sep 17 00:00:00 2001 From: Paco Date: Tue, 20 Aug 2024 13:41:29 +0200 Subject: [PATCH 24/42] Update src/anomalib/models/image/chatgpt_vision/chatgpt.py Co-authored-by: Samet Akcay --- src/anomalib/models/image/chatgpt_vision/chatgpt.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/anomalib/models/image/chatgpt_vision/chatgpt.py b/src/anomalib/models/image/chatgpt_vision/chatgpt.py index c30c0b99e6..6d66b6a23c 100644 --- a/src/anomalib/models/image/chatgpt_vision/chatgpt.py +++ b/src/anomalib/models/image/chatgpt_vision/chatgpt.py @@ -7,7 +7,7 @@ import openai -class ChatGPTWrapper: +class GPTWrapper: """A wrapper class for making API calls to OpenAI's GPT-4 model to detect anomalies in images. Environment variable OPENAI_API_KEY (str): API key for OpenAI. From 24c5486c5d80b03d20e30c5ede7ae56fdc566e2c Mon Sep 17 00:00:00 2001 From: Paco Date: Tue, 20 Aug 2024 13:42:03 +0200 Subject: [PATCH 25/42] Update src/anomalib/models/image/chatgpt_vision/lightning_model.py Co-authored-by: Samet Akcay --- src/anomalib/models/image/chatgpt_vision/lightning_model.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/anomalib/models/image/chatgpt_vision/lightning_model.py b/src/anomalib/models/image/chatgpt_vision/lightning_model.py index 1dccc16d94..74d06d7ed8 100644 --- a/src/anomalib/models/image/chatgpt_vision/lightning_model.py +++ b/src/anomalib/models/image/chatgpt_vision/lightning_model.py @@ -25,7 +25,7 @@ class ChatGPTVision(AnomalyModule): - """OpenaiVlm Lightning model using OpenAI's GPT-4 for image anomaly detection. + """OpenAI VLM Lightning model using OpenAI's GPT-4 for image anomaly detection. Args: k_shot(int): The number of images that will compare to detect if it is an anomaly. From 68e757e760fc35d60fa6a7927c4f39a6c5fceda0 Mon Sep 17 00:00:00 2001 From: Paco Date: Tue, 20 Aug 2024 13:43:28 +0200 Subject: [PATCH 26/42] Update tests/integration/model/test_models.py Co-authored-by: Samet Akcay --- tests/integration/model/test_models.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/integration/model/test_models.py b/tests/integration/model/test_models.py index a071ab2709..49421f559c 100644 --- a/tests/integration/model/test_models.py +++ b/tests/integration/model/test_models.py @@ -37,7 +37,7 @@ def test_fit(self, model_name: str, dataset_path: Path, project_path: Path) -> N """Fit the model and save checkpoint. Args: - mock_chatgptwrapper(Mock): Mock the wrapper of openAI API for chatgpt. + mock_chat_gpt_wrapper(Mock): Mock the wrapper of openAI API for chatgpt. model_name (str): Name of the model. dataset_path (Path): Root to dataset from fixture. project_path (Path): Path to temporary project folder from fixture. From 86714a115012af7f94b461e17bbc7f5ba34945bb Mon Sep 17 00:00:00 2001 From: Paco Date: Tue, 20 Aug 2024 13:56:36 +0200 Subject: [PATCH 27/42] Update src/anomalib/models/image/chatgpt_vision/lightning_model.py Co-authored-by: Samet Akcay --- src/anomalib/models/image/chatgpt_vision/lightning_model.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/anomalib/models/image/chatgpt_vision/lightning_model.py b/src/anomalib/models/image/chatgpt_vision/lightning_model.py index 74d06d7ed8..a740dd8920 100644 --- a/src/anomalib/models/image/chatgpt_vision/lightning_model.py +++ b/src/anomalib/models/image/chatgpt_vision/lightning_model.py @@ -88,8 +88,8 @@ def validation_step( """ del args, kwargs # These variables are not used. batch_size = len(batch["image_path"]) - out_list: list[str] = [] - pred_list: list[float] = [] + outputs: list[str] = [] + predictions: list[float] = [] for i in range(batch_size): # Getting the base64 string base64_images = [self._encode_image(img) for img in self.pre_images] From 196d2a385f7323c99832d89ec7da7c5636df758c Mon Sep 17 00:00:00 2001 From: Paco Date: Tue, 20 Aug 2024 15:58:24 +0200 Subject: [PATCH 28/42] Update src/anomalib/models/image/chatgpt_vision/lightning_model.py Co-authored-by: Samet Akcay --- src/anomalib/models/image/chatgpt_vision/lightning_model.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/anomalib/models/image/chatgpt_vision/lightning_model.py b/src/anomalib/models/image/chatgpt_vision/lightning_model.py index a740dd8920..1681ff45df 100644 --- a/src/anomalib/models/image/chatgpt_vision/lightning_model.py +++ b/src/anomalib/models/image/chatgpt_vision/lightning_model.py @@ -29,7 +29,7 @@ class ChatGPTVision(AnomalyModule): Args: k_shot(int): The number of images that will compare to detect if it is an anomaly. - model_name (str): The openAI vlm for the image detection. + model_name (str): The OpenAI VLM for the image anomaly detection. detail (bool): The detail of the input in the vlm for the image detection 'high'(true) 'low'(false). """ From b7f345a870ffd90042da79557db01f32ac27e1b5 Mon Sep 17 00:00:00 2001 From: Bepitic Date: Tue, 20 Aug 2024 16:17:41 +0200 Subject: [PATCH 29/42] fix comments Signed-off-by: Bepitic --- .../{chatgpt_vision => gptvad}/broken.png | Bin .../{chatgpt_vision => gptvad}/good.png | Bin src/anomalib/models/__init__.py | 4 +- src/anomalib/models/image/__init__.py | 4 +- .../{chatgpt_vision => gptvad}/__init__.py | 4 +- .../{chatgpt_vision => gptvad}/chatgpt.py | 3 + .../models/image/gptvad/lightning_model.py | 155 ++++++++++++++++++ .../{chatgpt_vision => gptvad}/readme.md | 6 +- 8 files changed, 167 insertions(+), 9 deletions(-) rename docs/source/images/{chatgpt_vision => gptvad}/broken.png (100%) rename docs/source/images/{chatgpt_vision => gptvad}/good.png (100%) rename src/anomalib/models/image/{chatgpt_vision => gptvad}/__init__.py (69%) rename src/anomalib/models/image/{chatgpt_vision => gptvad}/chatgpt.py (95%) create mode 100644 src/anomalib/models/image/gptvad/lightning_model.py rename src/anomalib/models/image/{chatgpt_vision => gptvad}/readme.md (93%) diff --git a/docs/source/images/chatgpt_vision/broken.png b/docs/source/images/gptvad/broken.png similarity index 100% rename from docs/source/images/chatgpt_vision/broken.png rename to docs/source/images/gptvad/broken.png diff --git a/docs/source/images/chatgpt_vision/good.png b/docs/source/images/gptvad/good.png similarity index 100% rename from docs/source/images/chatgpt_vision/good.png rename to docs/source/images/gptvad/good.png diff --git a/src/anomalib/models/__init__.py b/src/anomalib/models/__init__.py index de7744026f..e2c6e79335 100644 --- a/src/anomalib/models/__init__.py +++ b/src/anomalib/models/__init__.py @@ -15,7 +15,6 @@ from .image import ( Cfa, Cflow, - ChatGPTVision, Csflow, Dfkde, Dfm, @@ -25,6 +24,7 @@ Fastflow, Fre, Ganomaly, + GPTVad, Padim, Patchcore, ReverseDistillation, @@ -43,7 +43,6 @@ class UnknownModelError(ModuleNotFoundError): __all__ = [ "Cfa", "Cflow", - "ChatGPTVision", "Csflow", "Dfkde", "Dfm", @@ -53,6 +52,7 @@ class UnknownModelError(ModuleNotFoundError): "Fastflow", "Fre", "Ganomaly", + "GPTVad", "Padim", "Patchcore", "ReverseDistillation", diff --git a/src/anomalib/models/image/__init__.py b/src/anomalib/models/image/__init__.py index 740538a820..721fdbb441 100644 --- a/src/anomalib/models/image/__init__.py +++ b/src/anomalib/models/image/__init__.py @@ -5,7 +5,6 @@ from .cfa import Cfa from .cflow import Cflow -from .chatgpt_vision import ChatGPTVision from .csflow import Csflow from .dfkde import Dfkde from .dfm import Dfm @@ -15,6 +14,7 @@ from .fastflow import Fastflow from .fre import Fre from .ganomaly import Ganomaly +from .gptvad import GPTVad from .padim import Padim from .patchcore import Patchcore from .reverse_distillation import ReverseDistillation @@ -26,7 +26,6 @@ __all__ = [ "Cfa", "Cflow", - "ChatGPTVision", "Csflow", "Dfkde", "Dfm", @@ -36,6 +35,7 @@ "Fastflow", "Fre", "Ganomaly", + "GPTVad", "Padim", "Patchcore", "ReverseDistillation", diff --git a/src/anomalib/models/image/chatgpt_vision/__init__.py b/src/anomalib/models/image/gptvad/__init__.py similarity index 69% rename from src/anomalib/models/image/chatgpt_vision/__init__.py rename to src/anomalib/models/image/gptvad/__init__.py index 34423373f4..72e6f3d6cd 100644 --- a/src/anomalib/models/image/chatgpt_vision/__init__.py +++ b/src/anomalib/models/image/gptvad/__init__.py @@ -3,6 +3,6 @@ # Copyright (C) 2024 Intel Corporation # SPDX-License-Identifier: Apache-2.0 -from .lightning_model import ChatGPTVision +from .lightning_model import GPTVad -__all__ = ["ChatGPTVision"] +__all__ = ["GPTVad"] diff --git a/src/anomalib/models/image/chatgpt_vision/chatgpt.py b/src/anomalib/models/image/gptvad/chatgpt.py similarity index 95% rename from src/anomalib/models/image/chatgpt_vision/chatgpt.py rename to src/anomalib/models/image/gptvad/chatgpt.py index 6d66b6a23c..3bcc34a368 100644 --- a/src/anomalib/models/image/chatgpt_vision/chatgpt.py +++ b/src/anomalib/models/image/gptvad/chatgpt.py @@ -12,6 +12,9 @@ class GPTWrapper: Environment variable OPENAI_API_KEY (str): API key for OpenAI. https://platform.openai.com/docs/quickstart/step-2-set-up-your-api-key + Other possible models: https://platform.openai.com/docs/models/gpt-4-turbo-and-gpt-4 + All models with vision capabilities: 'gpt-4-turbo-2024-04-09', 'gpt-4-turbo', + all versions of 'gpt-4o-mini', and 'gpt-4o' Args: model_name (str): Model name for OpenAI API VLM. Default "gpt-4o" diff --git a/src/anomalib/models/image/gptvad/lightning_model.py b/src/anomalib/models/image/gptvad/lightning_model.py new file mode 100644 index 0000000000..713e457041 --- /dev/null +++ b/src/anomalib/models/image/gptvad/lightning_model.py @@ -0,0 +1,155 @@ +"""OpenAI Visual Large Model: Zero-/Few-Shot Anomaly Classification. + +Paper (No paper) +""" +# Copyright (C) 2024 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + +import base64 +import logging +from pathlib import Path + +import torch +from lightning.pytorch.utilities.types import STEP_OUTPUT +from torch.utils.data import DataLoader + +from anomalib import LearningType +from anomalib.metrics.threshold import ManualThreshold +from anomalib.models.components import AnomalyModule + +from .chatgpt import GPTWrapper + +logger = logging.getLogger(__name__) + +__all__ = ["GPTVad"] + + +class GPTVad(AnomalyModule): + """OpenAI VLM Lightning model using OpenAI's GPT-4 for image anomaly detection. + + Args: + k_shot(int): The number of images that will compare to detect if it is an anomaly. + model_name (str): The OpenAI VLM for visual anomaly detection. + detail (bool): The detail of the input in the vlm for the image detection 'high'(true) 'low'(false). + """ + + def __init__( + self, + k_shot: int = 0, + model_name: str = "gpt-4o", + detail: bool = True, + ) -> None: + super().__init__() + + self.k_shot = k_shot + + self.model_name = model_name + self.detail = detail + self.image_threshold = ManualThreshold() + self.vlm = GPTWrapper(model_name=self.model_name, detail=self.detail) + + def _setup(self) -> None: + dataloader = self.trainer.datamodule.train_dataloader() + pre_images = self.collect_reference_images(dataloader) + self.pre_images = pre_images + + def _encode_image(self, image_path: str) -> str: + """Function to encode the image into base64 to send it with the prompt.""" + path = Path(image_path) + with path.open("rb") as image_file: + return base64.b64encode(image_file.read()).decode("utf-8") + + def training_step(self, batch: dict[str, str | torch.Tensor], *args, **kwargs) -> dict[str, str | torch.Tensor]: + """Train Step of LLM.""" + del args, kwargs # These variables are not used. + # no train on llm + return batch + + @staticmethod + def configure_optimizers() -> None: + """OpenaiVlm doesn't require optimization, therefore returns no optimizers.""" + return + + def validation_step( + self, + batch: dict[str, str | list[str] | torch.Tensor], + *args, + **kwargs, + ) -> STEP_OUTPUT: + """Get batch of anomaly maps from input image batch. + + Args: + batch (dict[str, str | list[str] | torch.Tensor]): Batch containing image filename, image, label and mask + args: Additional arguments. + kwargs: Additional keyword arguments. + + Returns: + dict[str, Any]: str_otput and pred_scores, the output of the Llm and pred_scores 1.0 if is an anomaly image. + """ + del args, kwargs # These variables are not used. + batch_size = len(batch["image_path"]) + outputs: list[str] = [] + predictions: list[float] = [] + for i in range(batch_size): + # Getting the base64 string + base64_images = [self._encode_image(img) for img in self.pre_images] + base64_images.append(self._encode_image(batch["image_path"][i])) + + try: + output = self.vlm.api_call(base64_images) + except Exception: + logging.exception( + f"Error calling openAI API for image {batch['image_path'][i]}", + ) + output = "Error" + + # set an error and get to normal if not followed + prediction = 0.0 + if output.startswith("N"): + prediction = 0.0 + elif output.startswith("Y"): + prediction = 1.0 + else: + logging.warning( + f"(Set predition to '0' Normal)Could not identify if there is anomaly by the output:\n{output}", + ) + + outputs.append(output) + predictions.append(prediction) + logging.debug(f"Output: {output}, Prediction: {prediction}") + + batch["str_output"] = outputs + batch["pred_scores"] = torch.tensor(predictions).to(self.device) + batch["pred_labels"] = torch.tensor(predictions).to(self.device) + return batch + + @property + def trainer_arguments(self) -> dict[str, int | float]: + """Set model-specific trainer arguments.""" + return {} + + @property + def learning_type(self) -> LearningType: + """The learning type of the model. + + Llm is a zero-/few-shot model, depending on the user configuration. Therefore, the learning type is + set to ``LearningType.FEW_SHOT`` when ``k_shot`` is greater than zero and ``LearningType.ZERO_SHOT`` otherwise. + """ + return LearningType.ZERO_SHOT if self.k_shot == 0 else LearningType.FEW_SHOT + + def collect_reference_images(self, dataloader: DataLoader) -> list[str]: + """Collect reference images for few-shot inference. + + The reference images are collected by iterating the training dataset until the required number of images are + collected. + + Returns: + ref_images list[str]: A list containing the reference images path. + """ + reference_images_paths: list[str] = [] + for batch in dataloader: + image_paths = batch["image_path"][: self.k_shot - len(reference_images_paths)] + reference_images_paths.extend(image_paths) + if self.k_shot == len(reference_images_paths): + break + return reference_images_paths diff --git a/src/anomalib/models/image/chatgpt_vision/readme.md b/src/anomalib/models/image/gptvad/readme.md similarity index 93% rename from src/anomalib/models/image/chatgpt_vision/readme.md rename to src/anomalib/models/image/gptvad/readme.md index 90a0d5b42c..36aad56c6a 100644 --- a/src/anomalib/models/image/chatgpt_vision/readme.md +++ b/src/anomalib/models/image/gptvad/readme.md @@ -80,16 +80,16 @@ engine.test(model=model, datamodule=datamodule) The model returns a response indicating whether an anomaly is detected: -- **Zero-Shot Example**: +- **Zero-Shot/Few-Shot Example**: ```plaintext "NO" ``` - ![Openai result no anomaly](/docs/source/images/chatgpt_vision/good.png "Openai without anomaly result") + ![GPTVad result no anomaly](/docs/source/images/gptvad/good.png "GPTVad without anomaly result") ```plaintext "YES: Description of the detected anomaly." ``` - ![Openai result with anomaly](/docs/source/images/chatgpt_vision/broken.png "Openai with Anomaly result") + ![GPTVad result with anomaly](/docs/source/images/gptvad/broken.png "GPTVad with Anomaly result") From b285d1037b70404d1b7ccb3a831f8f9d4c75e9ce Mon Sep 17 00:00:00 2001 From: Bepitic Date: Tue, 20 Aug 2024 16:19:49 +0200 Subject: [PATCH 30/42] remove last file of chatgpt_vision. Signed-off-by: Bepitic --- .../image/chatgpt_vision/lightning_model.py | 155 ------------------ 1 file changed, 155 deletions(-) delete mode 100644 src/anomalib/models/image/chatgpt_vision/lightning_model.py diff --git a/src/anomalib/models/image/chatgpt_vision/lightning_model.py b/src/anomalib/models/image/chatgpt_vision/lightning_model.py deleted file mode 100644 index 1681ff45df..0000000000 --- a/src/anomalib/models/image/chatgpt_vision/lightning_model.py +++ /dev/null @@ -1,155 +0,0 @@ -"""OpenAI Visual Large Model: Zero-/Few-Shot Anomaly Classification. - -Paper (No paper) -""" -# Copyright (C) 2024 Intel Corporation -# SPDX-License-Identifier: Apache-2.0 - -import base64 -import logging -from pathlib import Path - -import torch -from lightning.pytorch.utilities.types import STEP_OUTPUT -from torch.utils.data import DataLoader - -from anomalib import LearningType -from anomalib.metrics.threshold import ManualThreshold -from anomalib.models.components import AnomalyModule - -from .chatgpt import ChatGPTWrapper - -logger = logging.getLogger(__name__) - -__all__ = ["ChatGPTVision"] - - -class ChatGPTVision(AnomalyModule): - """OpenAI VLM Lightning model using OpenAI's GPT-4 for image anomaly detection. - - Args: - k_shot(int): The number of images that will compare to detect if it is an anomaly. - model_name (str): The OpenAI VLM for the image anomaly detection. - detail (bool): The detail of the input in the vlm for the image detection 'high'(true) 'low'(false). - """ - - def __init__( - self, - k_shot: int = 0, - model_name: str = "gpt-4o-mini-2024-07-18", - detail: bool = True, - ) -> None: - super().__init__() - - self.k_shot = k_shot - - self.model_name = model_name - self.detail = detail - self.image_threshold = ManualThreshold() - self.vlm = ChatGPTWrapper(model_name=self.model_name, detail=self.detail) - - def _setup(self) -> None: - dataloader = self.trainer.datamodule.train_dataloader() - pre_images = self.collect_reference_images(dataloader) - self.pre_images = pre_images - - # Function to encode the image - def _encode_image(self, image_path: str) -> str: - path = Path(image_path) - with path.open("rb") as image_file: - return base64.b64encode(image_file.read()).decode("utf-8") - - def training_step(self, batch: dict[str, str | torch.Tensor], *args, **kwargs) -> dict[str, str | torch.Tensor]: - """Train Step of LLM.""" - del args, kwargs # These variables are not used. - # no train on llm - return batch - - @staticmethod - def configure_optimizers() -> None: - """OpenaiVlm doesn't require optimization, therefore returns no optimizers.""" - return - - def validation_step( - self, - batch: dict[str, str | list[str] | torch.Tensor], - *args, - **kwargs, - ) -> STEP_OUTPUT: - """Get batch of anomaly maps from input image batch. - - Args: - batch (dict[str, str | list[str] | torch.Tensor]): Batch containing image filename, image, label and mask - args: Additional arguments. - kwargs: Additional keyword arguments. - - Returns: - dict[str, Any]: str_otput and pred_scores, the output of the Llm and pred_scores 1.0 if is an anomaly image. - """ - del args, kwargs # These variables are not used. - batch_size = len(batch["image_path"]) - outputs: list[str] = [] - predictions: list[float] = [] - for i in range(batch_size): - # Getting the base64 string - base64_images = [self._encode_image(img) for img in self.pre_images] - base64_images.append(self._encode_image(batch["image_path"][i])) - - try: - output = self.vlm.api_call(base64_images) - except Exception: - logging.exception( - f"Error calling openAI API for image {batch['image_path'][i]}", - ) - output = "Error" - - # set an error and get to normal if not followed - prediction = 0.0 - if output.startswith("N"): - prediction = 0.0 - elif output.startswith("Y"): - prediction = 1.0 - else: - logging.warning( - f"(Set predition to '0' Normal)Could not identify if there is anomaly by the output:\n{output}", - ) - - out_list.append(output) - pred_list.append(prediction) - logging.debug(f"Output: {output}, Prediction: {prediction}") - - batch["str_output"] = out_list - batch["pred_scores"] = torch.tensor(pred_list).to(self.device) - batch["pred_labels"] = torch.tensor(pred_list).to(self.device) - return batch - - @property - def trainer_arguments(self) -> dict[str, int | float]: - """Set model-specific trainer arguments.""" - return {} - - @property - def learning_type(self) -> LearningType: - """The learning type of the model. - - Llm is a zero-/few-shot model, depending on the user configuration. Therefore, the learning type is - set to ``LearningType.FEW_SHOT`` when ``k_shot`` is greater than zero and ``LearningType.ZERO_SHOT`` otherwise. - """ - return LearningType.ZERO_SHOT if self.k_shot == 0 else LearningType.FEW_SHOT - - def collect_reference_images(self, dataloader: DataLoader) -> list[str]: - """Collect reference images for few-shot inference. - - The reference images are collected by iterating the training dataset until the required number of images are - collected. - - Returns: - ref_images list[str]: A list containing the reference images path. - """ - reference_images_paths: list[str] = [] - for batch in dataloader: - image_paths = batch["image_path"][: self.k_shot - len(reference_images_paths)] - reference_images_paths.extend(image_paths) - if self.k_shot == len(reference_images_paths): - break - return reference_images_paths From a6885302d8531e5e814d5609ef0f6bc0d198a5ad Mon Sep 17 00:00:00 2001 From: Bepitic Date: Tue, 20 Aug 2024 17:42:44 +0200 Subject: [PATCH 31/42] fix tests Signed-off-by: Bepitic --- src/anomalib/models/image/gptvad/readme.md | 7 ++- tests/integration/model/test_models.py | 11 ++-- .../models/image/chatgpt_vision/__init__.py | 2 +- .../models/image/chatgpt_vision/test_api.py | 53 +++++++++++-------- 4 files changed, 41 insertions(+), 32 deletions(-) diff --git a/src/anomalib/models/image/gptvad/readme.md b/src/anomalib/models/image/gptvad/readme.md index 36aad56c6a..8fe713c4a4 100644 --- a/src/anomalib/models/image/gptvad/readme.md +++ b/src/anomalib/models/image/gptvad/readme.md @@ -1,4 +1,4 @@ -# OpenAI VLM: Zero-/Few-Shot Anomaly Classification +# GPTVad: Zero-/Few-Shot Anomaly Classification This repository contains the implementation of the `OpenAI VLM`, a model designed for zero-shot and few-shot anomaly detection using OpenAI's GPT-4 for image analysis. @@ -29,7 +29,10 @@ from anomalib.models import ChatGPTVision from dotenv import load_dotenv # Load the environment variables from the .env file -# load_dotenv(dotenv_path=env_path) +# The implementation searchs for an environment variable OPENAI_API_KEY +# that will contain the key of OpenAI. + +# load from .env to an environment variable. load_dotenv() model = ChatGPTVision(k_shot=0) diff --git a/tests/integration/model/test_models.py b/tests/integration/model/test_models.py index 49421f559c..b82305144e 100644 --- a/tests/integration/model/test_models.py +++ b/tests/integration/model/test_models.py @@ -37,7 +37,6 @@ def test_fit(self, model_name: str, dataset_path: Path, project_path: Path) -> N """Fit the model and save checkpoint. Args: - mock_chat_gpt_wrapper(Mock): Mock the wrapper of openAI API for chatgpt. model_name (str): Name of the model. dataset_path (Path): Root to dataset from fixture. project_path (Path): Path to temporary project folder from fixture. @@ -183,21 +182,21 @@ def _get_objects( and engine """ # Mock the ChatGPTWrapper if the model_name is "chat_g_p_t_vision" - if model_name == "chat_g_p_t_vision": + if model_name == "g_p_t_vad": os.environ["OPENAI_API_KEY"] = "fake-api-key" with ( - patch("anomalib.models.image.chatgpt_vision.chatgpt.ChatGPTWrapper") as mock_chatgptwrapper, + patch("anomalib.models.image.gptvad.chatgpt.GPTWrapper") as mock_gptwrapper, ): - mock_instance = mock_chatgptwrapper.return_value + mock_instance = mock_gptwrapper.return_value mock_instance.api_call.return_value = "NO" - self.mock_chatgptwrapper = mock_chatgptwrapper # Store the mock for potential later use + self.mock_gptwrapper = mock_gptwrapper # Store the mock for potential later use # select task type if model_name in ("rkde", "ai_vad"): task_type = TaskType.DETECTION elif model_name in ("ganomaly", "dfkde"): task_type = TaskType.CLASSIFICATION - elif model_name in ("chat_g_p_t_vision"): + elif model_name in ("g_p_t_vad"): task_type = TaskType.EXPLANATION else: task_type = TaskType.SEGMENTATION diff --git a/tests/unit/models/image/chatgpt_vision/__init__.py b/tests/unit/models/image/chatgpt_vision/__init__.py index 36349489fd..3269b1137b 100644 --- a/tests/unit/models/image/chatgpt_vision/__init__.py +++ b/tests/unit/models/image/chatgpt_vision/__init__.py @@ -1,4 +1,4 @@ -"""Unit tests for ChatGPTVision zero-/few-shot anomaly detection model.""" +"""Unit tests for GPTVad zero-/few-shot anomaly detection model.""" # Copyright (C) 2024 Intel Corporation # SPDX-License-Identifier: Apache-2.0 diff --git a/tests/unit/models/image/chatgpt_vision/test_api.py b/tests/unit/models/image/chatgpt_vision/test_api.py index 8548fce280..e345b6b431 100644 --- a/tests/unit/models/image/chatgpt_vision/test_api.py +++ b/tests/unit/models/image/chatgpt_vision/test_api.py @@ -1,26 +1,33 @@ -"""Unit tests for OpenAI Api funtions.""" +"""Unit tests for GPTVad OpenAI Api funtions.""" import os -import unittest -from unittest.mock import MagicMock, Mock, patch -from anomalib.models.image.chatgpt_vision.chatgpt import ChatGPTWrapper +import pytest +from pytest_mock import MockerFixture +from anomalib.models.image.gptvad.chatgpt import GPTWrapper -class TestChatGPTWrapper(unittest.TestCase): + +class TestGPTWrapper: """Unit tests for api_call.""" - @patch.dict(os.environ, {"OPENAI_API_KEY": "fake-api-key"}) - @patch("anomalib.models.image.chatgpt_vision.chatgpt.openai.chat.completions.create") - def test_api_call(self, mock_openai_create: Mock) -> None: + @pytest.fixture(autouse=True) + def _mock_env(self, mocker: MockerFixture) -> None: + """Fixture to automatically patch environment variables.""" + mocker.patch.dict(os.environ, {"OPENAI_API_KEY": "fake-api-key"}) + + def test_api_call(self, mocker: MockerFixture) -> None: """Tests for api_call positive response and few shot.""" # Set up the mock response from OpenAI - mock_response = MagicMock() - mock_response.choices = [MagicMock(message=MagicMock(content="YES: Anomaly detected."))] + mock_response = mocker.MagicMock() + mock_response.choices = [mocker.MagicMock(message=mocker.MagicMock(content="YES: Anomaly detected."))] + + # Mock the openai.chat.completions.create function + mock_openai_create = mocker.patch("anomalib.models.image.gptvad.chatgpt.openai.chat.completions.create") mock_openai_create.return_value = mock_response - # Initialize the ChatGPTWrapper instance - wrapper = ChatGPTWrapper(model_name="gpt-4o-mini-2024-07-18", detail=True) + # Initialize the GPTWrapper instance + wrapper = GPTWrapper(model_name="gpt-4o-mini-2024-07-18", detail=True) # Prepare test images (simulated base64 encoded strings) test_images = ["base64encodedimage1", "base64encodedimage2"] @@ -29,26 +36,26 @@ def test_api_call(self, mock_openai_create: Mock) -> None: response = wrapper.api_call(images=test_images) # Check if the response matches the expected output - assert response, "YES: Anomaly detected." + assert response == "YES: Anomaly detected." # Check if the openai API was called with the expected parameters mock_openai_create.assert_called_once_with( model="gpt-4o-mini-2024-07-18", - messages=unittest.mock.ANY, # Ignore specific messages content in this check + messages=mocker.ANY, # Ignore specific messages content in this check max_tokens=300, ) - @patch.dict(os.environ, {"OPENAI_API_KEY": "fake-api-key"}) - @patch("anomalib.models.image.chatgpt_vision.chatgpt.openai.chat.completions.create") - def test_api_call_no_anomaly(self, mock_openai_create: Mock) -> None: - """Testsfor api_call negative response and zero shot.""" + def test_api_call_no_anomaly(self, mocker: MockerFixture) -> None: + """Tests for api_call negative response and zero shot.""" # Set up the mock response from OpenAI - mock_response = MagicMock() - mock_response.choices = [MagicMock(message=MagicMock(content="NO"))] + mock_response = mocker.MagicMock() + mock_response.choices = [mocker.MagicMock(message=mocker.MagicMock(content="NO"))] + # Mock the openai.chat.completions.create function + mock_openai_create = mocker.patch("anomalib.models.image.gptvad.chatgpt.openai.chat.completions.create") mock_openai_create.return_value = mock_response - # Initialize the ChatGPTWrapper instance - wrapper = ChatGPTWrapper(model_name="gpt-4o-mini-2024-07-18", detail=False) + # Initialize the GPTWrapper instance + wrapper = GPTWrapper(model_name="gpt-4o-mini-2024-07-18", detail=False) # Prepare test images (simulated base64 encoded strings) test_images = ["base64encodedimage1"] @@ -57,7 +64,7 @@ def test_api_call_no_anomaly(self, mock_openai_create: Mock) -> None: response = wrapper.api_call(images=test_images) # Check if the response matches the expected output - assert response, "NO" + assert response == "NO" # Check if the openai API was called correctly mock_openai_create.assert_called_once() From 8e92e5e309b5a5bce1ac58fbe28a505f6409fc11 Mon Sep 17 00:00:00 2001 From: Paco Date: Wed, 21 Aug 2024 12:32:33 +0200 Subject: [PATCH 32/42] Update src/anomalib/models/image/gptvad/chatgpt.py Co-authored-by: Ashwin Vaidya --- src/anomalib/models/image/gptvad/chatgpt.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/anomalib/models/image/gptvad/chatgpt.py b/src/anomalib/models/image/gptvad/chatgpt.py index 3bcc34a368..4ee15dab24 100644 --- a/src/anomalib/models/image/gptvad/chatgpt.py +++ b/src/anomalib/models/image/gptvad/chatgpt.py @@ -122,6 +122,6 @@ def api_call( ) return response.choices[-1].message.content or "" except Exception: - msg = "The openai API trow an exception." + msg = "Error generating a response with OpenAI API." logging.exception(msg) raise From 5ab044ddb0bbdaec0cd2effdf2090818e4fa7039 Mon Sep 17 00:00:00 2001 From: Bepitic Date: Wed, 21 Aug 2024 14:19:26 +0200 Subject: [PATCH 33/42] upd: language -> VISUAL_PROMPTING Signed-off-by: Bepitic --- src/anomalib/__init__.py | 2 +- src/anomalib/callbacks/metrics.py | 2 +- src/anomalib/data/base/dataset.py | 6 +++--- src/anomalib/data/base/depth.py | 2 +- src/anomalib/deploy/inferencers/openvino_inferencer.py | 2 +- src/anomalib/utils/visualization/image.py | 4 ++-- tests/unit/utils/test_visualizer.py | 6 +++--- 7 files changed, 12 insertions(+), 12 deletions(-) diff --git a/src/anomalib/__init__.py b/src/anomalib/__init__.py index b7e3602239..05abd94901 100644 --- a/src/anomalib/__init__.py +++ b/src/anomalib/__init__.py @@ -22,4 +22,4 @@ class TaskType(str, Enum): CLASSIFICATION = "classification" DETECTION = "detection" SEGMENTATION = "segmentation" - LANGUAGE = "language" + VISUAL_PROMPTING = "visual prompting" diff --git a/src/anomalib/callbacks/metrics.py b/src/anomalib/callbacks/metrics.py index b855d7ebb1..ac66160efa 100644 --- a/src/anomalib/callbacks/metrics.py +++ b/src/anomalib/callbacks/metrics.py @@ -75,7 +75,7 @@ def setup( pixel_metric_names: list[str] | dict[str, dict[str, Any]] if self.pixel_metric_names is None: pixel_metric_names = [] - elif self.task in (TaskType.CLASSIFICATION, TaskType.LANGUAGE): + elif self.task in (TaskType.CLASSIFICATION, TaskType.VISUAL_PROMPTING): pixel_metric_names = [] logger.warning( "Cannot perform pixel-level evaluation when task type is classification or language. " diff --git a/src/anomalib/data/base/dataset.py b/src/anomalib/data/base/dataset.py index 009508c6de..203860a830 100644 --- a/src/anomalib/data/base/dataset.py +++ b/src/anomalib/data/base/dataset.py @@ -20,11 +20,11 @@ from anomalib.data.utils import LabelName, masks_to_boxes, read_image, read_mask _EXPECTED_COLUMNS_CLASSIFICATION = ["image_path", "split"] -_EXPECTED_COLUMNS_LANGUAGE = ["image_path", "split"] +_EXPECTED_COLUMNS_VISUAL_PROMPTING = ["image_path", "split"] _EXPECTED_COLUMNS_SEGMENTATION = [*_EXPECTED_COLUMNS_CLASSIFICATION, "mask_path"] _EXPECTED_COLUMNS_PERTASK = { "classification": _EXPECTED_COLUMNS_CLASSIFICATION, - "language": _EXPECTED_COLUMNS_LANGUAGE, + "language": _EXPECTED_COLUMNS_VISUAL_PROMPTING, "segmentation": _EXPECTED_COLUMNS_SEGMENTATION, "detection": _EXPECTED_COLUMNS_SEGMENTATION, } @@ -171,7 +171,7 @@ def __getitem__(self, index: int) -> dict[str, str | torch.Tensor]: image = read_image(image_path, as_tensor=True) item = {"image_path": image_path, "label": label_index} - if self.task in (TaskType.CLASSIFICATION, TaskType.LANGUAGE): + if self.task in (TaskType.CLASSIFICATION, TaskType.VISUAL_PROMPTING): item["image"] = self.transform(image) if self.transform else image elif self.task in (TaskType.DETECTION, TaskType.SEGMENTATION): # Only Anomalous (1) images have masks in anomaly datasets diff --git a/src/anomalib/data/base/depth.py b/src/anomalib/data/base/depth.py index b4e1e64838..87c3e388a6 100644 --- a/src/anomalib/data/base/depth.py +++ b/src/anomalib/data/base/depth.py @@ -48,7 +48,7 @@ def __getitem__(self, index: int) -> dict[str, str | torch.Tensor]: depth_image = to_tensor(read_depth_image(depth_path)) item = {"image_path": image_path, "depth_path": depth_path, "label": label_index} - if self.task in (TaskType.CLASSIFICATION, TaskType.LANGUAGE): + if self.task in (TaskType.CLASSIFICATION, TaskType.VISUAL_PROMPTING): item["image"], item["depth_image"] = ( self.transform(image, depth_image) if self.transform else (image, depth_image) ) diff --git a/src/anomalib/deploy/inferencers/openvino_inferencer.py b/src/anomalib/deploy/inferencers/openvino_inferencer.py index aed6028433..ccae672c54 100644 --- a/src/anomalib/deploy/inferencers/openvino_inferencer.py +++ b/src/anomalib/deploy/inferencers/openvino_inferencer.py @@ -277,7 +277,7 @@ def post_process(self, predictions: np.ndarray, metadata: dict | DictConfig | No pred_idx = pred_score >= metadata["image_threshold"] pred_label = LabelName.ABNORMAL if pred_idx else LabelName.NORMAL - if task in (TaskType.CLASSIFICATION, TaskType.LANGUAGE): + if task in (TaskType.CLASSIFICATION, TaskType.VISUAL_PROMPTING): _, pred_score = self._normalize(pred_scores=pred_score, metadata=metadata) elif task in (TaskType.SEGMENTATION, TaskType.DETECTION): if "pixel_threshold" in metadata: diff --git a/src/anomalib/utils/visualization/image.py b/src/anomalib/utils/visualization/image.py index 7d2b151120..b061d0afe2 100644 --- a/src/anomalib/utils/visualization/image.py +++ b/src/anomalib/utils/visualization/image.py @@ -242,7 +242,7 @@ def _visualize_full(self, image_result: ImageResult) -> np.ndarray: else: image_classified = add_normal_label(image_result.image, 1 - image_result.pred_score) image_grid.add_image(image=image_classified, title="Prediction") - elif self.task == TaskType.LANGUAGE: + elif self.task == TaskType.VISUAL_PROMPTING: description = "" if image_result.text_descr: description = image_result.text_descr @@ -288,7 +288,7 @@ def _visualize_simple(self, image_result: ImageResult) -> np.ndarray: image_classified = add_normal_label(image_result.image, 1 - image_result.pred_score) return image_classified - if self.task == TaskType.LANGUAGE: + if self.task == TaskType.VISUAL_PROMPTING: image_grid = _ImageGrid() description = "" if image_result.text_descr: diff --git a/tests/unit/utils/test_visualizer.py b/tests/unit/utils/test_visualizer.py index b999adcd96..be6003ed5b 100644 --- a/tests/unit/utils/test_visualizer.py +++ b/tests/unit/utils/test_visualizer.py @@ -35,8 +35,8 @@ def test_visualize_fully_defected_masks() -> None: assert np.all(plotted_img[0][..., 0] == 255) -def test_model_visualizer_language() -> None: - """Test visualizer image on TaskType.LANGUAGE.""" +def test_model_visualizer_visual_prompting() -> None: + """Test visualizer image on TaskType.VISUAL_PROMPTING.""" anomaly_map = np.zeros((100, 100), dtype=np.float64) anomaly_map[10:20, 10:20] = 1.0 gt_mask = np.zeros((100, 100)) @@ -59,7 +59,7 @@ def test_model_visualizer_language() -> None: image_visualizer = ImageVisualizer( mode=VisualizationMode.FULL, - task=TaskType.LANGUAGE, + task=TaskType.VISUAL_PROMPTING, ) result = image_visualizer.visualize_image(image_result) From 3f9ca93c2acb79541485587acc712f16b2de84cd Mon Sep 17 00:00:00 2001 From: Bepitic Date: Wed, 21 Aug 2024 14:24:43 +0200 Subject: [PATCH 34/42] fix visual prompting and model_name Signed-off-by: Bepitic --- src/anomalib/models/image/gptvad/readme.md | 4 ++-- tests/integration/model/test_models.py | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/anomalib/models/image/gptvad/readme.md b/src/anomalib/models/image/gptvad/readme.md index 8fe713c4a4..0cff713c11 100644 --- a/src/anomalib/models/image/gptvad/readme.md +++ b/src/anomalib/models/image/gptvad/readme.md @@ -36,7 +36,7 @@ from dotenv import load_dotenv load_dotenv() model = ChatGPTVision(k_shot=0) -engine = Engine(task=TaskType.EXPLANATION) +engine = Engine(task=TaskType.VISUAL_PROMPTING) datamodule = MVTec( category=bottle, train_batch_size=1, @@ -61,7 +61,7 @@ from dotenv import load_dotenv load_dotenv() model = ChatGPTVision(k_shot=2) -engine = Engine(task=TaskType.EXPLANATION) +engine = Engine(task=TaskType.VISUAL_PROMPTING) datamodule = MVTec( category=bottle, train_batch_size=1, diff --git a/tests/integration/model/test_models.py b/tests/integration/model/test_models.py index b82305144e..f280e3b7e6 100644 --- a/tests/integration/model/test_models.py +++ b/tests/integration/model/test_models.py @@ -145,7 +145,7 @@ def test_export( dataset_path (Path): Root to dataset from fixture. project_path (Path): Path to temporary project folder from fixture. """ - if model_name == "chat_g_p_t_vision": + if model_name == "g_p_t_vad": pytest.skip(f"{model_name} can not be exported") if model_name == "rkde": @@ -181,7 +181,7 @@ def _get_objects( tuple[AnomalyModule, AnomalibDataModule, Engine]: Returns the created objects for model, dataset, and engine """ - # Mock the ChatGPTWrapper if the model_name is "chat_g_p_t_vision" + # Mock the GPTWrapper if the model_name is "g_p_t_vad" if model_name == "g_p_t_vad": os.environ["OPENAI_API_KEY"] = "fake-api-key" with ( @@ -197,7 +197,7 @@ def _get_objects( elif model_name in ("ganomaly", "dfkde"): task_type = TaskType.CLASSIFICATION elif model_name in ("g_p_t_vad"): - task_type = TaskType.EXPLANATION + task_type = TaskType.VISUAL_PROMPTING else: task_type = TaskType.SEGMENTATION From 391b4c4578cd2e39be403888bf249c89d519e2e5 Mon Sep 17 00:00:00 2001 From: Bepitic Date: Wed, 21 Aug 2024 14:46:19 +0200 Subject: [PATCH 35/42] fix GPT for Gpt and the folder of the tests. Signed-off-by: Bepitic --- src/anomalib/models/__init__.py | 4 ++-- src/anomalib/models/image/__init__.py | 4 ++-- src/anomalib/models/image/gptvad/__init__.py | 4 ++-- src/anomalib/models/image/gptvad/lightning_model.py | 4 ++-- src/anomalib/models/image/gptvad/readme.md | 6 +++--- tests/integration/model/test_models.py | 8 ++++---- .../models/image/{chatgpt_vision => gptvad}/__init__.py | 2 +- .../models/image/{chatgpt_vision => gptvad}/test_api.py | 4 +++- 8 files changed, 19 insertions(+), 17 deletions(-) rename tests/unit/models/image/{chatgpt_vision => gptvad}/__init__.py (56%) rename tests/unit/models/image/{chatgpt_vision => gptvad}/test_api.py (95%) diff --git a/src/anomalib/models/__init__.py b/src/anomalib/models/__init__.py index e2c6e79335..04fc19aa1b 100644 --- a/src/anomalib/models/__init__.py +++ b/src/anomalib/models/__init__.py @@ -24,7 +24,7 @@ Fastflow, Fre, Ganomaly, - GPTVad, + GptVad, Padim, Patchcore, ReverseDistillation, @@ -52,7 +52,7 @@ class UnknownModelError(ModuleNotFoundError): "Fastflow", "Fre", "Ganomaly", - "GPTVad", + "GptVad", "Padim", "Patchcore", "ReverseDistillation", diff --git a/src/anomalib/models/image/__init__.py b/src/anomalib/models/image/__init__.py index 721fdbb441..58b5ec6a49 100644 --- a/src/anomalib/models/image/__init__.py +++ b/src/anomalib/models/image/__init__.py @@ -14,7 +14,7 @@ from .fastflow import Fastflow from .fre import Fre from .ganomaly import Ganomaly -from .gptvad import GPTVad +from .gptvad import GptVad from .padim import Padim from .patchcore import Patchcore from .reverse_distillation import ReverseDistillation @@ -35,7 +35,7 @@ "Fastflow", "Fre", "Ganomaly", - "GPTVad", + "GptVad", "Padim", "Patchcore", "ReverseDistillation", diff --git a/src/anomalib/models/image/gptvad/__init__.py b/src/anomalib/models/image/gptvad/__init__.py index 72e6f3d6cd..2d396c7555 100644 --- a/src/anomalib/models/image/gptvad/__init__.py +++ b/src/anomalib/models/image/gptvad/__init__.py @@ -3,6 +3,6 @@ # Copyright (C) 2024 Intel Corporation # SPDX-License-Identifier: Apache-2.0 -from .lightning_model import GPTVad +from .lightning_model import GptVad -__all__ = ["GPTVad"] +__all__ = ["GptVad"] diff --git a/src/anomalib/models/image/gptvad/lightning_model.py b/src/anomalib/models/image/gptvad/lightning_model.py index 713e457041..ab8a3e76a3 100644 --- a/src/anomalib/models/image/gptvad/lightning_model.py +++ b/src/anomalib/models/image/gptvad/lightning_model.py @@ -21,10 +21,10 @@ logger = logging.getLogger(__name__) -__all__ = ["GPTVad"] +__all__ = ["GptVad"] -class GPTVad(AnomalyModule): +class GptVad(AnomalyModule): """OpenAI VLM Lightning model using OpenAI's GPT-4 for image anomaly detection. Args: diff --git a/src/anomalib/models/image/gptvad/readme.md b/src/anomalib/models/image/gptvad/readme.md index 0cff713c11..1adac36d02 100644 --- a/src/anomalib/models/image/gptvad/readme.md +++ b/src/anomalib/models/image/gptvad/readme.md @@ -1,4 +1,4 @@ -# GPTVad: Zero-/Few-Shot Anomaly Classification +# GptVad: Zero-/Few-Shot Anomaly Classification This repository contains the implementation of the `OpenAI VLM`, a model designed for zero-shot and few-shot anomaly detection using OpenAI's GPT-4 for image analysis. @@ -89,10 +89,10 @@ The model returns a response indicating whether an anomaly is detected: "NO" ``` - ![GPTVad result no anomaly](/docs/source/images/gptvad/good.png "GPTVad without anomaly result") + ![GptVad result no anomaly](/docs/source/images/gptvad/good.png "GptVad without anomaly result") ```plaintext "YES: Description of the detected anomaly." ``` - ![GPTVad result with anomaly](/docs/source/images/gptvad/broken.png "GPTVad with Anomaly result") + ![GptVad result with anomaly](/docs/source/images/gptvad/broken.png "GptVad with Anomaly result") diff --git a/tests/integration/model/test_models.py b/tests/integration/model/test_models.py index f280e3b7e6..8c3262dec2 100644 --- a/tests/integration/model/test_models.py +++ b/tests/integration/model/test_models.py @@ -145,7 +145,7 @@ def test_export( dataset_path (Path): Root to dataset from fixture. project_path (Path): Path to temporary project folder from fixture. """ - if model_name == "g_p_t_vad": + if model_name == "gpt_vad": pytest.skip(f"{model_name} can not be exported") if model_name == "rkde": @@ -181,8 +181,8 @@ def _get_objects( tuple[AnomalyModule, AnomalibDataModule, Engine]: Returns the created objects for model, dataset, and engine """ - # Mock the GPTWrapper if the model_name is "g_p_t_vad" - if model_name == "g_p_t_vad": + # Mock the GPTWrapper if the model_name is "gpt_vad" + if model_name == "gpt_vad": os.environ["OPENAI_API_KEY"] = "fake-api-key" with ( patch("anomalib.models.image.gptvad.chatgpt.GPTWrapper") as mock_gptwrapper, @@ -196,7 +196,7 @@ def _get_objects( task_type = TaskType.DETECTION elif model_name in ("ganomaly", "dfkde"): task_type = TaskType.CLASSIFICATION - elif model_name in ("g_p_t_vad"): + elif model_name in ("gpt_vad"): task_type = TaskType.VISUAL_PROMPTING else: task_type = TaskType.SEGMENTATION diff --git a/tests/unit/models/image/chatgpt_vision/__init__.py b/tests/unit/models/image/gptvad/__init__.py similarity index 56% rename from tests/unit/models/image/chatgpt_vision/__init__.py rename to tests/unit/models/image/gptvad/__init__.py index 3269b1137b..724f891c65 100644 --- a/tests/unit/models/image/chatgpt_vision/__init__.py +++ b/tests/unit/models/image/gptvad/__init__.py @@ -1,4 +1,4 @@ -"""Unit tests for GPTVad zero-/few-shot anomaly detection model.""" +"""Unit tests for GptVad zero-/few-shot anomaly detection model.""" # Copyright (C) 2024 Intel Corporation # SPDX-License-Identifier: Apache-2.0 diff --git a/tests/unit/models/image/chatgpt_vision/test_api.py b/tests/unit/models/image/gptvad/test_api.py similarity index 95% rename from tests/unit/models/image/chatgpt_vision/test_api.py rename to tests/unit/models/image/gptvad/test_api.py index e345b6b431..7545c2ee6b 100644 --- a/tests/unit/models/image/chatgpt_vision/test_api.py +++ b/tests/unit/models/image/gptvad/test_api.py @@ -1,4 +1,6 @@ -"""Unit tests for GPTVad OpenAI Api funtions.""" +"""Unit tests for GptVad OpenAI Api funtions.""" +# Copyright (C) 2024 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import os From ca1a0bbb0c2855c974a03859d006eb04313f338b Mon Sep 17 00:00:00 2001 From: Bepitic Date: Wed, 21 Aug 2024 14:48:33 +0200 Subject: [PATCH 36/42] fix: change import error outside. Signed-off-by: Bepitic --- src/anomalib/models/image/gptvad/chatgpt.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/anomalib/models/image/gptvad/chatgpt.py b/src/anomalib/models/image/gptvad/chatgpt.py index 4ee15dab24..8600e6d2c2 100644 --- a/src/anomalib/models/image/gptvad/chatgpt.py +++ b/src/anomalib/models/image/gptvad/chatgpt.py @@ -6,6 +6,8 @@ import openai +from anomalib.engine.engine import UnassignedError + class GPTWrapper: """A wrapper class for making API calls to OpenAI's GPT-4 model to detect anomalies in images. @@ -27,8 +29,6 @@ def __init__(self, model_name: str = "gpt-4o", detail: bool = True) -> None: self.model_name = model_name self.detail = detail if not openai_key: - from anomalib.engine.engine import UnassignedError - msg = "OpenAI environment key not found.(OPENAI_API_KEY)" raise UnassignedError(msg) From 022dcb7d1a28a84c5ec5a64344b7871a475a787c Mon Sep 17 00:00:00 2001 From: Bepitic Date: Wed, 21 Aug 2024 14:50:23 +0200 Subject: [PATCH 37/42] fix readme pointing to the right model. Signed-off-by: Bepitic --- src/anomalib/models/image/gptvad/readme.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/anomalib/models/image/gptvad/readme.md b/src/anomalib/models/image/gptvad/readme.md index 1adac36d02..f775caf9f2 100644 --- a/src/anomalib/models/image/gptvad/readme.md +++ b/src/anomalib/models/image/gptvad/readme.md @@ -25,7 +25,7 @@ In zero-shot mode, the model does not require any reference images: ```python from anomalib.data import MVTec from anomalib.engine import Engine -from anomalib.models import ChatGPTVision +from anomalib.models import GptVad from dotenv import load_dotenv # Load the environment variables from the .env file @@ -35,7 +35,7 @@ from dotenv import load_dotenv # load from .env to an environment variable. load_dotenv() -model = ChatGPTVision(k_shot=0) +model = GptVad(k_shot=0) engine = Engine(task=TaskType.VISUAL_PROMPTING) datamodule = MVTec( category=bottle, @@ -53,14 +53,14 @@ In few-shot mode, the model uses a small set of normal reference images: ```python from anomalib.data import MVTec from anomalib.engine import Engine -from anomalib.models import ChatGPTVision +from anomalib.models import GptVad from dotenv import load_dotenv # Load the environment variables from the .env file # load_dotenv(dotenv_path=env_path) load_dotenv() -model = ChatGPTVision(k_shot=2) +model = GptVad(k_shot=2) engine = Engine(task=TaskType.VISUAL_PROMPTING) datamodule = MVTec( category=bottle, From af7b9e9064f08df9dc2edca63d1b74a9b5761ac7 Mon Sep 17 00:00:00 2001 From: Bepitic Date: Wed, 21 Aug 2024 15:34:44 +0200 Subject: [PATCH 38/42] fix import cycle, and separate usecase by explicit if. Signed-off-by: Bepitic --- src/anomalib/models/image/gptvad/__init__.py | 1 - src/anomalib/models/image/gptvad/chatgpt.py | 79 ++++++++++++++------ 2 files changed, 55 insertions(+), 25 deletions(-) diff --git a/src/anomalib/models/image/gptvad/__init__.py b/src/anomalib/models/image/gptvad/__init__.py index 2d396c7555..76bd5d75bb 100644 --- a/src/anomalib/models/image/gptvad/__init__.py +++ b/src/anomalib/models/image/gptvad/__init__.py @@ -1,5 +1,4 @@ """Generative Pre-Trained Transformer (GPT) based Large Language Model (LLM).""" - # Copyright (C) 2024 Intel Corporation # SPDX-License-Identifier: Apache-2.0 diff --git a/src/anomalib/models/image/gptvad/chatgpt.py b/src/anomalib/models/image/gptvad/chatgpt.py index 8600e6d2c2..5382034bf6 100644 --- a/src/anomalib/models/image/gptvad/chatgpt.py +++ b/src/anomalib/models/image/gptvad/chatgpt.py @@ -1,4 +1,6 @@ """Wrapper for the OpenAI calls to the VLM model.""" +# Copyright (C) 2024 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import logging import os @@ -6,7 +8,9 @@ import openai -from anomalib.engine.engine import UnassignedError + +class APIKeyError(Exception): + """APIKeyError error.""" class GPTWrapper: @@ -19,6 +23,9 @@ class GPTWrapper: all versions of 'gpt-4o-mini', and 'gpt-4o' Args: + images (list[str]): List of base64 images. If only one image is provided, + it is treated as the anomalous image. If multiple images are provided, + the last one is considered anomalous, and the rest are treated as normal examples. model_name (str): Model name for OpenAI API VLM. Default "gpt-4o" detail (bool): If the images will be sended with high detail or low detail. @@ -30,7 +37,7 @@ def __init__(self, model_name: str = "gpt-4o", detail: bool = True) -> None: self.detail = detail if not openai_key: msg = "OpenAI environment key not found.(OPENAI_API_KEY)" - raise UnassignedError(msg) + raise APIKeyError(msg) def api_call( self, @@ -52,6 +59,10 @@ def api_call( openai.error.OpenAIError: If there is an error during the API call. """ prompt: str = "" + + detail_img = "high" if self.detail else "low" + messages: list[dict[str, Any]] = [] + if len(images) > 0: prompt = """ You will receive an image that is going to be an example of the typical image without any anomaly, @@ -59,6 +70,28 @@ def api_call( Answer with a 'NO' if it does not have any anomalies and 'YES: description' where description is a description of the anomaly provided, position. """ + + messages.append( + { + "role": "system", + "content": prompt, + }, + ) + # Add the single image + messages.append( + { + "role": "user", + "content": [ + { + "type": "image_url", + "image_url": { + "url": f"data:image/{extension};base64,{images[0]}", + "detail": detail_img, + }, + }, + ], + }, + ) else: prompt = """ Examine the provided image carefully to determine if there is an obvious anomaly present. @@ -88,30 +121,28 @@ def api_call( - Provide clear and concise descriptions for any detected anomalies. - Focus on obvious anomalies that could impact final use of the object operation or safety. """ - - detail_img = "high" if self.detail else "low" - messages: list[dict[str, Any]] = [ - { - "role": "system", - "content": prompt, - }, - ] - for image in images: - image_message = [ + messages.append( { - "role": "user", - "content": [ - { - "type": "image_url", - "image_url": { - "url": f"data:image/{extension};base64,{image}", - "detail": detail_img, - }, - }, - ], + "role": "system", + "content": prompt, }, - ] - messages.extend(image_message) + ) + for image in images: + image_message = [ + { + "role": "user", + "content": [ + { + "type": "image_url", + "image_url": { + "url": f"data:image/{extension};base64,{image}", + "detail": detail_img, + }, + }, + ], + }, + ] + messages.extend(image_message) try: # Make the API call using the openai library From faf334f367e7db195d42bea167f998e2e39d342c Mon Sep 17 00:00:00 2001 From: Bepitic Date: Wed, 21 Aug 2024 15:42:43 +0200 Subject: [PATCH 39/42] upd: add comments to the few shot / zero shot. Signed-off-by: Bepitic --- src/anomalib/models/image/gptvad/chatgpt.py | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/anomalib/models/image/gptvad/chatgpt.py b/src/anomalib/models/image/gptvad/chatgpt.py index 5382034bf6..8d437bbbb2 100644 --- a/src/anomalib/models/image/gptvad/chatgpt.py +++ b/src/anomalib/models/image/gptvad/chatgpt.py @@ -47,7 +47,9 @@ def api_call( """Makes an API call to OpenAI's GPT-4 model to detect anomalies in an image. Args: - images (list[str]): List of base64 images that serve as examples and last one to check for anomalies. + images (list[str]): List of base64 images. If only one image is provided, + it is treated as the anomalous image. If multiple images are provided, + the last one is considered anomalous, and the rest are treated as normal examples. extension (str): Extension of the group of images that needs to be checked for anomalies. Default = 'png' Returns: @@ -64,6 +66,8 @@ def api_call( messages: list[dict[str, Any]] = [] if len(images) > 0: + # If multiple images are provided, the last one is considered anomalous, + # and the rest are treated as normal examples. prompt = """ You will receive an image that is going to be an example of the typical image without any anomaly, and the last image that you need to decide if it has an anomaly or not. @@ -92,7 +96,9 @@ def api_call( ], }, ) - else: + elif len(images) == 1: + # If only one image is provided, + # it is treated as the anomalous image. prompt = """ Examine the provided image carefully to determine if there is an obvious anomaly present. Anomalies may include mechanical malfunctions, unexpected objects, safety hazards, structural damages, @@ -143,6 +149,9 @@ def api_call( }, ] messages.extend(image_message) + else: + msg = "No images provided for anomaly detection." + raise ValueError(msg) try: # Make the API call using the openai library From 3ed8d3f68a5e1a3b7c853c43143ac3f7b0e3e3f0 Mon Sep 17 00:00:00 2001 From: Bepitic Date: Wed, 21 Aug 2024 16:12:01 +0200 Subject: [PATCH 40/42] fix: dataset expected colums Signed-off-by: Bepitic --- src/anomalib/data/base/dataset.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/anomalib/data/base/dataset.py b/src/anomalib/data/base/dataset.py index 203860a830..e255613d0d 100644 --- a/src/anomalib/data/base/dataset.py +++ b/src/anomalib/data/base/dataset.py @@ -24,7 +24,7 @@ _EXPECTED_COLUMNS_SEGMENTATION = [*_EXPECTED_COLUMNS_CLASSIFICATION, "mask_path"] _EXPECTED_COLUMNS_PERTASK = { "classification": _EXPECTED_COLUMNS_CLASSIFICATION, - "language": _EXPECTED_COLUMNS_VISUAL_PROMPTING, + "visual prompting": _EXPECTED_COLUMNS_VISUAL_PROMPTING, "segmentation": _EXPECTED_COLUMNS_SEGMENTATION, "detection": _EXPECTED_COLUMNS_SEGMENTATION, } From 7f454c402d4ee66a8332d9bd74784c844733b80a Mon Sep 17 00:00:00 2001 From: Bepitic Date: Thu, 22 Aug 2024 17:21:42 +0200 Subject: [PATCH 41/42] upd: add the same logic of the label on visualize_full. Signed-off-by: Bepitic --- src/anomalib/utils/visualization/image.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/anomalib/utils/visualization/image.py b/src/anomalib/utils/visualization/image.py index b061d0afe2..2e7eec9f7c 100644 --- a/src/anomalib/utils/visualization/image.py +++ b/src/anomalib/utils/visualization/image.py @@ -246,8 +246,10 @@ def _visualize_full(self, image_result: ImageResult) -> np.ndarray: description = "" if image_result.text_descr: description = image_result.text_descr - - image_classified = add_normal_label(image_result.image, 1 - image_result.pred_score) + if image_result.pred_label: + image_classified = add_anomalous_label(image_result.image, image_result.pred_score) + else: + image_classified = add_normal_label(image_result.image, 1 - image_result.pred_score) image_grid.add_image(image_classified, title=description) return image_grid.generate() From 44586d6e0a0069fe4a9b3acd0931da9365e95c36 Mon Sep 17 00:00:00 2001 From: Bepitic Date: Thu, 22 Aug 2024 20:55:14 +0200 Subject: [PATCH 42/42] Fix in the logic of the code. Signed-off-by: Bepitic --- src/anomalib/models/image/gptvad/chatgpt.py | 62 +++++++++++---------- 1 file changed, 32 insertions(+), 30 deletions(-) diff --git a/src/anomalib/models/image/gptvad/chatgpt.py b/src/anomalib/models/image/gptvad/chatgpt.py index 8d437bbbb2..5ad1656dc7 100644 --- a/src/anomalib/models/image/gptvad/chatgpt.py +++ b/src/anomalib/models/image/gptvad/chatgpt.py @@ -69,7 +69,8 @@ def api_call( # If multiple images are provided, the last one is considered anomalous, # and the rest are treated as normal examples. prompt = """ - You will receive an image that is going to be an example of the typical image without any anomaly, + You will receive a group of images that are going to be an example + of the typical image without any anomaly, and the last image that you need to decide if it has an anomaly or not. Answer with a 'NO' if it does not have any anomalies and 'YES: description' where description is a description of the anomaly provided, position. @@ -81,21 +82,23 @@ def api_call( "content": prompt, }, ) - # Add the single image - messages.append( - { - "role": "user", - "content": [ - { - "type": "image_url", - "image_url": { - "url": f"data:image/{extension};base64,{images[0]}", - "detail": detail_img, + for image in images: + image_message = [ + { + "role": "user", + "content": [ + { + "type": "image_url", + "image_url": { + "url": f"data:image/{extension};base64,{image}", + "detail": detail_img, + }, }, - }, - ], - }, - ) + ], + }, + ] + messages.extend(image_message) + elif len(images) == 1: # If only one image is provided, # it is treated as the anomalous image. @@ -133,22 +136,21 @@ def api_call( "content": prompt, }, ) - for image in images: - image_message = [ - { - "role": "user", - "content": [ - { - "type": "image_url", - "image_url": { - "url": f"data:image/{extension};base64,{image}", - "detail": detail_img, - }, + # Add the single image + messages.append( + { + "role": "user", + "content": [ + { + "type": "image_url", + "image_url": { + "url": f"data:image/{extension};base64,{images[0]}", + "detail": detail_img, }, - ], - }, - ] - messages.extend(image_message) + }, + ], + }, + ) else: msg = "No images provided for anomaly detection." raise ValueError(msg)