VikramSingh178 commited on
Commit
25c2b00
1 Parent(s): 1ae7bf1

Add new files and modify existing files

Browse files

Former-commit-id: 4efd868806e4a199c6b4ec6cb79538785f1ad9a4 [formerly 4efd868806e4a199c6b4ec6cb79538785f1ad9a4 [formerly 4efd868806e4a199c6b4ec6cb79538785f1ad9a4 [formerly 4efd868806e4a199c6b4ec6cb79538785f1ad9a4 [formerly 133a82f8ba137b182b15e1504d6917f67de5326b]]]]

Former-commit-id: 172163876e4aac6a387087b4a2df035551820057
Former-commit-id: a0a64f596ed41a4ec355cfae902e1a9214f1d6c8
Former-commit-id: 8d5d923ff73273b777572486cf929c110dd97a86
Former-commit-id: ae4138d7c79505b281581f77ad15c95db923375e
Former-commit-id: 38a4910b687b4779b48645385e365c8058382723

bfg.jar.REMOVED.git-id ADDED
@@ -0,0 +1 @@
 
 
1
+ 688fe713674b914c519bef018aa47f7a8ba18d58
masks/mask.jpg ADDED
notebooks/inpainting.ipynb ADDED
The diff for this file is too large to render. See raw diff
 
scripts/__pycache__/clear_memory.cpython-310.pyc ADDED
Binary file (724 Bytes). View file
 
scripts/__pycache__/mask_generator.cpython-310.pyc ADDED
Binary file (1.55 kB). View file
 
scripts/__pycache__/pipelineutils.cpython-310.pyc ADDED
Binary file (3.51 kB). View file
 
scripts/clear_memory.py ADDED
@@ -0,0 +1,18 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import gc
2
+ import torch
3
+ from logger import rich_logger as l
4
+
5
+ def clear_memory():
6
+ """
7
+ Clears the memory by collecting garbage and emptying the CUDA cache.
8
+
9
+ This function is useful when dealing with memory-intensive operations in Python, especially when using libraries like PyTorch.
10
+
11
+ Note:
12
+ This function requires the `gc` and `torch` modules to be imported.
13
+
14
+ """
15
+ gc.collect()
16
+ torch.cuda.empty_cache()
17
+ l.info("Memory Cleared")
18
+
scripts/mask.jpg ADDED
scripts/models.py ADDED
@@ -0,0 +1,77 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from logger import rich_logger as l
2
+ from wandb.integration.diffusers import autolog
3
+ from config import Project_Name
4
+ from clear_memory import clear_memory
5
+ from typing import List
6
+ import numpy as np
7
+ import torch
8
+ from PIL import Image
9
+ from mask_generator import convert_to_numpy_array, generate_mask
10
+ from diffusers.utils import load_image
11
+ import cv2
12
+ from config import controlnet_adapter_model_name,controlnet_base_model_name
13
+ from diffusers import ControlNetModel,StableDiffusionControlNetInpaintPipeline
14
+ autolog(init=dict(project=Project_Name))
15
+
16
+
17
+
18
+
19
+
20
+
21
+
22
+
23
+
24
+
25
+
26
+ def make_inpaint_condition(init_image, mask_image):
27
+ # Prepare control image
28
+ init_image = np.array(init_image.convert("RGB")).astype(np.float32) / 255.0
29
+ mask_image = np.array(mask_image.convert("L")).astype(np.float32) / 255.0
30
+
31
+ assert init_image.shape[0:1] == mask_image.shape[0:1], "image and image_mask must have the same image size"
32
+ init_image[mask_image > 0.5] = -1.0 # set as masked pixel
33
+ init_image = np.expand_dims(init_image, 0).transpose(0, 3, 1, 2)
34
+ init_image = torch.from_numpy(init_image)
35
+ return init_image
36
+
37
+
38
+
39
+
40
+
41
+ def make_image_controlnet(image,
42
+ mask_image,
43
+ controlnet_conditioning_image,
44
+ positive_prompt: str, negative_prompt: str,
45
+ seed: int = 2356132) -> List[Image.Image]:
46
+ """Method to make image using controlnet
47
+ Args:
48
+ image (np.ndarray): input image
49
+ mask_image (np.ndarray): mask image
50
+ controlnet_conditioning_image (np.ndarray): conditioning image
51
+ positive_prompt (str): positive prompt string
52
+ negative_prompt (str): negative prompt string
53
+ seed (int, optional): seed. Defaults to 2356132.
54
+ Returns:
55
+ List[Image.Image]: list of generated images
56
+ """
57
+ controlnet = ControlNetModel.from_pretrained(controlnet_adapter_model_name, torch_dtype=torch.float32)
58
+ pipe = StableDiffusionControlNetInpaintPipeline.from_pretrained(
59
+ controlnet_base_model_name, controlnet=controlnet, torch_dtype=torch.float32
60
+ )
61
+
62
+
63
+
64
+
65
+
66
+ image = pipe(prompt=positive_prompt,negative_prompt=negative_prompt, image=init_image, mask_image=mask_image, control_image=controlnet_conditioning_image).images[0]
67
+
68
+
69
+ return image
70
+
71
+ if __name__ == "__main__":
72
+ init_image = load_image('/home/product_diffusion_api/sample_data/example1.jpg')
73
+ mask_image = load_image('/home/product_diffusion_api/scripts/mask.jpg')
74
+ controlnet_conditioning_image = make_inpaint_condition(init_image=init_image,mask_image=mask_image)
75
+ result = make_image_controlnet(positive_prompt="Product used in kitchen 4k natural photography",negative_prompt="No artifcats",image=init_image,mask_image=mask_image,controlnet_conditioning_image=controlnet_conditioning_image)
76
+
77
+
scripts/yolov8s-seg.pt.REMOVED.git-id ADDED
@@ -0,0 +1 @@
 
 
1
+ 6e924a316b5623dd99eedf5f9988b66ee4f9dfbe