Adventures in Imagineering – How GUI is it?

At this point in time, there are a lot of Stable Diffusion codebases and GUIs out there. But, as far as I know at least, there aren’t a lot of GUIs for macOS. In fact, getting Stable Diffusion working on macOS is itself problematic for two reasons:

  1. On Intel macs there isn’t any GPU support
  2. On the Apple Silicon side, while there is some support for MPS (Metal Performance Shaders) the support is still nascent and is a little buggy.

However, there are still a few solutions out there for running Stable Diffusion on macOS. Here are the ones that I know of:

  1. Stable Diffusion Dream Script: This is the original site/script for supporting macOS. I found this soon after Stable Diffusion was publicly released and it was the site which inspired me to try out using Stable Diffusion on a mac. They have a web-based UI (as well as command-line scripts) and a lot of documentation on how to get things working.
  2. DiffusionBee One-click Installer: I have not tried this one out and have no idea how good/bad it is. It appears to be an Electron-based app and since Electron itself can be a bit of a memory-hog, I didn’t look into it much. But this might be good if you don’t want to bother with figuring out how to install Stable Diffusion and/or all the Python dependencies it requires. (Note, install at your own risk since I have not personally tried it … but there are people on Reddit who have.)
  3. Charl-e: Another Electron-based one-click installer. I have not tried this either. Just found it via a web-search and also saw it mentioned on Twitter today.
  4. Multiple GUIs on top of the CompVIS Stable Diffusion code: I have not tried any of these, but they probably require that you install the CompVIS Stable Diffusion code and get it working first. So might not be for those who don’t want to work with the command-line and mess around with Python package dependencies and such.
  5. My own GUI: I wrote multiple versions of this GUI and will talk a bit more in detail about this below. But again, this requires installing Python and setting up dependencies. There’s a detailed doc with instructions on the GitHub repo I linked to, but might not be your cup of tea/coffee 🙂

So, as you see, there are a few options out there and I’m sure more will be added as people continue to work with Stable Diffusion …

My own GUI started initially as a way to display/manage images generated by a command-line script:

Batch Job Image Viewer/Deleter
Batch Job Image Viewer/Deleter

I then decided that I wanted to be able to manage the whole image generation process via a GUI and created a more complete GUI — twice. Once in one Python GUI library and then again when decided to switch to a different GUI library.

The new GUI app
The new GUI app

The above GUI should work on Linux and Windows in addition to macOS since the GUI code is written in Python. Unfortunately, since I currently don’t have a PC to test on, I was unable to test the full functionality on either Linux or Windows. However, I did manage to get the UI to display on virtual machine’s for both Linux and Windows:

I decided to improve upon the first (or second, if you count the original image manager) version of the GUI and wrote a new version which was never released. But it looks something like this:

Unreleased UI
Unreleased UI

Doesn’t look very different from the first GUI? Look closer 🙂

You’ll notice that there are three tabs at the top. You have a tab for generating images based on a text prompt (txt2img) and another tab for generating images based on a text prompt + an input image (img2img). In addition, there’s a tab for managing all your past prompts — you can add new prompts, or edit/delete old ones.

That one is almost feature complete but as I got close to releasing it, I realized that what I wanted to add in the future to the app would require more functionality than the Python GUI library that I was using could handle … So, I decided to re-write the GUI yet again 😛

This is the latest incarnation of my GUI:

Third iteration of GUI
Third iteration of GUI

I started on this yesterday and so only the first tab works so far 🙂 But this will combine the txt2img and img2img functionality in one tab and provide a lot more functionality than the previous iteration when it’s complete.

As for when will it be complete, I don’t know … hopefully next week for at least the initial release. But I can’t be sure since this is all done in my spare time.

But my question for you, dear reader, is this — what would you like to see in a Stable Diffusion GUI? Are you interested in managing your prompts and images? Or are you interested in other features such as inpainting and outpainting from the GUI? Or are there other features that you’d like to see that are not available in any GUI that you’ve seen yet?

Let me know and who knows, I might be able to add some (or all?) of it to the GUI 🙂

Leave a Reply

Your email address will not be published. Required fields are marked *