tusharbhutt 64c9171c76 Merge pull request #6 from tusharbhutt/dev
Update __init__.py to remove random switch reference
2023-10-08 21:44:16 -06:00
2023-10-03 15:56:31 -06:00
2023-09-15 16:40:47 -06:00

Endless-Nodes

Some basic custom nodes for the ComfyUI user interface for Stable Diffusion. Features:

  • An image saver for images and JSON files to base folder, custom folders for one, or custom folders for both. Also allows for Python timestamping
  • (REMOVED FOR NOW) Two aesthetic scoring models, one based on the same as AUTO1111, the other based on Image Reward
  • Converters for various numerical functions to the other (int, float, number) and to strings. Still in beta
  • Switches for text and numbers
  • Parameter collection nodes
  • MORE TO COME

When using the ComfyUI interface for Stable Diffusion, I sometimes find that the standard nodes and the many, many, many custom nodes out there don't work the way I want them to, or how I think they do.

Rightly or wrongly, I am pretending to teach myself a bit of Python to get some nodes up and running to do what I'd like. Yes, I am using ChatGPT, and yes I am a glutton for punishment. There are no promises that these nodes will work for you or that I will maintain them. Feel free to do with them as you wish, according to the license model.

UPDATE: Oct 8, 2023

  • Added a standalone saver node. Fixed bug in this node and main node where image files were overwritten

UPDATE: Oct 7, 2023

  • REMOVED THE AESTHETIC SCORERS, TOO MANY PEOPLE CAN'T GET CLIP LOADED. WILL REVISIT AFTER VACATION

UPDATE: Oct 4, 2023

  • Squished the bugs in the numeric to numeric and string nodes. Special thanks to chrisgoringe for some vital insight into correcting messy commas in the tuples for the converter nodes, much appreciated!
  • Added nodes to convert from string to numeric values, with some basic error checking.

UPDATE: Oct 3, 2023

  • Added an Image Saver that can place JSON files in separate folders
  • Added nodes to convert from one numeric type to another, and to string.

UPDATE: Sep 24, 2023

UPDATE: Sep 20, 2023

  • Added an eight-input number switch because I needed it

UPDATE: Sep 18, 2023

  • Added the Endless Nodes Parameterizer with Text_G and Text_L prompt box
  • Added the Parameterizer with a_score for both pos/neg
  • Added the Parameterizer with a_score for both pos/neg and Text_G and Text_L prompt box
  • Fixed some typos

UPDATE: Sep 17, 2023

  • Added the Endless Nodes Parameterizer

Install and Requirements

Navigate to your /ComfyUI/custom_nodes/ folder

In Windows, you can then right-click to start a command prompt and type:

git clone https://github.com/tusharbhutt/Endless-Nodes

You can also get the nodes via the ComfyUI Manager

NOTE: Requires CLIP and Pytorch-Lightning for the Aesthetic Scorer and ImageReward for my take on the Image Reward node scorer. Also require colorama for error messages to console. I've added them in the requirement file but if it doesn't work, you will need to download manually

Node List

Endless Image Saver

This is why I tried my hand at Python in the first place! There are many, many, many, good image saver nodes out there, so why one more? Well:

  • The default saver does not save to UNC in Windows, even if you try to put it in the extra paths YAML file
  • Some savers will allow you to save to UNC but have restricted built-in folder formats
  • You can cobble some savers to save an image together with a text file, but the timestamp on the text file tends to be 2-3 seconds off from the image
  • No saver I know of lets you save the JSON file to a completely different folder

So… this node will allow you to save your image file wherever you want, with full support for standard Python date and time conventions, and you can save the JSON file somewhere else.

I have more plans for this, but its ready for release now.

imagesaver

Does it work... ?

imagesaverfile

JSONs to the left of me, images to the right of me, and here I am stuck in the midle with you! It works!

Aesthetic Scorer

This node will output a predicted aesthetic score as a number and display it with the appropriate node (e.g., rgthree's "Any" node). I took the node from https://github.com/strimmlarn that does aesthetic scoring and repurposed it so that it is simpler and outputs the score as a number. I combined the model loader and score calculator into one, and removed the Aesthetic Score Sorter.

aestheticone

You can load a number of scoring models, I use the "chadscorer" model found here:

https://github.com/grexzen/SD-Chad/blob/main/chadscorer.pth

As for the original node from strimmlarn, please refer to this GitHub if you would like to examine it:

https://github.com/strimmlarn/ComfyUI-Strimmlarns-Aesthetic-Score

The scorer adds about 7-10 seconds to a workflow on my Nvidia 3060 12 GB card, your mileage may vary

Image Reward

This node will output a predicted aesthetic score as a number and display it with the appropriate node (e.g., rgthree's "Any" node). I took the node from https://github.com/ZaneA/ComfyUI-ImageReward that in turn scores images using ImageReward. I combined the model loader and score calculator into one and added output nodes for both the standard deviation calculation (which is what Zane's node does) and the score on a scale of one to ten based on some simple statistic calculations.

The difference between this node and the Aesthetics Scorer is that the underlying ImageReward is based on Reward Feedback Learning (ReFL) and uses 137K input samples that were scored by humans. It often scores much lower than the Aesthetics Scorer, but not always!

imagereward

As with the Aesthetics Scorer, the Image Reward node adds about 7-10 seconds to a workflow on my Nvidia 3060 12 GB card, your mileage may vary.

For added GPU cycle time consumption, put them both in and watch how often they vehemently disagree with the scoring :)

disagree

Endless Node Parameterizer

This node has a collection of inputs for the CLIP text Encoder and Refiners for SDXL based workflows

Inputs include:

  • base width: set width for the base encoder
  • base height: set height for the base encoder
  • base cropped width: crop width for the base encoder
  • base cropped height: crop height for the base encoder
  • base target width: target width for the base encoder
  • base target height: target height for the base encoder
  • refiner width: crop width for the refiner if you have included one
  • refiner height: crop height for the refiner if you have included one
  • refiner aesthetic score: set the score value for the refiner

You can set up two of these one for the positive and one for the negative prompt

parameterizer

Parameterizer with prompt

As above, but with TEXT_G and TEXT_L outputs

parameterizerprompt

COMBO Parameterizer with and without prompt

After making the Parameterizer, I realized having two separate ones for both the positive and negative CLIP encoders is not optimal, because almost everyone will use the same resolution for both the positive and negative base and refiners. However, you may (well, you should…) want separate aesthetic scorers for the positive and negative CLIPs, so I came up with one that does this for you. Also comes in a variant that has the prompt boxes for you.

comboparameterizer

comboparameterizerprompt

Six Text Input Switch

Allows the user to select between six text inputs and uses a slider to make the selection. Useful for multiple inputs for prompt creation

sixtext

NOT SHOWN: There is an eight input variant now too, as of Sep 20, 2023

Six Integer Input to Six Integer Output

I've seen a fair number of 3-, 4-, or more X-way text input and outputs, I wanted to do something for numbers as well. Use it as you wish.

sixintconnect

Six Integer Widget

As above, but with widgets for entry instead of connectors

sixintwidget

Various converters

You've seen them elsewhere too, but there are few that do X to float or vice versa, so I threw them in. Still in beta, sometimes they work, other times the downstream node complains.

converters

Usage License and Restrictions

See GPL Licensing V3 for usage. You may modify this code as long as you keep the credits for this repository and for those noted in the credit section below. YOU ARE EXPRESSLY FORBIDDEN FROM USING THIS NODE TO CREATE ANY IMAGES OR ARTWORK THAT VIOLATES THE STABLE DIFFUSION USAGE NOTES HERE AND HERE.

For example, don't be a mouth-breather who creates fake celebrity nudes or sexual content of anyone, even if you have their consent. JUST. DONT. BE. A. DICK/BITCH.

The author expressly disclaims any liability for any images you create using these nodes.

Disclaimer

These nodes may or may not be maintained. They work on my system but may not on yours. Feel free to send in a bug report if you find one!

Credits

Description
Some basic custom nodes for the ComfyUI user interface for Stable Diffusion
Readme GPL-3.0 44 MiB
Languages
Python 52.4%
JavaScript 47.6%