File size: 4,504 Bytes
ab12167 4a07c43 f3695f1 97f3728 f3695f1 65798e0 97f3728 24f9235 ab12167 f3695f1 ab12167 f3695f1 ab12167 97f3728 ab12167 6f3007e 97f3728 0ba26d7 ab12167 6f3007e 97f3728 6f3007e ab12167 80ed1d3 6f3007e 80ed1d3 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 |
# '''NEURAL STYLE TRANSFER '''
# import numpy as np
# import tensorflow as tf
# import tensorflow_hub as hub
# import gradio as gr
# from PIL import Image
# np.set_printoptions(suppress=True)
# model = hub.load('https://tfhub.dev/google/magenta/arbitrary-image-stylization-v1-256/2')
# def tensor_to_image(tensor):
# tensor *= 255
# tensor = np.array(tensor, dtype=np.uint8)
# if tensor.ndim > 3:
# tensor = tensor[0]
# return Image.fromarray(tensor)
# def transform_my_model(content_image, style_image):
# 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]
# return tensor_to_image(stylized_image)
# demo = gr.Interface(
# fn=transform_my_model,
# inputs=[gr.Image(label="Content Image"), gr.Image(label="Style Image")],
# outputs=gr.Image(label="Result"),
# title="Style Transfer",
# examples=[
# ["Content_Images/contnt12.jpg", "VG516.jpg"],
# ["Content_Images/contnt2.jpg", "Content_Images/styl9.jpg"],
# ["Content_Images/contnt.jpg", "Content_Images/styl22.jpg"]
# ],
# article="References-\n\nExploring the structure of a real-time, arbitrary neural artistic stylization network. Golnaz Ghiasi, Honglak Lee, Manjunath Kudlur, Vincent Dumoulin."
# )
# demo.launch(share=True)
'''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
# Set up logging
logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)
np.set_printoptions(suppress=True)
# Load model with error handling
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
# Create the Gradio interface with Hugging Face Spaces configuration
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="""
## Neural Style Transfer
Upload a content image and a style image to create a stylized version of your content image.
### How to use:
1. Upload your content image (the image you want to style)
2. Upload your style image (the image whose style you want to apply)
3. Click 'Submit' and wait for the result
### Tips:
- For best results, use clear, high-quality images
- The style image's characteristics will be transferred to your content image
- Processing may take a few seconds depending on image size
""",
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
)
# For Hugging Face Spaces deployment
if __name__ == "__main__":
demo.launch(
server_name="0.0.0.0",
server_port=7860,
share=False # Set to False for Hugging Face Spaces
)
|