meraj12 commited on
Commit
9b07f04
·
verified ·
1 Parent(s): 803eaf9

Upload app.py

Browse files
Files changed (1) hide show
  1. app.py +57 -0
app.py ADDED
@@ -0,0 +1,57 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+ import streamlit as st
3
+ from PIL import Image
4
+ import torch
5
+ import torchvision.transforms as transforms
6
+ from animegan2.model import Generator
7
+ import os
8
+ import urllib.request
9
+
10
+ st.set_page_config(page_title="Ghibli Style Image Converter 🎨")
11
+
12
+ MODEL_PATH = "weights/paprika.pt"
13
+ MODEL_URL = "https://huggingface.co/akhaliq/AnimeGANv2/resolve/main/paprika.pt"
14
+
15
+ @st.cache_resource
16
+ def load_model():
17
+ if not os.path.exists(MODEL_PATH):
18
+ os.makedirs("weights", exist_ok=True)
19
+ with st.spinner("Downloading model weights..."):
20
+ urllib.request.urlretrieve(MODEL_URL, MODEL_PATH)
21
+ st.success("Model downloaded successfully!")
22
+ model = Generator()
23
+ model.load_state_dict(torch.load(MODEL_PATH, map_location="cpu"))
24
+ model.eval()
25
+ return model
26
+
27
+ def preprocess(image):
28
+ image = image.convert("RGB")
29
+ transform = transforms.Compose([
30
+ transforms.Resize((256, 256)),
31
+ transforms.ToTensor()
32
+ ])
33
+ return transform(image).unsqueeze(0)
34
+
35
+ def postprocess(tensor):
36
+ tensor = tensor.squeeze().detach().cpu().clamp(0, 1)
37
+ image = transforms.ToPILImage()(tensor)
38
+ return image
39
+
40
+ st.title("🎨 Convert to Ghibli Style!")
41
+ st.markdown("Upload an image to transform it into a beautiful Ghibli-style artwork using AnimeGAN2!")
42
+
43
+ uploaded_file = st.file_uploader("Upload your image", type=["jpg", "jpeg", "png"])
44
+
45
+ if uploaded_file:
46
+ input_image = Image.open(uploaded_file)
47
+ st.image(input_image, caption="Original Image", use_column_width=True)
48
+
49
+ with st.spinner("Converting... please wait!"):
50
+ model = load_model()
51
+ input_tensor = preprocess(input_image)
52
+ with torch.no_grad():
53
+ output_tensor = model(input_tensor)
54
+ output_image = postprocess(output_tensor)
55
+
56
+ st.image(output_image, caption="Ghibli Style Image", use_column_width=True)
57
+ st.success("Done!")