ComfyUI Extension: SeedVarianceEnhancer
A ComfyUI custom node that adds diversity to Z-Image Turbo outputs by adding random noise to text prompt embeddings to compensate for low seed variance. (Description by CC)
Custom Nodes (0)
README
SeedVarianceEnhancer
SeedVarianceEnhancer is a ComfyUI custom node intended to be used to add diversity to the outputs generated by Z-Image Turbo. It was created as an experiment to compensate for low seed variance, which is when image outputs using the same prompt look very similar despite being generated with different seeds. It works by adding random noise to the text prompt embedding.
Installation:
Extract the contents of the zip file and place the SeedVarianceEnhancer directory in your ComfyUI/custom_nodes directory. Launch or restart ComfyUI. You will find the SeedVarianceEnhancer inside the conditioning node group.
Usage:
The SeedVarianceEnhancer node should be placed next in line after the positive prompt "CLIP Text Encode (Prompt)" node. The conditioning output from the SeedVarianceEnhancer should then connect to the sampler's positive prompt input. The default settings should work well with Z-Image turbo.
The randomize_percent setting determines what percentage of the embedding values will be randomly selected for modification with noise. The strength setting adjusts the scale of the noise being added to the selected values. Setting either randomize_percent or strength to 0 should effectively disable the node. The seed value is independent of the sampler seed, and is used for selecting which values to modify and with what noise. By default, the noise_insert setting is set to "noise on beginning steps," which schedules the noisy embedding to be used only for the beginning steps of image generation. After a percentage of the total number of steps are processed, controlled by the steps_switchover_percent setting, the sampler will switch back to using the original unmodified embedding. The noise_insert setting has two alternate modes: "noise on all steps" and "noise on ending steps." "Noise on all steps" is more aggressive and is known to significantly reduce prompt adherence and text rendering. "Noise on ending steps" is offered as an option for experimentation.
Roughly speaking, the randomize_percent setting determines how many parts of the prompt to changed, and the strength setting determines how much to change them by.
Strength values in the range of 15 to 30 and a randomize_percent of 50 seem to be reasonable starting points for use with Z-Image Turbo. The effect of the SeedVarianceEnhancer may vary dependent upon the text prompt used. Some prompts will benefit more from higher settings. Longer more detailed prompts provide more tokens for SeedVarianceEnhancer to manipulate. Somewhat counterintuitively, use with more detailed prompts may result in more diverse outputs.
SeedVarianceEnhancer should work with other models, but the strength value may need to be adjusted by orders of magnitude to work as intended. For example, a quick test with Chroma HD revealed that a strength settings in the range of 0-1 may be optimal.
Results:
When using moderate settings, the output images will vary in any number of ways. Anything from viewing angle, lighting, colors, subject, environment, or artistic style could change slightly or completely. As a consequence of the SeedVarianceEnhancer's function, prompt adherence will be reduced relative to the strength of the "randomize_percent" and "strength" settings. This reduced prompt adherence may be desirable to users interested in generating strange or unexpected images. When using high strength and randomize_percent settings, the image may no longer resemble the prompt in any recognizable way. Some of the features in the generated images may turn out to be things that would be difficult to describe with words. It offers the potential to discover unknown capabilities and knowledge within the model.
Limitations:
SeedVarianceEnhancer does not correct the underlying limitations of the model. It should be viewed as a clever hack to compensate for those limitations. Reduced prompt adherence, text rendering, and overall image quality are potential side effects of use. SeedVarianceEnhancer does not properly handle all conditioning inputs, such as those containing multiple embeddings, so using it alongside other conditioning nodes will likely result in unexpected behavior.
License
SeedVarianceEnhancer is released under the MIT No Attribution license.