mirror of
https://github.com/leejet/stable-diffusion.cpp.git
synced 2026-11-11 19:36:33 +00:00
feat: add MiniMax-H3-Image support (#2324)
This commit is contained in:
1 parent
f8417d02e1
commit
32d516c019
15 files changed
+436
-118
No files matched your search
@@ -2,6 +2,7 @@
|
||||
#define __SD_RUNTIME_DENOISER_HPP__
|
||||
|
||||
#include <algorithm>
|
||||
#include <array>
|
||||
#include <cctype>
|
||||
#include <cmath>
|
||||
#include <cstring>
|
||||
@@ -1405,6 +1406,38 @@ struct MingImageFlowDenoiser : DiscreteFlowDenoiser {
|
||||
}
|
||||
};
|
||||
|
||||
struct MiniMaxH3ImageDenoiser : public DiscreteFlowDenoiser {
|
||||
std::array<float, 7> pdd_sigmas;
|
||||
|
||||
explicit MiniMaxH3ImageDenoiser(const std::array<float, 7>& pdd_sigmas)
|
||||
: DiscreteFlowDenoiser(1.f), pdd_sigmas(pdd_sigmas) {}
|
||||
|
||||
float sigma_min() override { return 0.f; }
|
||||
float sigma_max() override { return 1.f; }
|
||||
|
||||
float t_to_sigma(float t) override {
|
||||
const float position = (1.f - std::clamp(t / (TIMESTEPS - 1.f), 0.f, 1.f)) * 6.f;
|
||||
const size_t index = std::min<size_t>(static_cast<size_t>(position), 5);
|
||||
const auto& grid = pdd_sigmas;
|
||||
return grid[index] + (position - index) * (grid[index + 1] - grid[index]);
|
||||
}
|
||||
|
||||
std::vector<float> get_sigmas(uint32_t n, int image_seq_len, scheduler_t scheduler, SDVersion version, const char* extra_sample_args = nullptr) override {
|
||||
if (scheduler != DISCRETE_SCHEDULER) {
|
||||
return DiscreteFlowDenoiser::get_sigmas(n, image_seq_len, scheduler, version, extra_sample_args);
|
||||
}
|
||||
if (n == 0) {
|
||||
return {};
|
||||
}
|
||||
std::vector<float> sigmas;
|
||||
sigmas.reserve(n + 1);
|
||||
for (uint32_t i = 0; i <= n; ++i) {
|
||||
sigmas.push_back(t_to_sigma((1.f - static_cast<float>(i) / n) * (TIMESTEPS - 1.f)));
|
||||
}
|
||||
return sigmas;
|
||||
}
|
||||
};
|
||||
|
||||
struct H3AVFlowDenoiser : public DiscreteFlowDenoiser {
|
||||
int64_t video_channels;
|
||||
float audio_shift;
|
||||
|
||||
Reference in new issue
Block a user