|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
'''NEURAL STYLE TRANSFER ''' |
|
|
|
import numpy as np |
|
import tensorflow as tf |
|
import tensorflow_hub as hub |
|
import gradio as gr |
|
from PIL import Image |
|
import os |
|
import logging |
|
|
|
|
|
logging.basicConfig(level=logging.INFO) |
|
logger = logging.getLogger(__name__) |
|
|
|
np.set_printoptions(suppress=True) |
|
|
|
|
|
try: |
|
logger.info("Loading TensorFlow Hub model...") |
|
model = hub.load('https://tfhub.dev/google/magenta/arbitrary-image-stylization-v1-256/2') |
|
logger.info("Model loaded successfully!") |
|
except Exception as e: |
|
logger.error(f"Error loading model: {str(e)}") |
|
raise |
|
|
|
def tensor_to_image(tensor): |
|
try: |
|
tensor *= 255 |
|
tensor = np.array(tensor, dtype=np.uint8) |
|
if tensor.ndim > 3: |
|
tensor = tensor[0] |
|
return Image.fromarray(tensor) |
|
except Exception as e: |
|
logger.error(f"Error in tensor_to_image: {str(e)}") |
|
raise |
|
|
|
def transform_my_model(content_image, style_image): |
|
try: |
|
if content_image is None or style_image is None: |
|
raise ValueError("Both content and style images are required") |
|
|
|
logger.info("Processing images...") |
|
content_image = content_image.astype(np.float32)[np.newaxis, ...] / 255.0 |
|
style_image = style_image.astype(np.float32)[np.newaxis, ...] / 255.0 |
|
stylized_image = model(tf.constant(content_image), tf.constant(style_image))[0] |
|
logger.info("Style transfer completed successfully!") |
|
return tensor_to_image(stylized_image) |
|
except Exception as e: |
|
logger.error(f"Error in transform_my_model: {str(e)}") |
|
raise |
|
|
|
|
|
demo = gr.Interface( |
|
fn=transform_my_model, |
|
inputs=[ |
|
gr.Image(type="numpy", label="Content Image"), |
|
gr.Image(type="numpy", label="Style Image") |
|
], |
|
outputs=gr.Image(type="pil", label="Result"), |
|
title="Neural Style Transfer", |
|
description=""" |
|
Upload a content image and a style image to create a stylized version of your content image. |
|
""", |
|
examples=[ |
|
["Content_Images/contnt12.jpg", "VG516.jpg"], |
|
["Content_Images/contnt2.jpg", "Content_Images/styl9.jpg"], |
|
["Content_Images/contnt.jpg", "Content_Images/styl22.jpg"] |
|
], |
|
cache_examples=True, |
|
allow_flagging=False, |
|
analytics_enabled=False |
|
) |
|
|
|
|
|
if __name__ == "__main__": |
|
demo.launch( |
|
share=True |
|
) |
|
|