fix: force binary mask for inpaint models (#589)
Co-authored-by: leejet <leejet714@gmail.com>
This commit is contained in:
parent
838beb9b5e
commit
69c73789fe
@ -383,8 +383,10 @@ __STATIC_INLINE__ void sd_apply_mask(struct ggml_tensor* image_data,
|
|||||||
for (int ix = 0; ix < width; ix++) {
|
for (int ix = 0; ix < width; ix++) {
|
||||||
for (int iy = 0; iy < height; iy++) {
|
for (int iy = 0; iy < height; iy++) {
|
||||||
float m = ggml_tensor_get_f32(mask, ix, iy);
|
float m = ggml_tensor_get_f32(mask, ix, iy);
|
||||||
|
m = round(m); // inpaint models need binary masks
|
||||||
|
ggml_tensor_set_f32(mask, m, ix, iy);
|
||||||
for (int k = 0; k < channels; k++) {
|
for (int k = 0; k < channels; k++) {
|
||||||
float value = ((float)(m < 254.5 / 255)) * (ggml_tensor_get_f32(image_data, ix, iy, k) - .5) + .5;
|
float value = (1 - m) * (ggml_tensor_get_f32(image_data, ix, iy, k) - .5) + .5;
|
||||||
ggml_tensor_set_f32(output, value, ix, iy, k);
|
ggml_tensor_set_f32(output, value, ix, iy, k);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user