VikramSingh178's picture
commit
c9705bd
raw
history blame
2.6 kB
import argparse
import os
from mask_generator import invert_mask
from segment_everything import generate_mask_from_bbox
from models import kandinsky_inpainting_inference, load_image
from PIL import Image
from pipeline import fetch_kandinsky_pipeline
from config import controlnet_adapter_model_name, controlnet_base_model_name, kandinsky_model_name
from mask_generator import extend_image
def main(args):
# Create directories if they don't exist
os.makedirs(args.output_dir, exist_ok=True)
os.makedirs(args.mask_dir, exist_ok=True)
# Extend image
extended_image = extend_image(image_path=args.image_path, target_width=2560, target_height=1440, roi_scale=0.6)
extended_image_path = os.path.join(args.output_dir, f'{args.uid}_extended.jpg')
extended_image.save(extended_image_path)
# Generate mask from extended image
mask = generate_mask_from_bbox(extended_image_path)
mask_image = Image.fromarray(mask)
# Save original mask
original_mask_path = os.path.join(args.mask_dir, f'{args.uid}_original_mask.jpg')
mask_image.save(original_mask_path)
# Invert mask
mask_image = load_image(original_mask_path)
inverted_mask = invert_mask(mask_image)
inverted_mask_path = os.path.join(args.mask_dir, f'{args.uid}_inverted_mask.jpg')
inverted_mask.save(inverted_mask_path)
# Load mask and extended image
mask_image = load_image(inverted_mask_path)
extended_image = load_image(extended_image_path)
# Perform inpainting on extended image
output_image = kandinsky_inpainting_inference(args.prompt, args.negative_prompt, extended_image, mask_image)
# Save output image
output_image_path = os.path.join(args.output_dir, f'{args.uid}_output.jpg')
output_image.save(output_image_path)
if __name__ == "__main__":
parser = argparse.ArgumentParser(description='Perform Kandinsky inpainting on an image.')
parser.add_argument('--image_path', type=str, required=True, help='Path to the input image.')
parser.add_argument('--prompt', type=str, required=True, help='Prompt for the Kandinsky inpainting.')
parser.add_argument('--negative_prompt', type=str, required=True, help='Negative prompt for the Kandinsky inpainting.')
parser.add_argument('--output_dir', type=str, required=True, help='Directory to save the output image.')
parser.add_argument('--mask_dir', type=str, required=True, help='Directory to save the mask image.')
parser.add_argument('--uid', type=str, required=True, help='Unique identifier for the image and mask.')
args = parser.parse_args()
main(args)