Spaces:
Runtime error
Runtime error
VikramSingh178
commited on
Commit
β’
25c2b00
1
Parent(s):
1ae7bf1
Add new files and modify existing files
Browse filesFormer-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 +1 -0
- masks/mask.jpg +0 -0
- notebooks/inpainting.ipynb +0 -0
- scripts/__pycache__/clear_memory.cpython-310.pyc +0 -0
- scripts/__pycache__/mask_generator.cpython-310.pyc +0 -0
- scripts/__pycache__/pipelineutils.cpython-310.pyc +0 -0
- scripts/clear_memory.py +18 -0
- scripts/mask.jpg +0 -0
- scripts/models.py +77 -0
- scripts/yolov8s-seg.pt.REMOVED.git-id +1 -0
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
|