Master WAN 2.2 in ComfyUI – Complete Video Generation Workflow — Transcript
Full transcript
- 0:00Hello everyone and welcome back to
- 0:01Arctic Latent. It's been a little while.
- 0:04I took a short vacation to get some rest
- 0:06after a pretty intense stretch of work,
- 0:08but I am back again. Today we are going
- 0:11to focus on allin-one 12.2 video
- 0:14generation workflow inside comi and how
- 0:17to get the best results from it. Before
- 0:19we dive in, I want to set some
- 0:21expectations. Video generation just
- 0:24isn't there yet, even on the closed
- 0:26source size. I have API access to VO 3.1
- 0:29and Soda 2 Pro and I have spent some
- 0:32time experimenting with both. While they
- 0:34are better than open source in some
- 0:36areas, they still suffer from many of
- 0:39the same fundamental issues and the same
- 0:42applies to most open-source video models
- 0:44right now. From a wow modern technology
- 0:47perspective, they are impressive. But
- 0:49today, nobody really has a truly
- 0:52reliable or broadly useful video model.
- 0:54That said, if you are okay with those
- 0:56limitations and you want to create
- 0:58short, interesting clips, one 2.2 can
- 1:01still be very powerful and honestly a
- 1:04lot of fun to work with. Before we start
- 1:06building the workflow, let's cover a few
- 1:08important things you should know about
- 1:10how 12.2 actually behaves. Clip length
- 1:13is extremely important with 12.2. Once
- 1:17you go past 5 seconds, videos can start
- 1:19to look stranger and less dynamic. one
- 1:22is mostly trained on 5-second clips, so
- 1:25that's where you will usually get the
- 1:26best results. This isn't always true,
- 1:28but it is a very reliable guideline. As
- 1:31you increase the length, problems with
- 1:33color consistency, overall quality, and
- 1:35prompt adherence become more common.
- 1:38That's why this workflow kepts the
- 1:40length at 10 seconds. Longer videos take
- 1:43more time to generate, and they usually
- 1:45look worse. That said, we will also
- 1:47cover stable video infinity or SVI. SVI
- 1:51allows you to generate much longer
- 1:53videos with far better temporal
- 1:56consistency. It is not perfect, but it
- 1:58is a huge improvement over the old
- 2:00approach of stitching short clips
- 2:02together. Quality mainly comes down to
- 2:05steps and sampler choice, especially for
- 2:07text to video. For image to video, you
- 2:09can cheat a little. Starting with a very
- 2:12high quality input image gives the model
- 2:14a strong first frame. That alone can
- 2:17noticeably improve the final result.
- 2:20even with a fever steps. Poor quality
- 2:22loras or conflicting loras can
- 2:25significantly reduce overall quality.
- 2:27And finally, quality can often be
- 2:30improved just by choosing a more common
- 2:32aspect ratio, which the model generally
- 2:35handles better. Several things affect
- 2:37variation in 12.2. That includes the
- 2:40sampler, the number of steps, CFG, the
- 2:43seed, the prompt, and any loras you are
- 2:46using. Even small changes to any of
- 2:48these can produce very different
- 2:50results. Let's jump into CompuI and
- 2:53start building the all-in-one 1 2.2
- 2:56workflow together. I will break
- 2:58everything down and explain it in more
- 3:00detail as we go. Okay, we are going to
- 3:02cover lots of stuff. So, I will try to
- 3:06be as much as slow, but I don't want to
- 3:09go crazy with like a very long video.
- 3:13It's going to be a long video but I will
- 3:15try to follow in order because the order
- 3:18is very important. So sometimes I will
- 3:21check my notes. So first thing first
- 3:24let's I am not going to do the same
- 3:26thing we did in plux like installing
- 3:29compi. You can use my compy script which
- 3:32is this guy Linux compi installer. you
- 3:35can find in the previous video and you
- 3:38will see it is super easy to run comy
- 3:41with even sage attention which we are
- 3:43going to use in this case and after you
- 3:47launch your comi which is going to be
- 3:50comi for my case start sage 2 because I
- 3:53have two install installation of comi so
- 3:57I am going to run this as you can see in
- 4:00here using sage attention okay so CompuI
- 4:04is started. I can go to compi refresh.
- 4:08This is going to be our workflow. As you
- 4:11guys can see, I am going to use get and
- 4:15set nodes. In my opinion, they are
- 4:17amazing, super powerful. I don't like
- 4:20creating a workflow that has like crazy
- 4:24connection types all around because if
- 4:27you are starting this new, you are going
- 4:29to get lost. It is super easy when you
- 4:32have something like this. get nodes, set
- 4:34nodes, which is in my opinion every node
- 4:36based application needs to use. For
- 4:40example, I am a modeling and texturing
- 4:42artist and I use for example a software
- 4:45called Mari and it has this and it is
- 4:48night and day using get and set nodes
- 4:51when you are dealing with nodes because
- 4:54they make everything so much more easy
- 4:56to read. Anyway, I will open my manager
- 4:59and I will go to custom custom nodes in
- 5:02workflow. So, these are the workflow
- 5:05that I'm going to put in the
- 5:06description. You need to install to
- 5:09follow along with me or you can go to my
- 5:13Patreon. It is free my in my free tier.
- 5:16All my workflows are free. You can just
- 5:18download the the finished workflow. You
- 5:20can open it and after you open it you
- 5:22can just click install missing custom
- 5:24nodes and you will see all these nodes
- 5:27and you can just install install install
- 5:30everything and then you will have a
- 5:32restart button here. You can restart and
- 5:35you are good to go. Okay. So let me set
- 5:38up my screens. Let's create unsaved
- 5:41workflow immediately. Make a save. Let's
- 5:43call this all in one one 2.2. Confirm.
- 5:48Okay. We will start with our settings
- 5:51and I am going to of course in all my
- 5:54workflows I like to make a separate
- 5:57group that has the most important
- 5:59settings then I will use the set and get
- 6:02not set nodes to set my notes to be used
- 6:06in different section of the workflow
- 6:09screen. So what I'm going to do I am
- 6:11going to start with load clip. Okay, by
- 6:15the way, you can download everything
- 6:18from Arctic downloader. This is also I
- 6:21showed in my previous videos. This is my
- 6:24tool that you can download. You can
- 6:25choose 12.2 master model. You can choose
- 6:28your GPU RAM, system RAM and you are
- 6:31going to get the models and all the
- 6:34necessary files for this workflow. Um
- 6:38like we are going to use self forcing
- 6:40loras like light 2x variation
- 6:43autoenccoder. It will download
- 6:44everything. Yeah, if you are not
- 6:47following me on a Linux installation,
- 6:49you can just go to my hugging phase and
- 6:52in my hugging phase, you can go to 1
- 6:5412.2 files and versions. You can find
- 6:57all the files here and download. So you
- 7:00are not you don't need a Linux machine
- 7:03to be following my tutorials. But if you
- 7:06are not on Linux, you are missing lots
- 7:08of things. So I am going to use the AP16
- 7:12model and let's go with variation
- 7:15autoenccoder. Load variation
- 7:17autoenccoder. We are going to use 12.2
- 7:21from the folder 12.5.2
- 7:25still using 12 one variation
- 7:28autoenccoder. So don't get confused. So
- 7:30what I'm going to do I am going to not
- 7:32get I am going to set node connect this
- 7:36to this and I will call this clip. This
- 7:38is our clip. Let's make same color for
- 7:41variation not encoder. I will make this
- 7:43red. I will duplicate this by alt left
- 7:45clicking and I will call this variation
- 7:48not encoder. I will make the color to
- 7:51red. Connect. Done. And I am going to
- 7:54use a node called seeds from
- 7:58RG3. this guy very nice tool and I'm
- 8:02going to set node I will call this seat
- 8:06connect so what is this doing in its
- 8:09default form it is always going to give
- 8:11me a random seat let's make this is this
- 8:14the same blue or this is the same blue
- 8:16or do we have the same blue anyway this
- 8:18is fine and what we are going to do we
- 8:21are going to create a length for our
- 8:24clip length so for this one I am going
- 8:28to use a node called slider which is
- 8:31from confi MX toolkit. Okay, I will
- 8:34right click go to properties and go to
- 8:38max value is going to be 10. Okay, and
- 8:42properties minimum is going to be zero.
- 8:45So the max is going to be 10 value
- 8:47default value is going to be five. As
- 8:50you can see 1 2 3 4 5 6 7 8 9 10. Okay,
- 8:53this is our slider. Now I am going to do
- 8:56something like this. I am going to use a
- 8:58matt expression node. Okay, this is from
- 9:01a custom script node. This is my A. I
- 9:04will connect my A to this and I will put
- 9:07an expression in here. Very basic math.
- 9:11So this is seconds, right? So if I we we
- 9:13we need frames. So if I want to get
- 9:18frames from the second, I can do a
- 9:21multiply by 16. 16 is the uh lowest
- 9:25frame rate in 12.2 and we are going to
- 9:28use some interpol interpolation
- 9:30techniques to increase it and I will
- 9:33talk about interpolation and I will add
- 9:35one to this. So this is the basic mat
- 9:37that we need. Now there is another very
- 9:39powerful note that I always use. It is
- 9:42called preview any or let's search for
- 9:46any show any. It is from conf use. Why I
- 9:49like to use this? Because I want to
- 9:51double check if something that I am
- 9:53doing is actually working. Okay, I did
- 9:55some math here. But is it really
- 9:57working? Let's do this. So this node
- 9:59shows anything as an output. If I run
- 10:02this, I should get 81. So 5 seconds
- 10:05should give me 81 frames. Okay, so this
- 10:08is working. Okay, you can leave them as
- 10:11it is. I like to keep them to check then
- 10:13I remove them. But just for you guys to
- 10:16see easily uh you can keep it or remove
- 10:19it. Now I am going to do something here.
- 10:22Set node that I always use from the KJ
- 10:25nodes. Okay, let's see length. This is
- 10:28going to be my length and I want to be
- 10:30sure about something. The last time this
- 10:33was not getting the integer. Let's try
- 10:35and it works. Okay, no problem. So this
- 10:38is our length. What else? What else? I
- 10:40am going to do some coloring to this.
- 10:43Maybe like this. Okay. And I will do. So
- 10:48this is a very nice tool that's from
- 10:50adore comi custom node. So what is this
- 10:54doing? I like to work with aspect ratios
- 10:57rather than giving like exact
- 10:59resolutions. So I will put both option
- 11:02for you but I like to use aspect ratios.
- 11:07So if we do 1:1 ratio for example, this
- 11:10is a ratio that I like to use in text
- 11:14video for example and multiply by 128.
- 11:18Okay. So for example again I will show
- 11:22you where is show any. Okay. If you
- 11:26connect this to here. Okay. So width is
- 11:29768.
- 11:30So for example if you want to go with a
- 11:33different aspect ratio. Okay. it is
- 11:36going to do the operation for you
- 11:38automatically. So as you can see now I
- 11:40am getting 5 at 20. If I go with 2:1
- 11:44ratio I get 1024 so on. So this is nice
- 11:48to have but I will also of course I will
- 11:51put this on 1 one ratio. I will talk
- 11:54about ratios in a minute more in deeply
- 11:57but of course I am also going to use
- 12:00image size. This guy set image size from
- 12:03rest for life. I think I pronounced it
- 12:05right from this and I will put this 768
- 12:10to 1280. Okay. Now what we are going to
- 12:14do here if we have two nodes that's kind
- 12:17of doing the same thing giving giving us
- 12:20image size. Now there is another node
- 12:22that I'm going to use lots of times in
- 12:24this workflow which is like another uh
- 12:27very powerful node I always like to use
- 12:30is something called switch. Okay. So if
- 12:33you go to a switch it is called
- 12:36unrestricted switching this guy. Okay.
- 12:39So I am going to call this height. By
- 12:42the way you can rename your nodes and it
- 12:44will make more sense. And this is going
- 12:46to be my width switch. Okay. So this
- 12:50height is going to be my input two. If I
- 12:54do it like this and if I put the height
- 12:56from this node to input one and if I do
- 13:00preview any as you can see it is showing
- 13:03me the first input. Why this is
- 13:05powerful? If you bypass this node like
- 13:08this altB sorry Ctrl +B if you preview
- 13:11this you will get the first one. We are
- 13:14going to use bypassing and bypassing is
- 13:18super powerful in Chrome UI. You can
- 13:20make like very nice workflows by turning
- 13:23on things and off. It's like you can do
- 13:27like if else like programming when you
- 13:30really understand the magic and it is
- 13:32very easy. So if I bypass this, it is
- 13:35not going to read this. It is going to
- 13:37read this and because we are we have a
- 13:39switch and one is uh bypassing it is
- 13:43only reading to input two. Super easy.
- 13:45Okay. Ctrl B to enable this. And if you
- 13:48are not bypassing it will always get the
- 13:51input 01. Okay. So I can remove this.
- 13:54This is going to be my set node and this
- 13:57is going to be my height. Duplicate.
- 14:00This is going to be my width. And for
- 14:02the width, this is going to be my input
- 14:05two and this is going to be my input
- 14:07one. Okay. Then you can just collapse
- 14:09this if you like to tidy your screen. I
- 14:12can also collapse this. Okay. I will
- 14:14make like coloring stuff maybe at the
- 14:16end. I don't want to spend too much time
- 14:18on it. So now what we are going to do
- 14:20what else we need? We need a model
- 14:22shift. Okay. So model shift is going to
- 14:25be a float. It is going to be from conf
- 14:27literal custom node. Okay. This is node
- 14:30that can you can put like float values.
- 14:34So this is going to be my model shift.
- 14:38So what is then model shift? So when you
- 14:42generate an image or a video, the model
- 14:45doesn't create it all once. Of course,
- 14:47it gradually removes noise over a number
- 14:51of steps. And we will talk about steps
- 14:53of course. So if you use 20 steps, let's
- 14:57say in your generation, that means the
- 14:59model goes from 100% noise because we we
- 15:03start with very 100% noise, very noisy
- 15:07to zero noise in 20 steps. Now here is
- 15:10the important part. The sampler itself
- 15:13decides which exact noise level those 20
- 15:17steps come from. So they are chosen from
- 15:20a much larger timeline of pos possible
- 15:24noise levels. For example, if I do is it
- 15:27yeah if so for example without like
- 15:29without using like any shifts we start
- 15:32like 100%. Okay. then maybe 88 76 let's
- 15:38say 50 and blah blah blah blah then we
- 15:42go to 0% okay I start using this tool
- 15:45recently so sorry for if I'm doing any
- 15:48mistakes so switch changes where those
- 15:51steps are spent so this can be super
- 15:54important and actually it is like in my
- 15:57opinion one of the most important parts
- 15:58of the video generation instead of
- 16:00spreading the steps evenly shift pushes
- 16:04more of them toward the high noise end
- 16:08earlier in the process. So for example
- 16:10with with the shift enabled you set like
- 16:13shift number uh five then you can have
- 16:16something like this it will start like
- 16:18this. Okay. Okay. So this means the
- 16:21model spends more time while the image
- 16:25is still very noisy. So when you
- 16:28generate like a video in the beginning
- 16:31of the video this is a an output I am
- 16:34pretty sure lots of you guys are going
- 16:36to get which is normal the so for
- 16:39example a woman is walking toward the
- 16:41camera and the woman is super noisy. It
- 16:44has like weird artifacts in the
- 16:46beginning of the video and when it comes
- 16:48closer to the camera it gets like more
- 16:50sharper. So that's why that's why the
- 16:53steps is important. That's that's what
- 16:54steps is doing. So less time is spent on
- 16:59final details at the very end. So why
- 17:02this helps those early high noise steps
- 17:06are where the model decides the
- 17:08composition which is very important. It
- 17:11is where the the model places the
- 17:13objects figure out the overall motion
- 17:16structure stuff like that. That's that's
- 17:18where the high noise model is doing. By
- 17:22spending more steps there, shift can
- 17:24improve the composition, help motion and
- 17:27layout and reduce lighting between
- 17:31elements. So this is especially useful
- 17:33in media models of course and especially
- 17:37when we are using five step sampling
- 17:40with speed loas which we are going to
- 17:42use. So 12.2 has something called high
- 17:46noise and low noise models. It is not
- 17:50like we used like in flux there is only
- 17:52one model. No in one 2.2 we have two
- 17:56models high noise and low noise. So it
- 18:00is also called mixture of experts. So
- 18:02when you see uh somewhere about 12.2
- 18:06where it says something like M O E it is
- 18:10mixture of experts. So it is like having
- 18:13multiple specialized internal subm
- 18:16models in the model and for each token
- 18:18the model automatically roots the work
- 18:21to only one or two of them instead of
- 18:25like running everything everywhere. So
- 18:27you still load all the model into VRAMm
- 18:30but during the generation only a smart
- 18:34part only a small part is active at a
- 18:36time. So you get higher quality and
- 18:39capacity without paying the full compute
- 18:42cost every time. So this is why this
- 18:46work uh this high noise and low noise.
- 18:48This is not only one 2.2 for of course
- 18:51this is like a an advanced LLM mechanism
- 18:54the the reason they introduce something
- 18:57like that is to optimization purposes.
- 18:59So you are spending you can like load a
- 19:03very high model like this but you can
- 19:06separate that into two and you can still
- 19:09get like a a nice result with a less
- 19:12compute time. So high noise like I said
- 19:16in the uh shift section. So it is job is
- 19:19to take the initial noise and follow the
- 19:22scheduleuler step count and the shift
- 19:24settings of course and shape the overall
- 19:27structure of the results. This is where
- 19:29like big decisions are made.
- 19:31Composition, object placement, motion
- 19:33direction, scene layout, etc. Once the
- 19:37high noise model has done its job, it
- 19:39passes a partially denoised latent to
- 19:42low noise model. Then low noise model
- 19:45takes the job. So then the low noise
- 19:48model get that partially den noiseise
- 19:50latent and finishes the job. The the low
- 19:53noise model is focusing on details,
- 19:56texture, sharpness and cleanup and
- 19:58refinement. So it is like the high noise
- 20:01is the decision maker and the low noise
- 20:04is the refiner. So why this is again is
- 20:08very powerful. One model focuses on
- 20:11structure and the other focuses on
- 20:12details. So you effectively get the
- 20:16benefits of a much larger model without
- 20:19doubling VRAM usage. for people with
- 20:22limited GPUs especially this is a huge
- 20:24advantage. Uh you can run something that
- 20:27behaves like a larger model while
- 20:29staying within memory limits. So that's
- 20:32why this model shift also becomes very
- 20:35important. But you don't need to be like
- 20:38I mean that there is a math behind it,
- 20:39right? You don't need to know what is
- 20:41actually going on by looking at like
- 20:44super like crazy math stuff like that.
- 20:46Lots of people are doing tests. The
- 20:48model itself is giving you some numbers
- 20:51for like a default value. They say this
- 20:54is a good number. So, but in this in
- 20:57this video I want to show a little bit
- 21:00behind the scenes so you just don't like
- 21:02go copy and paste so you understand the
- 21:05idea what is going on. Okay. So this
- 21:09model shift that I like to use as a
- 21:11value for example I will call this model
- 21:14shift is eight. Okay. Five is also I
- 21:18think five is the default uh recommended
- 21:20one. I like to use eight. Okay, you you
- 21:23will test AI is all about testing. You
- 21:26will test a model shift value of 8 five
- 21:28stuff like that. Then you will see the
- 21:30results and you will find your best
- 21:32value. Remember prompt is everything and
- 21:36it can change everything too. So when
- 21:38you use like a prompt with model shift
- 21:41of five you can get like an amazing
- 21:43result with another value you get like a
- 21:45different result. This is normal in AI.
- 21:47So this is going to be my model shift.
- 21:50And I am going to call this of course
- 21:53set node model shift. When I do set
- 21:57nodes, I always use a capital letters.
- 21:59Okay, this is my model shift. It
- 22:01automatically gave green color. Then
- 22:03let's green give this also green color.
- 22:05Okay, and I can put this here. Maybe
- 22:08let's tidy some space. Okay, what else I
- 22:11need? Now another important step is
- 22:15steps. So I am going to do this time
- 22:18integer sorry I'm going to do a float.
- 22:22I'm going to do an integer and this is
- 22:24going to be my steps set node and this
- 22:27is going to be my base steps. I will
- 22:30tell you why I called this base in a
- 22:32minute. And for my base steps I will use
- 22:3630. In this workflow, we are going to
- 22:39use something called self-forcing loras.
- 22:42They are very popular. And we are going
- 22:45to use something called light x2. There
- 22:48is another one that's called lightning.
- 22:51I think light 2x is better than
- 22:55lightning according to my tests. So
- 22:57these loras are specialized trained
- 23:00loras. These loras actively push the
- 23:04model toward a specific behavior. That's
- 23:06how they are trained. So in this case,
- 23:09these loras are allowing for example
- 23:11very fast uh fourstep generation time
- 23:15which is crazy. Of course the tradeoff
- 23:17is you are going to get a reduced prompt
- 23:20adherance and it's going to be an
- 23:23expressive range. You are literally
- 23:26limiting what 12.2 can do but in
- 23:30exchange you get faster generations. Now
- 23:33this is very important. I don't like
- 23:35using these loras. In my opinion, they
- 23:38are completely ruining what 12.2 is
- 23:42capable of. But I am going to show them
- 23:45because not everyone has a 5090 or more
- 23:49than that. So in my workflows, I want to
- 23:53always show optimized workflows for
- 23:56general use or people with low VM. Maybe
- 23:59you want to create some nice Tik Tok
- 24:01videos, short videos. Why not? So that's
- 24:05why I am going to show how to use them.
- 24:08Why I called this base steps? Because we
- 24:10are going to have a different steps for
- 24:14using with light loras. We are going to
- 24:16have a CFG with with and without using
- 24:20light 2x loras. That's why I call them
- 24:23base steps. So I will I will make my
- 24:25base steps 30. And the second most
- 24:29important one is our cfg. I will call
- 24:33this cfg set node connect and call this
- 24:38cfg or base cfg. Okay. And the default
- 24:42cfg recommended to use without
- 24:45self-forcing loras is 3.5. Okay. Like
- 24:48this. Okay. We set this. Now another
- 24:51very important one. It's an integer. Not
- 24:54like this. Integer from compil literal.
- 24:57Yeah. This one. Last high noise step.
- 25:02Okay, I will tell you what we are doing
- 25:04with this. And this is generally the
- 25:07half of your steps. So what is this?
- 25:10When we are going to use high and noise
- 25:13models for 12.2, of course, we need two
- 25:16key samplers. The first key sampler
- 25:18which is the high noise one is going to
- 25:21use 15 steps and it will stop when it
- 25:24reaches 15 steps. In the second low
- 25:27noise key sampler, we will start from 15
- 25:31steps to infinite. So this is how high
- 25:34and low noise works. I told you what is
- 25:37happening with the high and low noise
- 25:39model when I was describing the model
- 25:41shift. So this is why I will put this to
- 25:4415. Okay. So we need to tell the models,
- 25:49hey your job is done and your job is
- 25:51done at 15 steps in this case. Now low
- 25:54noise you will start from 15. Okay. Now
- 25:57I am going to put a switch unrestricted
- 26:01switch. Okay. This is going to be my
- 26:03last step switch and I will put this
- 26:08last high noise step to input two. There
- 26:11is something going to be connected to
- 26:13this input one. You can understand the
- 26:15logic right? When we are creating the
- 26:18self-forcing Laura light 2X section, we
- 26:20are going to define the steps for light
- 26:23link light 2x loras in its own group
- 26:27because like I said, we are going to do
- 26:29some bypassing logic. Hey, do do you
- 26:32want to use self-forcing loras? Okay, we
- 26:35will enable it and then it is going to
- 26:37switch to switch to input one. Disable
- 26:39self forcing loras. We are going to have
- 26:41an input a button. you will click it and
- 26:43then it is it is going to bypass the the
- 26:46self forcing loras group and it will
- 26:48then use this number. So for now I will
- 26:51keep this like this and this is going to
- 26:53be last step switch and another switch I
- 26:57want unrestricted switch. This is going
- 27:00to be my CFG switch. Okay, we want a we
- 27:04want a CFG for light 2x self forcing
- 27:08loadas and we want a cfg for normal
- 27:11workflow without them. So in this case
- 27:14this this is this 30 is the input two. I
- 27:18can just go like this. Oh this is base
- 27:20step sorry. Okay let's put like this
- 27:24another unrestricted switching. This is
- 27:26going to be our step switch. Same logic.
- 27:30Okay. So 30 is my base step and it is
- 27:33also my input too. Actually let's make
- 27:35it like this because I will bring some
- 27:37other stuff here. Okay. Switching is
- 27:39amazing with bypassing you will see and
- 27:42this is step switch and what is nice. I
- 27:45will also set nodes for all of them. So
- 27:48for step switch this is going to be my
- 27:52steps. For switch I will use
- 27:54underscoresw.
- 27:55This is going to be my cfg
- 27:59switch and this is going to be my last
- 28:02high stepsw.
- 28:05Okay, let's do a save. Now prompting
- 28:07time. I will I want to keep the
- 28:09prompting in the settings area because
- 28:11it is like a setting right now. Let's
- 28:13use our first get node and let's get the
- 28:15clip. Okay, we don't want crazy noodles.
- 28:18That's why I will use get clip and I am
- 28:21going to use prompt clip text encode
- 28:23prompt. This is going to be my positive
- 28:26duplicate. This is going to be my
- 28:28negative. I will connect to the clip
- 28:31text encoder and set node. This is going
- 28:34to be my positive prompt. And this is
- 28:38going to be my negative prompt. I will
- 28:41make this green and negative to red.
- 28:43There is a default negative prompt which
- 28:46is something crazy like this. You can
- 28:48use it. And let's save. We are done for
- 28:52now with the settings. I will select
- 28:54control drag and create a rectangle and
- 28:56click on frame nodes. Let's call this
- 29:00capital settings. Okay, let's see what
- 29:02we did. We created a slider for our
- 29:05length of the video. We used a basic
- 29:07matt expression to convert our seconds
- 29:11to frame number and we set it as a
- 29:14length. We are using two different types
- 29:17of nodes to set the image latent size.
- 29:21One is based on a ratio, one is based on
- 29:25direct input and we are using a switch
- 29:28because you can bypass one of it and use
- 29:32whatever you want. In this case, I am
- 29:34going to bypass this one. For now, we
- 29:37are setting the height. We are setting
- 29:39the width. We are using a seed node from
- 29:41RG3. This is always giving us a random
- 29:44seed number. And we are setting the
- 29:46seeds. We are loading our clip text
- 29:50encoder. Very important I need to choose
- 29:52one in the type. We are setting our
- 29:55variation autoenccoder. We set our model
- 29:58shift with a float. We set our base
- 30:01steps and base cfg with an integer and
- 30:04float. And we set our last high noise
- 30:07step as a integer in here. And we
- 30:10created switch for base steps base CFG
- 30:14and B sorry last step switch because we
- 30:17are going to have an option to turn on
- 30:20lightning uh loras to use or not to use
- 30:24them. And we are going to have different
- 30:27step CFG and last step number for
- 30:31lightning lora usage and then we are
- 30:34setting them with a set node. Now you
- 30:36may be asking yourself, how do I know
- 30:39when to switch to low noise? That's
- 30:42where something called boundary comes
- 30:44up. 12.2 for text to video, image to
- 30:48video has something called boundary. So
- 30:51the generation like I said starts at
- 30:54noise 1.0 and then the noise decreases
- 30:58step by step towards zero. So while the
- 31:02noise is going through 0.875
- 31:07okay I will tell you what is this number
- 31:09one uses the high noise model once it
- 31:12reaches this is for text video once it
- 31:15reaches 0.875 875
- 31:18then it switches to low noise model. So
- 31:20this is the math how the model is
- 31:23trained for text to video. Then the low
- 31:25noise model is used until the last
- 31:28frame. Use the high noise model for the
- 31:30early noisy part. Then at uh 0.775
- 31:35switch to the low noise model and finish
- 31:37the video. That's it. Where do we know
- 31:39this number? If you go to GitHub of the
- 31:42one model, if you click one, go to
- 31:44configs and if you go to this is for
- 31:47image to video config. This is for text
- 31:49to video config. If you open text to
- 31:51video config, for example, if you go
- 31:53down, you will see in inference there is
- 31:56a boundary. Okay, this is the boundary
- 31:58we need to know and this is the boundary
- 32:01for image to video which is 0.9.
- 32:05But how I am going to know where to
- 32:07switch my step? It's easy. We can open
- 32:10our confi. Let's create a new workflow.
- 32:13Let's create a node called one video
- 32:16sigma to step. This is where you put
- 32:19your in this case I'm going to use text
- 32:22video boundary number 700 sorry 875
- 32:26which is as you can see this where is my
- 32:28comi and then I'm going to use something
- 32:31called one videouler.
- 32:35This is from one video wrapper custom
- 32:37node. If I connect my step to my end
- 32:41step, okay, I am going to use a simple
- 32:43scheduleuler that we are going to use in
- 32:45our workflow which is aer. Let's say you
- 32:48are going to use 10 steps and you want
- 32:51to use a shift model shift of five. If I
- 32:55connect this to show any okay because I
- 32:58cannot run this without this. Okay, so
- 33:01this is going to be myuler.
- 33:03Now if I run this, this is going to give
- 33:06me something very nice. So as you can
- 33:08see at step four, we are reaching this
- 33:12amount. So I am going to start using my
- 33:17low noise model at step four. If this
- 33:19was for image to video, if I run this
- 33:23same, okay, they are very because this
- 33:25is like a because they are very close
- 33:26numbers 875 to 900. So I am getting step
- 33:31four. So this is this is what you can
- 33:33use. This is like a the the maths behind
- 33:36it. And if you really want to put like
- 33:40the the right number, this is not always
- 33:43like giving going to give you the the
- 33:46perfect result. Like I said in video
- 33:48generation, there are lots of things
- 33:50that's affect your video. Prompt steps,
- 33:53the seeds, the the prompt is like one
- 33:56word in a prompt is going to give you
- 33:58something problematic maybe. But just
- 34:01want to be sure that you are in the safe
- 34:03zone. You can use this technique to get
- 34:07your number. So let's go to 12.2 and
- 34:11let's go to CFG section. Where is CFG?
- 34:14Here is our CFG. This is our CFG for our
- 34:18base generation without lightning
- 34:20self-forcing LOA. So CFG controls how
- 34:22strongly your model is forced to follow
- 34:25your input or your input image. So low
- 34:28CFG are more freedom more natural motion
- 34:32and high CFGs stronger prompt control
- 34:35less freedom. So if you use like a
- 34:38higher CFG you are telling the model to
- 34:40follow the prompt more and if you are
- 34:43using low number CFG you are telling the
- 34:47model to hey you are free whatever you
- 34:49can do whatever you want. Now there is
- 34:51also something very important about CFG.
- 34:54Higher CFGs are using more computation
- 34:56and if you increase it too much you can
- 34:59damage the quality. So it is like too
- 35:02much CFG is like forcing a big object
- 35:04into a tiny space like everything is
- 35:07like get distorted. CFG1 which is very
- 35:10important because we are going to use it
- 35:11in self-forcing loras because we want
- 35:15higher computation speeds but CFG1
- 35:18disables negative prompting which is not
- 35:20good. This is why low CFG values are
- 35:23often preferred for speed loras. And
- 35:27when we are doing CFG at one, we are
- 35:30going to use something called NAG which
- 35:33is called normalize attention guidance
- 35:35which I will show you in the lightning
- 35:37lora section. Okay. So CFG is also very
- 35:41important. Okay. Now we are going to
- 35:43create our model section. Let's start
- 35:46with text video. So I am going to bring
- 35:49a load diffusion model and this is going
- 35:52to I am using FP8 for this video. So
- 35:55this is going to be my text to video
- 35:57high noise. Remember we have high and
- 35:59low for both image to video and text to
- 36:02video. So this is going to be text to
- 36:04video high. I will duplicate this. This
- 36:07is going to be my text to video low.
- 36:09This guy. Okay. I am going to duplicate
- 36:11this. This is going to be my image to
- 36:14video high. And this is going to be my
- 36:16image to video low. And I will put this
- 36:19like this. For image to video, of
- 36:21course, we need a load image node. I
- 36:23will put it here like this maybe. And I
- 36:26am going to frame this with a group. And
- 36:28I will call this text to video like
- 36:31this. I will frame this image to video
- 36:34like this. Now I want to make a switch
- 36:36because I want to enable and disable
- 36:38this according to my needs. What I am
- 36:41going to do? I am going to create
- 36:43unrestricted switching that we used
- 36:45before. Okay, so input two I can put
- 36:48onto my load. Okay, let's do this. Let's
- 36:52make them. This is text to video high
- 36:55and this is text to video low. This is
- 36:58image to video high and this is image to
- 37:02video low. So I will put this text to
- 37:05video low to input two and text to uh
- 37:08image to video low to input one. like
- 37:10this. I will double click this. I will
- 37:12call this model switch low. This is a
- 37:16switcher for low. I will duplicate this.
- 37:19This is a switcher for high. Input two
- 37:22will be my high for text to video. And
- 37:25input one is going to be my image to
- 37:28video high like this. Okay. And for our
- 37:31image that we can use anywhere, I will
- 37:34set a node and I will call this image
- 37:37and connect to this. Now what I'm going
- 37:39to do I am going to use a very nice node
- 37:42called fast group bypasser. Okay fast
- 37:46group bypasser. This node when you
- 37:48create it is going to give you all the
- 37:51groups that you have in your comi. For
- 37:53example it is showing me settings also
- 37:56here. Okay which I don't want to show
- 37:58it. So what I can do I can right click
- 38:00go to properties. Let's make this color
- 38:03brown. And let's make this color brown.
- 38:06If you right click, go to properties and
- 38:09say match colors and say brown, it will
- 38:12give you everything that's inside brown
- 38:14groups. Now, as you can see, I can
- 38:17enable and disable them like this. Okay.
- 38:20Now, I enabled my text to video. As you
- 38:23can see, others other image to video is
- 38:25bypassed. So, right now we are using a
- 38:28text to video models. Now, we will
- 38:30continue with our model section. I am
- 38:32going to introduce a power lura loader
- 38:36from RG3. This is for adding custom
- 38:39loras one 2.2 flux. All these models are
- 38:43giving you different loras that you can
- 38:45use. This is not self-forcing Lora.
- 38:47Self-forcing Lora is different.
- 38:49Self-forcing Lora like I said it is for
- 38:51less time generation. It is purpose is
- 38:54that this is like a lora for example to
- 38:56create a cyber punk character. So I want
- 38:59this to be inside my chain. So of course
- 39:03the model will go to output of the uh
- 39:06low switch. So this is low. I will
- 39:08duplicate this. And this is my high. As
- 39:11you can see these guys need our clip
- 39:14text encoder. This is where get and set
- 39:17nodes are like I said becoming very
- 39:19handy. So I will just get my node called
- 39:23clip and connect to both of them and I
- 39:25could put them in between. Now this is
- 39:28where we are introducing our model
- 39:30shifting. It is a co it's a node called
- 39:32model sampling. We are shifting the
- 39:34model and did we yeah we already set the
- 39:38model shift. So in here the model goes
- 39:40to the high. Let's also call this power
- 39:43la loader high. Power la loader low. I
- 39:47want both of them for high and low and
- 39:51get node model shift to my shift value
- 39:54just like this. Now we are going to
- 39:57create our self-forcing Loras section.
- 39:59For self forcing Loras, we are again
- 40:02going to bring loader. This time be
- 40:04careful. I am using a node called loa
- 40:07loader model only. Now you may see you
- 40:09may say why you are not using power la
- 40:12loader because power la loader needs a
- 40:14clip where lura loader model only needs
- 40:17the lura itself. When I use this with a
- 40:20clip I I find the results not good.
- 40:24That's why I am only bringing the Lora.
- 40:26I am not using this power lura loader.
- 40:29Okay. So now I am going to connect this
- 40:31to model. This is going to be my
- 40:34selfforcing Laura from light x2 to video
- 40:38for text to video. Okay. So this is
- 40:41going to be my text to video high noise.
- 40:44I will duplicate this. And this is going
- 40:46to be text to video low noise. So the
- 40:50Laura strength for both of them one to
- 40:53one is recommended. Some people like to
- 40:56use and say they are getting better
- 40:58result with high step Laura in strain
- 41:02two. You can test. I will keep them at
- 41:04one. Okay. And this will get my low
- 41:06model. And this is going to be named
- 41:10light. Let's name them light x2 high.
- 41:14Copy light x2 low. As you can see even
- 41:18in the name it says four step. So they
- 41:20are trained for generating a video in
- 41:22four step. Now let's make some room here
- 41:26like this. I am going to create a float
- 41:29for my light CFG which is going to be
- 41:32one. Okay. Now we are disabling negative
- 41:35prompting which we don't want but we are
- 41:37going to introduce something for that.
- 41:39And I will make this let's say red. This
- 41:41should be a float number. Let's don't
- 41:43make that mistake also here. Where is
- 41:45it? 8.0. zero. This is why we are using
- 41:48a float. Okay, the difference between
- 41:50float and integer. Okay, so this is a
- 41:53float and this is going to be my set
- 41:55node light cfg. I don't know why it
- 41:58gives green and I am going to create an
- 42:00integer from conf literal custom package
- 42:04and for this is going to be our steps
- 42:07light steps set node light steps light
- 42:12steps duplicate this call this light
- 42:16last high noise step and I will make
- 42:20this to half half of this should be fine
- 42:23if you go to this thing that I showed
- 42:26you if this this takes the video and if
- 42:28I am using a shift of let's see eight
- 42:32with four steps as you can see our step
- 42:35is two let's do a save let's go here set
- 42:38node and let's call this set oops not
- 42:42this this one lights last step okay here
- 42:46is the thing there is a node called n a
- 42:49from kj nodes one video n a let's call
- 42:53this i default values are fine and let's
- 42:56call this low we will connect our model
- 42:59into this they need a conditioning and
- 43:03they need a negative prompt so get node
- 43:06because n a is for negative prompting
- 43:09don't forget negative prompt you can
- 43:11connect to this now normalize attention
- 43:14guidance it is like an alternative
- 43:16technique that allows for the use of
- 43:19negative prompts at cfg level of one
- 43:22often resulting in pest generation spits
- 43:25with certain models like on 2.2 first
- 43:27step so few step diffusion models like
- 43:30these guys self-forcing gloras they
- 43:33facilate a repeat inference but
- 43:35generally lack support for CFG making
- 43:38negative guidance ineffective so it
- 43:42works inside the model's attention
- 43:44layers to enforce the negative prompts
- 43:47more reliably than the traditional CFG
- 43:50especially when you are using uh few
- 43:52sampling steps like we do here so it
- 43:56It keeps the negative guidance stable
- 43:58and it doesn't need like retraining and
- 44:00it works across image and meddios. So
- 44:04this is a special node that allow us to
- 44:07use negative prompting while using cfg
- 44:11of one. Okay. Now this is very
- 44:13important. I am going to select these
- 44:16guys and frame them and call this self
- 44:19what I am doing selfcorus
- 44:23self forcing finally okay like this and
- 44:27then what I'm going to do I am going to
- 44:30set node like this outside of this group
- 44:33you will see why and I will call this
- 44:36light because of the s force in glor's
- 44:39name light 2x light high duplicate and
- 44:43this is going to be light long like
- 44:45this. And let's make this a different
- 44:48color. Maybe like this. And let's go to
- 44:51our settings section because now we
- 44:52introduced some additional steps, right?
- 44:54And we have switch switches that are
- 44:56waiting for these guys. So remember we
- 44:59have step switch which is this guy. So
- 45:02in the step switch what I'm going to do
- 45:04I am going to bring a get node and this
- 45:08is going to be my light steps. Okay. And
- 45:10it will go to input one. So our step
- 45:13switcher for a normal workflow versus
- 45:16the lightning lora is done. Another get
- 45:19node. I will choose light cfg and
- 45:22connect to input one. Another get node
- 45:25light. What was the name? Light light
- 45:28last step to input one. So our last
- 45:32highstep signature is done. Okay. What I
- 45:35am going to do in here best group
- 45:38bypasser and in here what I'm going to
- 45:40do I can copy this group name because it
- 45:44works with group names double click ctrl
- 45:47C come here right click properties match
- 45:50title paste and it will only give me
- 45:53this okay so if we want to bypass this
- 45:56section we can use this okay our
- 45:59self-forcing lura section is done now
- 46:01let's create a latent we need our width
- 46:04of the image not set node. Get node
- 46:08width. Let's duplicate this and select
- 46:10height. We need our height. And what
- 46:12else we need? We need the brain for this
- 46:16operation which is one image to video.
- 46:19Width is going to width. Height is going
- 46:21to height. Oops. Like this. We need our
- 46:24length. We need our positive prompt and
- 46:27negative prompt. Of course, positive,
- 46:30negative. Let's make this green. And of
- 46:33course we need our variational
- 46:34autoenccoder and we need our image if we
- 46:37are using an image to video generation
- 46:40get node image to image start image oops
- 46:44like this now we need to output a
- 46:47positive negative and latent from this
- 46:49what I'm going to do I am going to set
- 46:52node three of them this is going to be
- 46:54just to not get confused with my
- 46:57positive prompt and negative prompt this
- 46:59is going to be my one positive So I can
- 47:02understand this is the output of the one
- 47:05image to video. This is one negative and
- 47:08this is my latent. Let's connect them.
- 47:11Of course we need a variational decoder
- 47:15to decode our image latent image. And
- 47:18this is also going to need my variation
- 47:20not encoder and this image is going to
- 47:23be my final image. And I will I can say
- 47:25set node final image. Now I need to
- 47:29connect my latent image to here. But in
- 47:33this workflow I am going to use the
- 47:35default two sampler methods the triple K
- 47:39sampler method and also another custom
- 47:42sampler that I'm going to show you. So
- 47:44we are going to use three different
- 47:46sampler operations in this workflow. So
- 47:50I want to give you guys options to test
- 47:52and find your best results. So this guy
- 47:55I will connect later when I am creating
- 47:57the sampler section. So I can group this
- 48:01and call latent and maybe give it a
- 48:04color like purple. Okay, let's save. Now
- 48:07we need to start generating the image.
- 48:09The most important part key sampler. The
- 48:12sampler as the method the model uses to
- 48:16turn noise into a video or image. And it
- 48:20decides how the model solves the
- 48:21problem. How noise is removed. how
- 48:24variation appears, how stable or chaotic
- 48:27the result looks. And the scheduleuler
- 48:29inside the key sampler, it's like the
- 48:32rule book the sampler follows. So it
- 48:35decides when and how fast the noise is
- 48:40removed during the generation. Important
- 48:42thing to remember always samplers and
- 48:45schedulers always work together. You
- 48:48never really change one uh without
- 48:50affecting the other. Different samplers
- 48:54combinations can produce very different
- 48:56results which we are going to see even
- 48:58with the same prompt and seeds. So for
- 49:01example we are going to implement a
- 49:04sampler called clone shark. It can
- 49:07produce very different results compared
- 49:10to st standard key sampler even with the
- 49:13identical settings. So keep that in
- 49:15mind. So in here we will start with
- 49:17standard sampler. For standard sampler
- 49:20workflow, we need a key sampler for
- 49:22sure. The advanced one and this is going
- 49:24to be my high duplicate. This is going
- 49:27to be my low. These guys work like this
- 49:30in chain because we start with high
- 49:32noise then we continue with the low
- 49:35noise. So the latent from high goes to
- 49:37the inputs of low because I will put
- 49:40some nodes here. I don't like to use
- 49:41them side by side. I like to use them
- 49:44like this. So my input nodes are going
- 49:46to be here. And this is going to give me
- 49:49my final set note. I will call this
- 49:52standard. Oops. It's going to be my
- 49:55standard latent like this. Okay. So now
- 49:57for example I can go to my latent
- 49:59section. Put some space here. Maybe I
- 50:02can put it like this. Get node standard
- 50:05latent. I am going to have a
- 50:07unrestricted switch here. And the input
- 50:10one is going to be my standard latent.
- 50:13And then this can go to my variational
- 50:15decode. So we will have triple K sampler
- 50:18here and the clone shark sample sampler
- 50:21here. Okay, for now this is good. Okay,
- 50:24the most important section we will start
- 50:27by bringing our high model. Remember we
- 50:30called it light where is it? Light high.
- 50:32Okay, and we will bring our get node.
- 50:35Okay, let's duplicate some because we
- 50:37will use some. So this is going to be my
- 50:40one positive and I will collapse them
- 50:42after connecting to give more space.
- 50:45This is going to be my one negative.
- 50:47Oops. This is going to be my latent
- 50:50collapse. Here is the important part.
- 50:52For our high noise, we are going to
- 50:54bring a random seat which we already set
- 50:57up. This seat is going to be connected
- 51:00to noise seeds. So there is a reason why
- 51:04we are only adding a random seed to the
- 51:06high sampler. The high noise stage is
- 51:09where the seed actually matters. It
- 51:12controls like I said in the beginning of
- 51:14the video how the composition and motion
- 51:16evolve. So changing the seed here gives
- 51:19you the results different results right
- 51:22the low noise model is just refining
- 51:24what is already exist in the latent
- 51:27image that it gets from high noise. So
- 51:30changing its seats usually don't produce
- 51:34meaningful differences. Okay. This
- 51:36control after generate we are going to
- 51:38use fixed. We don't want we don't want
- 51:40to generate a number randomly after a
- 51:43generation because we are already
- 51:45getting a random number from that node
- 51:47that we set for seeds and what we need
- 51:51is get node. Let's see how much we are
- 51:54going to use here. But you see how it is
- 51:56so much more easy to go like connecting
- 51:59this guy over here somewhere like all
- 52:03these like spaghetti noodles everywhere
- 52:05flying. In my opinion, this is also so
- 52:07much more better for anyone who is
- 52:09starting to learn comview. You can
- 52:11understand, oh, this is the section
- 52:13that's for this. Okay, we set stuff here
- 52:16and then we use this stuff that we set
- 52:18here in this section rather than trying
- 52:20to understand which node is connecting
- 52:22to which. So, this is going to be my
- 52:24steps. Remember, we have a step switcher
- 52:27and it's going to be my step switcher.
- 52:30This guy collapse. We have a cfg
- 52:32signature which will connect to our cfg.
- 52:35We are going to use aer sampler with
- 52:38simple. Let's also collapse this. This
- 52:40is my get this is my low model. So this
- 52:43is going to be my light low collapse and
- 52:45I can get my negative from this positive
- 52:49from this and latent is already coming
- 52:52from this. Don't forget because they are
- 52:54chained. And of course the most
- 52:56important part right now we will start
- 52:58with a step of zero because this is the
- 53:01first generation first node high noise.
- 53:03It always start with zero. But we need
- 53:06to bring our get nodes last high step
- 53:10switcher. Where is it? Last high step
- 53:12signature. This guy to end at step. So
- 53:16whatever this number is the noising of
- 53:18the high is going to end at that number.
- 53:21very important to enable this return
- 53:24with leftover noise because we are going
- 53:26to get we are going to have a leftover
- 53:28noise from high noise. This is the idea
- 53:31of high to low workflow. Right? So we
- 53:33need to enable this so it can give us
- 53:36the remaining noise. So the low noise
- 53:39model can refine. Another very important
- 53:41part we are not adding noise in the low
- 53:44noise. We are refining the noise that we
- 53:46already have. That's why we are now
- 53:48disabling this and noise seat zero
- 53:51control after generate fixed. We will
- 53:53get the steps from our get step
- 53:56switcher. We will get our cfg from our
- 53:59get cfg signature sampler same ulers
- 54:02simple start at step. Now just the
- 54:05opposite we connected get last high step
- 54:08to end the high noise but we are going
- 54:11to start with it in the low noise model.
- 54:14So this will connect to this and you can
- 54:16keep this as infinite 10,000 which is
- 54:19the default is fine and if I don't
- 54:22forget anything let me double check we
- 54:24should be good to go okay good now I
- 54:27will show you something nice in a
- 54:28workflow like this remember our non
- 54:32self-forcing Lora workflow is using
- 54:35steps of 30 all our self-forcing Lora is
- 54:39using a step of four and now this is
- 54:42enabled if you go here when you are
- 54:45using this switches that's why I
- 54:47introduce you this note show any I like
- 54:51the double check because I don't want to
- 54:53have something that maybe I didn't see
- 54:56but it is giving a wrong uh number and I
- 55:00am trying to find what is wrong so this
- 55:02is where this show any node comes very
- 55:04handy so if I connect this show any for
- 55:07example to my get step switcher I should
- 55:10get four if I go to here and disable
- 55:14enable self forcing Loras. Look here
- 55:17what happened. We bypassed. Now I should
- 55:20get 30. That's the logic. So why
- 55:22bypassing is super nice. When when you
- 55:26bypass this node, this group, this guy
- 55:29is now connected to this and this guy is
- 55:32now connected to this. There is a
- 55:34difference between bypassing and muting.
- 55:37If you mute this nodes, okay, then when
- 55:40you run your workflow, you are going to
- 55:42give a you are going to get an error.
- 55:44Says there is a problem. Some nodes are
- 55:46blah blah blah blah because it is going
- 55:48to run the workflow but some of the
- 55:51nodes are disabled. In this one the
- 55:53nodes are disabled but it is bypassing
- 55:56the to the previous nodes. That's why
- 55:58bypassing is in my opinion one of the
- 56:00most beautiful things in compy. Anyway
- 56:02let's enable self forcing loras and
- 56:04let's call this standard standard
- 56:08sampler. Also let's fix our terrible
- 56:11grammar like this. Let's do a save. Now
- 56:14let's go to our real generation like I
- 56:18still don't have the video output. Now
- 56:21we are going to create the video output
- 56:23section which we are also going to
- 56:25introduce some post-processing effects.
- 56:27For this section I am going to do
- 56:29something like this and I will call this
- 56:31model models. Yeah models is fine. Now
- 56:34to finally get the output that we are
- 56:37looking for. We will start with bringing
- 56:40our final image. And I like to use a
- 56:42note called get image size and count in
- 56:46this section again for checking that I
- 56:50use the right settings for width and
- 56:53height and my steps sorry my length is
- 56:56correct. So when I generate something I
- 56:59will get my image but then I will also
- 57:01get some numbers here. It is going to
- 57:02give me a number here. I will see in the
- 57:04note itself. That's why I like to use
- 57:06this note and I will see the count.
- 57:09count is the step for the frame. How
- 57:11many frames that I will see it is like
- 57:13good to have to check if something
- 57:16happened that is not what was your
- 57:19settings you set in the setting section.
- 57:21So we are going to use video combine
- 57:24from compy video helper suit this is
- 57:27going to be my images like this. This is
- 57:29going to be 16 not 17 file name prefix
- 57:3412.2 two. Let's say the format is going
- 57:37to be where is it? If you want like very
- 57:40small images, sorry, video file sizes
- 57:43can use video 265, but I will use the
- 57:47more general one for this workflow. 264
- 57:50MP4. This is fine. This CRF is
- 57:54important. CRF is the the quality that
- 57:57it is going to use. It is like the
- 57:59encoder to encode this video. So CRF 19
- 58:03is a good number to get like a nice
- 58:05result. But I am going to use two video
- 58:08combine nodes. One is for before
- 58:10post-processing and one after
- 58:13post-processing. So this is my first
- 58:15node that I use to see to preview my
- 58:18video before post-processing. So that's
- 58:20why I can use this like 10. Okay, it
- 58:23doesn't need because this is going to
- 58:24save the file. I don't need to do
- 58:26something like a big file. I mean it is
- 58:28going to be these are small clips and it
- 58:31is a good encoder. It is going to be a
- 58:33small file but this is going to make it
- 58:35more smaller. I don't need to save any
- 58:37metadata and I don't want to save this
- 58:39and I will enable pingpong. Ping pong is
- 58:42loop. I want to see a loop of my video
- 58:45here. Now here is the inter uh important
- 58:47part interpolation. So one models uh
- 58:50generate a video of low low native uh
- 58:53frame rate usually around uh 16 frame
- 58:57per second. So frame interpolation adds
- 59:00ne in between frames to smooth out the
- 59:03motion and increase the frame rate of
- 59:05course commonly to 30 or 60 uh frame
- 59:09pers. So when it is done correctly it
- 59:12makes the motion feel more natural of
- 59:16course less jerky. However, it can also
- 59:19give you some weird results. So, there
- 59:21are different interpolation models that
- 59:24we can use and choose between them.
- 59:27There are some which I am going to
- 59:28introduce now which are doing a very
- 59:30nice job I like to use. So, it is going
- 59:32to be again optional by choosing
- 59:35whatever you want. Some of them are more
- 59:37expensive in computation of course and
- 59:40some of them are much faster. So, you
- 59:42can try them and you can compare your
- 59:45results. So if I do so if I have a guy
- 59:49here frame one and if I have the guy
- 59:52here in frame two this interpolation
- 59:55automatically adds an in between frame
- 59:58let's say this is this is a guy walking
- 1:00:01it is going to add a in between frame
- 1:00:04between one and two to make the motion
- 1:00:07much smoother. So how we do
- 1:00:09interpolation? We will start with 32bit
- 1:00:11a 32 fps. Sorry lots of definitions. I
- 1:00:15am getting confused. Let's create an
- 1:00:17integer from confir literal. And this is
- 1:00:19going to be value of two. This is not
- 1:00:22the right node. Integer literal. Yes,
- 1:00:25this one. So this is going to be two.
- 1:00:28And I will duplicate this. And this is
- 1:00:30going to be 32. I am going to use
- 1:00:33switcher unrestricted. This is going to
- 1:00:35be my frame multiplier. Okay, let's say
- 1:00:38frame multi switch. This is going to be
- 1:00:41my input one. I will need another one
- 1:00:43here. And this is going to be my frame
- 1:00:46rate switch. Let's duplicate these guys.
- 1:00:49For 60 fps, I need to multiply with
- 1:00:52four. And this is going to be my FPS.
- 1:00:55And this will go to input two of the
- 1:00:59frame multiplier switch. This will go to
- 1:01:01input one. And this will go to input
- 1:01:03two. Okay. Set node. So this is
- 1:01:06interpolation and this is frame rate. If
- 1:01:09I select them, group them 32 fps, 60
- 1:01:14fps. Let's call this interlation.
- 1:01:18Now let's do some post-processing. I can
- 1:01:20do like a color correct node. This is a
- 1:01:23nice node that's coming from comfy art
- 1:01:25venture custom node. This will get my
- 1:01:28image from this. So as you guys can see
- 1:01:31you can define temperature, hue,
- 1:01:33brightness, contrast, stuff like that in
- 1:01:35here. So there are three interpolation
- 1:01:38models that we are going to use in this
- 1:01:40workflow. In my opinion they are more
- 1:01:43than enough. So we are also going to
- 1:01:45have switches for them of course. So
- 1:01:47what I'm going to do I will bring the
- 1:01:49first one. It is called gym vfi
- 1:01:52interpolate. Okay this is our first
- 1:01:54interpolation method. This guy needs a
- 1:01:56model. If you drag from this, it is this
- 1:01:59load download download and load. Yeah,
- 1:02:01this guy. It is automatically
- 1:02:03downloading the model for you if you
- 1:02:05don't have it like this. And this image
- 1:02:08of course is going to come from this
- 1:02:10color correct node. The other one is
- 1:02:12called Refer. All these nodes are coming
- 1:02:15from by the way different custom nodes.
- 1:02:17For example, this is coming from a very
- 1:02:19nice custom node called these are coming
- 1:02:21from a very nice custom notepad called
- 1:02:24confi frame interpolation. So I will
- 1:02:26choose this one. Again the frames in
- 1:02:29this case is my images. And the last one
- 1:02:32which is the most expensive one but my
- 1:02:34favorite one is the theme VFI and the
- 1:02:37frames are the images. Now what we need
- 1:02:40here we need two get nodes. We need a
- 1:02:43get node and we will grab our
- 1:02:45interpolation value. As you can see this
- 1:02:48has interpolation factor this has
- 1:02:51multiplier and this has multiplier. So
- 1:02:53this will go to interpolation factor for
- 1:02:56this one because this is a different
- 1:02:57custom node as you guys can see. So
- 1:03:00rather than saying multiply they are
- 1:03:02using the term interpolation factor. So
- 1:03:04it is multiplying. So it is the same
- 1:03:06thing multiplier multiplier multiplier.
- 1:03:08So this will go to multiplier like this.
- 1:03:11And now if you do like this you cannot
- 1:03:14group this because this is a single
- 1:03:16node. I want to group this. You can
- 1:03:18leftclick and right click here. Add
- 1:03:21group for selected nodes. And this is
- 1:03:23going to be my gym vfi. Same thing for
- 1:03:26this riff vfi. And same for this gym
- 1:03:31vfi. And let's give them color of pale
- 1:03:36blue. Not pale blue, blue like this. And
- 1:03:39I will bring fixed groups mutter because
- 1:03:42I want to disable whatever I don't use.
- 1:03:44It is going to bring like I said all the
- 1:03:47nodes, all the group nodes that we have
- 1:03:49inside the workflow. What I can do? I
- 1:03:51can right click, go to properties, match
- 1:03:54colors, and say blue. Yep. Okay. Now I
- 1:03:57need a switcher. Unrestricted switcher.
- 1:03:59This is going to be my VFI switch. Input
- 1:04:03one will be this. Input two is going to
- 1:04:06be this. Input three is going to be
- 1:04:08this. And I want image sharpen. Why I
- 1:04:11like to use this? You don't need image
- 1:04:13sharpen when you are do creating an
- 1:04:15image to video generation. But when you
- 1:04:17are doing text generation maybe you can
- 1:04:20get a result that's not like the desired
- 1:04:23sharpness level. So in this case you can
- 1:04:25add some sharpness in the
- 1:04:26post-processing. So this will go to my
- 1:04:29image and I can set some settings here.
- 1:04:33Sharp okay sharp radius is one is good.
- 1:04:36Then what I like to add to the videos is
- 1:04:39some film grain because this is
- 1:04:41post-processing right? So there is a
- 1:04:42nice note from rest for life. It's
- 1:04:44called film grain. Again also these are
- 1:04:47some expensive notes. I keep that in
- 1:04:49mind. So I will connect this to this. I
- 1:04:52will decrease the density of the grain
- 1:04:54decrease the amount because I tried the
- 1:04:57I tried the values. I know it is very
- 1:05:00dense and strong effect when it is uh
- 1:05:03intensity of one. So you are going to
- 1:05:05try different numbers here but this is
- 1:05:08good. Let's call this post processing
- 1:05:11and bring this guy to here. Okay. text
- 1:05:14video is enabled. Self-forcing load is
- 1:05:16enabled and I will enable him VFI. I did
- 1:05:20a save and after our post-processing now
- 1:05:22it is finally time to render our final
- 1:05:27video output again video combine the
- 1:05:30image will be this very important get
- 1:05:33node frame rate because we want the
- 1:05:35final frame rate here that we set to
- 1:05:38frame rate again I can call this one
- 1:05:402.12.2
- 1:05:42two video H264
- 1:05:45MP4 and CRF 19 for good quality output.
- 1:05:50I don't need save metadata data, but you
- 1:05:52can. And I don't want ping pong here.
- 1:05:56This is not a loop. And I want to save
- 1:05:58this. That's it. So, let's do a save.
- 1:06:00Okay. Now, we have a video with our
- 1:06:03standard K sampler. And it is looking
- 1:06:06great in my opinion. And this is the
- 1:06:08before post-processing and
- 1:06:10interpolation. As you can see the video
- 1:06:12is looping and it is not like as smooth
- 1:06:15as it is and it is very normal. It is uh
- 1:06:1816 frame per second and the prompt I
- 1:06:21used is a woman walks forwards toward
- 1:06:25the camera through a long narrow dark
- 1:06:27hallway. The camera is positioned
- 1:06:29directly in front of her. It is very
- 1:06:31important to create a prompt that
- 1:06:33defines your camera movements like the
- 1:06:34camera is positioned directly in front
- 1:06:36of her performing a continuous back bar
- 1:06:38tracking shot smoothly moving back
- 1:06:41forward. So for prompt chat GPT uh is
- 1:06:44your friend. You can say hey I want to
- 1:06:47create a 12.2 positive prompt and this
- 1:06:50is what I want to create and I want very
- 1:06:52basic. I want a camera that follows the
- 1:06:55the woman blah blah and it is going to
- 1:06:57give you a very nice prompt. As you can
- 1:06:59see the hallways. So then I am defining
- 1:07:02what is the environment is look like.
- 1:07:04She moves slowly and cautiously stepping
- 1:07:07quietly as if afraid to make noise. Her
- 1:07:10shoulders are tense blah blah blah. The
- 1:07:12hallway is dimly lit with the weak
- 1:07:14flickering overhead lights. Lots of
- 1:07:16definition. And let's see our
- 1:07:19interpolation. As you can see it is so
- 1:07:21much more smoother and we have some nice
- 1:07:25grain I added. It is a little bit
- 1:07:27strong. I can probably decrease it. But
- 1:07:29yeah, I I really I I wanted to create
- 1:07:32something like a woman is like walking
- 1:07:34toward like a scene, frightened, like
- 1:07:37scared and uh it is like a dramatic
- 1:07:40scene with some corridor light stuff
- 1:07:42like that and it did a nice job. This is
- 1:07:45only with four steps. By the way,
- 1:07:47remember only four steps to create this
- 1:07:50video. So lighting loras working very
- 1:07:53nice when you use them as much as with
- 1:07:56the right settings. But believe me when
- 1:07:59you are using lighting loras at least
- 1:08:02disable them. Okay? Because we have a
- 1:08:04very basic switcher that we defined
- 1:08:06here. Disable self forcing loras. At
- 1:08:10least try once with your prompt. How
- 1:08:13what are you getting with like 30 steps
- 1:08:15without set forcing loras? Believe me,
- 1:08:17it's going to be much more better
- 1:08:19because sourcing and gloras we are
- 1:08:21limiting the the the capabilities of
- 1:08:2412.2 but like I said this is still very
- 1:08:27good. Now let's jump to something called
- 1:08:30triple uh uh K sampler method. So what
- 1:08:33is triple uh sampling? So like I said in
- 1:08:36the beginning of the video 12.2 has
- 1:08:40split expert models high noise and low
- 1:08:42noise. And this special node called
- 1:08:46triple K sampler lets you explicitly
- 1:08:49handle an initial base pass without
- 1:08:52using self lauras and high noise that we
- 1:08:55know than low noise. So people are doing
- 1:08:58lots of tests when a model is released
- 1:09:02and they are trying to find a better way
- 1:09:05to create what the model is capable of.
- 1:09:08So lots of people did these tests and
- 1:09:11they find out that when you are using
- 1:09:13like three samples, one for your bass
- 1:09:16without step Laura and one for your high
- 1:09:19and one for your low, it can help with
- 1:09:22the motion uh detail retention and avoid
- 1:09:25issues like slow motion because in 12.2
- 1:09:28too. There is a slow motion issue where
- 1:09:31you can get sometimes it is like the it
- 1:09:33is like a problem with the model if you
- 1:09:36don't use like the correct sampling
- 1:09:38correct steps etc. So this is just a
- 1:09:42node that's wraps these two key sampler
- 1:09:46nodes together and with some extra
- 1:09:48helper combinations inside. So you can
- 1:09:51literally do this on your own with three
- 1:09:54different key samplers but this custom
- 1:09:58node is wrapping this workflow into one
- 1:10:02and makes our life easier. So the the
- 1:10:05first key sampler is like the base d
- 1:10:07noiseise. So it is like a strong initial
- 1:10:11noise removal to build the coarse
- 1:10:13structure of the image and the the
- 1:10:17lighting high which we are going to use.
- 1:10:20Sorry, not lighting guy. I am talking
- 1:10:22about the model that we created the high
- 1:10:25noise model of course it is adding a
- 1:10:28high frequency details and it is guiding
- 1:10:31the motion and the low noise. This is
- 1:10:33like just the same with the high and
- 1:10:35low. You guys already know what they are
- 1:10:37doing. So with the low it is polishing
- 1:10:39the fine detail but we only have like
- 1:10:42this extra first pass to den noiseise
- 1:10:45our base and create a much cleaner much
- 1:10:49sharper much better result. So one of
- 1:10:52the most important part of course of
- 1:10:54this three k sampler because it is not
- 1:10:57about wrapping those three nodes. In the
- 1:11:00beginning of the video, I was talking
- 1:11:02about this boundary that text to video
- 1:11:04image to video is using and I showed you
- 1:11:07guys how to in here how you can find
- 1:11:09your last high steps according to your
- 1:11:12scheduleuler and model shifting. This
- 1:11:15custom node is doing that math
- 1:11:18automatically for you. So that's also
- 1:11:20very nice. So let's jump to that. Let's
- 1:11:22do a save. And in here I think we can
- 1:11:25create our triple K sampler. So for 3
- 1:11:28triple K sampler we are going to need
- 1:11:31first of all an extra node for this
- 1:11:33workflow to make things easier. Double
- 1:11:36click switch strategy advanced. Okay I
- 1:11:40will I am specifically putting this now
- 1:11:42in the text to video and in switch
- 1:11:44strategy we are going to say hey this is
- 1:11:47a text to video boundary. Now what is
- 1:11:49this? It is this text to video boundary
- 1:11:52set to 0.875.
- 1:11:55Okay, we we defined that with that note
- 1:11:58and then I will duplicate this to image
- 1:12:00to video section. Let's make some room
- 1:12:02here. Okay, and now I will uh switch
- 1:12:06this to image to video boundary. Now I
- 1:12:09want a unrestricted switch and this is
- 1:12:11going to be my strategy switch. Input
- 1:12:16one is going to be this and input two is
- 1:12:19going to be for image to video. And then
- 1:12:21we are going to set a node and call this
- 1:12:25strategy. Okay, because we are going to
- 1:12:27use this. The reason I am doing this
- 1:12:29because of the nice option that we added
- 1:12:32to our workflow to switching image to
- 1:12:35video and text to video. Now we can
- 1:12:37start our triple case sampler workflow.
- 1:12:40Okay, of course the note that we need is
- 1:12:43triple case sampler simple. I there is
- 1:12:46an advanced one but I think simple one
- 1:12:48is already enough. Now I can get
- 1:12:52everything from here. That's also
- 1:12:54another very nice feature of get and get
- 1:12:57and set nodes. I can just connect them
- 1:12:59like this. But still it's going to
- 1:13:01create some spaghetti. I don't like
- 1:13:03them. I hate them. So that's why I will
- 1:13:05duplicate them. So as you can see this
- 1:13:07node needs are lightning high, lightning
- 1:13:11low. In this case lightning means your
- 1:13:14self-forcing loadout. I told you in the
- 1:13:16beginning of the video there is two very
- 1:13:19popular self-forcing loras for one 12.2.
- 1:13:21One is light 2x which we are using. The
- 1:13:24other one is called lightning. So I
- 1:13:26think the person who created this node
- 1:13:28was using the lightning one. It doesn't
- 1:13:30matter. We can connect the light 2x to
- 1:13:33this. So I will get my lightning low
- 1:13:36also which is from here. Oh by the way
- 1:13:39again terrible English. I'm sorry for
- 1:13:41that. Where is it? Where is it? and it
- 1:13:43will update everywhere which is nice.
- 1:13:46Okay, the grammar is fixed. I need my
- 1:13:49low. You remember what we did here when
- 1:13:51we are creating our model structure. I
- 1:13:53created a base or I didn't Yeah, for we
- 1:13:56don't have the base high right now that
- 1:13:58it needs. So how we can get the base
- 1:14:00model without the self-forcing Laura?
- 1:14:03It's very easy. I can do a get node
- 1:14:06sorry set node to this. This is high and
- 1:14:09I will call this base high. Why I am not
- 1:14:12just using this if the idea of bypassing
- 1:14:16is working like eliminating this because
- 1:14:19there is a shift here for the base high.
- 1:14:22We don't want to use this shift. Okay,
- 1:14:24this is how the triple K sampler works
- 1:14:26as far as I know. That's why I put it
- 1:14:28here. Get node bass high. So let's
- 1:14:30connect these guys. Collapse lightning
- 1:14:32high is this. Lightning low is this.
- 1:14:34Let's bring our negative and positive
- 1:14:37and connect. Let's bring our latent
- 1:14:40connect. Let's bring our seed connect.
- 1:14:43We will keep the control after generate
- 1:14:45as it is in the because this is how the
- 1:14:47node works. It is default to randomize.
- 1:14:49We keep it in randomize. Sigma shift is
- 1:14:52model shift. So we are going to get our
- 1:14:54shift to connect to that one because we
- 1:14:57define the shift. Then it it makes the
- 1:14:59step matt itself. So get node model
- 1:15:03shift to sigma shift. We need our base
- 1:15:06cfg for this. and base CFG should be
- 1:15:08already 3.5 for a 1 2 workflow but just
- 1:15:13maybe you you are changing it in the
- 1:15:16global settings I will bring it here
- 1:15:18that's why we defined it base cfg
- 1:15:20lightning start it is the self laura
- 1:15:23base that is always going to start with
- 1:15:27one and the lightning steps is going to
- 1:15:30be the steps because we are setting the
- 1:15:32step ourselves still get node light
- 1:15:35steps where is it here to lightning
- 1:15:37steps aer simple here is exactly where
- 1:15:41you change but we did some logic because
- 1:15:44we are using turn on and off switch for
- 1:15:46image to video and text video so we
- 1:15:48don't want to do this manually we will
- 1:15:50bring our get node strategy okay sampler
- 1:15:54er simple again if you put a show any
- 1:15:57and connect this to this and run this I
- 1:16:00should get text to video boundary if I
- 1:16:03enable image to video I will get image
- 1:16:06to video boundary. Okay, I can delete
- 1:16:08this. And that's it. Let's create a
- 1:16:10group called the triple K sampler. Put
- 1:16:13it here like this. Maybe we can put them
- 1:16:16like this. And of course, we need a
- 1:16:18latent set node. This is going to be my
- 1:16:21triple latent. And don't forget, we have
- 1:16:25a switcher here. I can get node triple
- 1:16:28latent to input two. Now, what I can do,
- 1:16:32what color is this? Purple mutter. Best
- 1:16:34groups mutter match the colors. Oh, this
- 1:16:37is latent purple. That's why. Let's make
- 1:16:40this color pale blue. And let's create
- 1:16:43that again. Best groups mutter. Right
- 1:16:46click properties match colors purple.
- 1:16:50Okay. When you are dealing with lots of
- 1:16:52stuff, of course you are you are getting
- 1:16:54confused. These guys are going to be
- 1:16:56purple and purple. And now face mutter
- 1:17:00face groups mutter properties match
- 1:17:03color purple. Disable standards and
- 1:17:06bring this guy over here to our global
- 1:17:08settings. And maybe we can do like this.
- 1:17:12It makes more sense. Also, let's make a
- 1:17:15switch for this. What we can do? We can
- 1:17:18make a color for this. Let's do a save.
- 1:17:20So, let's make this color yellow.
- 1:17:23Yellow. Best groups mutter match the
- 1:17:26color yellow. Where is the other yellow
- 1:17:29one? Yes, this one. Let's Something
- 1:17:31weird happened. I cannot select my
- 1:17:33groups. I don't know why. I will
- 1:17:35refresh. I still cannot. Something weird
- 1:17:38is happening right now. Just a second.
- 1:17:41Okay, finally. Can I select I can select
- 1:17:43this but I cannot select this. It's very
- 1:17:45interesting. Okay, it's kind of a bug. I
- 1:17:48am not going to spend time on that. So
- 1:17:49maybe I can do a different color. Cyan I
- 1:17:52think I never used properties match
- 1:17:55colors. Yes. And I can take this to here
- 1:17:58and maybe these are going to be better
- 1:18:00next to the setting section that's here.
- 1:18:03So we have text to video enabled forcing
- 1:18:05Laura is enabled. Triple K sampler
- 1:18:07enabled VFI is enabled and 32bit is
- 1:18:11enabled. Let's see if 60 frame per
- 1:18:14second is disabled. And yes it is
- 1:18:16disabled. Postprocessing here. Let's
- 1:18:19give this a color of brown. Did I use
- 1:18:22brown anywhere? No. Fastest group
- 1:18:24bypasser. Properties. Match colors.
- 1:18:27Brown. These guys are brown. And now I
- 1:18:30cannot change them because of this
- 1:18:31stupid bug. Change the color to green.
- 1:18:35And we can bypass the entire
- 1:18:37post-processing if we want or not. Okay,
- 1:18:40let's do some optimization with size of
- 1:18:43these guys to make some room to make
- 1:18:46them look better. Okay, let's go to our
- 1:18:51triple K samper. Now, what we are going
- 1:18:54to do the settings is done. We just need
- 1:18:56to integrate it to here, of course. So,
- 1:18:58the good uh thing about these switches
- 1:19:01is we don't need to do anything because
- 1:19:03we already set that up. So because we
- 1:19:05have a switcher here as you guys can see
- 1:19:08when you disable the standard latent
- 1:19:10this guy is not going to give any input
- 1:19:13to input one and that's why the the
- 1:19:16variational autoenccoder decode is going
- 1:19:18to get the trip triple latent. I am
- 1:19:20going to run this and I will show you
- 1:19:22the results. I will stop the recording
- 1:19:24here then I will continue from because I
- 1:19:27am recording at the same time my GPU is
- 1:19:30literally dying and the video is getting
- 1:19:33chopped off. So let's go to look at the
- 1:19:35preview. Okay, again we are done. We
- 1:19:38have a very nice results again with a
- 1:19:40triple K sampler and you can try two
- 1:19:43samplers. If you don't like it, maybe
- 1:19:45you want to improve it and you can try
- 1:19:47triple K sampler. This is why I am
- 1:19:49building this tutorial. I am trying to
- 1:19:51give you all the options in one package.
- 1:19:54And yeah, I am generally very happy with
- 1:19:57the result. And let's jump to our third
- 1:20:01sampler which is a custom sampler called
- 1:20:04clone shark sampler. So clone shark
- 1:20:08sampler it's a different sampler that's
- 1:20:11been created by rest for life I will say
- 1:20:14family and yeah it has a sampling called
- 1:20:17bongmat in it. You can read the all the
- 1:20:20details inside this GitHub page. So,
- 1:20:24bongmat is a sampling method that keeps
- 1:20:27the denoising process consistent by
- 1:20:31continuously aligning earlier latent
- 1:20:34states with later noise predictions. So
- 1:20:38instead of denoising in a single forward
- 1:20:40direction, it applies small backward
- 1:20:43corrections each step. So this early
- 1:20:46decisions what they say about structure
- 1:20:49and motion stay compatible with later
- 1:20:52refinement. So according to their claim
- 1:20:55this makes the generation more stable,
- 1:20:57more current and higher quality
- 1:21:00especially uh with low step counts and
- 1:21:03uh video models like 12.2. So I read
- 1:21:07some good feedback about this sampler.
- 1:21:11So I just wanted to give you the options
- 1:21:14to also play with it. So let's jump to
- 1:21:17our workflow. So we are going to our
- 1:21:20samplers area. Okay. What we want to do
- 1:21:23is clone sharp key sampler. This guy.
- 1:21:27This is our sampler. Of course we want
- 1:21:29two. And I will make them like this. So
- 1:21:32the output again just like two samplers
- 1:21:35is going to be my latent image for my
- 1:21:37second sampler like this. And this guy
- 1:21:40needs our lightning kai which is this
- 1:21:44guy positive and negative. We want our
- 1:21:47latent to latent image model positive
- 1:21:50negative latent image. We are not doing
- 1:21:52anything for the sigas and guides and
- 1:21:54options. We set this to zero. This is
- 1:21:57also zero. For this sampler they suggest
- 1:22:00to use multi-step rest_2m
- 1:22:04sampler name. We will use simpleuler.
- 1:22:07Okay. We need steps. So we are going to
- 1:22:09get our steps. Where is my get step
- 1:22:12switcher? Get cfg switcher. Okay, let's
- 1:22:15put them here. Enable them because they
- 1:22:18were in a disabled bypassed group. So I
- 1:22:21just click control B to reenable them.
- 1:22:23So this step switcher is going to steps
- 1:22:26of course. CFG will go to oops to CFG
- 1:22:29switcher. So this steps to run is our
- 1:22:32last high step. So I can get it from
- 1:22:35here. There's a typo here, but okay.
- 1:22:38Okay, no problem. So this will go to
- 1:22:40steps to run. I can put this here. But
- 1:22:42we need a seed, of course. Let's
- 1:22:44duplicate this to seed. We want to set
- 1:22:48this control after generate to fixed
- 1:22:51sampler no sampler mode to standard. And
- 1:22:54of course the most important part is the
- 1:22:56bong mat is set to true. Dino is at one.
- 1:22:58We are not changing it. We need the
- 1:23:01light low for our second one. And then
- 1:23:04positive to positive, negative to
- 1:23:06negative. Latent is already coming from
- 1:23:09here. Steps to step switcher and CFG to
- 1:23:13CFG switcher. And this steps to run we
- 1:23:16are not connecting our last high step.
- 1:23:18We are uh keeping it at minus one. And
- 1:23:21of course the seeds they also recommend
- 1:23:25minus one a random value. And we want
- 1:23:27fixed sampler mode. In this second one,
- 1:23:30they suggest to use reample and set the
- 1:23:33true. And this output is going to define
- 1:23:36our clone shark latent. And let's go to
- 1:23:40our latent section. Let's bring it here.
- 1:23:43Get node clone shark latent to input
- 1:23:46tree. Let's make a group. Clone shark. I
- 1:23:49think K is capital sampler like this.
- 1:23:52And if I give this the same color like
- 1:23:55the other samplers, I should be good to
- 1:23:57go. Let's put this here. Don't forget
- 1:24:00when you duplicate stuff to from a
- 1:24:03bypass group to reenable them. Ctrl + V.
- 1:24:05Ctrl + V. So, CtrlB after bypass is
- 1:24:08mute. Then another Ctrl B is enabled.
- 1:24:11Let me see. Yeah, everything is enabled,
- 1:24:13right? Okay. Model to model positive,
- 1:24:16negative, latent. Cool. Multistep press
- 1:24:182 M. Simple one fix standard true.
- 1:24:22Bongmat is set. Bong Mat is set. My low
- 1:24:26model positive negative latent image
- 1:24:28coming from the first node is are zero
- 1:24:30rest to m simple steps to run minus one
- 1:24:33the noise is one seed is minus one it's
- 1:24:36a fixed value and this time the second
- 1:24:38node is using sampler mode as reample so
- 1:24:41if I go here now I should have it like
- 1:24:44this and let's go here again did I
- 1:24:47connect cfg cfg is connected yeah it is
- 1:24:50ready so when you set your things with
- 1:24:53switchers that's That's it. You you just
- 1:24:56you just need to add some modules to it
- 1:24:59and it will just work in the entire
- 1:25:02workflow. That's the beauty of using
- 1:25:04bypass. So let's do a Ctrl S and I am
- 1:25:08going to run this and I will show you
- 1:25:09guys the result. Okay, the result is
- 1:25:12here and it's good. I like it. I just
- 1:25:16don't understand why she is she's making
- 1:25:19this. But it is all about prompting and
- 1:25:23changing the prompt. Of course I told
- 1:25:25you in the beginning different samplers
- 1:25:27are going to give you completely
- 1:25:28different results but I am looking at
- 1:25:31the general picture the quality the the
- 1:25:34details plus I am also giving some
- 1:25:37sharpen to this. So for example for my
- 1:25:40taste this is a little bit too much
- 1:25:41sharp but it is coming from this. I can
- 1:25:43just disable this. But yeah, I am I am
- 1:25:46really happy with the uh these three
- 1:25:48results from the standard one and the
- 1:25:52triple K sampler, the clone shark
- 1:25:55sampler. They are all giving me very
- 1:25:57nice results and I hope they will also
- 1:26:00give you nice results and remember we
- 1:26:02are using lightning loras with only four
- 1:26:05steps. So in my opinion this is pretty
- 1:26:08good. Now we cannot finish this workflow
- 1:26:11without how to generate a long video
- 1:26:15right so we are lucky because if I made
- 1:26:18this video a month ago that wasn't
- 1:26:21available I am sorry for that so we have
- 1:26:24something called SVI
- 1:26:27so we have stable video infinity it's a
- 1:26:30a new way of uh creating longer videos
- 1:26:33with 12.2 two before the people used to
- 1:26:36do getting the last frame of a
- 1:26:38generation and start a new generation
- 1:26:40from the last frame. In my opinion, it
- 1:26:42was very bad because you don't have the
- 1:26:45previous motion that you have and then
- 1:26:47you get this like weird results like
- 1:26:49inconsistent motion in between that
- 1:26:52frame. It was obvious with all of the
- 1:26:55examples I tried and it is normal to
- 1:26:58have that problem of course, but this
- 1:27:00this one vi did I save it here?
- 1:27:05Let's see. Yeah, here stable video
- 1:27:07infinity. So, stable video infinity is
- 1:27:10able to generate any length videos with
- 1:27:12high temporal consistency, plausible
- 1:27:15scene transitions and controllable
- 1:27:17streaming story lines in any domains.
- 1:27:19This repository contains the model
- 1:27:21weights blah blah blah. So this is doing
- 1:27:23something very nice for this in between
- 1:27:27frames that you don't see that weird
- 1:27:30results that you literally get every
- 1:27:32time with stitching method. So we are
- 1:27:35going to look at this and I am I tried
- 1:27:37this before and I am really liking this
- 1:27:40and we are going to implement this into
- 1:27:43our workflow and we are going to call it
- 1:27:45out and I think this is going to be a
- 1:27:48really nice all-in-one workflow. I hope
- 1:27:50you guys also will like it. So, let's
- 1:27:53jump into stable video infinity. Okay,
- 1:27:56let's continue with our long video
- 1:27:58generation. We are going to use stable
- 1:28:00video infinity. But before that, I just
- 1:28:03realized in the last video we didn't
- 1:28:05create like a image to video. We did
- 1:28:07like a text to video with three
- 1:28:09different sampler. But just want to show
- 1:28:11you guys because it we already set that
- 1:28:14up. I put like an image and everything
- 1:28:16is working just perfectly. So we just
- 1:28:19created a image to video from our
- 1:28:22workflow. So just keep that in mind. And
- 1:28:25now we are going to have some fun. We
- 1:28:29are going to use SVI. So we are going to
- 1:28:32use a different loras for SVI because
- 1:28:35SVI is also a Lora. Everything is under
- 1:28:38my Arctic latent 12.2 files and
- 1:28:42versions. Lora section you can find the
- 1:28:44high and low ones. But if you are using
- 1:28:46Arctic downloader of course these are
- 1:28:49already downloaded for you automatically
- 1:28:52and they've been uploaded to the their
- 1:28:54own folders inside the comi loras folder
- 1:28:58section. We are going to use subg
- 1:29:00graphs. Subgraphs is a new feature in
- 1:29:03CompuI and I didn't want to use it in
- 1:29:08this entire workflow because I like my
- 1:29:12first videos to be like as much as like
- 1:29:15educational. I think I can say if I can
- 1:29:18start doing like subgraphs in my opinion
- 1:29:21people who are new to 12.2 2 or compy
- 1:29:25you are going to get lost because it is
- 1:29:27a way of optimizing your graph for sure
- 1:29:30but it is also going to make you think
- 1:29:32like what's what's happening here so
- 1:29:35that's why this workflow right now as of
- 1:29:37now everything is open we use set and
- 1:29:40get nodes which we will continue to
- 1:29:42continue continue to use but for the
- 1:29:44long video generation now it is a good
- 1:29:47time to start using subg graph because
- 1:29:49what I want to do for long video
- 1:29:52generation we are going to create
- 1:29:545-second clip multiple times. So for
- 1:29:57example I am going to have a module for
- 1:30:00my first initial 5 seconds another one
- 1:30:03for the other 5 seconds 5 second 5
- 1:30:06second these all modules needs their own
- 1:30:08text prompts their own one to SVI node
- 1:30:13we to put them without subgraph like in
- 1:30:16here we are going to have like a crazy
- 1:30:19lots of nodes. So this is where
- 1:30:21subgraphs can be super handy because we
- 1:30:24are going to create a subgraph then we
- 1:30:26will duplicate that subgraph for our
- 1:30:28additional clips. You will see and
- 1:30:30understand better when I am doing it. We
- 1:30:32can just start with like a text prompt.
- 1:30:35Okay. I just need a node to create an
- 1:30:38enter into my sagraph. So if I create
- 1:30:40like a clip text encode prompt this guy
- 1:30:43if you click it and if you click this
- 1:30:45guy it will convert the selection to sub
- 1:30:47graph. As you can see this is not now a
- 1:30:49subgraph. Every subgraph is going to
- 1:30:51have this like blue icon next to them
- 1:30:54and I will call this initial and if now
- 1:30:57what is subgraph? Subgraph is like
- 1:31:00another node graph that that is inside
- 1:31:02this. So it is like a nested uh
- 1:31:06subgraph. So if you want to enter inside
- 1:31:08this you can click this. As you can see
- 1:31:11when you enter this you will see initial
- 1:31:13and your main root workflow. You can
- 1:31:16switch between them like this. You can
- 1:31:18also double click to this to enter. Now
- 1:31:21what is new to you if you never use
- 1:31:24this? You are going to see this thing on
- 1:31:27the right and on the left and you can
- 1:31:29click on it to move wherever you want.
- 1:31:31Okay. So this is input and this is
- 1:31:35output that we are exposing to the
- 1:31:38outside to the root level. Now you are
- 1:31:40going to understand much better when we
- 1:31:42are doing it. So in our initial clip
- 1:31:46generation we are going to let's see
- 1:31:48what we need. We need a clips prompt
- 1:31:50like this of course and this is going to
- 1:31:54be actually let's let's do it like this.
- 1:31:56Let's create a key sampler advanced node
- 1:32:00and let's turn this into a subgraph.
- 1:32:02Okay. And let's call this initial. Okay.
- 1:32:05Let's go inside. And now we have a key
- 1:32:08sampler. For this workflow, I am going
- 1:32:10to use three samplers. But I am not
- 1:32:12going to use triple uh K sampler because
- 1:32:14triple K sampler has a higher step for
- 1:32:17base noising. In this one, I want to use
- 1:32:21lesser steps for my first step. Why I am
- 1:32:25doing this? Because we are still going
- 1:32:26to use light 2x luras. But like I said
- 1:32:29in the beginning of the video, light 2x
- 1:32:31videos are limiting 12.2. And for a long
- 1:32:35video generation like this in my opinion
- 1:32:38from my test they are not doing very
- 1:32:40great. What I am going to do I am going
- 1:32:42to create a sampler for the with higher
- 1:32:46steps and that's going to be our overall
- 1:32:49structure a key sampler uh to generate
- 1:32:52like a nice structure of our first image
- 1:32:55which have like which is going to have
- 1:32:57like a good details sharp details stuff
- 1:33:00like that. Then we are going to use a
- 1:33:02light light 2x high sampler. Then that
- 1:33:06is going to connect to a low light 2x
- 1:33:09sampler. So the second one uh is going
- 1:33:13to define more details and like we
- 1:33:16discussed in previous video. The low one
- 1:33:19is going to be a refiner for small
- 1:33:22details. Uh in my opinion three sample
- 1:33:25is working better in this case. But you
- 1:33:28can always bypass the first sampler. I
- 1:33:30mean you guys I think already understand
- 1:33:32how bypassing is working. So let's start
- 1:33:36building our stuff. We are going to use
- 1:33:38this in a second. So we are going to
- 1:33:40need a clipped X prompt. Okay, this is
- 1:33:42going to be my positive. I will
- 1:33:44duplicate this. This is going to be my
- 1:33:46negative. Let's make some room. Now this
- 1:33:49node is new. One image to SVI. One image
- 1:33:52to video SVI pro. Okay, I was wrong.
- 1:33:55This is not a native. It was from KJ
- 1:33:58nodes which we already installed. I
- 1:34:00think it is like one of the best nodes.
- 1:34:01And so of course positive to positive
- 1:34:04and negative to negative and positive to
- 1:34:08positive, negative to negative, latent
- 1:34:10to latent. Okay, I can just paste some
- 1:34:14negative prompt here like this.
- 1:34:16Overexposure static blur details blah
- 1:34:18blah. And now this is very important.
- 1:34:22This workflow is working with the the
- 1:34:25the brain of this node is this anchor
- 1:34:28samples. Okay. So we are like chaining
- 1:34:31multiple latent images together and the
- 1:34:36way this model is trained this Laura it
- 1:34:38is making that nice smooth linear blends
- 1:34:41in between frames. So we don't get like
- 1:34:44weird results where we used to have with
- 1:34:46like manual stitching. So what I am
- 1:34:48going to do I am going to create another
- 1:34:50one sampler another one this is going to
- 1:34:53be my base this is going to be my high
- 1:34:56light 2x and this is going to be my low
- 1:35:00light 2x latent to latent latent to
- 1:35:04latent we change them positive oops
- 1:35:07positive to positive negative to
- 1:35:09negative okay positive to positive
- 1:35:11negative to negative okay what else we
- 1:35:14need of course we need a variational
- 1:35:16ational decoder we are creating an image
- 1:35:19this variational decoder will get the
- 1:35:21samples from this latent image and now I
- 1:35:24want an output from this if you connect
- 1:35:27this to this it is going to give you
- 1:35:29whatever the name of this what is nice
- 1:35:31about subgraphs you can rename those
- 1:35:33okay but for now let's remove this
- 1:35:36because I want there is something that I
- 1:35:38don't like about subgraph I think they
- 1:35:39will introduce it and now you are going
- 1:35:41to see you cannot change the order of
- 1:35:43this which is not a big deal but I I
- 1:35:45want to have a have a order. So let's
- 1:35:49start by setting our samplers like the
- 1:35:52most important part. So for the base
- 1:35:54which is going to be seven steps. Okay,
- 1:35:57we want randomize. Okay, of course we
- 1:36:00want to add noise and in the second one
- 1:36:03we don't want because these are going to
- 1:36:05be refiners. We are removing to add uh
- 1:36:08noise option. Noise seed is going to be
- 1:36:11zero for the last one. But for the
- 1:36:13second one we are going to use our
- 1:36:15seats. So CFG for the first one is going
- 1:36:18to be 3.5 or four I I will use four
- 1:36:22lights these are remember lights 2x laas
- 1:36:26so they have to be cfg1 a simple aer
- 1:36:30simple aer simple is fine return with
- 1:36:32leftover noise very important of course
- 1:36:34we want to return the leftover noise to
- 1:36:38this guy and from this guy to this guy
- 1:36:40so this is also going to be enabled for
- 1:36:43the self-forcing loras
- 1:36:45recommended for SVI is like three steps.
- 1:36:48So what I'm going to do, this is by the
- 1:36:50way going to be one step only. Okay. So
- 1:36:53I will do start at step zero and it will
- 1:36:56end at one. So we will only create
- 1:36:59something at one step. And then for this
- 1:37:01one we will of course start with one and
- 1:37:03then we will end at four. And for this
- 1:37:06one we will start with four of course.
- 1:37:09Okay, we are following it and we will
- 1:37:11end at seven and control after generates
- 1:37:13for these two I will make them fixed and
- 1:37:16of course very important steps I will
- 1:37:18keep them as seven okay so 0 to 1 1 to 4
- 1:37:224 to 7 return leftover noise enabled
- 1:37:25enabled disabled on this we are adding
- 1:37:27noise in our first pass in our second
- 1:37:30pass we are not adding uh noise in our
- 1:37:33third pass we are also not adding noise
- 1:37:35okay I I keep like double-checking it
- 1:37:38Because a small mistake which I did when
- 1:37:41I was preparing the video just like
- 1:37:43something small I forgot now what was it
- 1:37:45I think it was about my base model I
- 1:37:47spent like 2 hours to understand where
- 1:37:49is the problem then I was okay then I I
- 1:37:51I understood that I was not adding the
- 1:37:54Laura so yeah so that's why always
- 1:37:57double check that you are doing the
- 1:37:59right thing now you are doing something
- 1:38:01you are going to say okay you created
- 1:38:03those and you have lots of like get
- 1:38:06nodes set nodes we created to define our
- 1:38:08model stuff like that but this is a
- 1:38:10subgraph if you set if you try to I wish
- 1:38:13they will add this feature in the future
- 1:38:15but get node is not going to work in
- 1:38:17subg graph okay so it's I don't know it
- 1:38:20just doesn't understand the root level I
- 1:38:22think but no problem the beauty of this
- 1:38:26sub graph this is my input now what I'm
- 1:38:28going to do I am going to go from my
- 1:38:30model okay to this okay and I will call
- 1:38:32this base I and from this one model I
- 1:38:37will go here I will call light high and
- 1:38:41from this one light low from this one I
- 1:38:44will keep okay let's do capital
- 1:38:47variation autoenccoder we need clip for
- 1:38:49these prompts of course clip and clip to
- 1:38:52same what I was trying to say about
- 1:38:54order I wish there was a way of
- 1:38:57reordering this but there is no way
- 1:38:59right now you can right click disconnect
- 1:39:01the link if you disconnect the link it
- 1:39:03will keep the input but disconnect and
- 1:39:06you can remove the slot So it will
- 1:39:08remove it. Okay. So what else we need?
- 1:39:11We need where is my we need length. This
- 1:39:14is the way the model works. This motion
- 1:39:17latent count for the initial should be
- 1:39:19set to zero. Okay. Very important. So
- 1:39:22length. What else I need for this
- 1:39:24workflow? I I don't want to expose these
- 1:39:27some of these to root level. For
- 1:39:29example, I can expose step, cfg, start
- 1:39:33step, end step and I can do like set and
- 1:39:35get nodes in the root level and connect
- 1:39:38to those and change from the root level.
- 1:39:41But in my opinion, we can keep it is as
- 1:39:43it is because in the in the root level,
- 1:39:46I don't want to connect too much stuff.
- 1:39:48I want to keep this as much as simple
- 1:39:50for you guys to understand better. So
- 1:39:52what else we need? Okay, like I said,
- 1:39:54most important thing anchor samples.
- 1:39:56Okay, and previous samples. Okay. Base
- 1:39:59high, light, high, light, low,
- 1:40:00variation, autoenccoder, clips, length,
- 1:40:03anchors, sample. Where is my seat? Yeah,
- 1:40:06noise seats. This is very important. We
- 1:40:08will connect it to like this. And of
- 1:40:10course for the I1 also we need this one.
- 1:40:13We can do a save. Now what I want I want
- 1:40:16from this to this. Oops. And I want to
- 1:40:19call this samples from. So what's
- 1:40:22happening here? I am for I am I am
- 1:40:25getting an output with this with the
- 1:40:27latent itself. So it is still encoded
- 1:40:30but for the second option I am getting
- 1:40:32the decoded option decoded version of
- 1:40:35the latent that's why I will call it
- 1:40:37decoded images. Okay one is not decoded
- 1:40:41one is decoded and we are done. So now
- 1:40:43if I go outside here it is you are going
- 1:40:46to see we have an input for bass high
- 1:40:50light high light low variation
- 1:40:52autoenccoder clip anchor samples preview
- 1:40:55samples and it is outputting samples
- 1:40:57decoded images and it has a noise seat
- 1:41:00in here and a length. So now what is
- 1:41:04important I want to be able to write my
- 1:41:07prompt outside because I don't want to
- 1:41:10go inside this to write my positive
- 1:41:12prompt very easy right click go to where
- 1:41:15are you edit subgraph widgets okay these
- 1:41:18are the widgets that's not that's
- 1:41:20available for you to expose outside if
- 1:41:23you find clip text prompt oh let's make
- 1:41:26it like this clip text encode positive
- 1:41:30just to make it more easy for has to
- 1:41:33understand what which widget we are
- 1:41:35choosing. Now if I go outside, right
- 1:41:37click, edit subgraph widgets. Where are
- 1:41:39you my friend? This one clip text encode
- 1:41:42positive. Click on the eye icon. And now
- 1:41:45this is this is this is the section we
- 1:41:47can put our prompt. Okay, let's go to
- 1:41:50these are going to be in this section.
- 1:41:52Now we want something we want to create
- 1:41:55our Lora section. Let's make some room
- 1:41:58here. There is a very strange bug. I
- 1:42:00cannot move this group. I don't know
- 1:42:02why. Anyway, I will make some room here.
- 1:42:05How the loras are working? Chaining.
- 1:42:08Okay, we are going to chain SVI. So, for
- 1:42:10example, what I'm going to do, I am
- 1:42:12going to alt leftclick duplicate this.
- 1:42:15Alt leftclick duplicate this. And this
- 1:42:17is going to be my SVI2
- 1:42:20pro high. And this is going to be my
- 1:42:23SVI2 Pro low. Now, we need to change the
- 1:42:27order. So, this will connect to this.
- 1:42:30This will connect to this. And now this
- 1:42:33will connect it to the model and this
- 1:42:35will connect it to the model like this.
- 1:42:37Okay. By the way, don't forget when you
- 1:42:39are in our workflow when you are
- 1:42:41switching between text to image and
- 1:42:43image to video, change your light X
- 1:42:46loras to image to video or text to
- 1:42:49video. For this one, I am going to
- 1:42:51choose SVI pro image to video high. And
- 1:42:54for this one, SVI pro lower rank. Okay.
- 1:42:58Strength one is recommended. That's it.
- 1:43:01be connected. We need one more thing
- 1:43:03because we are using three samplers. We
- 1:43:06need a base high model without light x2
- 1:43:11loras. I just want to use the 1 2.2
- 1:43:15model itself. But of course, I still
- 1:43:18need the SVI for it. So remember, we did
- 1:43:21something like this. What I'm going to
- 1:43:23do, I also want my model shift. So what
- 1:43:26I can do, I can duplicate this guy,
- 1:43:28which is the image image to video high.
- 1:43:30We we want the high one. So I will
- 1:43:31duplicate this to here like this.
- 1:43:34Connect to this like this. And set node.
- 1:43:37And I will call this SVI base high. And
- 1:43:41connect to this. Okay. Let's double
- 1:43:43check. Image to video high noise. Image
- 1:43:45to video high noise. Image to video low
- 1:43:48noise. Image to video lowa. Okay. Ctrl S
- 1:43:52to save. Let's go to here. Before going
- 1:43:54that, this is this is still an image to
- 1:43:57video Laura. We we don't need to create
- 1:43:59a a separate load lura section. We can
- 1:44:02just use this one because we are setting
- 1:44:04our image in here which we already have
- 1:44:06the set image node. So what I want we
- 1:44:09cannot use this sampler uh this latent
- 1:44:12group here because this latent group is
- 1:44:14for our multiple samples that we we are
- 1:44:18using with standard latent triple triple
- 1:44:20latent clone shark etc. For this one, I
- 1:44:23want a a different latent. Very easy. I
- 1:44:26can do get node and image. I will get my
- 1:44:29image. And what would be nice uh
- 1:44:33actually we can do like a resize image.
- 1:44:35Okay, it will be a nice feature. If you
- 1:44:37want to resize the image that you are
- 1:44:39putting, maybe you find an image from
- 1:44:41internet or something like that, you can
- 1:44:43resize quickly. This is going to be like
- 1:44:46upscale method of lancos because it is
- 1:44:48the best one. So for example I can do
- 1:44:51like 832 to 480. This is like 480p. What
- 1:44:56is it called? Resolution. Keep
- 1:44:58proportion. I don't want to stretch. I
- 1:45:00want to crop. Center two is fine. And
- 1:45:03now what we are going to do, we are
- 1:45:05going to get nodes. Variation
- 1:45:07autoenccoders. Variation autoenccoder.
- 1:45:10Remember this is an image. We need to
- 1:45:12turn this into a latent form. Set node.
- 1:45:15And I can call this anchor samples. Ctrl
- 1:45:19S to save. Let's go here. Now let's plug
- 1:45:21our stuff. How many get nodes I I need?
- 1:45:241 2 3 4 5 6 7 1 2 3 4 5 6 7. This is
- 1:45:31going to be my SVI bass high. Connect.
- 1:45:34This is going to be my light high.
- 1:45:36Connect. This is going to be my light
- 1:45:38low. Connect. This is going to be my
- 1:45:40variation low encoder. My clip encoder.
- 1:45:43My anchor samples. We are not connecting
- 1:45:45anything to previous samples because now
- 1:45:47you are going to understand that
- 1:45:49previous samples is for the second clip.
- 1:45:51For the second clip, we want to get
- 1:45:53previous samples as an input to create
- 1:45:56our long video. So, oh, actually I need
- 1:45:59two more. This is going to be my seed
- 1:46:01and this is going to be my length.
- 1:46:04Collapse. Collapse. Let's collapse
- 1:46:06everything. Let's tidy this space. Let's
- 1:46:09double check we connected everything
- 1:46:10right. This is our SVI base height
- 1:46:13correct. Light high correct. Light low
- 1:46:15correct. Veration encoder correct. Get
- 1:46:17clip connect. Anchor samples is connect.
- 1:46:19pre previous samples is empty. It is
- 1:46:22going to be used in the second clip.
- 1:46:23Length is connected to the length and
- 1:46:26text is empty and seed is connected to
- 1:46:29the noise seat. Now this is it. The
- 1:46:31setup is already there. Just I want to
- 1:46:33double check something. Let's go inside.
- 1:46:35I am just trying to see if I am missing
- 1:46:37anything. Positive connected negative
- 1:46:39anchor. Okay. Previous samples. Okay. So
- 1:46:43for example for this pre for for the
- 1:46:45initial one I don't need this connected.
- 1:46:47This can give me a problem because we
- 1:46:50don't have a initial previous sample for
- 1:46:52this guy to work. So it needs to be
- 1:46:54empty. What I can do but I still want
- 1:46:57that input because I'm going to
- 1:46:58duplicate that this subgraph. So rather
- 1:47:01than removing it, you can just dis
- 1:47:03disconnect link. Now it is empty and
- 1:47:05this guy is empty as you can see. Latent
- 1:47:08image connected. Everything is
- 1:47:09connected. Noise seats. Everything is
- 1:47:12connected. Everything is connected.
- 1:47:14Samples decode image. Perfect. Now it is
- 1:47:17very easy. Let's say now you are you
- 1:47:20want to create your extension clips. Alt
- 1:47:23left click duplicates and let's call
- 1:47:25this extension one. I will make it like
- 1:47:27this. I can literally connect it like
- 1:47:29this but I prefer not to. I will do like
- 1:47:32this because like I said I don't like
- 1:47:35these noodles going all over. I I hate
- 1:47:38that. Light high light low variation
- 1:47:41autoenccoder clip anchor samples length
- 1:47:44seed. Oops. Now most important parts how
- 1:47:48this works like what how these two
- 1:47:51getting connected. So it is super easy
- 1:47:54this previous samples needs the previous
- 1:47:57samples.
- 1:47:58So this needs to this needs to connected
- 1:48:02to this like this. Okay. But for the
- 1:48:05extension okay so this is the unique
- 1:48:08one. For the extensions they are all
- 1:48:10going to be same. So for the extension
- 1:48:13we need one more thing. So I will go
- 1:48:15inside extension one like this. Now I
- 1:48:18can connect this previous samples to
- 1:48:20this so it can work. I will go here.
- 1:48:22This is the most important part of this
- 1:48:25workflow. We have a node called image
- 1:48:28batch extend with overlap. Again it is
- 1:48:31from the KJ nodes. So this extended
- 1:48:34images are the ne images that we need to
- 1:48:37use every time we are adding a clip. So
- 1:48:40I will connect this to to here. it will
- 1:48:42get the name extended clip and for the
- 1:48:44extension I can still use the coded
- 1:48:48images let's remove this I don't need
- 1:48:50this in here so I need samples and
- 1:48:53extended images and latent is connected
- 1:48:56to the latent and now this is a new
- 1:48:58generation right so what we need to do
- 1:49:01this variational we are creating
- 1:49:02something new and it is of course going
- 1:49:05to connect it to the ne what is very
- 1:49:07important source images it needs to get
- 1:49:10the previous image
- 1:49:12and blend them together with new images.
- 1:49:15So they recommend this value overlap
- 1:49:18five and everything can be stay exactly
- 1:49:20like same. What we are going to do we
- 1:49:22need to expose this source images like
- 1:49:25this and just to make more sense I can
- 1:49:28double click and re rename this as
- 1:49:31previous images. Very important
- 1:49:33recommended value for this for the
- 1:49:35extension clips motion latent count is
- 1:49:37one. Okay. And everything here is same
- 1:49:40of course. Now we will go here. As you
- 1:49:43can see now we we have pre previous
- 1:49:45images which is going to be connected to
- 1:49:48decoded images. Okay. Okay. Let's see
- 1:49:51now everything is connected as far as I
- 1:49:56see. Let's make some room. So we see
- 1:49:58much better. Okay. The only thing that
- 1:50:01we really need to do in this case is
- 1:50:04duplicating this. I want to create 5 10
- 1:50:0715. Okay. 15 seconds of video. Okay.
- 1:50:10That's great. It is up to you. You can
- 1:50:12increase that. For the sake of tutorial,
- 1:50:14let's go with 15. I can do extension
- 1:50:16two. Let's connect. Oops, I duplicated
- 1:50:19extra. Let's remove this. Previous
- 1:50:22samples to samples. Previous images to
- 1:50:24extended images. There is a this is
- 1:50:26done. There is a known issue with some
- 1:50:29of the generations. This is a very n
- 1:50:32also Laura. There is a slow motion
- 1:50:34problem especially if you go lower
- 1:50:36resolution, lower size. Keep that in
- 1:50:39mind. you can get like some slow motion
- 1:50:41effects and you need to change your
- 1:50:44prompt according to that you can add
- 1:50:46like 24 fps to your positive prompt etc
- 1:50:50etc but now this is going to be my
- 1:50:55rendered so final image so I will set a
- 1:50:58node and I will call this SVI video okay
- 1:51:02what I want to do also a nice little
- 1:51:05feature I can add a preview for my each
- 1:51:08clip video combined Let's make this 16
- 1:51:11because we are doing the native FPS
- 1:51:15here. 12 point let's say one two and H
- 1:51:19264 MP4 this guy. This is fine. This is
- 1:51:23a preview. I don't need higher number
- 1:51:26for CRF. It is an it is the encode
- 1:51:29encode level. I can turn this off and I
- 1:51:31want I don't want to save this. So this
- 1:51:34can connect it to decoded images. Okay.
- 1:51:36preview initial and
- 1:51:42I can duplicate this. Make some room
- 1:51:44here. I can also preview extension one.
- 1:51:48Let's save. Group them. SV2 pro long
- 1:51:52video gen. Okay, this is it. You need to
- 1:51:55duplicate the extensions and chain them
- 1:51:57together like this. Now we can go to our
- 1:52:01interpolation section. What we can do
- 1:52:04here? This is the previous generations
- 1:52:06image to video text to video as you
- 1:52:08remember we are getting the final image
- 1:52:10from them from this latent section as
- 1:52:12you remember but now we have new images
- 1:52:15from SVI technique. So I can do get node
- 1:52:18SVI did I call it SVI video? Yes. I am
- 1:52:22wondering if the switch is going to work
- 1:52:24between these two images. If I connect
- 1:52:27this to input 01 to input 02 to image
- 1:52:31this is a preview without postprocess.
- 1:52:34The only problem right now that can
- 1:52:36happen I can get an error because of a
- 1:52:39empty latent that we here empty image
- 1:52:41that we set here. Okay, because this is
- 1:52:44now empty. Let's see where is it? Why
- 1:52:46this is huge? Ctrl S. If I run this,
- 1:52:49okay, I have a problem here. Where is my
- 1:52:53image? My image is here. Let's go inside
- 1:52:55this. Oh, there is no text. Let me open
- 1:52:58quickly my chat GPT. First prompt is a
- 1:53:01woman is sitting by a window in a cafe.
- 1:53:04A cafe holding a cup of coffee and
- 1:53:06looking down at it quietly. Second
- 1:53:08prompt. She brings the cup closer and
- 1:53:11takes a slow sip. Her expression calm
- 1:53:14and thoughtful. Third one. And the last
- 1:53:16one. She gently places the cup on the
- 1:53:18table in front of her. Blah blah. Let's
- 1:53:20run this. Okay, something is missing.
- 1:53:23Let's see what we have in our coded
- 1:53:25images. Oh, you see very important.
- 1:53:28Don't forget and do stuff like this. Let
- 1:53:30me double check this one connected.
- 1:53:33Okay, I think we are fine. Okay, our
- 1:53:35generation started and let's see what's
- 1:53:37going to happen. I will see you when
- 1:53:39this is done. This is a very basic
- 1:53:40prompt and still it is something but
- 1:53:42yeah, I will definitely improve the
- 1:53:45prompt. Prompt is very important in 12.2
- 1:53:48because 12.2 is super uh prompt uh
- 1:53:51sensitive. She brings the cup closer and
- 1:53:54takes a slow sip. Her expression calm
- 1:53:56and pull. Okay, she gently places the
- 1:53:59cup on the table in front. Anyway, let's
- 1:54:01let's look at the final after
- 1:54:02interpolation. And here are nice long
- 1:54:06video and the blend is super cool. Like
- 1:54:09I said, this is a very brand new Loa and
- 1:54:13in my opinion, light 2X Loras, I said
- 1:54:17this in the beginning of the video, they
- 1:54:19are I am not going to say killing, but
- 1:54:21they are limiting 12.2's actual row
- 1:54:24performance. So you can disable them and
- 1:54:28try and you will get so much more better
- 1:54:30results than this. But of course if you
- 1:54:33are on low VRAM you can continue using
- 1:54:36light 2x lotus and I am pretty sure
- 1:54:38there is going to be an update because I
- 1:54:40was reading on their GitHub about some
- 1:54:42issues. Yeah there is like some kind of
- 1:54:44like slow motion issue with some
- 1:54:46resolutions but uh every Lora is getting
- 1:54:50retrained getting fixes. So this entire
- 1:54:54workflow is going to be free on my
- 1:54:56Patreon which will be always the case
- 1:54:59for this YouTube channel and whenever
- 1:55:03there is an update on SVI or something
- 1:55:06that I find like maybe I can add like a
- 1:55:09lora something called pusa it's a
- 1:55:11different lora that is they are claiming
- 1:55:14to give like more dynamic motion I
- 1:55:16didn't try it we can introduce it so
- 1:55:18anyway you can join to my patreon for my
- 1:55:21free tier and you can always get my uh
- 1:55:25latest updates. When there is an update
- 1:55:26about this file, I will post them post
- 1:55:29all my workflows there. Yeah. So, we
- 1:55:32created an entire 12.2 all in one
- 1:55:36workflow. We created a text to video,
- 1:55:39image to video. We used standard to the
- 1:55:42K case K samplers. We we we introduced
- 1:55:46triple K sampler. We introduced a clone
- 1:55:49shark. What was the name? clone shark
- 1:55:51case sampler and we introduced
- 1:55:53interpolation, we introduced
- 1:55:55post-processing effects, we introduced
- 1:55:58SVI 2 Pro. Let's make this capital.
- 1:56:01Yeah, in my opinion, nice all-in-one
- 1:56:04workflow that we created. I hope you
- 1:56:07guys enjoyed it. And I know this is a
- 1:56:10long video, but my videos are going to
- 1:56:11be long and because the workflows are
- 1:56:14bit long, so I don't want to skip stuff.
- 1:56:18Sometimes I may be reintroducing some of
- 1:56:21the stuff I already introduced because
- 1:56:23there are so many like things cfg seed
- 1:56:27blah blah prompt n a so sometimes I
- 1:56:30forget and think like oh maybe I didn't
- 1:56:32talk about this before so if I am doing
- 1:56:34something like that if I if I am
- 1:56:36repeating myself sometimes I'm sorry for
- 1:56:38that and but in my future videos for
- 1:56:42example from now on I'm going to skip
- 1:56:44like what is a sample what is like steps
- 1:56:46what is like high Laura what is low
- 1:56:48Laura stuff like that I will only
- 1:56:50introduce something that brand new like
- 1:56:53in like a note we never use for example
- 1:56:56so please and please try to use this
- 1:56:59workflow by disabling self-forcing Lora
- 1:57:02section at least to see what is 12.2 2
- 1:57:05is capable of. I don't suggest going
- 1:57:08below Q8 GGF. In my opinion, going below
- 1:57:13that, you are limiting and killing too
- 1:57:16much features of 12.2. The lowest I
- 1:57:19would go is Q8. And what else I can say
- 1:57:23in this workflow? It is not done yet. I
- 1:57:25am going to add some nice info tables
- 1:57:28that you can read. What is what is what
- 1:57:31kind of length you can use etc. what is
- 1:57:33like a nice resolution. So I will put
- 1:57:35some like information text maybe in here
- 1:57:38and let's see this is using sage
- 1:57:42attention by default when you when you
- 1:57:44installed my confi installer remember we
- 1:57:48run the comi with confi starti-
- 1:57:52sage that means sage attention is
- 1:57:55applied overall in comi so if you guys
- 1:57:59are thinking about how why he is not
- 1:58:02using like this note patch sage
- 1:58:04attention attention. This is a node if
- 1:58:07you run your confi if you installed sage
- 1:58:10attention but if you didn't run the
- 1:58:13alias to enable confui so you can run a
- 1:58:17native confi after you install the sage
- 1:58:20attention as a python library then you
- 1:58:23can use this for workflow specific so if
- 1:58:26you want to improve this and do it for
- 1:58:28example like that it is very easy this
- 1:58:30is going to be connected to your models
- 1:58:33and that model is going to be connected
- 1:58:35to these inputs. Okay. So after every
- 1:58:38model text to video low high, image to
- 1:58:40video low high, patch stage attention,
- 1:58:43you need to enable and set this to uh
- 1:58:45stage attention auto. What else? Oh, we
- 1:58:49are using unit models if you want to. I
- 1:58:52was just talking about DGF. It is very
- 1:58:54easy rather than using this. I didn't
- 1:58:57want to create extra steps like uh
- 1:59:00switches stuff like that to I don't want
- 1:59:02to make it like more complicated. In my
- 1:59:04opinion, you should be already knowing
- 1:59:05it before my clips. It is super easy. I
- 1:59:08will show again. You can just load guf
- 1:59:11this guy you can use this or model
- 1:59:14loader. Oh, I think I don't have that
- 1:59:16node. If you have the KJ node nodes
- 1:59:19which we need for this workflow. So you
- 1:59:21can just use loader KJ for this one. You
- 1:59:24don't even for example need to define
- 1:59:26sage attention if you are using native
- 1:59:28confi it also has sage attention uh was
- 1:59:31it no sorry yeah it has you can use sage
- 1:59:34attention like this if you are not
- 1:59:36running the alias when starting so yeah
- 1:59:39you can I don't have any ggf models you
- 1:59:41you will select your ggf and that's it
- 1:59:44then you will plug it to like this so
- 1:59:48one for one for uh text to video high
- 1:59:50text to video low image to video high
- 1:59:53and image to video low and just bypass
- 1:59:56this. So these models are going to be
- 1:59:58connected to to wherever I connected
- 2:00:01these. That's it. And if you are using
- 2:00:04GGF also don't forget your clip load
- 2:00:07clip clip loader GGF then you need to
- 2:00:10use this guy and this guy will be
- 2:00:12connected to this. Okay, you will select
- 2:00:15your GGF version of the clip and don't
- 2:00:18forget very important select one and
- 2:00:20connect it to clip this and you have a
- 2:00:22GGF enabled workflow. My personal
- 2:00:24recommendation for creating videos for
- 2:00:27one 2.2 is uh image to video. In my
- 2:00:30opinion, text to video is like a a big
- 2:00:33lottery and you don't know what's you
- 2:00:36are waiting for something that you don't
- 2:00:38know. But in image to video at least you
- 2:00:41can go to for example my workflow flux
- 2:00:43workflow you can create like a very nice
- 2:00:45image in a so much more short time and
- 2:00:48you can say oh this is my this is my
- 2:00:51starting image in my opinion go to an
- 2:00:53image generation tool like flux for
- 2:00:56example and create your start frame as
- 2:00:59much as you want it to be then use image
- 2:01:03to video and image to video in my
- 2:01:04opinion also giving much more nice
- 2:01:07videos because you are starting with a
- 2:01:09much more like detail high resolution
- 2:01:11image to start with. Text to image in my
- 2:01:14opinion fun to play with but it is like
- 2:01:17too much unknowns for my taste. But
- 2:01:20yeah, this workflow has all of it. Okay,
- 2:01:23let's go to the end of our video. Thank
- 2:01:26you so much for watching and for
- 2:01:27spending your time with me today. If you
- 2:01:29have any questions or if something
- 2:01:31wasn't clear, feel free to leave a
- 2:01:33comment below. I read them all and I'm
- 2:01:35happy to help. In the next video, I will
- 2:01:37be diving into 3D model generation
- 2:01:39inside CompuI. This one is especially
- 2:01:41exciting for me since I am coming from a
- 2:01:44VFX background as a 3D modeling and
- 2:01:46texturing artist. We will take a look at
- 2:01:48what the current options actually look
- 2:01:50like right now and what is realistically
- 2:01:52usable. If you enjoyed the video, don't
- 2:01:55forget to like and subscribe. It really
- 2:01:57helps the channel grow. You can also
- 2:01:59join my free Patreon tier to grab the
- 2:02:01workflows I share there. And if you'd
- 2:02:03like to support future videos and more
- 2:02:05advanced work roles, I also have a
- 2:02:07supporter tier available.
About this transcript
This page contains the full transcript of Master WAN 2.2 in ComfyUI – Complete Video Generation Workflow by Arctic Latent, generated from the public captions YouTube serves with the video. The transcript has 20,086 words across 2,667 segments, with the original timestamps preserved so you can click any line to jump to that moment in the embedded player.
What you can do with it
Use the transcript to take notes, quote the speaker, build a study guide, generate a summary with ChatGPT or Claude via the YouTube Summary tool, or export it as a timed subtitle file with YouTube to SRT. You can also re-open it in the transcriber to choose a caption track available on the video.
Free YouTube transcript tool
YouTube2Text is a free YouTube transcript generator — no signup, no daily limit. Paste any YouTube link and get the full transcript instantly, with timestamps, click-to-jump, caption language selection, AI prompts for ChatGPT, Claude, and Gemini, and exports to TXT, SRT, VTT, or Markdown.