MCPcopy Create free account
hub / github.com/evilsocket/cake / generate_image

Method generate_image

cake-core/src/models/sd/sd.rs:350–545  ·  view source on GitHub ↗
(
        &mut self,
        args: &ImageGenerationArgs,
        mut callback: F,
    )

Source from the content-addressed store, hash-verified

348#[async_trait]
349impl ImageGenerator for SD {
350 async fn generate_image<F>(
351 &mut self,
352 args: &ImageGenerationArgs,
353 mut callback: F,
354 ) -> Result<(), anyhow::Error>
355 where
356 F: FnMut(Vec<ImageBuffer<Rgb<u8>, Vec<u8>>>) + Send + 'static,
357 {
358 use tracing_chrome::ChromeLayerBuilder;
359 use tracing_subscriber::prelude::*;
360
361 let ImageGenerationArgs {
362 image_prompt,
363 uncond_prompt,
364 n_steps,
365 num_samples,
366 bsize,
367 tracing,
368 guidance_scale,
369 img2img,
370 img2img_strength,
371 image_seed,
372 intermediary_images,
373 ..
374 } = args;
375
376 let sd_version = self.sd_version;
377
378 if !(0. ..=1.).contains(img2img_strength) {
379 anyhow::bail!("img2img-strength should be between 0 and 1, got {img2img_strength}")
380 }
381
382 let _guard = if *tracing {
383 let (chrome_layer, guard) = ChromeLayerBuilder::new().build();
384 tracing_subscriber::registry().with(chrome_layer).init();
385 Some(guard)
386 } else {
387 None
388 };
389
390 let default_gs = default_guidance_scale(sd_version);
391 let guidance_scale = guidance_scale.as_ref().unwrap_or(&default_gs);
392 let default_ns = default_n_steps(sd_version);
393 let n_steps = n_steps.as_ref().unwrap_or(&default_ns);
394
395 if let Some(seed) = image_seed {
396 self.context.device.set_seed(*seed)?;
397 }
398 let use_guide_scale = guidance_scale > &1.0;
399
400 let mut text_embeddings: Vec<Tensor> = Vec::new();
401
402 let text_embeddings_1 = self
403 .text_embeddings(image_prompt, uncond_prompt, use_guide_scale, true)
404 .await?;
405
406 text_embeddings.push(text_embeddings_1);
407

Callers

nothing calls this directly

Calls 11

default_guidance_scaleFunction · 0.85
default_n_stepsFunction · 0.85
image_preprocessFunction · 0.85
vae_scale_factorFunction · 0.85
text_embeddingsMethod · 0.80
to_vecMethod · 0.80
timestepsMethod · 0.80
split_imagesMethod · 0.80
pushMethod · 0.45
cloneMethod · 0.45
stepMethod · 0.45

Tested by

no test coverage detected