(
self,
scheduler: FlowMatchEulerDiscreteScheduler,
vae: AutoencoderKL,
text_encoder: CLIPTextModel,
tokenizer: CLIPTokenizer,
text_encoder_2: T5EncoderModel,
tokenizer_2: T5TokenizerFast,
transformer: FluxTransformer2DModel,
controlnet: Union[
FluxControlNetModel, List[FluxControlNetModel], Tuple[FluxControlNetModel], FluxMultiControlNetModel
],
)
| 192 | _callback_tensor_inputs = ["latents", "prompt_embeds"] |
| 193 | |
| 194 | def __init__( |
| 195 | self, |
| 196 | scheduler: FlowMatchEulerDiscreteScheduler, |
| 197 | vae: AutoencoderKL, |
| 198 | text_encoder: CLIPTextModel, |
| 199 | tokenizer: CLIPTokenizer, |
| 200 | text_encoder_2: T5EncoderModel, |
| 201 | tokenizer_2: T5TokenizerFast, |
| 202 | transformer: FluxTransformer2DModel, |
| 203 | controlnet: Union[ |
| 204 | FluxControlNetModel, List[FluxControlNetModel], Tuple[FluxControlNetModel], FluxMultiControlNetModel |
| 205 | ], |
| 206 | ): |
| 207 | super().__init__() |
| 208 | |
| 209 | self.register_modules( |
| 210 | vae=vae, |
| 211 | text_encoder=text_encoder, |
| 212 | text_encoder_2=text_encoder_2, |
| 213 | tokenizer=tokenizer, |
| 214 | tokenizer_2=tokenizer_2, |
| 215 | transformer=transformer, |
| 216 | scheduler=scheduler, |
| 217 | controlnet=controlnet, |
| 218 | ) |
| 219 | self.vae_scale_factor = ( |
| 220 | 2 ** (len(self.vae.config.block_out_channels)) if hasattr(self, "vae") and self.vae is not None else 16 |
| 221 | ) |
| 222 | self.image_processor = VaeImageProcessor(vae_scale_factor=self.vae_scale_factor) |
| 223 | self.tokenizer_max_length = ( |
| 224 | self.tokenizer.model_max_length if hasattr(self, "tokenizer") and self.tokenizer is not None else 77 |
| 225 | ) |
| 226 | self.default_sample_size = 64 |
| 227 | |
| 228 | @property |
| 229 | def do_classifier_free_guidance(self): |
nothing calls this directly
no outgoing calls
no test coverage detected