Spaces:
				
			
			
	
			
			
		Running
		
			on 
			
			A100
	
	
	
			
			
	
	
	
	
		
		
		Running
		
			on 
			
			A100
	Update app.py
Browse files
    	
        app.py
    CHANGED
    
    | 
         @@ -97,7 +97,47 @@ def generate_video(input_image, prompt, height, width, 
     | 
|
| 97 | 
         
             
                               guidance_scale = 1, steps = 4,
         
     | 
| 98 | 
         
             
                               seed = 42, randomize_seed = False, 
         
     | 
| 99 | 
         
             
                               progress=gr.Progress(track_tqdm=True)):
         
     | 
| 
         | 
|
| 
         | 
|
| 100 | 
         | 
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 101 | 
         
             
                if input_image is None:
         
     | 
| 102 | 
         
             
                    raise gr.Error("Please upload an input image.")
         
     | 
| 103 | 
         | 
| 
         @@ -174,4 +214,4 @@ with gr.Blocks() as demo: 
     | 
|
| 174 | 
         
             
                )
         
     | 
| 175 | 
         | 
| 176 | 
         
             
            if __name__ == "__main__":
         
     | 
| 177 | 
         
            -
                demo.queue().launch()
         
     | 
| 
         | 
|
| 97 | 
         
             
                               guidance_scale = 1, steps = 4,
         
     | 
| 98 | 
         
             
                               seed = 42, randomize_seed = False, 
         
     | 
| 99 | 
         
             
                               progress=gr.Progress(track_tqdm=True)):
         
     | 
| 100 | 
         
            +
                """
         
     | 
| 101 | 
         
            +
                Generate a video from an input image using the Wan 2.1 I2V model with CausVid LoRA.
         
     | 
| 102 | 
         | 
| 103 | 
         
            +
                This function takes an input image and generates a video animation based on the provided
         
     | 
| 104 | 
         
            +
                prompt and parameters. It uses the Wan 2.1 14B Image-to-Video model with CausVid LoRA
         
     | 
| 105 | 
         
            +
                for fast generation in 4-8 steps.
         
     | 
| 106 | 
         
            +
                
         
     | 
| 107 | 
         
            +
                Args:
         
     | 
| 108 | 
         
            +
                    input_image (PIL.Image): The input image to animate. Will be resized to target dimensions.
         
     | 
| 109 | 
         
            +
                    prompt (str): Text prompt describing the desired animation or motion.
         
     | 
| 110 | 
         
            +
                    height (int): Target height for the output video. Will be adjusted to multiple of MOD_VALUE (32).
         
     | 
| 111 | 
         
            +
                    width (int): Target width for the output video. Will be adjusted to multiple of MOD_VALUE (32).
         
     | 
| 112 | 
         
            +
                    negative_prompt (str, optional): Negative prompt to avoid unwanted elements. 
         
     | 
| 113 | 
         
            +
                        Defaults to default_negative_prompt (contains unwanted visual artifacts).
         
     | 
| 114 | 
         
            +
                    duration_seconds (float, optional): Duration of the generated video in seconds.
         
     | 
| 115 | 
         
            +
                        Defaults to 2. Clamped between MIN_FRAMES_MODEL/FIXED_FPS and MAX_FRAMES_MODEL/FIXED_FPS.
         
     | 
| 116 | 
         
            +
                    guidance_scale (float, optional): Controls adherence to the prompt. Higher values = more adherence.
         
     | 
| 117 | 
         
            +
                        Defaults to 1.0. Range: 0.0-20.0.
         
     | 
| 118 | 
         
            +
                    steps (int, optional): Number of inference steps. More steps = higher quality but slower.
         
     | 
| 119 | 
         
            +
                        Defaults to 4. Range: 1-30.
         
     | 
| 120 | 
         
            +
                    seed (int, optional): Random seed for reproducible results. Defaults to 42.
         
     | 
| 121 | 
         
            +
                        Range: 0 to MAX_SEED (2147483647).
         
     | 
| 122 | 
         
            +
                    randomize_seed (bool, optional): Whether to use a random seed instead of the provided seed.
         
     | 
| 123 | 
         
            +
                        Defaults to False.
         
     | 
| 124 | 
         
            +
                    progress (gr.Progress, optional): Gradio progress tracker. Defaults to gr.Progress(track_tqdm=True).
         
     | 
| 125 | 
         
            +
                
         
     | 
| 126 | 
         
            +
                Returns:
         
     | 
| 127 | 
         
            +
                    tuple: A tuple containing:
         
     | 
| 128 | 
         
            +
                        - video_path (str): Path to the generated video file (.mp4)
         
     | 
| 129 | 
         
            +
                        - current_seed (int): The seed used for generation (useful when randomize_seed=True)
         
     | 
| 130 | 
         
            +
                
         
     | 
| 131 | 
         
            +
                Raises:
         
     | 
| 132 | 
         
            +
                    gr.Error: If input_image is None (no image uploaded).
         
     | 
| 133 | 
         
            +
                
         
     | 
| 134 | 
         
            +
                Note:
         
     | 
| 135 | 
         
            +
                    - The function automatically resizes the input image to the target dimensions
         
     | 
| 136 | 
         
            +
                    - Frame count is calculated as duration_seconds * FIXED_FPS (24)
         
     | 
| 137 | 
         
            +
                    - Output dimensions are adjusted to be multiples of MOD_VALUE (32)
         
     | 
| 138 | 
         
            +
                    - The function uses GPU acceleration via the @spaces.GPU decorator
         
     | 
| 139 | 
         
            +
                    - Generation time varies based on steps and duration (see get_duration function)
         
     | 
| 140 | 
         
            +
                """
         
     | 
| 141 | 
         
             
                if input_image is None:
         
     | 
| 142 | 
         
             
                    raise gr.Error("Please upload an input image.")
         
     | 
| 143 | 
         | 
| 
         | 
|
| 214 | 
         
             
                )
         
     | 
| 215 | 
         | 
| 216 | 
         
             
            if __name__ == "__main__":
         
     | 
| 217 | 
         
            +
                demo.queue().launch(mcp_server=True)
         
     |