SEECoderImageEncode
Hand SD1.5 a reference image instead
- image
- CONDITIONING
SEECoderImageEncode is the whole point of the SeeCoder pack: it takes a picture and turns it into conditioning tokens your sampler can eat, no text prompt required. The pitch behind the underlying research - SHI-Labs' Prompt-Free Diffusion - was exactly "an image is worth a thousand words": if describing an aesthetic is more art than science, why make the prompt the bottleneck? So instead of a CLIP text encoder, a SeeCoder (Semantic Context Encoder) is dropped into the pipeline, and the reference image is the prompt.
Where does this sit in the wider image-prompting story? It's the same job IP-Adapter does with a small injected adapter, except SeeCoder does it by outright replacing the text encoder. That makes it a heavier, more academic approach, and honestly the community mostly moved on to adapters and, later, Redux. But if you're on an SD 1.5 checkpoint and want to copy the look of a reference - an art style, a color grade, a composition you can't put into words - this node is a one-stop way to try it. It's also the natural ancestor of those "generate from an image with zero prompt" workflows people still dig out of old ComfyUI templates.
How it works
Under the hood the node loads a .safetensors SeeCoder from your models/seecoders folder, builds the full Semantic Extraction Encoder (a Swin transformer backbone, a decoder, and a query transformer), and runs your image through it. The result is a short run of 768-dim tokens - the same dimensionality as SD 1.5's CLIP-L text embeddings, which is deliberate: they're built to be concatenated next to text conditioning. The node even sniffs the checkpoint to tell the base SeeCoder apart from the "PA" (position-aware) variant - it checks the state dict for qtransformer.pe_layer keys and flips a config flag accordingly. Output comes back as a CONDITIONING tensor with an empty extra dict, ready to wire into a sampler or into ConcatConditioning.
The inputs that matter
Just two, both required:
- seecoder_name - a dropdown listing whatever
.safetensorsfiles sit inComfyUI/models/seecoders. Pickseecoder-v1-0,seecoder-pa-v1-0, orseecoder-anime-v1-0. - image - the reference image to encode.
Output is a single CONDITIONING that you feed to a KSampler's positive/negative, or stack with a text prompt using the pack's ConcatConditioning node.
Installing it
Same drill as every custom node. Via ComfyUI Manager, search for "SeeCoder" and install; or from a terminal:
cd ComfyUI/custom_nodes
git clone https://github.com/BlenderNeko/ComfyUI_SeeCoder
Restart ComfyUI. There's no requirements.txt and nothing extra to pip-install - it reuses torch, safetensors, and ComfyUI's own modules, which is rare and nice. The models are the actual requirement. Grab them from huggingface.co/shi-labs/prompt-free-diffusion and drop the .safetensors files into ComfyUI/models/seecoders (create the folder if it isn't there).
Where people get burned
The #1 question on r/comfyui for this pack is "where do I put the seecoder file?" - the answer is always models/seecoders, not checkpoints. Beyond that:
- It's SD 1.5-shaped. The 768-dim output is designed for SD 1.5/SD 2.x-class conditioning. Don't expect it to feed an SDXL or Flux sampler without dimensional screaming.
- No resizing happens inside the node. The image goes straight into the Swin backbone, so keep inputs near the 384×384 the encoder was trained on; a random 2K photo can throw shape errors.
- Safetensors only. The README's own TODO still lists "support for non safetensor formats" as unfinished.
- It's WIP. This is an experimental 2023 pack, unmaintained since. It works for its narrow purpose, but treat it as a curiosity, not infrastructure.
If it does crash, the usual culprits are a wrong model folder (dropdown empty) or a dimension mismatch (wrong image size, wrong model family).
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| seecoder_name | COMBO | 0 options: | |
| image | IMAGE | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| CONDITIONING | CONDITIONING | — |