File size: 1,758 Bytes
1b3cd5d
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
import gradio as gr
import os
from pathlib import Path

# Add error handling for Hugging Face environment
try:
    from sky_masking import SkyMaskingPipeline
    from sky_replacement import StateOfTheArtSkyReplacer
except ImportError as e:
    print(f"Import error: {e}")
    # Handle missing dependencies gracefully

class SkyReplacementApp:
    def __init__(self):
        # Initialize with error handling
        try:
            self.sky_masker = SkyMaskingPipeline()
            self.sky_replacer = StateOfTheArtSkyReplacer()
            print("✅ App initialized successfully!")
        except Exception as e:
            print(f"❌ Error initializing app: {e}")

    def process_image(self, input_image):
        try:
            # Your existing processing logic
            sky_mask = self.sky_masker.generate_mask(input_image)
            result_image = self.sky_replacer.replace_sky(input_image, sky_mask)
            return result_image
        except Exception as e:
            print(f"❌ Error processing image: {str(e)}")
            return input_image

def create_interface():
    app = SkyReplacementApp()
    
    interface = gr.Interface(
        fn=app.process_image,
        inputs=gr.Image(label="Upload Image", type="pil"),
        outputs=gr.Image(label="Sky Replaced Result", type="pil"),
        title="🌤️ AI Sky Replacement - 2025 State-of-the-Art",
        description="Upload an image to replace its sky with premium-quality alternatives using advanced edge refinement.",
        examples=[
            # Add example images if available
        ],
        theme="default"
    )
    
    return interface

if __name__ == "__main__":
    demo = create_interface()
    # For Hugging Face Spaces
    demo.launch(share=False)