divamgupta / stable-diffusion-tensorflow

Stable Diffusion in TensorFlow / Keras
Other
1.57k stars 227 forks source link

First generated image is different from the following ones using same settings #25

Open fnurl opened 1 year ago

fnurl commented 1 year ago

For some reason, the first generated image is different from the following ones using the code below:

from tensorflow import keras
from stable_diffusion_tf.stable_diffusion import Text2Image
from PIL import Image

# Prompt and seed copied from
# https://lexica.art/?prompt=715596cf-84bd-497f-8413-6e9bb8f39c5e
prompt = "cat seahorse fursona, autistic bisexual graphic designer, attractive fluffy humanoid character design, sharp focus, weirdcore voidpunk digital art by artgerm, akihiko yoshida, louis wain, simon stalenhag, wlop, noah bradley, furaffinity, artstation hd, trending on deviantart"

generator = Text2Image(img_height=512, img_width=512, jit_compile=False)
for num in range(3):
    img = generator.generate(
        prompt,
        num_steps=25,
        unconditional_guidance_scale=7.0,
        temperature=1,
        batch_size=1,
        seed=4030098432,
    )
    Image.fromarray(img[0]).save(f"output{num+1}.png")

Here are the images:

First generated image: output1

Second generated image: output2

Third generated image: output3

I get the same results even if I create a new generator for each image in the for-loop.

matpalm commented 1 year ago

there's a minor bug in the seeding. see https://github.com/divamgupta/stable-diffusion-tensorflow/pull/27

fnurl commented 1 year ago

Thanks, I checked out your pull request https://github.com/divamgupta/stable-diffusion-tensorflow/pull/32 an am getting consistent results now.