@@ -815,8 +815,7 @@ class StableDiffusionGGML {
815
815
const std::vector<float >& sigmas,
816
816
int start_merge_step,
817
817
SDCondition id_cond,
818
- ggml_tensor* noise_mask = nullptr ) {
819
-
818
+ ggml_tensor* denoise_mask = NULL ) {
820
819
std::vector<int > skip_layers (guidance.slg .layers , guidance.slg .layers + guidance.slg .layer_count );
821
820
822
821
// TODO (Pix2Pix): separate image guidance params (right now it's reusing distilled guidance)
@@ -1031,10 +1030,10 @@ class StableDiffusionGGML {
1031
1030
pretty_progress (step, (int )steps, (t1 - t0) / 1000000 .f );
1032
1031
// LOG_INFO("step %d sampling completed taking %.2fs", step, (t1 - t0) * 1.0f / 1000000);
1033
1032
}
1034
- if (noise_mask != nullptr ) {
1033
+ if (denoise_mask != nullptr ) {
1035
1034
for (int64_t x = 0 ; x < denoised->ne [0 ]; x++) {
1036
1035
for (int64_t y = 0 ; y < denoised->ne [1 ]; y++) {
1037
- float mask = ggml_tensor_get_f32 (noise_mask , x, y);
1036
+ float mask = ggml_tensor_get_f32 (denoise_mask , x, y);
1038
1037
for (int64_t k = 0 ; k < denoised->ne [2 ]; k++) {
1039
1038
float init = ggml_tensor_get_f32 (init_latent, x, y, k);
1040
1039
float den = ggml_tensor_get_f32 (denoised, x, y, k);
@@ -1288,7 +1287,8 @@ sd_image_t* generate_image(sd_ctx_t* sd_ctx,
1288
1287
float style_ratio,
1289
1288
bool normalize_input,
1290
1289
std::string input_id_images_path,
1291
- ggml_tensor* concat_latent = NULL ) {
1290
+ ggml_tensor* concat_latent = NULL ,
1291
+ ggml_tensor* denoise_mask = NULL ) {
1292
1292
if (seed < 0 ) {
1293
1293
// Generally, when using the provided command line, the seed is always >0.
1294
1294
// However, to prevent potential issues if 'stable-diffusion.cpp' is invoked as a library
@@ -1475,7 +1475,6 @@ sd_image_t* generate_image(sd_ctx_t* sd_ctx,
1475
1475
int W = width / 8 ;
1476
1476
int H = height / 8 ;
1477
1477
LOG_INFO (" sampling using %s method" , sampling_methods_str[sample_method]);
1478
- ggml_tensor* noise_mask = nullptr ;
1479
1478
1480
1479
struct ggml_tensor * control_latent = NULL ;
1481
1480
if (sd_version_is_control (sd_ctx->sd ->version ) && image_hint != NULL ){
@@ -1544,8 +1543,9 @@ sd_image_t* generate_image(sd_ctx_t* sd_ctx,
1544
1543
concat_latent = empty_latent;
1545
1544
}
1546
1545
cond.c_concat = concat_latent;
1546
+ cond.c_concat = concat_latent;
1547
1547
uncond.c_concat = empty_latent;
1548
- noise_mask = NULL ;
1548
+ denoise_mask = NULL ;
1549
1549
} else if (sd_version_is_edit (sd_ctx->sd ->version ) || sd_version_is_control (sd_ctx->sd ->version )) {
1550
1550
LOG_INFO (" HERE" );
1551
1551
auto empty_latent = ggml_new_tensor_4d (work_ctx, GGML_TYPE_F32, init_latent->ne [0 ], init_latent->ne [1 ], init_latent->ne [2 ], init_latent->ne [3 ]);
@@ -1561,8 +1561,6 @@ sd_image_t* generate_image(sd_ctx_t* sd_ctx,
1561
1561
LOG_INFO (" HERE" );
1562
1562
1563
1563
cond.c_concat = concat_latent;
1564
- } else {
1565
- noise_mask = concat_latent;
1566
1564
}
1567
1565
1568
1566
for (int b = 0 ; b < batch_count; b++) {
@@ -1599,7 +1597,7 @@ sd_image_t* generate_image(sd_ctx_t* sd_ctx,
1599
1597
sigmas,
1600
1598
start_merge_step,
1601
1599
id_cond,
1602
- noise_mask );
1600
+ denoise_mask );
1603
1601
1604
1602
// struct ggml_tensor* x_0 = load_tensor_from_file(ctx, "samples_ddim.bin");
1605
1603
// print_ggml_tensor(x_0);
@@ -1811,6 +1809,7 @@ sd_image_t* img2img(sd_ctx_t* sd_ctx,
1811
1809
sd_image_to_tensor (init_image.data , init_img);
1812
1810
1813
1811
ggml_tensor* concat_latent;
1812
+ ggml_tensor* denoise_mask = NULL ;
1814
1813
1815
1814
ggml_tensor* init_latent = NULL ;
1816
1815
ggml_tensor* init_moments = NULL ;
@@ -1950,7 +1949,8 @@ sd_image_t* img2img(sd_ctx_t* sd_ctx,
1950
1949
style_ratio,
1951
1950
normalize_input,
1952
1951
input_id_images_path_c_str,
1953
- concat_latent);
1952
+ concat_latent,
1953
+ denoise_mask);
1954
1954
1955
1955
size_t t2 = ggml_time_ms ();
1956
1956
0 commit comments