From 9d08461f90c65b3aad96941556dab16b52d1e185 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jorge=20Rodr=C3=ADguez=20Ara=C3=BAjo?= Date: Fri, 25 Oct 2024 21:53:44 +0200 Subject: [PATCH] Add editing models --- abraia/editing/__init__.py | 0 abraia/editing/inpaint.py | 54 ++++++++ abraia/editing/rembg.py | 62 ++++++++++ abraia/editing/sam.py | 89 +++++++++++++ abraia/editing/upscale.py | 124 +++++++++++++++++++ images/jacket.jpeg | Bin 0 -> 66522 bytes notebooks/hyperspectral-analysis.ipynb | 2 +- notebooks/hyperspectral-classification.ipynb | 2 +- 8 files changed, 331 insertions(+), 2 deletions(-) create mode 100644 abraia/editing/__init__.py create mode 100644 abraia/editing/inpaint.py create mode 100644 abraia/editing/rembg.py create mode 100644 abraia/editing/sam.py create mode 100644 abraia/editing/upscale.py create mode 100644 images/jacket.jpeg diff --git a/abraia/editing/__init__.py b/abraia/editing/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/abraia/editing/inpaint.py b/abraia/editing/inpaint.py new file mode 100644 index 0000000..7a155a9 --- /dev/null +++ b/abraia/editing/inpaint.py @@ -0,0 +1,54 @@ +import cv2 +import numpy as np +import onnxruntime as ort + +from ..utils import download_file + + +def ceil_modulo(x, mod): + return x if x % mod == 0 else (x // mod + 1) * mod + + +def pad_img_to_modulo(img, mod): + channels, height, width = img.shape + out_height, out_width = ceil_modulo(height, mod), ceil_modulo(width, mod) + return np.pad(img, ((0, 0), (0, out_height - height), (0, out_width - width)), mode="symmetric") + + +class LAMA: + + def __init__(self): + self.image_size = (512, 512) + sess_options = ort.SessionOptions() + model_src = download_file('multiple/models/editing/lama_fp32.onnx') + self.session = ort.InferenceSession(model_src, sess_options=sess_options) + + def preprocess(self, image, mask, pad_out_to_modulo=8): + out_image = cv2.resize(image, self.image_size, interpolation=cv2.INTER_LINEAR) + out_mask = cv2.resize(mask, self.image_size, interpolation=cv2.INTER_NEAREST) + + out_image = (out_image.transpose((2, 0, 1)) / 255) + out_mask = (out_mask[np.newaxis, ...] / 255) + + if pad_out_to_modulo is not None and pad_out_to_modulo > 1: + out_image = pad_img_to_modulo(out_image, pad_out_to_modulo) + out_mask = pad_img_to_modulo(out_mask, pad_out_to_modulo) + + out_mask = (out_mask > 0) * 1 + + out_image = np.expand_dims(out_image, axis=0).astype(np.float32) + out_mask = np.expand_dims(out_mask, axis=0).astype(np.float32) + return out_image, out_mask + + def postprocess(self, output, size): + output = output[0].transpose(1, 2, 0).astype(np.uint8) + output = cv2.resize(output, size, interpolation=cv2.INTER_CUBIC) + return output + + def predict(self, image, mask): + h, w = image.shape[:2] + image, mask = self.preprocess(image, mask) + outputs = self.session.run(None, {'image': image, 'mask': mask}) + output = self.postprocess(outputs[0], (w, h)) + return output + \ No newline at end of file diff --git a/abraia/editing/rembg.py b/abraia/editing/rembg.py new file mode 100644 index 0000000..f7cbd18 --- /dev/null +++ b/abraia/editing/rembg.py @@ -0,0 +1,62 @@ +import cv2 +import numpy as np +import onnxruntime as ort + +from ..utils import download_file + +ort.set_default_logger_severity(3) + +kernel = cv2.getStructuringElement(cv2.MORPH_ELLIPSE, (3, 3)) + + +def post_process(mask): + """ + Post Process the mask for a smooth boundary by applying Morphological Operations + Research based on paper: https://www.sciencedirect.com/science/article/pii/S2352914821000757 + args: + mask: Binary Numpy Mask + """ + mask = cv2.morphologyEx(mask, cv2.MORPH_OPEN, kernel) + mask = cv2.GaussianBlur(mask, (5, 5), sigmaX=2, sigmaY=2, borderType=cv2.BORDER_DEFAULT) + mask = np.where(mask < 127, 0, 255).astype(np.uint8) + return mask + + +class RemoveBG: + + def __init__(self): + self.image_size = (1024, 1024) + self.input_mean = (0.485, 0.456, 0.406) + self.providers = ort.get_available_providers() + model_src = download_file('multiple/models/editing/isnet-general-use.onnx') + self.session = ort.InferenceSession(model_src, providers=self.providers) + self.input_name = self.session.get_inputs()[0].name + + def preprocess(self, img): + img = cv2.resize(img, self.image_size, interpolation=cv2.INTER_LINEAR) + img = img / np.max(img) - np.array(self.input_mean) + img = img.transpose((2, 0, 1)).astype(np.float32) + return np.expand_dims(img, axis=0) + + def postprocess(self, out, size): + pred = out.reshape(self.image_size) + ma, mi = np.max(pred), np.min(pred) + pred = (pred - mi) / (ma - mi) + mask = (pred * 255).astype(np.uint8) + mask = cv2.resize(mask, size, interpolation=cv2.INTER_CUBIC) + return mask + + def predict(self, img): + h, w = img.shape[:2] + inputs = {self.input_name: self.preprocess(img)} + outputs = self.session.run(None, inputs) + mask = self.postprocess(outputs[0], (w, h)) + return mask + + def remove(self, img, post_process_mask = False): + mask = self.predict(img) + if post_process_mask: + mask = post_process(mask) + img = cv2.cvtColor(img, cv2.COLOR_RGB2RGBA) + img[:, :, 3] = mask + return img diff --git a/abraia/editing/sam.py b/abraia/editing/sam.py new file mode 100644 index 0000000..bf8f892 --- /dev/null +++ b/abraia/editing/sam.py @@ -0,0 +1,89 @@ +import cv2 +import json +import numpy as np +import onnxruntime as ort + +from ..utils import download_file + + +def get_input_points(prompt): + prompt = json.loads(prompt) + points, labels = [], [] + for mark in prompt: + if mark["type"] == "point": + points.append(mark["data"]) + labels.append(mark["label"]) + elif mark["type"] == "rectangle": + points.append([mark["data"][0], mark["data"][1]]) + points.append([mark["data"][2], mark["data"][3]]) + labels.append(2) + labels.append(3) + return np.array(points), np.array(labels) + + +class SAM: + + def __init__(self): + self.target_size = 1024 + self.input_size = (684, 1024) + sess_options = ort.SessionOptions() + providers = ort.get_available_providers() + encoder_src = download_file('multiple/models/mobile_sam.encoder.onnx') + decoder_src = download_file('multiple/models/mobile_sam.decoder.onnx') + self.encoder = ort.InferenceSession(encoder_src, providers=providers, sess_options=sess_options) + self.decoder = ort.InferenceSession(decoder_src, providers=providers, sess_options=sess_options) + + def encode(self, img): + encoder_input_name = self.encoder.get_inputs()[0].name + encoder_inputs = {encoder_input_name: img.astype(np.float32)} + encoder_output = self.encoder.run(None, encoder_inputs) + image_embedding = encoder_output[0] + return image_embedding + + def decode(self, image_embedding, input_points, input_labels): + onnx_coord = np.concatenate([input_points, np.array([[0.0, 0.0]])], axis=0)[None, :, :] + onnx_label = np.concatenate([input_labels, np.array([-1])], axis=0)[None, :].astype(np.float32) + onnx_coord = np.concatenate([onnx_coord, np.ones((1, onnx_coord.shape[1], 1), dtype=np.float32)], axis=2) + onnx_coord = onnx_coord[:, :, :2].astype(np.float32) + + onnx_mask_input = np.zeros((1, 1, 256, 256), dtype=np.float32) + onnx_has_mask_input = np.zeros(1, dtype=np.float32) + + decoder_inputs = {"image_embeddings": image_embedding, + "point_coords": onnx_coord, + "point_labels": onnx_label, + "mask_input": onnx_mask_input, + "has_mask_input": onnx_has_mask_input, + "orig_im_size": np.array(self.input_size, dtype=np.float32)} + masks, _, _ = self.decoder.run(None, decoder_inputs) + return masks[0] + + def predict(self, img, prompt="[]"): + height, width = img.shape[:2] + + scale_x = self.input_size[1] / img.shape[1] + scale_y = self.input_size[0] / img.shape[0] + scale = min(scale_x, scale_y) + + transform_matrix = np.array([[scale, 0, 0], + [0, scale, 0], + [0, 0, 1]]) + + size = (self.input_size[1], self.input_size[0]) + img = cv2.warpAffine(img, transform_matrix[:2], size, flags=cv2.INTER_LINEAR) + image_embedding = self.encode(img) + + # embedding = {"image_embedding": image_embedding, + # "original_size": (width, height), + # "transform_matrix": transform_matrix} + + input_points, input_labels = get_input_points(prompt) + input_points = input_points * scale + masks = self.decode(image_embedding, input_points, input_labels) + + inv_transform_matrix = np.linalg.inv(transform_matrix) + mask = np.zeros((height, width, 3), dtype=np.uint8) + for m in masks: + m = cv2.warpAffine(m, inv_transform_matrix[:2], (width, height), flags=cv2.INTER_LINEAR) + mask[m > 0.0] = [255, 255, 255] + return mask diff --git a/abraia/editing/upscale.py b/abraia/editing/upscale.py new file mode 100644 index 0000000..bc316ca --- /dev/null +++ b/abraia/editing/upscale.py @@ -0,0 +1,124 @@ +import cv2 +import numpy as np +import onnxruntime as ort + +from ..utils import download_file + + +class GPEN: + + def __init__(self): + session_options = ort.SessionOptions() + session_options.graph_optimization_level = ort.GraphOptimizationLevel.ORT_ENABLE_ALL + model_src = download_file('multiple/models/editing/GPEN-BFR-256.onnx') + self.session = ort.InferenceSession(model_src, sess_options=session_options) + self.input_name = self.session.get_inputs()[0].name + self.image_size = self.session.get_inputs()[0].shape[-2:] + + def preprocess(self, img): + img = cv2.resize(img, self.image_size, interpolation=cv2.INTER_LINEAR) + img = ((img / 255 - 0.5) / 0.5).astype(np.float32) + return np.expand_dims(img.transpose((2, 0, 1)), axis=0) + + def postprocess(self, img): + img = (255 * ((img.clip(-1, 1) + 1) * 0.5)).astype(np.uint8) + return img.transpose((1, 2, 0)) + + def enhance(self, img): + inputs = {self.input_name: self.preprocess(img)} + outputs = self.session.run(None, inputs) + return self.postprocess(outputs[0][0]) + + +class SwinIR: + + def __init__(self): + model_src = download_file('multiple/models/editing/003_realSR_BSRGAN_DFO_s64w8_SwinIR-M_x4_GAN.onnx') + self.session = ort.InferenceSession(model_src) + self.input_name = self.session.get_inputs()[0].name + + def preprocess(self, img): + img = (img / 255).astype(np.float32) + return np.expand_dims(img.transpose((2, 0, 1)), axis=0) + + def postprocess(self, img): + img = (255 * img.clip(0, 1)).astype(np.uint8) + return img.transpose((1, 2, 0)) + + def upscale(self, img): + inputs = {self.input_name: self.preprocess(img)} + outputs = self.session.run(None, inputs) + return self.postprocess(outputs[0][0]) + + +def create_gradient_mask(shape, feather): + """Create a gradient mask for smooth blending of tiles.""" + mask = np.ones(shape) + _, _, h, w = shape + for feather_step in range(feather): + factor = (feather_step + 1) / feather + mask[:, :, feather_step, :] *= factor + mask[:, :, h - 1 - feather_step, :] *= factor + mask[:, :, :, feather_step] *= factor + mask[:, :, :, w - 1 - feather_step] *= factor + return mask + + +def tiled_upscale(samples, function, scale, tile_size, overlap = 8): + """Apply a scaling function to image samples in a tiled manner.""" + tile_width, tile_height = tile_size + _batch, _channels, height, width = samples.shape + out_height, out_width = round(height * scale), round(width * scale) + # Initialize output tensors + output = np.empty((1, 3, out_height, out_width)) + out = np.zeros((1, 3, out_height, out_width)) + out_div = np.zeros_like(output) + # Process the image in tiles + for y in range(0, height, tile_height - overlap): + for x in range(0, width, tile_width - overlap): + # Ensure we don't go out of bounds + x_end = min(x + tile_width, width) + y_end = min(y + tile_height, height) + x = max(0, x_end - tile_width) + y = max(0, y_end - tile_height) + # Extract and process the tile + tile = samples[:, :, y:y_end, x:x_end] + processed_tile = function(tile) + # Calculate the position in the output tensor + out_y, out_x = round(y * scale), round(x * scale) + out_h, out_w = processed_tile.shape[2:] + # Create a feathered mask for smooth blending + mask = create_gradient_mask(processed_tile.shape, overlap * scale) + # Add the processed tile to the output + out[:, :, out_y : out_y + out_h, out_x : out_x + out_w] += processed_tile * mask + out_div[:, :, out_y : out_y + out_h, out_x : out_x + out_w] += mask + # Normalize the output + output = out / out_div + return output + + +class Upscaler: + + def __init__(self, model_path = '', scale = 4, tile_size = (1024, 1024), overlap = 8): + self.scale = scale + self.overlap = overlap + self.tile_size = tile_size + model_src = download_file(model_path or 'multiple/models/editing/4xNomosWebPhoto_RealPLKSR_fp32_opset17.onnx') + self.session = ort.InferenceSession(model_src) + self.input_name = self.session.get_inputs()[0].name + + def preprocess(self, img): + img = (img / 255).astype(np.float32) + return np.expand_dims(img.transpose((2, 0, 1)), axis=0) + + def postprocess(self, img): + img = (255 * img.clip(0, 1)).astype(np.uint8) + return img.transpose((1, 2, 0)) + + def predict(self, img): + return self.session.run(None, {self.input_name: img})[0] + + def upscale(self, img): + img = self.preprocess(img) + outputs = tiled_upscale(img, self.predict, self.scale, self.tile_size, self.overlap) + return self.postprocess(outputs[0]) diff --git a/images/jacket.jpeg b/images/jacket.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..0f3d2a49abd58ed96fa4d618a56f4d850a4030fe GIT binary patch literal 66522 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

NuPSBmuW$3FzaUN%En4T40L*(hNIy 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ǀzXa=RZZtJeo#7=QAIg}B@g=5a# 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 b)Lh0ofU0QE(ht8!M#jfC3)C>x|F`siYR?%) literal 0 HcmV?d00001 diff --git a/notebooks/hyperspectral-analysis.ipynb b/notebooks/hyperspectral-analysis.ipynb index 12870ae..06fc78b 100644 --- a/notebooks/hyperspectral-analysis.ipynb +++ b/notebooks/hyperspectral-analysis.ipynb @@ -28,7 +28,7 @@ ], "source": [ "%%capture\n", - "!python -m pip install abraia==0.12.1\n", + "!python -m pip install abraia\n", "\n", "import os\n", "if not os.getenv('ABRAIA_ID') or not os.getenv('ABRAIA_KEY'):\n", diff --git a/notebooks/hyperspectral-classification.ipynb b/notebooks/hyperspectral-classification.ipynb index 3500202..52367f7 100644 --- a/notebooks/hyperspectral-classification.ipynb +++ b/notebooks/hyperspectral-classification.ipynb @@ -32,7 +32,7 @@ ], "source": [ "%%capture\n", - "!python -m pip install abraia==0.12.1\n", + "!python -m pip install abraia\n", "\n", "import os\n", "if not os.getenv('ABRAIA_ID') or not os.getenv('ABRAIA_KEY'):\n",