ComfyUI-LexTools is a Python-based image processing and analysis toolkit that uses machine learning models for semantic image segmentation, image scoring, and image captioning.
ComfyUI-LexTools is a Python-based image processing and analysis toolkit that uses machine learning models for semantic image segmentation, image scoring, and image captioning. The toolkit includes three primary components:
ImageProcessingNode.py - Implements various image processing nodes such as:
ImageAspectPadNode
: Expands the image to meet a specific aspect ratio. This node is useful for maintaining the aspect ratio when processing images.
image
(IMAGE), aspect_ratio
(RATIO), invert_ratio
(BOOLEAN), feathering
(INT), left_padding
(INT), right_padding
(INT), top_padding
(INT), bottom_padding
(INT)show_on_node
(INT)ImageScaleToMin
: Calculates the value needed to rescale an image's smallest dimension to 512. This node is useful for scaling images down to 512 or up to 512 for faster processing. It ensures that at least one dimension (width or height) is 512 pixels.
image
(IMAGE)ImageRankingNode
: Ranks the images based on specific criteria.
score
(INT), prompt
(STRING), image_path
(STRING), json_file_path
(STRING)ImageFilterByIntScoreNode
and ImageFilterByFloatScoreNode
: Filter images based on a threshold score. Currently, these nodes may throw errors if the following node in the sequence does not handle blank outputs.
score
(INT for ImageFilterByIntScoreNode
and FLOAT for ImageFilterByFloatScoreNode
), threshold
(FLOAT), image
(IMAGE)ImageQualityScoreNode
: Calculates a quality score for the image.
aesthetic_score
(INT), image_score_good
(INT), image_score_bad
(INT), ai_score_artificial
(INT), ai_score_human
(INT), weight_good_score
(INT), weight_aesthetic_score
(INT), weight_bad_score
(INT), weight_AIDetection
(INT), MultiplyScoreBy
(INT), show_on_node
(INT), weight_HumanDetection
(INT)ScoreConverterNode
: Converts the score to different data types.
score
(SCORE)Additional nodes from GitHub Pages - These have been modified to improve performance and add an option to store the model in RAM, which significantly reduces generation time:
CalculateAestheticScore
: An optimized version of the original, with an option to keep the model loaded in RAM. (No specific input or output detailed in the provided code)AesthetlcScoreSorter
: Sorts the images by score. (No specific input or output detailed in the provided code)AesteticModel
: Loads the aesthetic model. (No specific input or output detailed in the provided code)ImageCaptioningNode.py - Implements nodes for image captioning and classification:
ImageCaptioningNode
: Provides a caption for the image.
image
(IMAGE)FoodCategoryNode
: Classifies the food category of an image.
image
(IMAGE)AgeClassifierNode
: Classifies the age of a person in the image.
image
(IMAGE)ImageClassifierNode
: General image classification.
image
(IMAGE), show_on_node
(BOOL)artificial_prob
(INT), human_prob
(INT)ClassifierNode
: A generic classifier node.
image
(IMAGE)SegformerNode.py - Handles semantic segmentation of images. It includes various nodes such as:
SegformerNode
: Performs segmentation of the image.
image
(IMAGE), model_name
(STRING), show_on_node
(BOOL)SegformerNodeMasks
: Provides masks for the segmented images.
SegformerNodeMergeSegments
: Merges certain segments in the segmented image.
image
(IMAGE), segments_to_merge
(STRING), model_name
(STRING), blur_radius
(INT), dilation_radius
(INT), intensity
(INT), ceiling
(INT), show_on_node
(BOOL)SeedIncrementerNode
: Increment the seed used for random processes.
seed
(INT), increment_at
(INT)StepCfgIncrementNode
: Calculates the step configuration for the process.
seed
(INT), cfg_start
(INT), steps_start
(INT), img_steps
(INT), max_steps
(INT)The project primarily uses the following libraries:
To install the necessary libraries, run:
pip install torch transformers pillow matplotlib numpy scipy
Contributions to this project are welcome. If you find a bug or think of a feature that would benefit the project, please open an issue. If you'd like to contribute code, please open a pull request.