Diffusion Models | PyTorch Implementation

  Рет қаралды 90,497

Outlier

Outlier

Күн бұрын

Пікірлер: 182
@outliier
@outliier 2 жыл бұрын
Link to the code: github.com/dome272/Diffusion-Models-pytorch
@bao-dai
@bao-dai 2 жыл бұрын
21:56 The way you starred your own repo makes my day bro 🤣🤣 really appreciate your work, just keep going!!
@outliier
@outliier 2 жыл бұрын
@@bao-dai xd
@leif1075
@leif1075 Жыл бұрын
@@outliier Thanks for sharing but how do you not get bored or tired of doing the same thing for so long and deal with all the math?
@outliier
@outliier Жыл бұрын
@@leif1075 I love to do it. I don’t get bored
@ananpinya835
@ananpinya835 Жыл бұрын
After I saw your next video "Cross Attention | method and math explained", I would like to see ControlNet's openpose in PyTorch Implementation which control posing on image of a dogs. Or if it is too complicate, you may simplify it to control 2 - 3 branches shape of a tree.
@aladinwunderlampe7478
@aladinwunderlampe7478 2 жыл бұрын
Hello, this has become a great video once again. We didn't understand much, but it's still nice to watch. Greetings from home say Mam & Dad. ;-))))
@javiersolisgarcia
@javiersolisgarcia 9 ай бұрын
This videos is crazy! I don't get tired of recommend it to anyone interesting in diffusion models. I have recently started to research with these type of models and I think your video as huge source of information and guidance in this topic. I find myself recurrently re-watching your video to revise some information. Incredible work, we need more people like you!
@outliier
@outliier 9 ай бұрын
Thank you so much for the kind words!
@AICoffeeBreak
@AICoffeeBreak 2 жыл бұрын
Great, this video is finally out! Awesome coding explanation! 👏
@astrophage381
@astrophage381 5 ай бұрын
These implementation videos are marvelous. You really should do more of them. Big fan of your channel!
@TheAero
@TheAero Жыл бұрын
This is my first few days of trying to understand diffusion models. Coding was kinda fun on this one. I will take a break for 1-2 months and study something related like GANs or VAE, or even energy-based models. Then comeback with more general understanding :) Thanks !
@zenchiassassin283
@zenchiassassin283 Жыл бұрын
And transformers for the attention mechanisms + positional encoding
@TheAero
@TheAero Жыл бұрын
I got that snatched in the past 2 months. Gotta learn the math, what is actually a distribution etc.@@zenchiassassin283
@terencelee6492
@terencelee6492 Жыл бұрын
We chose Diffusion Model as part of our course project, and your videos do save much of my time to understand the concepts and have more focus on implementing the main part. I am really grateful for your contribution.
@Mandollr
@Mandollr Жыл бұрын
After my midterm week i wanna study diffusion models with your videos im so exited .thanks a lot for good explanation
@rewixx69420
@rewixx69420 2 жыл бұрын
I was wating for so long i learnd about condicional difusion models
@MrScorpianwarrior
@MrScorpianwarrior 5 ай бұрын
Hey! I am start my CompSci Masters program in the Fall, and just wanted to say that I love this video. I've never really had time to sit down and learn PyTorch, so the brevity of this video is greatly appreciated! It gives me a fantastic starting point that I can tinker around with, and I have an idea on how I can apply this in a non-conventional way that I haven't seen much research on... Thanks again!
@outliier
@outliier 5 ай бұрын
Love to hear that Good luck on your journey!
@Miurazzo
@Miurazzo 2 жыл бұрын
Hi, @Outlier , thank you for the awesome explanation ! Just one observation, I believe in line 50 of your code (at 19:10) it should be: uncond_predicted_noise = model(x,t,None) 😁
@outliier
@outliier 2 жыл бұрын
good catch thank you. (It's correct in the github code tho :))
@mmouz2
@mmouz2 Жыл бұрын
Sincere gratitude for this tutorial, this has really helped me with my project. Please continue with such videos.
@yingwei3436
@yingwei3436 Жыл бұрын
thank you so much for your detailed explaination of the code. It helped me a lot on my way of learning diffusion model. Wish there are more youtubers like you!
@stevemurch3245
@stevemurch3245 2 жыл бұрын
Incredible. Very thorough and clear. Very, very well done.
@ethansmith7608
@ethansmith7608 Жыл бұрын
this is the most underrated channel i've ever seen, amazing explanation !
@outliier
@outliier Жыл бұрын
thank you so much!
@haoxu3204
@haoxu3204 10 ай бұрын
The best video for diffusion! Very Clear
@subtainmalik5182
@subtainmalik5182 Жыл бұрын
most informative and easy to understand video on diffusion models on youtube, Thanks Man
@potisseslikitap7605
@potisseslikitap7605 2 жыл бұрын
This channel seems to be growing very fast. Thanks for this amazing tutorial.🤩
@pratyanshvaibhav
@pratyanshvaibhav 5 ай бұрын
The Under rated OG channel
@prabhavkaula9697
@prabhavkaula9697 2 жыл бұрын
Thank you for sharing the implementation since authentic resources are rare
@gaggablagblag9997
@gaggablagblag9997 Жыл бұрын
Dude, you're amazing! Thanks for uploading this!
@FLLCI
@FLLCI 2 жыл бұрын
This video is really timely and needed. Thanks for the implementation and keep up the good work!
@manuelsebastianriosbeltran972
@manuelsebastianriosbeltran972 2 жыл бұрын
Congrats, This is a great channel!! hope to see more of these videos in the future.
@ZhangzhiPeng-x8r
@ZhangzhiPeng-x8r 2 жыл бұрын
great tutorial! looking to seeing more of this! keep it up!
@NickSergievskiy
@NickSergievskiy Жыл бұрын
Thank you. Best explanation with good DNN models
@947973
@947973 Жыл бұрын
Very helpful walk-through. Thank you!
@yuhaowang9846
@yuhaowang9846 Жыл бұрын
Thank you so much for this sharing, that was perfect!
@smnvrs
@smnvrs Жыл бұрын
Thanks, this implementation really helped clear things up.
@vinc6966
@vinc6966 Жыл бұрын
Amazing tutorial, very informative and clear, nice work!
@talktovipin1
@talktovipin1 2 жыл бұрын
Looking forward for some video on Classifier Guidance as well. Thanks.
@dylanwattles7303
@dylanwattles7303 10 ай бұрын
nice demonstration, thanks for sharing
@qq-mf9pw
@qq-mf9pw Жыл бұрын
Incredible explanation, thanks a lot!
@DiogoSanti
@DiogoSanti 9 ай бұрын
Very well done! Keep the great content!!
@WendaoZhao
@WendaoZhao 5 ай бұрын
one CRAZY thing to take from this code (and video) GREEK LETTERS ARE CAN BE USED AS VARIABLE NAME IN PYTHON
@henrywong741
@henrywong741 Жыл бұрын
Could you please explain the paper "High Resolution Image Synthesis With Latent Diffusion Models" and its implementations? Your explanations are exceptionally crystal.
@Kooshiar
@Kooshiar Жыл бұрын
best diffusion youtube
@LMonty-do9ud
@LMonty-do9ud Жыл бұрын
Thank you very much, it has solved my urgent need
@yazou3896
@yazou3896 Жыл бұрын
It's definitely cool and helpful! Thanks!!!
@talktovipin1
@talktovipin1 2 жыл бұрын
Very nicely explained. Thanks.
@rachelgardner1799
@rachelgardner1799 Жыл бұрын
Fantastic video!
@orestispapanikolaou9798
@orestispapanikolaou9798 2 жыл бұрын
Great video!! You make coding seem like playing super mario 😂😂
@xuefengdu6926
@xuefengdu6926 2 жыл бұрын
thanks for your amazing efforts!
@junghunkim8467
@junghunkim8467 Жыл бұрын
it is very helpful!! You are a genius.. :) thank you!!
@nez2884
@nez2884 2 жыл бұрын
awesome implementation!
@chickenp7038
@chickenp7038 2 жыл бұрын
great walkthrough. but where would i implement dynamic or static thresholding as described in the imagen paper? the static thresholding clips all values larger then 1 but my model regularly outputs numbers as high as 5. but it creates images and loss decreases to 0.016 with SmoothL1Loss.
@ParhamEftekhar
@ParhamEftekhar 5 ай бұрын
Awesome video.
@houbenbub
@houbenbub 2 жыл бұрын
This is GOLD
@jamesfogwill1455
@jamesfogwill1455 3 ай бұрын
Roughly how long does an Epoch take for you? I am using rtx3060 mobile and achieving an epoch every 24 minutes. Also i cannot work with a batch size greater than 8 and a img size greater than 64 because it overfills my GPUs 6gb memory. I thought this was excessive for such small batch and img size?
@김남형산업공학과한양
@김남형산업공학과한양 2 жыл бұрын
Thank you for sharing!
@pedrambazrafshan9598
@pedrambazrafshan9598 Ай бұрын
Could you also make a video on how to implement DDIM? Or make a GitHub repository about it?
@spyrosmarkesinis443
@spyrosmarkesinis443 2 жыл бұрын
Amazing stuff!
@chemaguerra1635
@chemaguerra1635 Жыл бұрын
This video is priceless.
@kerenye955
@kerenye955 Жыл бұрын
Great video!
@mcpow6614
@mcpow6614 Жыл бұрын
Can you do one for tensorflow too btw very good explaination
@SeonhoonKim
@SeonhoonKim Жыл бұрын
Hello, thanks for your a lot contribution ! But a bit confused, At 06:04, just sampling from N(0, 1) totally randomly would not have any "trace" of an image. How come the model infer the image from the totally random noise ?
@outliier
@outliier Жыл бұрын
Hey there, that is sort of the "magic" of diffusion models which is hard to grasp your mind around. But since the model is trained to always see noise between 0% and 100% it sees full noise during training for which it is then trained to denoise it. And usually when you provide conditioning to the model such as class labels or text information, the model has more information than just random noise. But still, unconditional training still works.
@Neptutron
@Neptutron 2 жыл бұрын
Thank you!!
@salehgholamzadeh3368
@salehgholamzadeh3368 2 ай бұрын
Great video I faced a question at 19:10 line 50 of the code. why do we call ```model(x,label,None)``` what happened to t? shouldn't we instead call it like ```model(x,t,None)``` ?? also line 17 in ema (20:31) ```retrun old * self.beta +(1+self.beta) * new``` why 1+self.beta? shouldnt it be 1-self.beta?
@sandravu1541
@sandravu1541 2 жыл бұрын
great video, you got one new subscriber
@LeeYuanZ
@LeeYuanZ Жыл бұрын
Thank you so much for this amazing video! In mention that the first DDPM paper show no necessary of lower bound formulation, could you tell me the specific place in the paper? thanks!
@khangvutien2538
@khangvutien2538 9 ай бұрын
People in Earth Observation know that images from Synthetic Aperture Radar have random speckles. People have tried removing the speckles using wavelets. I wonder how Denoising Diffusion would fare. The difficulty that I see is the need for x0 the un-noised image. What do you think?
@doctorshadow2482
@doctorshadow2482 Жыл бұрын
Thank you for the review. So, what is the key to make a step from text description to image? Can you please pinpoint where it is explained?
@anonymousperson9757
@anonymousperson9757 Жыл бұрын
Thank you so much for this amazing video! You mention that changing the original DDPM to a conditional model should be as simple as adding in the condition at some point during training. I was just wondering if you had any experience with using DDPM to denoise images? I was planning on conditioning the model on the input noisy data by concatenating it to yt during training. I am going to try and play around with your github code and see if I can get something to work with denoising. Wish me luck!
@andrewluo6088
@andrewluo6088 2 жыл бұрын
The best
@gordondou2286
@gordondou2286 Жыл бұрын
Can you please explain how to use Woodfisher technique to approximate second-order gradients? Thanks
@signitureDGK
@signitureDGK 11 ай бұрын
Very cool. How would DDIM models be different? Do they use a deterministic denoising sampler?
@outliier
@outliier 10 ай бұрын
yes indeed
@scotth.hawley1560
@scotth.hawley1560 9 ай бұрын
Wonderful video! I notice that at 18:50, the equation for the new noise seems to differ from Eq. 6 in the CFG paper, as if the unconditioned and conditioned epsilons are reversed. Can you comment on that?
@orangethemeow
@orangethemeow 2 жыл бұрын
Like your channel, please make more videos
@ankanderia4999
@ankanderia4999 7 ай бұрын
` x = torch.randn((n, 3, self.img_size, self.img_size)).to(self.device) predicted_noise = model(x, t) ` in the deffusion class why you create an noise and pass that noise into the model to predict noise ... please explain
@Sherlock14-d6x
@Sherlock14-d6x 4 ай бұрын
Why is the bias off in the initial convolutional block?
@satpalsinghrathore2665
@satpalsinghrathore2665 2 жыл бұрын
Super cool
@susdoge3767
@susdoge3767 9 ай бұрын
having hard time to understand the mathematical and code aspect of diffusion model although i have a good high level understanding...any good resource i can go through? id appreciate it
@remmaria
@remmaria Жыл бұрын
Your videos are a blessing. Thank you very much!!! Have you tried using DDIM to accelerate predictions? Or any other idea to decrease the number of steps needed?
@outliier
@outliier Жыл бұрын
I have not tried any speedups in any way. But feel free to try it out and tell me / us what works best. In the repo I do linked a fork which implements a couple additions which make the training etc. faster. You can check that out too here: github.com/tcapelle/Diffusion-Models-pytorch
@remmaria
@remmaria Жыл бұрын
@@outliier Thank you! I will try it for sure.
@luchaoqi
@luchaoqi 2 жыл бұрын
Awesome! How did you type Ɛ in code?
@jinhengfeng6440
@jinhengfeng6440 Жыл бұрын
terrific!
@maybritt-sch
@maybritt-sch Жыл бұрын
Great videos on diffusion models, very understandable explanations! For how many hours did you train it? I tried adjusting your conditional model and train with a different dataset, but it seems to take forever :D
@outliier
@outliier Жыл бұрын
Yea it took quite long. On the 3090 it trained a couple days (2-4 days I believe)
@maybritt-sch
@maybritt-sch Жыл бұрын
@@outliier Thanks for the feedback. Ok seems like I didn't do a mistake, but only need more patience!
@outliier
@outliier Жыл бұрын
@@maybritt-sch Yea. Let me know how it goes or if you need help
@sweetautumnfox
@sweetautumnfox 8 ай бұрын
With this training method, wouldn't there be a possibility of some timesteps not being trained in an epoch? wouldn't it be better to shuffle the whole list of timesteps and then sample sequentially with every batch?
@wizzy1996pl
@wizzy1996pl Жыл бұрын
last self attention layer (64, 64) changes my training type from 5 minutes to hours per epoch, do you know why? training on a single rtx 3060 TI gpu
@egoistChelly
@egoistChelly Жыл бұрын
I think your code bugs when adjust image_size?
@LonLat1842
@LonLat1842 2 жыл бұрын
Nice tutorial
@janevirahman9904
@janevirahman9904 9 ай бұрын
Hi , I want to use a single underwater image dataset what changes do i have to implement on the code?
@rawsok
@rawsok Жыл бұрын
You do not use any LR scheduler. Is this intentional? My understanding is that EMA is a functional equivalent of LR scheduler, but then I do not see any comparison between EMA vs e.g. cosine LR scheduler. Can you elaborate more on that?
@Gruell
@Gruell 7 ай бұрын
Sorry if I am misunderstanding, but at 19:10, shouldn't the code be: "uncond_predicted_noise = model(x, t, None)" instead of "uncond_predicted_noise = model(x, labels, None)" Also, according to the CFG paper's formula, shouldn't the next line be: "predicted_noise = torch.lerp(predicted_noise, uncond_predicted_noise, -cfg_scale)" under the definition of lerp? One last question: have you tried using L1Loss instead of MSELoss? On my implementation, L1 Loss performs much better (although my implementation is different than yours). I know the ELBO term expands to essentially an MSE term wrt predicted noise, so I am confused as to why L1 Loss performs better for my model. Thank you for your time.
@Gruell
@Gruell 7 ай бұрын
Great videos by the way
@Gruell
@Gruell 7 ай бұрын
Ah, I see you already fixed the first question in the codebase
@pedrambazrafshan9598
@pedrambazrafshan9598 11 ай бұрын
@outliier Do you think there is a way to run the code with a 3060 GPU on personal desktop? I get the error message: CUDA out of memory.
@MrScorpianwarrior
@MrScorpianwarrior 5 ай бұрын
Random person 6 months later, but you could try decreasing the batch size during training. Your results may not look like what he got in the video though!
@homataha5626
@homataha5626 2 жыл бұрын
Thank you for the video. How can we use diffusion model for inpainting?
@marcotommasini5600
@marcotommasini5600 2 жыл бұрын
Great video, thanks for making it. I started working with diffusion models very recently and I used you implementation as base for my model. I am currently facing a problem that the MSE loss starts very close to 1 and continues like that but varying between 1.0002 and 1.0004, for this reason the model is not training properly. Did you face any issue like this one? I am using the MNIST dataset to train the network, I wanted to first test it with some less complex dataset.
@justinsong3506
@justinsong3506 Жыл бұрын
I am facing similar problems. I did the experiment on CIFAR10 dataset. The mse loss starts descresing normally but at some points the loss increse to 1 and never descrese again.
@versusFliQq
@versusFliQq Жыл бұрын
Really nice video! I also enjoyed your explanation video - great work in general :) However, I noticed at around 5:38, you are defining sample_timesteps with low=1. I am pretty sure that this is wrong, as Python indexes at 0 meaning you skip the first noising step every time you access alpha, alpha_cumprod etc. Correct me if I am wrong but all the other implementations also utilise zero-indexing.
@arpanpoudel
@arpanpoudel Жыл бұрын
this function sample the timesteps of the denoising step. selecting time=0 is the original image itself. there is no point in taking 0 timestep.
@4_alokk
@4_alokk 11 ай бұрын
How did you learn do much?
@outliier
@outliier 11 ай бұрын
I read a lot of papers and watched a lot of tutorials
@Soso65929
@Soso65929 8 ай бұрын
So the process of adding noise and removing it happens in a loop
@ovrava
@ovrava 2 жыл бұрын
Great Video, On what Data did you train your model again?
@kashishmathukiya8091
@kashishmathukiya8091 Жыл бұрын
8:38 in the UNet section, how do you decide on the number of channels to set in both input and output to the Down and Up classes. Why just 64,128, etc. ?
@outliier
@outliier Жыл бұрын
People just go with powers of 2 usually. And usually you go to more channels in the deeper layers of the network.
@kashishmathukiya8091
@kashishmathukiya8091 Жыл бұрын
@@outliier oh okay got it. Thank you so much for clearing that and for the video! I had seen so many videos / read articles for diffusion but yours were the best and explained every thing which others considered prerequisites!! Separating the paper explanation and implementation was really helpful.
@SkyHighBeyondReach
@SkyHighBeyondReach 4 ай бұрын
Thanks alot :)
@andonso
@andonso Жыл бұрын
How can i increase the img size to 128 pixels square?
@UnbelievableRam
@UnbelievableRam 7 ай бұрын
Hi! Can you please explain why the output is getting two stitched images?
@outliier
@outliier 7 ай бұрын
What do you mean with two stitched images?
@Laszer271
@Laszer271 Жыл бұрын
There is a slight bug at 19:11 it should be uncond_predicted_noise = model(x, t, None) and not uncond_predicted_noise = model(x, labels, None)
@outliier
@outliier Жыл бұрын
Yes correct. Good catch
@muhammadawais2173
@muhammadawais2173 Жыл бұрын
Hi Sir, Good afternoon. i wanna run the ddpm_conditional for my ultrasound images dataset having 5 classes and all the images have equal sizes 256*256 and also images are greyscale images. but i am encountering this error. " RuntimeError: Given groups=1, weight of size [256, 1, 3, 3], expected input[4, 3, 256, 256] to have 1 channels, but got 3 channels instead". i already had a changing regarding the channel and the size
@outliier
@outliier Жыл бұрын
Hey, can you post your code on github and give the error?
@agiengineer
@agiengineer Жыл бұрын
Can you please tell me how much time was need to train this 3000 image for 500 Epoch?
@muhammadawais2173
@muhammadawais2173 Жыл бұрын
thanks for the easiest implementation. could you plz tell us how to find FID and IS score for these images?
@outliier
@outliier Жыл бұрын
I think you would just sample 10-50k images from the trained model and then take 10-50k images from the original dataset and then calculate the FID and IS
@muhammadawais2173
@muhammadawais2173 Жыл бұрын
@@outliier thanks
@noushineftekhari4211
@noushineftekhari4211 Жыл бұрын
Hi, Thank you for the Video! Can you please explain the test part: n = 4 device = "cpu" model = UNet_conditional(num_classes=4).to(device) ckpt = torch.load(r"C:\Users oueft\Downloads\Diffusion-Models-pytorch-V7\models\DDPM_conditional\ckpt.pt", map_location=torch.device('cpu')) model.load_state_dict(ckpt) diffusion = Diffusion(img_size=64, device=device) y = torch.Tensor([6] * n).long().to(device) x = diffusion.sample(model, n, y) plot_images(x) What is n, and why did the following error come up when I ran it? ddpm_conditional.py", line 81, in sample n = len(labels) TypeError: object of type 'int' has no len()
@Naira-ny9zc
@Naira-ny9zc Жыл бұрын
Thank you...U just made diffusion so easy to understand... I would like to ask ; What changes do I need to make in order to give an image as condition rather than a label as condition. I mean how to load ground Truth from GT repository as label (y).
@outliier
@outliier Жыл бұрын
Depends on your task. Could you specify what you want to achieve? Super resolution? Img2Img?
@Naira-ny9zc
@Naira-ny9zc Жыл бұрын
@@outliier I want to generate thermal IR images conditioned on their respective RGB images . I know that in order to achieve this task i.e ; Image (RGB) to Image (Thermal IR) translation, I have to concat the input to U-net (which of course is thermal noise image ) with its corresponding RGB (condition image) and give this concatenated output as final input to the unet ; but problem is that I am not able to put this all together in the code (especially concatenating each RGB image (condition) from RGB image folder with its corresponding Thermal noise images so that I can pass the concatenated resultant image as final input to Unet as my aim is to generate RGB conditioned Thermal image using Diffusion.
@nomaannafi7561
@nomaannafi7561 Жыл бұрын
How can i increase the size of the generated image here?
Diffusion Models | Paper Explanation | Math Explained
33:27
Outlier
Рет қаралды 262 М.
Why Does Diffusion Work Better than Auto-Regression?
20:18
Algorithmic Simplicity
Рет қаралды 381 М.
Чистка воды совком от денег
00:32
FD Vasya
Рет қаралды 2,9 МЛН
БУ, ИСПУГАЛСЯ?? #shorts
00:22
Паша Осадчий
Рет қаралды 3 МЛН
FOREVER BUNNY
00:14
Natan por Aí
Рет қаралды 32 МЛН
I Built a Neural Network from Scratch
9:15
Green Code
Рет қаралды 427 М.
Coding Stable Diffusion from scratch in PyTorch
5:03:32
Umar Jamil
Рет қаралды 142 М.
Stable Diffusion in Code (AI Image Generation) - Computerphile
16:56
Computerphile
Рет қаралды 296 М.
How I Understand Diffusion Models
17:39
Jia-Bin Huang
Рет қаралды 36 М.
Diffusion models from scratch in PyTorch
30:54
DeepFindr
Рет қаралды 261 М.
Diffusion Models (DDPM & DDIM) - Easily explained!
18:28
Soroush Mehraban
Рет қаралды 5 М.
GraphRAG: The Marriage of Knowledge Graphs and RAG: Emil Eifrem
19:15
Official PyTorch Documentary: Powering the AI Revolution
35:53