diff --git a/README.md b/README.md index a368308..463c0df 100644 --- a/README.md +++ b/README.md @@ -2,22 +2,32 @@ Latent blending enables video transitions with incredible smoothness between prompts, computed within seconds. Powered by [stable diffusion XL](https://stability.ai/stable-diffusion), this method involves specific mixing of intermediate latent representations to create a seamless transition – with users having the option to fully customize the transition directly in high-resolution. The new version also supports SDXL Turbo, allowing to generate transitions faster than they are typically played back! - ```python +from diffusers import AutoPipelineForText2Image +from latentblending.blending_engine import BlendingEngine +from latentblending.diffusers_holder import DiffusersHolder + pipe = AutoPipelineForText2Image.from_pretrained("stabilityai/sdxl-turbo", torch_dtype=torch.float16, variant="fp16").to("cuda") dh = DiffusersHolder(pipe) -lb = LatentBlending(dh) -lb.set_prompt1("photo of underwater landscape, fish, und the sea, incredible detail, high resolution") -lb.set_prompt2("rendering of an alien planet, strange plants, strange creatures, surreal") -lb.set_negative_prompt("blurry, ugly, pale") +be = BlendingEngine(dh) +be.set_prompt1("photo of underwater landscape, fish, und the sea, incredible detail, high resolution") +be.set_prompt2("rendering of an alien planet, strange plants, strange creatures, surreal") +be.set_negative_prompt("blurry, ugly, pale") # Run latent blending -lb.run_transition() +be.run_transition() # Save movie -lb.write_movie_transition('movie_example1.mp4', duration_transition=12) +be.write_movie_transition('movie_example1.mp4', duration_transition=12) ``` + +# Installation +```commandline +pip install git+https://github.com/lunarring/latentblending +``` + + ## Gradio UI Coming soon again :) @@ -90,12 +100,6 @@ lb.set_parental_crossfeed(crossfeed_power, crossfeed_range, crossfeed_decay) ``` -# Installation -#### Packages -```commandline -pip install -r requirements.txt -``` - # How does latent blending work? ## Method ![](animation.gif) diff --git a/latentblending/blending_engine.py b/latentblending/blending_engine.py index 034b173..b06277d 100644 --- a/latentblending/blending_engine.py +++ b/latentblending/blending_engine.py @@ -8,6 +8,7 @@ from PIL import Image from latentblending.movie_util import MovieSaver from typing import List, Optional import lpips +import platform from latentblending.utils import interpolate_spherical, interpolate_linear, add_frames_linear_interp, yml_load, yml_save warnings.filterwarnings('ignore') torch.backends.cudnn.benchmark = False @@ -64,7 +65,10 @@ class BlendingEngine(): self.multi_transition_img_first = None self.multi_transition_img_last = None self.dt_unet_step = 0 - self.lpips = lpips.LPIPS(net='alex').cuda(self.device) + if platform.system() == "Darwin": + self.lpips = lpips.LPIPS(net='alex') + else: + self.lpips = lpips.LPIPS(net='alex').cuda(self.device) self.set_prompt1("") self.set_prompt2("")