Conditioning is not one technique. The question a conditioning mechanism answers is: where does the condition enter the network, and what does it assume about the correspondence between the condition and the output?
The second half is the one that decides the design. If the condition is a text prompt, there is no correspondence at all — the word "sunset" does not belong to any region of the image, and a mechanism that tied it to one would be wrong. If the condition is a photograph of the same scene through the same lens, the correspondence is exact and known in advance, and a mechanism that has to learn it is spending capacity to rediscover something the data guarantees.
For dehazing, the choice is not close. The hazy image and the clear image are the same scene, the same camera, the same instant, on the same pixel grid — and after encoding, as the previous topic established, on the same latent cell grid. Pixel in the condition and pixel in the target are looking at the same surface.
Concatenation puts those two at the same position in the same tensor, and every convolution in the network sees them together from the first layer onward. A cross-attention route would have to learn that position in the condition is relevant to position in the output — a fact that is true by construction, that no amount of learning can make more true, and that would cost an attention over quadratically many pairs to represent.
The same argument picks concatenation for any spatially-registered condition: segmentation maps, edge maps, normals, a previous video frame. The moment the condition stops being registered — a reference image of a different scene, a style exemplar, a text prompt — the argument inverts, and cross-attention or an adapter is right.
You want to condition a pretrained diffusion model on a semantic segmentation map at the same resolution as the output. Which mechanism, and what does that commit you to?
Show answer
Concatenation, on the alignment argument: the segmentation map is registered to the output pixel-for-pixel, so the correspondence is free and any mechanism that learns it is paying for nothing.
What it commits you to is the subject of the next concept. The pretrained first convolution takes four channels and you now need eight, so it has to be replaced and its new weights initialised — which means you cannot do this without retraining, and you have a real decision to make about what the new half starts at.
If you cannot retrain the base model — no compute, or you need the original behaviour preserved exactly — that constraint, not the alignment argument, is what pushes you to an adapter instead. Notice that this is a decision about your situation rather than about the condition.