Every pipeline has a __call__ method which keeps them can call themselves as a function. But I can’t find __call__ method in class DiffusionPipeline.
I read DiffusionPipeline code and find nothing about __call__ method in this link:
DiffusionPipeline
Why?
In this link train_dreambooth.py
you can see that DiffusionPipeline do used call function, so that it can make a inference.
May someone can teach me about this, thanks a lot.
PS:sorry for my poor English
If you use the from_pretrained method of the DiffusionPipeline like this:
from diffusers import DiffusionPipeline
pipe = DiffusionPipeline.from_pretrained("stabilityai/stable-diffusion-xl-base-1.0")
The resulting pipe is not only an instance of the DiffusionPipeline class but also, in this case, an instance of the StableDiffusionXLPipeline class. You can verify this as follows:
from diffusers import StableDiffusionXLPipeline
isinstance(pipe, DiffusionPipeline) and isinstance(pipe, StableDiffusionXLPipeline)
Output:
True
This method internally instantiates an object of the StableDiffusionXLPipeline class, and similar to other pipelines, this class defines a __call__ method.
Please be aware that the DiffusionPipeline lacks also an __init__ method. Therefore, you cannot perform the following action to instantiate and use an object of only the DiffusionPipeline class:
pipe = DiffusionPipeline(...)
Instead, you are required to use the from_pretrained method, which returns an object from a class that defines a __call__ method.
I hope this was helpful, and fingers crossed I didn’t write any inaccuracies! ![]()
OK,thanks a lot! That’s really helpful!