
Concretely, this allows switching to the "Karras" schedule from the Karras et al 2022 paper, equivalent to the samplers marked as "Karras" in the AUTOMATIC1111 WebUI. This choice is in principle orthogonal to the sampler choice and can be given independently.
72 lines
1.5 KiB
C++
72 lines
1.5 KiB
C++
#ifndef __STABLE_DIFFUSION_H__
|
|
#define __STABLE_DIFFUSION_H__
|
|
|
|
#include <memory>
|
|
#include <vector>
|
|
|
|
enum SDLogLevel {
|
|
DEBUG,
|
|
INFO,
|
|
WARN,
|
|
ERROR
|
|
};
|
|
|
|
enum RNGType {
|
|
STD_DEFAULT_RNG,
|
|
CUDA_RNG
|
|
};
|
|
|
|
enum SampleMethod {
|
|
EULER_A,
|
|
EULER,
|
|
HEUN,
|
|
DPMPP2M,
|
|
DPMPP2Mv2,
|
|
N_SAMPLE_METHODS
|
|
};
|
|
|
|
enum Schedule {
|
|
DEFAULT,
|
|
DISCRETE,
|
|
KARRAS,
|
|
N_SCHEDULES
|
|
};
|
|
|
|
class StableDiffusionGGML;
|
|
|
|
class StableDiffusion {
|
|
private:
|
|
std::shared_ptr<StableDiffusionGGML> sd;
|
|
|
|
public:
|
|
StableDiffusion(int n_threads = -1,
|
|
bool vae_decode_only = false,
|
|
bool free_params_immediately = false,
|
|
RNGType rng_type = STD_DEFAULT_RNG);
|
|
bool load_from_file(const std::string& file_path, Schedule d = DEFAULT);
|
|
std::vector<uint8_t> txt2img(
|
|
const std::string& prompt,
|
|
const std::string& negative_prompt,
|
|
float cfg_scale,
|
|
int width,
|
|
int height,
|
|
SampleMethod sample_method,
|
|
int sample_steps,
|
|
int64_t seed);
|
|
std::vector<uint8_t> img2img(
|
|
const std::vector<uint8_t>& init_img,
|
|
const std::string& prompt,
|
|
const std::string& negative_prompt,
|
|
float cfg_scale,
|
|
int width,
|
|
int height,
|
|
SampleMethod sample_method,
|
|
int sample_steps,
|
|
float strength,
|
|
int64_t seed);
|
|
};
|
|
|
|
void set_sd_log_level(SDLogLevel level);
|
|
std::string sd_get_system_info();
|
|
|
|
#endif // __STABLE_DIFFUSION_H__
|