File size: 2,295 Bytes
1e350c6
 
0f09deb
 
1e350c6
 
f9a94e1
1e350c6
f9a94e1
 
1e350c6
 
 
 
 
f9a94e1
 
 
 
 
 
1e350c6
 
f9a94e1
1e350c6
 
f9a94e1
1e350c6
f9a94e1
1e350c6
f9a94e1
1e350c6
 
 
 
 
 
 
 
f9a94e1
1e350c6
f9a94e1
 
1e350c6
 
 
 
 
 
 
 
 
f9a94e1
1e350c6
f9a94e1
 
1e350c6
 
f9a94e1
1e350c6
f9a94e1
1e350c6
0f09deb
1e350c6
 
f9a94e1
1e350c6
 
f9a94e1
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
import os
import streamlit as st
from diffusers import CogVideoXImageToVideoPipeline
from diffusers.utils import export_to_video, load_image
import torch

st.write("App started.")

# Streamlit interface
st.title("Image to Video with Hugging Face")
uploaded_file = st.file_uploader("Upload an image (JPG or PNG):", type=["jpg", "jpeg", "png"])
prompt = st.text_input("Enter your prompt:", "A little girl is riding a bicycle at high speed. Focused, detailed, realistic.")

if uploaded_file and prompt:
    try:
        # Debugging
        st.write(f"Uploaded file: {uploaded_file.name}")
        st.write(f"Prompt: {prompt}")

        # Save uploaded file
        st.write("Saving uploaded image...")
        with open("uploaded_image.jpg", "wb") as f:
            f.write(uploaded_file.read())
        st.write("Uploaded image saved successfully.")

        # Load the image
        st.write("Loading image...")
        image = load_image("uploaded_image.jpg")
        st.write("Image loaded successfully.")

        # Initialize pipeline
        st.write("Initializing the pipeline...")
        pipe = CogVideoXImageToVideoPipeline.from_pretrained(
            "THUDM/CogVideoX1.5-5B-I2V",
            torch_dtype=torch.bfloat16
        )
        pipe.enable_sequential_cpu_offload()
        pipe.vae.enable_tiling()
        pipe.vae.enable_slicing()
        st.write("Pipeline initialized successfully.")

        # Generate video
        st.write("Generating video... This may take a while.")
        video_frames = pipe(
            prompt=prompt,
            image=image,
            num_videos_per_prompt=1,
            num_inference_steps=50,
            num_frames=81,
            guidance_scale=6,
            generator=torch.Generator(device="cuda").manual_seed(42),
        ).frames[0]
        st.write("Video generated successfully.")

        # Export video
        st.write("Exporting video...")
        video_path = "output.mp4"
        export_to_video(video_frames, video_path, fps=8)
        st.write("Video exported successfully.")

        # Display video
        st.video(video_path)

    except Exception as e:
        st.error(f"An error occurred: {e}")
        st.write(f"Debug info: {e}")
else:
    st.write("Please upload an image and provide a prompt to get started.")