2 #ifndef _NNDEPLOY_MODEL_STABLE_DIFFUSION_DDIM_SCHEDULER_H_
3 #define _NNDEPLOY_MODEL_STABLE_DIFFUSION_DDIM_SCHEDULER_H_
29 namespace stable_diffusion {
55 float beta_start_ = 0.00085;
56 float beta_end_ = 0.012;
57 std::string beta_schedule_ =
"scaled_linear";
59 bool set_alpha_to_one_ =
false;
63 rapidjson::Document::AllocatorType &allocator);
86 std::vector<float> &latents,
87 std::vector<float> &prev_sample);
90 float final_alpha_cumprod_ = 0.0;
DDIMSchedulerParam & operator=(const DDIMSchedulerParam &other)
std::string beta_schedule_
DDIMSchedulerParam * clone() const
virtual base::Status deserialize(rapidjson::Value &json)
PARAM_COPY_TO(DDIMSchedulerParam)
virtual ~DDIMSchedulerParam()
virtual base::Status serialize(rapidjson::Value &json, rapidjson::Document::AllocatorType &allocator)
PARAM_COPY(DDIMSchedulerParam)
virtual base::Status deinit()
std::vector< float > betas_
virtual std::vector< int > & getTimesteps()
Get the Timestep object.
std::vector< float > alphas_cumprod_
virtual base::Status init(SchedulerParam *param)
base::Status step_inner(std::vector< float > &sample, int timestep, std::vector< float > &latents, std::vector< float > &prev_sample)
DDIMScheduler(SchedulerType scheduler_type)
virtual base::Status setTimesteps()
Set the Timesteps object.
virtual base::Status step(device::Tensor *sample, device::Tensor *timestep, device::Tensor *latents, device::Tensor *pre_sample)
std::vector< float > alphas_
std::vector< int > timesteps_
virtual base::Status scaleModelInput(device::Tensor *sample, int index)
SchedulerParam & operator=(const SchedulerParam ¶m)
#define NNDEPLOY_CC_API
api