1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
#[allow(unused_imports)]
use crate::prelude::*;
#[allow(unused_imports)]
use serde::{Deserialize, Serialize};
#[allow(unused_imports)]
use std::collections::HashMap;
#[derive(Debug, Serialize, Deserialize, Default)]
pub struct HTTPValidationError {
#[serde(skip_serializing_if = "Option::is_none")]
pub detail: Option<Vec<Option<ValidationError>>>,
}
#[derive(Debug, Serialize, Deserialize, Default)]
pub struct IllusionDiffusionInput {
#[serde(skip_serializing_if = "Option::is_none")]
pub control_guidance_end: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub control_guidance_start: Option<f64>,
/// The scale of the ControlNet.
#[serde(skip_serializing_if = "Option::is_none")]
pub controlnet_conditioning_scale: Option<f64>,
/// The CFG (Classifier Free Guidance) scale is a measure of how close you want
/// the model to stick to your prompt when looking for a related image to show you.
#[serde(skip_serializing_if = "Option::is_none")]
pub guidance_scale: Option<f64>,
/// The size of the generated image. You can choose between some presets or
/// custom height and width that **must be multiples of 8**.
#[serde(skip_serializing_if = "Option::is_none")]
pub image_size: Option<ImageSizeProperty>,
/// Input image url.
/// "https://storage.googleapis.com/falserverless/illusion-examples/pattern.png"
/// "https://storage.googleapis.com/falserverless/illusion-examples/checkers.png"
/// "https://storage.googleapis.com/falserverless/illusion-examples/checkers_mid.jpg"
/// "https://storage.googleapis.com/falserverless/illusion-examples/ultra_checkers.png"
/// "https://storage.googleapis.com/falserverless/illusion-examples/funky.jpeg"
/// "https://storage.googleapis.com/falserverless/illusion-examples/cubes.jpeg"
/// "https://storage.googleapis.com/falserverless/illusion-examples/turkey-flag.png"
/// "https://storage.googleapis.com/falserverless/illusion-examples/india-flag.png"
/// "https://storage.googleapis.com/falserverless/illusion-examples/usa-flag.png"
pub image_url: String,
/// The negative prompt to use. Use it to address details that you don't want
/// in the image. This could be colors, objects, scenery and even the small details
/// (e.g. moustache, blurry, low resolution).
/// "(worst quality, poor details:1.4), lowres, (artist name, signature, watermark:1.4), bad-artist-anime, bad_prompt_version2, bad-hands-5, ng_deepnegative_v1_75t"
#[serde(skip_serializing_if = "Option::is_none")]
pub negative_prompt: Option<String>,
/// Increasing the amount of steps tells Stable Diffusion that it should take more steps
/// to generate your final result which can increase the amount of detail in your image.
#[serde(skip_serializing_if = "Option::is_none")]
pub num_inference_steps: Option<i64>,
/// The prompt to use for generating the image. Be as descriptive as possible for best results.
/// "(masterpiece:1.4), (best quality), (detailed), Medieval village scene with busy streets and castle in the distance"
pub prompt: String,
/// Scheduler / sampler to use for the image denoising process.
#[serde(skip_serializing_if = "Option::is_none")]
pub scheduler: Option<String>,
/// Seed of the generated Image. It will be the same value of the one passed in the
/// input or the randomly generated that was used in case none was passed.
#[serde(skip_serializing_if = "Option::is_none")]
pub seed: Option<i64>,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct IllusionDiffusionOutput {
/// The generated image file info.
pub image: Image,
/// Seed of the generated Image. It will be the same value of the one passed in the
/// input or the randomly generated that was used in case none was passed.
pub seed: i64,
}
#[derive(Debug, Serialize, Deserialize, Default)]
pub struct Image {
/// The mime type of the file.
/// "image/png"
#[serde(skip_serializing_if = "Option::is_none")]
pub content_type: Option<String>,
/// File data
#[serde(skip_serializing_if = "Option::is_none")]
pub file_data: Option<String>,
/// The name of the file. It will be auto-generated if not provided.
/// "z9RV14K95DvU.png"
#[serde(skip_serializing_if = "Option::is_none")]
pub file_name: Option<String>,
/// The size of the file in bytes.
/// 4404019
#[serde(skip_serializing_if = "Option::is_none")]
pub file_size: Option<i64>,
/// The height of the image in pixels.
/// 1024
#[serde(skip_serializing_if = "Option::is_none")]
pub height: Option<i64>,
/// The URL where the file can be downloaded from.
pub url: String,
/// The width of the image in pixels.
/// 1024
#[serde(skip_serializing_if = "Option::is_none")]
pub width: Option<i64>,
}
#[derive(Debug, Serialize, Deserialize, Default)]
pub struct ImageSize {
/// The height of the generated image.
#[serde(skip_serializing_if = "Option::is_none")]
pub height: Option<i64>,
/// The width of the generated image.
#[serde(skip_serializing_if = "Option::is_none")]
pub width: Option<i64>,
}
#[derive(Debug, Serialize, Deserialize, Default)]
pub struct ValidationError {
pub loc: Vec<serde_json::Value>,
pub msg: String,
#[serde(rename = "type")]
pub ty: String,
}
#[derive(Debug, Serialize, Deserialize, smart_default::SmartDefault)]
#[allow(non_camel_case_types)]
pub enum ImageSizeProperty {
#[default]
ImageSize(ImageSize),
#[serde(rename = "square_hd")]
SquareHd,
#[serde(rename = "square")]
Square,
#[serde(rename = "portrait_4_3")]
Portrait43,
#[serde(rename = "portrait_16_9")]
Portrait169,
#[serde(rename = "landscape_4_3")]
Landscape43,
#[serde(rename = "landscape_16_9")]
Landscape169,
}
/// Illusion Diffusion
///
/// Category: text-to-image
/// Machine Type: A6000
pub fn illusion_diffusion(
params: IllusionDiffusionInput,
) -> FalRequest<IllusionDiffusionInput, IllusionDiffusionOutput> {
FalRequest::new("fal-ai/illusion-diffusion", params)
}