OmniGen2 & Euler_a = A Cyclic Sampler (Patreon)
Downloads
Content
Video - https://youtu.be/0vEYdHwWPUM
Well, this one took a bit longer than expected thanks to a rather fortuitous twist of events :)
The Model: https://huggingface.co/OmniGen2/OmniGen2
ComfyUI: https://github.com/comfyanonymous/ComfyUI
Testing Start
Starting with the Text2Image workflow gives a basic workflow:
Step 1:
Obviously, one of the first things you'll want to try and generate is a painting of a dapper squirrel, like I'm trying to do with the prompt here -
"A dapper British gentleman squirrel's alert expression, a dynamic blend of verdant moss-covered bark textures intertwining with delicate fern fronds and dewdrops. Organically growing, revealing dappled sunlight through interlaced layers of botanical growth. Forest light, emerald clarity, soft earthy tones, tranquil vitality. Emergent presence from natural elements, sublime beauty in organic fluidity bound by its lush botanical oil painting style."
The defaults aren't great, so it's time for a change
Step 2:
The problem is, the default template uses a negative prompt, and a really slow CFG guider :(
Thankfully, we can swap that out and stick with CFG1. Now it's just a case of testing with various samplers and schedulers to see what happens.
To start with I went with DDIM_UNIFORM because it's... uniform!
A small collection of the results is shown below:
Step 3:
I put them into mental categories, as many of them look the same so it's easy to group those together and ignore them, leaving only a limited number of "unique" looking options.
Pick something you like and see how it works. I went with the second one in from the top and left, which i called "The Mess"
Step 4:
Play with all the things! Change whatever settings you like, but see what impact that has on the image generation. Eventually, you should notice a pattern.
Step 5:
If you think you do notice a pattern, then test it! See when it breaks and when it doesn't.
Step 6:
Summarise. In my case, there were a few patterns. Every 100 steps, the image "crystallised":
Euler_a / DDIM = Oscillation Cycle = 100,200,300...
Euler_a / Karras = Oscillation Cycle = 100,200,300...
Euler_a / Lin_qu = Oscillation Cycle = 100,200,300...
Euler_a / ays_30 = Oscillation Cycle = 100,200,300...
Euler_a / kl_opt = Oscillation Cycle = 200,400,600...
Euler_a / exp = Oscillation Cycle = 1000,2000,3000...
Step 7:
Rinse and repeat! I tried testing other ancestral samplers, for example, but they seemed to be a lot more "complex". I also tested in Flux as well (fp8 checkpoint), but the steps seemed off, like it needed 16.5 steps for an image, but a pattern was still there.
Rather than spend even more time on other things, I went back to focusing on Euler_a
Step 8:
Final Summary:
For creative prompts, stick to CFG=1
Using a higher CFG will iterate over much the same image
Vague prompts = more creative, different images each cycle
Specific prompts = like a high cfg, will iterate over much the same image each time
The "magic number" of 100 steps mean no more guessing step counts for this cyclical sampler
You can "mix" two image just by picking the number of steps (150 = a "mix" of 100+200)
You can "mix" even more by adjusting the ETA value
The "magic number", or cycle, will change based on scheduler and other factors - even up to as high as 1000 with the exponential scheduler!
Example Images:
Fixed seed + vague prompt = different images ;)
Same seed also gives:
Also also this:
etc, etc... all depending on the number of steps.
That's a lot of things!
Still, with Euler_a and 100 steps, I did finally get my dapper squirrel :)
Attachments
The attachments (1, 2 and 3) are used in the video and include all the various notes and working examples along the way.